syncpack 9.3.2 → 9.8.4
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/dist/bin-fix-mismatches/fix-mismatches-cli.js +4 -4
- package/dist/bin-fix-mismatches/fix-mismatches.js +17 -15
- package/dist/bin-fix-mismatches/index.js +50 -48
- package/dist/bin-format/format-cli.js +4 -4
- package/dist/bin-format/format.js +20 -18
- package/dist/bin-format/index.js +43 -46
- package/dist/bin-lint-semver-ranges/index.js +59 -48
- package/dist/bin-lint-semver-ranges/lint-semver-ranges-cli.js +4 -4
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +13 -35
- package/dist/bin-list/index.js +43 -46
- package/dist/bin-list/list-cli.js +4 -4
- package/dist/bin-list/list.js +26 -29
- package/dist/bin-list-mismatches/index.js +46 -47
- package/dist/bin-list-mismatches/list-mismatches-cli.js +4 -4
- package/dist/bin-list-mismatches/list-mismatches.js +55 -40
- package/dist/bin-set-semver-ranges/index.js +62 -49
- package/dist/bin-set-semver-ranges/set-semver-ranges-cli.js +4 -4
- package/dist/bin-set-semver-ranges/set-semver-ranges.js +4 -4
- package/dist/bin.js +8 -8
- package/dist/constants.d.ts +2 -1
- package/dist/constants.js +6 -5
- package/dist/get-context/$R.js +14 -36
- package/dist/get-context/get-config/get-core-types.js +11 -41
- package/dist/get-context/get-config/get-custom-types.js +7 -19
- package/dist/get-context/get-config/get-enabled-types.js +9 -11
- package/dist/get-context/get-config/index.d.ts +3 -1
- package/dist/get-context/get-config/index.js +37 -61
- package/dist/get-context/get-config/path-strategy/index.js +8 -8
- package/dist/get-context/get-config/path-strategy/lib/get-non-empty-string-prop.js +6 -6
- package/dist/get-context/get-config/path-strategy/name-and-version-props.js +23 -49
- package/dist/get-context/get-config/path-strategy/name-and-version-string.js +26 -42
- package/dist/get-context/get-config/path-strategy/types.js +1 -1
- package/dist/get-context/get-config/path-strategy/version-string.js +25 -41
- package/dist/get-context/get-config/path-strategy/versions-by-name.js +14 -30
- package/dist/get-context/get-config/schema/base-group.d.ts +2 -2
- package/dist/get-context/get-config/schema/base-group.js +5 -5
- package/dist/get-context/get-config/schema/index.d.ts +292 -164
- package/dist/get-context/get-config/schema/index.js +40 -63
- package/dist/get-context/get-config/schema/lib/non-empty-string.d.ts +2 -0
- package/dist/get-context/get-config/schema/lib/non-empty-string.js +5 -0
- package/dist/get-context/get-config/schema/paths.js +12 -12
- package/dist/get-context/get-config/schema/semver-group.d.ts +24 -24
- package/dist/get-context/get-config/schema/semver-group.js +11 -18
- package/dist/get-context/get-config/schema/semver-range.js +4 -4
- package/dist/get-context/get-config/schema/version-group.d.ts +90 -41
- package/dist/get-context/get-config/schema/version-group.js +28 -23
- package/dist/get-context/get-groups/base-group.d.ts +4 -1
- package/dist/get-context/get-groups/base-group.js +18 -19
- package/dist/get-context/get-groups/index.d.ts +7 -3
- package/dist/get-context/get-groups/index.js +42 -38
- package/dist/get-context/get-groups/semver-group.d.ts +0 -1
- package/dist/get-context/get-groups/semver-group.js +23 -66
- package/dist/get-context/get-groups/version-group/index.d.ts +7 -4
- package/dist/get-context/get-groups/version-group/index.js +31 -70
- package/dist/get-context/get-groups/version-group/instance-group/get-highest-version.d.ts +3 -1
- package/dist/get-context/get-groups/version-group/instance-group/get-highest-version.js +36 -45
- package/dist/get-context/get-groups/version-group/instance-group/get-lowest-version.d.ts +3 -0
- package/dist/get-context/get-groups/version-group/instance-group/get-lowest-version.js +44 -0
- package/dist/get-context/get-groups/version-group/instance-group/index.d.ts +16 -5
- package/dist/get-context/get-groups/version-group/instance-group/index.js +66 -54
- package/dist/get-context/get-groups/version-group/instance-group/lib/clean.d.ts +2 -0
- package/dist/get-context/get-groups/version-group/instance-group/lib/clean.js +13 -0
- package/dist/get-context/get-groups/version-group/instance-group/lib/compare-semver.d.ts +4 -0
- package/dist/get-context/get-groups/version-group/instance-group/lib/compare-semver.js +38 -0
- package/dist/get-context/get-groups/version-group/instance-group/lib/get-range-score.d.ts +2 -0
- package/dist/get-context/get-groups/version-group/instance-group/lib/get-range-score.js +23 -0
- package/dist/get-context/get-package-json-files/get-file-paths.js +18 -19
- package/dist/get-context/get-package-json-files/get-patterns/get-lerna-patterns.js +9 -12
- package/dist/get-context/get-package-json-files/get-patterns/get-pnpm-patterns.js +9 -11
- package/dist/get-context/get-package-json-files/get-patterns/get-yarn-patterns.js +10 -13
- package/dist/get-context/get-package-json-files/get-patterns/index.js +15 -42
- package/dist/get-context/get-package-json-files/get-patterns/lib/get-array-of-strings.js +4 -6
- package/dist/get-context/get-package-json-files/get-patterns/props.js +9 -33
- package/dist/get-context/get-package-json-files/get-patterns/read-json-safe.js +6 -9
- package/dist/get-context/get-package-json-files/get-patterns/read-yaml-safe.js +4 -4
- package/dist/get-context/get-package-json-files/index.d.ts +3 -1
- package/dist/get-context/get-package-json-files/index.js +8 -8
- package/dist/get-context/get-package-json-files/package-json-file/index.js +32 -55
- package/dist/get-context/get-package-json-files/package-json-file/instance.d.ts +2 -1
- package/dist/get-context/get-package-json-files/package-json-file/instance.js +15 -15
- package/dist/get-context/index.d.ts +3 -2
- package/dist/get-context/index.js +28 -24
- package/dist/lib/disk.js +28 -29
- package/dist/lib/error.js +13 -31
- package/dist/lib/exit-if-invalid.js +1 -1
- package/dist/lib/is-semver.d.ts +1 -1
- package/dist/lib/is-semver.js +15 -7
- package/dist/lib/log.js +38 -58
- package/dist/lib/newlines.js +11 -11
- package/dist/lib/print-strings.js +2 -2
- package/dist/lib/set-semver-range.js +8 -8
- package/dist/lib/show-help-on-error.js +31 -8
- package/dist/lib/sort-by-name.js +1 -1
- package/dist/lib/write-if-changed.js +3 -3
- package/dist/option.js +8 -13
- package/dist/types.d.ts +3 -1
- package/dist/types.js +1 -1
- package/package.json +20 -16
- package/dist/get-context/get-all-instances.d.ts +0 -3
- package/dist/get-context/get-all-instances.js +0 -8
|
@@ -1,31 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
exports.any = exports.base = exports.pinned = exports.ignored = exports.banned = exports.standard = void 0;
|
|
15
|
-
var zod_1 = require("zod");
|
|
16
|
-
var base_group_1 = require("./base-group");
|
|
17
|
-
var NonEmptyString = zod_1.z.string().trim().min(1);
|
|
18
|
-
exports.standard = zod_1.z.object(base_group_1.baseGroupFields).strict();
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.any = exports.defaultGroup = exports.snappedTo = exports.pinned = exports.ignored = exports.banned = exports.standard = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const base_group_1 = require("./base-group");
|
|
6
|
+
const non_empty_string_1 = require("./lib/non-empty-string");
|
|
7
|
+
const preferVersion = zod_1.z
|
|
8
|
+
.enum(['highestSemver', 'lowestSemver'])
|
|
9
|
+
.optional()
|
|
10
|
+
.default('highestSemver');
|
|
11
|
+
exports.standard = zod_1.z
|
|
12
|
+
.object({ ...base_group_1.baseGroupFields, preferVersion })
|
|
13
|
+
.strict();
|
|
19
14
|
exports.banned = zod_1.z
|
|
20
|
-
.object(
|
|
15
|
+
.object({ ...base_group_1.baseGroupFields, isBanned: zod_1.z.literal(true) })
|
|
21
16
|
.strict();
|
|
22
17
|
exports.ignored = zod_1.z
|
|
23
|
-
.object(
|
|
18
|
+
.object({ ...base_group_1.baseGroupFields, isIgnored: zod_1.z.literal(true) })
|
|
24
19
|
.strict();
|
|
25
20
|
exports.pinned = zod_1.z
|
|
26
|
-
.object(
|
|
21
|
+
.object({ ...base_group_1.baseGroupFields, pinVersion: non_empty_string_1.nonEmptyString })
|
|
22
|
+
.strict();
|
|
23
|
+
exports.snappedTo = zod_1.z
|
|
24
|
+
.object({ ...base_group_1.baseGroupFields, snapTo: zod_1.z.array(non_empty_string_1.nonEmptyString) })
|
|
27
25
|
.strict();
|
|
28
|
-
exports.
|
|
29
|
-
.object(
|
|
26
|
+
exports.defaultGroup = zod_1.z
|
|
27
|
+
.object({ ...base_group_1.baseGroupFields, isDefault: zod_1.z.literal(true), preferVersion })
|
|
30
28
|
.strict();
|
|
31
|
-
exports.any = zod_1.z.union([
|
|
29
|
+
exports.any = zod_1.z.union([
|
|
30
|
+
exports.standard,
|
|
31
|
+
exports.banned,
|
|
32
|
+
exports.ignored,
|
|
33
|
+
exports.pinned,
|
|
34
|
+
exports.snappedTo,
|
|
35
|
+
exports.defaultGroup,
|
|
36
|
+
]);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Syncpack } from '../../types';
|
|
2
|
+
import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
|
|
2
3
|
import type { Instance } from '../get-package-json-files/package-json-file/instance';
|
|
3
4
|
export declare class BaseGroup<T extends Syncpack.Config.SemverGroup.Any | Syncpack.Config.VersionGroup.Any> {
|
|
4
5
|
/** Full config for this run of syncpack */
|
|
@@ -11,7 +12,9 @@ export declare class BaseGroup<T extends Syncpack.Config.SemverGroup.Any | Syncp
|
|
|
11
12
|
instancesByName: Record<string, Instance[]>;
|
|
12
13
|
/** Is this the catch-all group, not defined by the user? */
|
|
13
14
|
isDefault: boolean;
|
|
14
|
-
|
|
15
|
+
/** All package.json files */
|
|
16
|
+
packageJsonFiles: PackageJsonFile[];
|
|
17
|
+
constructor(config: Syncpack.Config.Private, group: T, packageJsonFiles: PackageJsonFile[]);
|
|
15
18
|
/** Can this instance be added to this group? */
|
|
16
19
|
canAdd(instance: Instance): boolean;
|
|
17
20
|
/** Add this instance to this group */
|
|
@@ -2,39 +2,38 @@
|
|
|
2
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.BaseGroup = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
11
|
this.groupConfig = group;
|
|
12
12
|
this.instances = [];
|
|
13
13
|
this.instancesByName = {};
|
|
14
14
|
this.isDefault =
|
|
15
15
|
group === config.defaultSemverGroup ||
|
|
16
16
|
group === config.defaultVersionGroup;
|
|
17
|
+
this.packageJsonFiles = packageJsonFiles;
|
|
17
18
|
this.syncpackConfig = config;
|
|
18
19
|
}
|
|
19
20
|
/** Can this instance be added to this group? */
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return ((!(0,
|
|
21
|
+
canAdd(instance) {
|
|
22
|
+
const { dependencies, dependencyTypes, packages } = this.groupConfig;
|
|
23
|
+
return ((!(0, is_non_empty_array_1.isNonEmptyArray)(dependencyTypes) ||
|
|
23
24
|
dependencyTypes.includes(instance.pathDef.name)) &&
|
|
24
|
-
(!(0,
|
|
25
|
-
packages.some(
|
|
26
|
-
(!(0,
|
|
27
|
-
dependencies.some(
|
|
28
|
-
}
|
|
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
|
+
}
|
|
29
30
|
/** Add this instance to this group */
|
|
30
|
-
|
|
31
|
-
var _a;
|
|
31
|
+
add(instance) {
|
|
32
32
|
if (!this.instancesByName[instance.name]) {
|
|
33
33
|
this.instancesByName[instance.name] = [];
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
this.instancesByName[instance.name]?.push(instance);
|
|
36
36
|
this.instances.push(instance);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
}());
|
|
37
|
+
}
|
|
38
|
+
}
|
|
40
39
|
exports.BaseGroup = BaseGroup;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { R } from '@mobily/ts-belt';
|
|
2
|
+
import { BaseError } from '../../lib/error';
|
|
1
3
|
import type { Syncpack } from '../../types';
|
|
2
|
-
import type {
|
|
4
|
+
import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
|
|
3
5
|
import { SemverGroup } from './semver-group';
|
|
4
6
|
import { VersionGroup } from './version-group';
|
|
5
|
-
|
|
7
|
+
interface GroupsByPropName {
|
|
6
8
|
semverGroups: SemverGroup[];
|
|
7
9
|
versionGroups: VersionGroup[];
|
|
8
|
-
}
|
|
10
|
+
}
|
|
11
|
+
export declare function getGroups(config: Syncpack.Config.Private, packageJsonFiles: PackageJsonFile[]): R.Result<GroupsByPropName, BaseError>;
|
|
12
|
+
export {};
|
|
@@ -1,47 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
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;
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
3
|
exports.getGroups = void 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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)),
|
|
21
19
|
};
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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;
|
|
33
31
|
}
|
|
34
32
|
}
|
|
35
|
-
|
|
36
|
-
finally {
|
|
37
|
-
try {
|
|
38
|
-
if (_c && !_c.done && (_a = _b["return"])) _a.call(_b);
|
|
39
|
-
}
|
|
40
|
-
finally { if (e_1) throw e_1.error; }
|
|
41
|
-
}
|
|
42
|
-
throw new Error("".concat(name, " in ").concat(pkgName, " did not match any ").concat(key));
|
|
33
|
+
throw new Error(`${name} in ${pkgName} did not match any ${key}`);
|
|
43
34
|
});
|
|
44
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
|
+
}
|
|
45
50
|
return groupsByName;
|
|
46
51
|
}
|
|
47
|
-
exports.getGroups = getGroups;
|
|
@@ -3,7 +3,6 @@ import type { Instance } from '../get-package-json-files/package-json-file/insta
|
|
|
3
3
|
import { BaseGroup } from './base-group';
|
|
4
4
|
type MismatchesByName = [string, Instance[]];
|
|
5
5
|
export declare class SemverGroup extends BaseGroup<Syncpack.Config.SemverGroup.Any> {
|
|
6
|
-
constructor(config: Syncpack.Config.Private, semverGroup: Syncpack.Config.SemverGroup.Any);
|
|
7
6
|
getExpectedVersion(instance: Instance): string;
|
|
8
7
|
/** Does this `Instance` have a version which does not follow the rules? */
|
|
9
8
|
isMismatch(instance: Instance): boolean;
|
|
@@ -1,47 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
18
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
19
|
-
if (!m) return o;
|
|
20
|
-
var i = m.call(o), r, ar = [], e;
|
|
21
|
-
try {
|
|
22
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
23
|
-
}
|
|
24
|
-
catch (error) { e = { error: error }; }
|
|
25
|
-
finally {
|
|
26
|
-
try {
|
|
27
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
28
|
-
}
|
|
29
|
-
finally { if (e) throw e.error; }
|
|
30
|
-
}
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
exports.__esModule = true;
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
3
|
exports.SemverGroup = void 0;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return _super.call(this, config, semverGroup) || this;
|
|
42
|
-
}
|
|
43
|
-
SemverGroup.prototype.getExpectedVersion = function (instance) {
|
|
44
|
-
var version = instance.version;
|
|
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;
|
|
45
10
|
// leave ignored versions alone
|
|
46
11
|
if (this.isIgnored())
|
|
47
12
|
return version;
|
|
@@ -52,38 +17,30 @@ var SemverGroup = /** @class */ (function (_super) {
|
|
|
52
17
|
if (instance.isWorkspace())
|
|
53
18
|
return (0, set_semver_range_1.setSemverRange)('', version);
|
|
54
19
|
// otherwise we can change it
|
|
55
|
-
|
|
20
|
+
const range = this.groupConfig.range;
|
|
56
21
|
return (0, set_semver_range_1.setSemverRange)(range, version);
|
|
57
|
-
}
|
|
22
|
+
}
|
|
58
23
|
/** Does this `Instance` have a version which does not follow the rules? */
|
|
59
|
-
|
|
24
|
+
isMismatch(instance) {
|
|
60
25
|
return instance.version !== this.getExpectedVersion(instance);
|
|
61
|
-
}
|
|
26
|
+
}
|
|
62
27
|
/** 1+ `Instance` has a version which does not follow the rules */
|
|
63
|
-
|
|
28
|
+
hasMismatches() {
|
|
64
29
|
return this.getMismatches().length > 0;
|
|
65
|
-
}
|
|
66
|
-
|
|
30
|
+
}
|
|
31
|
+
isIgnored() {
|
|
67
32
|
return this.groupConfig.isIgnored === true;
|
|
68
|
-
}
|
|
33
|
+
}
|
|
69
34
|
/** Get every `Instance` with a version which does not follow the rules */
|
|
70
|
-
|
|
71
|
-
var _this = this;
|
|
35
|
+
getMismatches() {
|
|
72
36
|
return this.isIgnored()
|
|
73
37
|
? []
|
|
74
38
|
: Object.entries(this.instancesByName)
|
|
75
|
-
.map(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
.filter(function (_a) {
|
|
83
|
-
var _b = __read(_a, 2), arr = _b[1];
|
|
84
|
-
return arr.length > 0;
|
|
85
|
-
});
|
|
86
|
-
};
|
|
87
|
-
return SemverGroup;
|
|
88
|
-
}(base_group_1.BaseGroup));
|
|
39
|
+
.map(([name, instances]) => [
|
|
40
|
+
name,
|
|
41
|
+
instances.filter((instance) => this.isMismatch(instance)),
|
|
42
|
+
])
|
|
43
|
+
.filter(([, arr]) => arr.length > 0);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
89
46
|
exports.SemverGroup = SemverGroup;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
+
import { O } from '@mobily/ts-belt';
|
|
1
2
|
import type { Syncpack } from '../../../types';
|
|
2
3
|
import { BaseGroup } from '../base-group';
|
|
3
4
|
import { InstanceGroup } from './instance-group';
|
|
4
5
|
export declare class VersionGroup extends BaseGroup<Syncpack.Config.VersionGroup.Any> {
|
|
5
|
-
getAllInstanceGroups(): InstanceGroup[];
|
|
6
|
-
getInvalidInstanceGroups(): InstanceGroup[];
|
|
7
6
|
isBanned(): boolean;
|
|
8
7
|
isIgnored(): boolean;
|
|
9
|
-
|
|
10
|
-
|
|
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? */
|
|
11
14
|
isUnpinned(): boolean;
|
|
12
15
|
}
|
|
@@ -1,75 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
18
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
19
|
-
if (!m) return o;
|
|
20
|
-
var i = m.call(o), r, ar = [], e;
|
|
21
|
-
try {
|
|
22
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
23
|
-
}
|
|
24
|
-
catch (error) { e = { error: error }; }
|
|
25
|
-
finally {
|
|
26
|
-
try {
|
|
27
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
28
|
-
}
|
|
29
|
-
finally { if (e) throw e.error; }
|
|
30
|
-
}
|
|
31
|
-
return ar;
|
|
32
|
-
};
|
|
33
|
-
exports.__esModule = true;
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
3
|
exports.VersionGroup = void 0;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
VersionGroup.prototype.getAllInstanceGroups = function () {
|
|
44
|
-
var _this = this;
|
|
45
|
-
return Object.entries(this.instancesByName).map(function (_a) {
|
|
46
|
-
var _b = __read(_a, 2), name = _b[0], instances = _b[1];
|
|
47
|
-
return new instance_group_1.InstanceGroup(_this, name, instances);
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
VersionGroup.prototype.getInvalidInstanceGroups = function () {
|
|
51
|
-
return this.getAllInstanceGroups().filter(function (group) { return group.isInvalid(); });
|
|
52
|
-
};
|
|
53
|
-
VersionGroup.prototype.isBanned = function () {
|
|
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() {
|
|
54
11
|
return this.groupConfig.isBanned === true;
|
|
55
|
-
}
|
|
56
|
-
|
|
12
|
+
}
|
|
13
|
+
isIgnored() {
|
|
57
14
|
return this.groupConfig.isIgnored === true;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
return this.groupConfig.
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
+
}
|
|
75
36
|
exports.VersionGroup = VersionGroup;
|
|
@@ -1,51 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
exports
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getHighestVersion = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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");
|
|
7
9
|
function getHighestVersion(versions) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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`));
|
|
23
38
|
}
|
|
24
39
|
exports.getHighestVersion = getHighestVersion;
|
|
25
|
-
function
|
|
26
|
-
|
|
27
|
-
return 0;
|
|
28
|
-
if (version === constants_1.RANGE.ANY)
|
|
29
|
-
return 8;
|
|
30
|
-
var range = getRange(version);
|
|
31
|
-
if (range === constants_1.RANGE.GT)
|
|
32
|
-
return 7;
|
|
33
|
-
if (range === constants_1.RANGE.GTE)
|
|
34
|
-
return 6;
|
|
35
|
-
if (range === constants_1.RANGE.MINOR)
|
|
36
|
-
return 5;
|
|
37
|
-
if (version.indexOf('.x') !== -1)
|
|
38
|
-
return 4;
|
|
39
|
-
if (range === constants_1.RANGE.PATCH)
|
|
40
|
-
return 3;
|
|
41
|
-
if (range === constants_1.RANGE.EXACT)
|
|
42
|
-
return 2;
|
|
43
|
-
if (range === constants_1.RANGE.LTE)
|
|
44
|
-
return 1;
|
|
45
|
-
if (range === constants_1.RANGE.LT)
|
|
46
|
-
return 0;
|
|
47
|
-
return 0;
|
|
48
|
-
}
|
|
49
|
-
function getRange(version) {
|
|
50
|
-
return version.slice(0, version.search(/[0-9]/));
|
|
40
|
+
function newHighestVersion(withRange) {
|
|
41
|
+
return { withRange, semver: (0, clean_1.clean)(withRange) };
|
|
51
42
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
}
|