syncpack 8.5.14 → 9.0.2
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.
- package/README.md +194 -108
- package/dist/bin-fix-mismatches/fix-mismatches-cli.d.ts +2 -2
- package/dist/bin-fix-mismatches/fix-mismatches-cli.js +1 -1
- package/dist/bin-fix-mismatches/fix-mismatches.d.ts +2 -2
- package/dist/bin-fix-mismatches/fix-mismatches.js +35 -8
- package/dist/bin-fix-mismatches/index.js +9 -18
- package/dist/bin-format/format-cli.d.ts +2 -2
- package/dist/bin-format/format-cli.js +1 -1
- package/dist/bin-format/format.d.ts +2 -2
- package/dist/bin-format/index.js +2 -0
- package/dist/bin-lint-semver-ranges/index.js +10 -19
- package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.d.ts +2 -2
- package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.js +1 -1
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +2 -2
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +13 -14
- package/dist/bin-list/index.js +9 -18
- package/dist/bin-list/list-cli.d.ts +2 -2
- package/dist/bin-list/list-cli.js +1 -1
- package/dist/bin-list/list.d.ts +2 -2
- package/dist/bin-list/list.js +2 -2
- package/dist/bin-list-mismatches/index.js +9 -18
- package/dist/bin-list-mismatches/list-mismatches-cli.d.ts +2 -2
- package/dist/bin-list-mismatches/list-mismatches-cli.js +1 -1
- package/dist/bin-list-mismatches/list-mismatches.d.ts +2 -2
- package/dist/bin-list-mismatches/list-mismatches.js +6 -6
- package/dist/bin-set-semver-ranges/index.js +10 -19
- package/dist/bin-set-semver-ranges/set-semver-ranges-cli.d.ts +2 -2
- package/dist/bin-set-semver-ranges/set-semver-ranges-cli.js +1 -1
- package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +2 -2
- package/dist/constants.d.ts +11 -7
- package/dist/constants.js +11 -22
- package/dist/get-context/$R.d.ts +13 -0
- package/dist/get-context/$R.js +56 -0
- package/dist/{lib/get-context → get-context}/get-all-instances.d.ts +0 -0
- package/dist/{lib/get-context → get-context}/get-all-instances.js +1 -1
- package/dist/get-context/get-config/get-core-types.d.ts +36 -0
- package/dist/get-context/get-config/get-core-types.js +68 -0
- package/dist/get-context/get-config/get-custom-types.d.ts +4 -0
- package/dist/get-context/get-config/get-custom-types.js +28 -0
- package/dist/get-context/get-config/get-enabled-types.d.ts +4 -0
- package/dist/get-context/get-config/get-enabled-types.js +19 -0
- package/dist/get-context/get-config/index.d.ts +7 -0
- package/dist/get-context/get-config/index.js +115 -0
- package/dist/get-context/get-config/path-strategy/index.d.ts +8 -0
- package/dist/get-context/get-config/path-strategy/index.js +18 -0
- package/dist/get-context/get-config/path-strategy/lib/get-non-empty-string-prop.d.ts +4 -0
- package/dist/get-context/get-config/path-strategy/lib/get-non-empty-string-prop.js +11 -0
- package/dist/get-context/get-config/path-strategy/name-and-version-props.d.ts +2 -0
- package/dist/get-context/get-config/path-strategy/name-and-version-props.js +66 -0
- package/dist/get-context/get-config/path-strategy/name-and-version-string.d.ts +2 -0
- package/dist/get-context/get-config/path-strategy/name-and-version-string.js +60 -0
- package/dist/get-context/get-config/path-strategy/types.d.ts +15 -0
- package/dist/{lib/get-context/get-config/config.js → get-context/get-config/path-strategy/types.js} +0 -0
- package/dist/get-context/get-config/path-strategy/version-string.d.ts +2 -0
- package/dist/get-context/get-config/path-strategy/version-string.js +60 -0
- package/dist/get-context/get-config/path-strategy/versions-by-name.d.ts +2 -0
- package/dist/get-context/get-config/path-strategy/versions-by-name.js +39 -0
- package/dist/get-context/get-config/schema/base-group.d.ts +6 -0
- package/dist/get-context/get-config/schema/base-group.js +9 -0
- package/dist/get-context/get-config/schema/index.d.ts +1276 -0
- package/dist/get-context/get-config/schema/index.js +104 -0
- package/dist/get-context/get-config/schema/paths.d.ts +89 -0
- package/dist/get-context/get-config/schema/paths.js +33 -0
- package/dist/get-context/get-config/schema/semver-group.d.ts +101 -0
- package/dist/get-context/get-config/schema/semver-group.js +50 -0
- package/dist/get-context/get-config/schema/semver-range.d.ts +2 -0
- package/dist/get-context/get-config/schema/semver-range.js +16 -0
- package/dist/get-context/get-config/schema/version-group.d.ts +151 -0
- package/dist/get-context/get-config/schema/version-group.js +31 -0
- package/dist/get-context/get-groups/get-semver-groups.d.ts +4 -0
- package/dist/{lib/get-context → get-context}/get-groups/get-semver-groups.js +2 -1
- package/dist/get-context/get-groups/get-version-groups.d.ts +4 -0
- package/dist/{lib/get-context → get-context}/get-groups/get-version-groups.js +2 -1
- package/dist/{lib/get-context → get-context}/get-groups/semver-group/index.d.ts +10 -11
- package/dist/get-context/get-groups/semver-group/index.js +56 -0
- package/dist/{lib/get-context → get-context}/get-groups/version-group/index.d.ts +5 -6
- package/dist/{lib/get-context → get-context}/get-groups/version-group/index.js +0 -0
- package/dist/{lib/get-context → get-context}/get-groups/version-group/instance-group/get-highest-version.d.ts +0 -0
- package/dist/{lib/get-context → get-context}/get-groups/version-group/instance-group/get-highest-version.js +2 -2
- package/dist/{lib/get-context → get-context}/get-groups/version-group/instance-group/index.d.ts +3 -1
- package/dist/{lib/get-context → get-context}/get-groups/version-group/instance-group/index.js +10 -9
- package/dist/get-context/get-package-json-files/get-file-paths.d.ts +14 -0
- package/dist/get-context/get-package-json-files/get-file-paths.js +40 -0
- package/dist/get-context/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +4 -0
- package/dist/get-context/get-package-json-files/get-patterns/get-lerna-patterns.js +19 -0
- package/dist/get-context/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +4 -0
- package/dist/get-context/get-package-json-files/get-patterns/get-pnpm-patterns.js +23 -0
- package/dist/get-context/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +4 -0
- package/dist/get-context/get-package-json-files/get-patterns/get-yarn-patterns.js +20 -0
- package/dist/get-context/get-package-json-files/get-patterns/index.d.ts +11 -0
- package/dist/get-context/get-package-json-files/get-patterns/index.js +70 -0
- package/dist/get-context/get-package-json-files/get-patterns/lib/get-array-of-strings.d.ts +1 -0
- package/dist/get-context/get-package-json-files/get-patterns/lib/get-array-of-strings.js +10 -0
- package/dist/get-context/get-package-json-files/get-patterns/props.d.ts +6 -0
- package/dist/get-context/get-package-json-files/get-patterns/props.js +48 -0
- package/dist/{lib/get-context → get-context}/get-package-json-files/get-patterns/read-json-safe.d.ts +4 -3
- package/dist/get-context/get-package-json-files/get-patterns/read-json-safe.js +20 -0
- package/dist/get-context/get-package-json-files/get-patterns/read-yaml-safe.d.ts +4 -0
- package/dist/get-context/get-package-json-files/get-patterns/read-yaml-safe.js +11 -0
- package/dist/get-context/get-package-json-files/index.d.ts +5 -0
- package/dist/get-context/get-package-json-files/index.js +16 -0
- package/dist/{lib/get-context → get-context}/get-package-json-files/package-json-file/index.d.ts +7 -6
- package/dist/{lib/get-context → get-context}/get-package-json-files/package-json-file/index.js +28 -38
- package/dist/{lib/get-context → get-context}/get-package-json-files/package-json-file/instance.d.ts +6 -6
- package/dist/get-context/get-package-json-files/package-json-file/instance.js +65 -0
- package/dist/{lib/get-context → get-context}/index.d.ts +4 -5
- package/dist/{lib/get-context → get-context}/index.js +5 -2
- package/dist/lib/disk.d.ts +11 -11
- package/dist/lib/error.d.ts +12 -0
- package/dist/lib/error.js +43 -0
- package/dist/lib/exit-if-invalid.d.ts +2 -2
- package/dist/lib/is-semver.d.ts +2 -2
- package/dist/lib/set-semver-range.d.ts +2 -2
- package/dist/lib/show-help-on-error.d.ts +2 -0
- package/dist/lib/show-help-on-error.js +16 -0
- package/dist/lib/write-if-changed.d.ts +2 -2
- package/dist/option.d.ts +3 -9
- package/dist/option.js +6 -15
- package/dist/types.d.ts +88 -0
- package/dist/{lib/get-context/get-config/internal-config.js → types.js} +0 -0
- package/package.json +5 -3
- package/dist/lib/get-context/get-config/config.d.ts +0 -151
- package/dist/lib/get-context/get-config/index.d.ts +0 -8
- package/dist/lib/get-context/get-config/index.js +0 -160
- package/dist/lib/get-context/get-config/internal-config.d.ts +0 -24
- package/dist/lib/get-context/get-groups/get-semver-groups.d.ts +0 -4
- package/dist/lib/get-context/get-groups/get-version-groups.d.ts +0 -4
- package/dist/lib/get-context/get-groups/semver-group/index.js +0 -33
- package/dist/lib/get-context/get-package-json-files/get-file-paths.d.ts +0 -12
- package/dist/lib/get-context/get-package-json-files/get-file-paths.js +0 -55
- package/dist/lib/get-context/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +0 -3
- package/dist/lib/get-context/get-package-json-files/get-patterns/get-lerna-patterns.js +0 -40
- package/dist/lib/get-context/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +0 -3
- package/dist/lib/get-context/get-package-json-files/get-patterns/get-pnpm-patterns.js +0 -45
- package/dist/lib/get-context/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +0 -3
- package/dist/lib/get-context/get-package-json-files/get-patterns/get-yarn-patterns.js +0 -46
- package/dist/lib/get-context/get-package-json-files/get-patterns/index.d.ts +0 -10
- package/dist/lib/get-context/get-package-json-files/get-patterns/index.js +0 -79
- package/dist/lib/get-context/get-package-json-files/get-patterns/props.d.ts +0 -7
- package/dist/lib/get-context/get-package-json-files/get-patterns/props.js +0 -43
- package/dist/lib/get-context/get-package-json-files/get-patterns/read-json-safe.js +0 -41
- package/dist/lib/get-context/get-package-json-files/get-patterns/read-yaml-safe.d.ts +0 -3
- package/dist/lib/get-context/get-package-json-files/get-patterns/read-yaml-safe.js +0 -34
- package/dist/lib/get-context/get-package-json-files/index.d.ts +0 -5
- package/dist/lib/get-context/get-package-json-files/index.js +0 -40
- package/dist/lib/get-context/get-package-json-files/package-json-file/instance.js +0 -46
- package/dist/lib/get-context/get-package-json-files/tap.d.ts +0 -15
- package/dist/lib/get-context/get-package-json-files/tap.js +0 -56
- package/dist/lib/get-context/get-package-json-files/try-catch.d.ts +0 -5
- package/dist/lib/get-context/get-package-json-files/try-catch.js +0 -13
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
exports.__esModule = true;
|
|
19
|
+
exports.SemverGroup = void 0;
|
|
20
|
+
var SemverGroup = /** @class */ (function () {
|
|
21
|
+
function SemverGroup(input, semverGroup) {
|
|
22
|
+
this.dependencies = semverGroup.dependencies;
|
|
23
|
+
this.dependencyTypes = semverGroup.dependencyTypes;
|
|
24
|
+
this.input = input;
|
|
25
|
+
this.instances = [];
|
|
26
|
+
this.instancesByName = {};
|
|
27
|
+
this.isDefault = semverGroup === input.defaultSemverGroup;
|
|
28
|
+
this.isIgnored = semverGroup.isIgnored === true;
|
|
29
|
+
this.packages = semverGroup.packages;
|
|
30
|
+
this.range = semverGroup.range;
|
|
31
|
+
this.isMismatch = this.isMismatch.bind(this);
|
|
32
|
+
}
|
|
33
|
+
/** Does this `Instance` not follow the rules of this group? */
|
|
34
|
+
SemverGroup.prototype.isMismatch = function (instance) {
|
|
35
|
+
return !instance.hasRange(this.range);
|
|
36
|
+
};
|
|
37
|
+
/** 1+ `Instance` has a version which does not follow the rules */
|
|
38
|
+
SemverGroup.prototype.hasMismatches = function () {
|
|
39
|
+
return !this.isIgnored && this.instances.some(this.isMismatch);
|
|
40
|
+
};
|
|
41
|
+
/** Get every `Instance` with a version which does not follow the rules */
|
|
42
|
+
SemverGroup.prototype.getMismatches = function () {
|
|
43
|
+
var _this = this;
|
|
44
|
+
return Object.entries(this.instancesByName)
|
|
45
|
+
.filter(function (_a) {
|
|
46
|
+
var _b = __read(_a, 2), instances = _b[1];
|
|
47
|
+
return instances.some(_this.isMismatch);
|
|
48
|
+
})
|
|
49
|
+
.map(function (_a) {
|
|
50
|
+
var _b = __read(_a, 2), name = _b[0], instances = _b[1];
|
|
51
|
+
return [name, instances.filter(_this.isMismatch)];
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
return SemverGroup;
|
|
55
|
+
}());
|
|
56
|
+
exports.SemverGroup = SemverGroup;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { InternalConfig } from '../../get-config/internal-config';
|
|
1
|
+
import type { Syncpack } from '../../../types';
|
|
3
2
|
import type { Instance } from '../../get-package-json-files/package-json-file/instance';
|
|
4
3
|
import type { InstanceGroup } from './instance-group';
|
|
5
4
|
export declare class VersionGroup {
|
|
6
5
|
/** */
|
|
7
6
|
dependencies: string[];
|
|
8
|
-
/** Optionally limit this group to dependencies
|
|
9
|
-
dependencyTypes
|
|
7
|
+
/** Optionally limit this group to dependencies at these named paths */
|
|
8
|
+
dependencyTypes: Syncpack.TypeName[];
|
|
10
9
|
/** */
|
|
11
|
-
input:
|
|
10
|
+
input: Syncpack.Config.Private;
|
|
12
11
|
/** */
|
|
13
12
|
instanceGroups: InstanceGroup[];
|
|
14
13
|
/** */
|
|
@@ -25,6 +24,6 @@ export declare class VersionGroup {
|
|
|
25
24
|
packages: string[];
|
|
26
25
|
/** Optionally force all dependencies in this group to have this version */
|
|
27
26
|
pinVersion?: string;
|
|
28
|
-
constructor(input:
|
|
27
|
+
constructor(input: Syncpack.Config.Private, versionGroup: Syncpack.Config.VersionGroup.Any);
|
|
29
28
|
getInvalidInstanceGroups(): InstanceGroup[];
|
|
30
29
|
}
|
|
File without changes
|
|
File without changes
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
exports.__esModule = true;
|
|
3
3
|
exports.getHighestVersion = void 0;
|
|
4
4
|
var semver_1 = require("semver");
|
|
5
|
-
var constants_1 = require("
|
|
6
|
-
var is_semver_1 = require("../../../../is-semver");
|
|
5
|
+
var constants_1 = require("../../../../constants");
|
|
6
|
+
var is_semver_1 = require("../../../../lib/is-semver");
|
|
7
7
|
function getHighestVersion(versions) {
|
|
8
8
|
return versions.reduce(function (rawHighest, raw) {
|
|
9
9
|
var version = (0, semver_1.valid)((0, semver_1.coerce)(raw)) || '';
|
package/dist/{lib/get-context → get-context}/get-groups/version-group/instance-group/index.d.ts
RENAMED
|
@@ -4,8 +4,10 @@ import type { Instance } from '../../../get-package-json-files/package-json-file
|
|
|
4
4
|
export declare class InstanceGroup {
|
|
5
5
|
/** 1+ `Instance` has a version which does not follow the rules */
|
|
6
6
|
hasMismatches: boolean;
|
|
7
|
-
/** Every package/
|
|
7
|
+
/** Every package/pathName location where this dependency was found */
|
|
8
8
|
instances: Instance[];
|
|
9
|
+
/** */
|
|
10
|
+
hasWorkspaceInstance: boolean;
|
|
9
11
|
/** Syncpack must report or fix this groups mismatches */
|
|
10
12
|
isInvalid: boolean;
|
|
11
13
|
/** 1+ `Instance` has a version not matching `VersionGroup.pinVersion` */
|
package/dist/{lib/get-context → get-context}/get-groups/version-group/instance-group/index.js
RENAMED
|
@@ -35,8 +35,9 @@ var InstanceGroup = /** @class */ (function () {
|
|
|
35
35
|
var isUnpinned = hasPinnedVersion && version !== pinnedVersion;
|
|
36
36
|
var hasMismatches = isBanned || isUnpinned || uniques.length > 1;
|
|
37
37
|
var isInvalid = !isIgnored && hasMismatches;
|
|
38
|
-
this.hasMismatches = hasMismatches;
|
|
39
38
|
this.instances = instances;
|
|
39
|
+
this.hasMismatches = hasMismatches;
|
|
40
|
+
this.hasWorkspaceInstance = Boolean(this.getWorkspaceVersion());
|
|
40
41
|
this.isInvalid = isInvalid;
|
|
41
42
|
this.isUnpinned = isUnpinned;
|
|
42
43
|
this.name = name;
|
|
@@ -45,15 +46,12 @@ var InstanceGroup = /** @class */ (function () {
|
|
|
45
46
|
}
|
|
46
47
|
InstanceGroup.prototype.getExpectedVersion = function () {
|
|
47
48
|
// remove this dependency
|
|
48
|
-
if (this.versionGroup.isBanned)
|
|
49
|
+
if (this.versionGroup.isBanned)
|
|
49
50
|
return undefined;
|
|
50
|
-
|
|
51
|
-
if (this.isUnpinned) {
|
|
51
|
+
if (this.isUnpinned)
|
|
52
52
|
return this.getPinnedVersion();
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return this.getWorkspaceVersion() || (0, get_highest_version_1.getHighestVersion)(this.uniques);
|
|
56
|
-
}
|
|
53
|
+
if (this.hasWorkspaceInstance)
|
|
54
|
+
return this.getWorkspaceVersion();
|
|
57
55
|
return (0, get_highest_version_1.getHighestVersion)(this.uniques);
|
|
58
56
|
};
|
|
59
57
|
InstanceGroup.prototype.getPinnedVersion = function () {
|
|
@@ -72,7 +70,10 @@ var InstanceGroup = /** @class */ (function () {
|
|
|
72
70
|
* this monorepo.
|
|
73
71
|
*/
|
|
74
72
|
InstanceGroup.prototype.getWorkspaceInstance = function () {
|
|
75
|
-
return this.instances.find(function (
|
|
73
|
+
return this.instances.find(function (_a) {
|
|
74
|
+
var pathDef = _a.pathDef;
|
|
75
|
+
return pathDef.name === 'workspace';
|
|
76
|
+
});
|
|
76
77
|
};
|
|
77
78
|
return InstanceGroup;
|
|
78
79
|
}());
|
|
@@ -0,0 +1,14 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.getFilePaths = void 0;
|
|
4
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
5
|
+
var expect_more_1 = require("expect-more");
|
|
6
|
+
var _R_1 = require("../$R");
|
|
7
|
+
var error_1 = require("../../lib/error");
|
|
8
|
+
var get_patterns_1 = require("./get-patterns");
|
|
9
|
+
/**
|
|
10
|
+
* Using --source options and/or config files on disk from npm/pnpm/yarn/lerna,
|
|
11
|
+
* return an array of absolute paths to every package.json file the user is
|
|
12
|
+
* working with.
|
|
13
|
+
*
|
|
14
|
+
* @returns Array of absolute file paths to package.json files
|
|
15
|
+
*/
|
|
16
|
+
function getFilePaths(disk, program) {
|
|
17
|
+
return (0, ts_belt_1.pipe)(program, (0, get_patterns_1.getPatterns)(disk), ts_belt_1.R.flatMap(resolvePatterns));
|
|
18
|
+
function resolvePatterns(patterns) {
|
|
19
|
+
var quoted = patterns.map(function (p) { return "\"".concat(p, "\""); }).join(', ');
|
|
20
|
+
var ERR_NO_MATCH = "No package.json files matched the patterns: ".concat(quoted);
|
|
21
|
+
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)));
|
|
22
|
+
}
|
|
23
|
+
function resolvePattern(pattern) {
|
|
24
|
+
var ERR_GLOB_MISS = "No package.json files match pattern \"".concat(pattern, "\"");
|
|
25
|
+
var ERR_INVALID = "\"glob\" returned unexpected data on pattern \"".concat(pattern, "\"");
|
|
26
|
+
var ERR_GLOB_THROW = "\"glob\" threw on pattern \"".concat(pattern, "\"");
|
|
27
|
+
return (0, ts_belt_1.pipe)(ts_belt_1.R.fromExecution(function () { return disk.globSync(pattern); }), ts_belt_1.R.mapError(error_1.BaseError.map(ERR_GLOB_THROW)), ts_belt_1.R.flatMap(function (filePaths) {
|
|
28
|
+
return (0, expect_more_1.isEmptyArray)(filePaths)
|
|
29
|
+
? ts_belt_1.R.Error(new error_1.BaseError(ERR_GLOB_MISS))
|
|
30
|
+
: (0, expect_more_1.isArrayOfStrings)(filePaths)
|
|
31
|
+
? ts_belt_1.R.Ok((0, ts_belt_1.pipe)(filePaths, ts_belt_1.A.flat, ts_belt_1.A.uniq, removeReadonlyType))
|
|
32
|
+
: ts_belt_1.R.Error(new error_1.BaseError(ERR_INVALID));
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
/** Remove unwanted readonly type */
|
|
36
|
+
function removeReadonlyType(value) {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.getFilePaths = getFilePaths;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.getLernaPatterns = void 0;
|
|
4
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
5
|
+
var path_1 = require("path");
|
|
6
|
+
var constants_1 = require("../../../constants");
|
|
7
|
+
var error_1 = require("../../../lib/error");
|
|
8
|
+
var get_array_of_strings_1 = require("./lib/get-array-of-strings");
|
|
9
|
+
var read_json_safe_1 = require("./read-json-safe");
|
|
10
|
+
function getLernaPatterns(disk) {
|
|
11
|
+
var 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(function (_a) {
|
|
14
|
+
var contents = _a.contents;
|
|
15
|
+
return (0, ts_belt_1.pipe)(getPackages(contents), ts_belt_1.O.toResult(new error_1.BaseError('no lerna patterns found')));
|
|
16
|
+
}));
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
exports.getLernaPatterns = getLernaPatterns;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.getPnpmPatterns = void 0;
|
|
4
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
5
|
+
var path_1 = require("path");
|
|
6
|
+
var constants_1 = require("../../../constants");
|
|
7
|
+
var error_1 = require("../../../lib/error");
|
|
8
|
+
var get_array_of_strings_1 = require("./lib/get-array-of-strings");
|
|
9
|
+
var read_yaml_safe_1 = require("./read-yaml-safe");
|
|
10
|
+
var 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(function (packageJson) {
|
|
19
|
+
return (0, ts_belt_1.pipe)(getPackages(packageJson), ts_belt_1.O.match(ts_belt_1.F.identity, function () { return getPackages(packageJson); }), ts_belt_1.O.toResult(new error_1.BaseError('no pnpm patterns found')));
|
|
20
|
+
}));
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
exports.getPnpmPatterns = getPnpmPatterns;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.getYarnPatterns = void 0;
|
|
4
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
5
|
+
var path_1 = require("path");
|
|
6
|
+
var constants_1 = require("../../../constants");
|
|
7
|
+
var error_1 = require("../../../lib/error");
|
|
8
|
+
var get_array_of_strings_1 = require("./lib/get-array-of-strings");
|
|
9
|
+
var read_json_safe_1 = require("./read-json-safe");
|
|
10
|
+
function getYarnPatterns(disk) {
|
|
11
|
+
var getPackages = (0, get_array_of_strings_1.getArrayOfStrings)('workspaces');
|
|
12
|
+
var 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(function (_a) {
|
|
15
|
+
var contents = _a.contents;
|
|
16
|
+
return (0, ts_belt_1.pipe)(getPackages(contents), ts_belt_1.O.match(ts_belt_1.F.identity, function () { return getPackagesNested(contents); }), ts_belt_1.O.toResult(new error_1.BaseError('no yarn patterns found')));
|
|
17
|
+
}));
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
exports.getYarnPatterns = getYarnPatterns;
|
|
@@ -0,0 +1,11 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* Find every glob pattern which should be used to find package.json files for
|
|
7
|
+
* this monorepo.
|
|
8
|
+
*
|
|
9
|
+
* @returns `['./package.json', './packages/* /package.json']`
|
|
10
|
+
*/
|
|
11
|
+
export declare function getPatterns(disk: Disk): (program: Syncpack.Config.SyncpackRc) => R.Result<string[], BaseError>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
+
if (!m) return o;
|
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
|
6
|
+
try {
|
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
+
}
|
|
9
|
+
catch (error) { e = { error: error }; }
|
|
10
|
+
finally {
|
|
11
|
+
try {
|
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
+
}
|
|
14
|
+
finally { if (e) throw e.error; }
|
|
15
|
+
}
|
|
16
|
+
return ar;
|
|
17
|
+
};
|
|
18
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
+
if (ar || !(i in from)) {
|
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
+
ar[i] = from[i];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
+
};
|
|
27
|
+
exports.__esModule = true;
|
|
28
|
+
exports.getPatterns = void 0;
|
|
29
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
30
|
+
var expect_more_1 = require("expect-more");
|
|
31
|
+
var constants_1 = require("../../../constants");
|
|
32
|
+
var error_1 = require("../../../lib/error");
|
|
33
|
+
var get_lerna_patterns_1 = require("./get-lerna-patterns");
|
|
34
|
+
var get_pnpm_patterns_1 = require("./get-pnpm-patterns");
|
|
35
|
+
var get_yarn_patterns_1 = require("./get-yarn-patterns");
|
|
36
|
+
/**
|
|
37
|
+
* Find every glob pattern which should be used to find package.json files for
|
|
38
|
+
* this monorepo.
|
|
39
|
+
*
|
|
40
|
+
* @returns `['./package.json', './packages/* /package.json']`
|
|
41
|
+
*/
|
|
42
|
+
function getPatterns(disk) {
|
|
43
|
+
return function getPatterns(program) {
|
|
44
|
+
var getters = [
|
|
45
|
+
getCliPatterns,
|
|
46
|
+
(0, get_yarn_patterns_1.getYarnPatterns)(disk),
|
|
47
|
+
(0, get_pnpm_patterns_1.getPnpmPatterns)(disk),
|
|
48
|
+
(0, get_lerna_patterns_1.getLernaPatterns)(disk),
|
|
49
|
+
];
|
|
50
|
+
var initialResult = ts_belt_1.R.Error(new error_1.BaseError('getPatterns did not try any sources'));
|
|
51
|
+
var res = ts_belt_1.A.reduce(getters, initialResult, function (previousResult, getNextResult) {
|
|
52
|
+
if (ts_belt_1.R.isOk(previousResult))
|
|
53
|
+
return previousResult;
|
|
54
|
+
return getNextResult();
|
|
55
|
+
});
|
|
56
|
+
return (0, ts_belt_1.pipe)(res, ts_belt_1.R.map(addRootDir), ts_belt_1.R.map(limitToPackageJson), ts_belt_1.R.handleError(function () { return constants_1.DEFAULT_SOURCES; }), ts_belt_1.R.mapError(ts_belt_1.F.identity));
|
|
57
|
+
function getCliPatterns() {
|
|
58
|
+
return ts_belt_1.R.fromPredicate(program.source, expect_more_1.isArrayOfStrings, new error_1.BaseError('No --source options provided'));
|
|
59
|
+
}
|
|
60
|
+
function addRootDir(patterns) {
|
|
61
|
+
return __spreadArray(['package.json'], __read(patterns), false);
|
|
62
|
+
}
|
|
63
|
+
function limitToPackageJson(patterns) {
|
|
64
|
+
return patterns.map(function (pattern) {
|
|
65
|
+
return pattern.includes('package.json') ? pattern : "".concat(pattern, "/package.json");
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
exports.getPatterns = getPatterns;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getArrayOfStrings: (path: string) => (obj: unknown) => import("@mobily/ts-belt").Option<string[]>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.getArrayOfStrings = void 0;
|
|
4
|
+
var expect_more_1 = require("expect-more");
|
|
5
|
+
var props_1 = require("../props");
|
|
6
|
+
// Yarn's config for this can be in more than one place
|
|
7
|
+
var getArrayOfStrings = function (path) {
|
|
8
|
+
return (0, props_1.props)(path, expect_more_1.isArrayOfStrings);
|
|
9
|
+
};
|
|
10
|
+
exports.getArrayOfStrings = getArrayOfStrings;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { O } from '@mobily/ts-belt';
|
|
2
|
+
/**
|
|
3
|
+
* Safely read nested properties of any value.
|
|
4
|
+
* @param keys 'child.grandChild.greatGrandChild'
|
|
5
|
+
*/
|
|
6
|
+
export declare function props<T>(keys: string, predicate: (value: unknown) => value is T): (obj: unknown) => O.Option<T>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __values = (this && this.__values) || function(o) {
|
|
3
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
+
if (m) return m.call(o);
|
|
5
|
+
if (o && typeof o.length === "number") return {
|
|
6
|
+
next: function () {
|
|
7
|
+
if (o && i >= o.length) o = void 0;
|
|
8
|
+
return { value: o && o[i++], done: !o };
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
+
};
|
|
13
|
+
exports.__esModule = true;
|
|
14
|
+
exports.props = void 0;
|
|
15
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
16
|
+
var isWalkable = function (value) {
|
|
17
|
+
return value !== null && typeof value !== 'undefined';
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Safely read nested properties of any value.
|
|
21
|
+
* @param keys 'child.grandChild.greatGrandChild'
|
|
22
|
+
*/
|
|
23
|
+
function props(keys, predicate) {
|
|
24
|
+
return function getNestedProp(obj) {
|
|
25
|
+
var e_1, _a;
|
|
26
|
+
var next = obj;
|
|
27
|
+
try {
|
|
28
|
+
for (var _b = __values(keys.split('.')), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
29
|
+
var key = _c.value;
|
|
30
|
+
if (isWalkable(next) && key in next) {
|
|
31
|
+
next = next[key];
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return ts_belt_1.O.None;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
39
|
+
finally {
|
|
40
|
+
try {
|
|
41
|
+
if (_c && !_c.done && (_a = _b["return"])) _a.call(_b);
|
|
42
|
+
}
|
|
43
|
+
finally { if (e_1) throw e_1.error; }
|
|
44
|
+
}
|
|
45
|
+
return ts_belt_1.O.fromPredicate(next, predicate);
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
exports.props = props;
|
package/dist/{lib/get-context → get-context}/get-package-json-files/get-patterns/read-json-safe.d.ts
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Disk } from '../../../disk';
|
|
1
|
+
import { R } from '@mobily/ts-belt';
|
|
2
|
+
import type { Disk } from '../../../lib/disk';
|
|
3
|
+
import { BaseError } from '../../../lib/error';
|
|
3
4
|
export interface JsonFile<T> {
|
|
4
5
|
/** absolute path on disk to this file */
|
|
5
6
|
readonly filePath: string;
|
|
@@ -8,4 +9,4 @@ export interface JsonFile<T> {
|
|
|
8
9
|
/** raw file contents of the file */
|
|
9
10
|
readonly json: string;
|
|
10
11
|
}
|
|
11
|
-
export declare function readJsonSafe<T>(disk: Disk): (filePath: string) =>
|
|
12
|
+
export declare function readJsonSafe<T>(disk: Disk): (filePath: string) => R.Result<JsonFile<T>, BaseError>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.readJsonSafe = void 0;
|
|
4
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
5
|
+
var error_1 = require("../../../lib/error");
|
|
6
|
+
function readJsonSafe(disk) {
|
|
7
|
+
return function readJsonSafe(filePath) {
|
|
8
|
+
return (0, ts_belt_1.pipe)(readFileSafe(filePath), ts_belt_1.R.flatMap((0, ts_belt_1.flow)((parseJsonSafe), ts_belt_1.R.mapError(error_1.BaseError.map("Failed to parse JSON file at ".concat(filePath))), ts_belt_1.R.map(function (_a) {
|
|
9
|
+
var contents = _a.contents, json = _a.json;
|
|
10
|
+
return ({ contents: contents, filePath: filePath, json: json });
|
|
11
|
+
}))));
|
|
12
|
+
};
|
|
13
|
+
function readFileSafe(filePath) {
|
|
14
|
+
return (0, ts_belt_1.pipe)(ts_belt_1.R.fromExecution(function () { return disk.readFileSync(filePath); }), ts_belt_1.R.mapError(error_1.BaseError.map("Failed to read JSON file at ".concat(filePath))));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.readJsonSafe = readJsonSafe;
|
|
18
|
+
function parseJsonSafe(json) {
|
|
19
|
+
return (0, ts_belt_1.pipe)(ts_belt_1.R.fromExecution(function () { return JSON.parse(json); }), ts_belt_1.R.mapError(error_1.BaseError.map('Failed to parse JSON')), ts_belt_1.R.map(function (contents) { return ({ contents: contents, json: json }); }));
|
|
20
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.readYamlSafe = void 0;
|
|
4
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
5
|
+
var error_1 = require("../../../lib/error");
|
|
6
|
+
function readYamlSafe(disk) {
|
|
7
|
+
return function readYamlSafe(filePath) {
|
|
8
|
+
return (0, ts_belt_1.pipe)(ts_belt_1.R.fromExecution(function () { return disk.readYamlFileSync(filePath); }), ts_belt_1.R.mapError(error_1.BaseError.map("Failed to read YAML file at ".concat(filePath))));
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
exports.readYamlSafe = readYamlSafe;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Disk } from '../../lib/disk';
|
|
2
|
+
import type { Syncpack } from '../../types';
|
|
3
|
+
import { PackageJsonFile } from './package-json-file';
|
|
4
|
+
/** Create an API for every package.json file needed. */
|
|
5
|
+
export declare function getPackageJsonFiles(disk: Disk, config: Syncpack.Config.Private): PackageJsonFile[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.getPackageJsonFiles = void 0;
|
|
4
|
+
var ts_belt_1 = require("@mobily/ts-belt");
|
|
5
|
+
var _R_1 = require("../$R");
|
|
6
|
+
var get_file_paths_1 = require("./get-file-paths");
|
|
7
|
+
var read_json_safe_1 = require("./get-patterns/read-json-safe");
|
|
8
|
+
var package_json_file_1 = require("./package-json-file");
|
|
9
|
+
/** Create an API for every package.json file needed. */
|
|
10
|
+
function getPackageJsonFiles(disk, config) {
|
|
11
|
+
return (0, ts_belt_1.pipe)((0, get_file_paths_1.getFilePaths)(disk, config), ts_belt_1.R.flatMap(_R_1.$R.onlyOk(resolvePackageJson(disk))), ts_belt_1.R.getWithDefault([]));
|
|
12
|
+
function resolvePackageJson(disk) {
|
|
13
|
+
return (0, ts_belt_1.flow)((0, read_json_safe_1.readJsonSafe)(disk), ts_belt_1.R.map(function (jsonFile) { return new package_json_file_1.PackageJsonFile(jsonFile, config, disk); }));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.getPackageJsonFiles = getPackageJsonFiles;
|
package/dist/{lib/get-context → get-context}/get-package-json-files/package-json-file/index.d.ts
RENAMED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { Disk } from '../../../disk';
|
|
2
|
-
import type {
|
|
3
|
-
import type { InternalConfig } from '../../get-config/internal-config';
|
|
1
|
+
import type { Disk } from '../../../lib/disk';
|
|
2
|
+
import type { Syncpack } from '../../../types';
|
|
4
3
|
import type { JsonFile } from '../get-patterns/read-json-safe';
|
|
5
4
|
import { Instance } from './instance';
|
|
6
5
|
export interface PackageJson {
|
|
@@ -28,6 +27,7 @@ export interface PackageJson {
|
|
|
28
27
|
workspaces?: Record<string, string[]> | string[];
|
|
29
28
|
[otherProps: string]: Record<string, string | string[] | Record<string, string | string[]>> | string | string[] | undefined;
|
|
30
29
|
}
|
|
30
|
+
type Entry = [string, string];
|
|
31
31
|
export declare class PackageJsonFile {
|
|
32
32
|
/** parsed JSON contents of the file */
|
|
33
33
|
contents: PackageJson;
|
|
@@ -38,13 +38,14 @@ export declare class PackageJsonFile {
|
|
|
38
38
|
/** raw file contents of the file */
|
|
39
39
|
readonly json: string;
|
|
40
40
|
/** resolved configuration */
|
|
41
|
-
readonly
|
|
41
|
+
readonly config: Syncpack.Config.Private;
|
|
42
42
|
/** relative path on disk to this file */
|
|
43
43
|
readonly shortPath: string;
|
|
44
|
-
constructor(jsonFile: JsonFile<PackageJson>,
|
|
44
|
+
constructor(jsonFile: JsonFile<PackageJson>, config: Syncpack.Config.Private, disk: Disk);
|
|
45
45
|
hasChanged(): boolean;
|
|
46
46
|
write(): void;
|
|
47
47
|
getSource(): string;
|
|
48
48
|
getInstances(): Instance[];
|
|
49
|
-
|
|
49
|
+
getPathEntries(pathDef: Syncpack.PathDefinition, file: PackageJsonFile): Entry[];
|
|
50
50
|
}
|
|
51
|
+
export {};
|