syncpack 9.8.6 → 10.1.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.
- package/README.md +22 -19
- package/dist/bin-fix-mismatches/fix-mismatches-cli.d.ts +2 -2
- package/dist/bin-fix-mismatches/fix-mismatches-cli.js +3 -1
- package/dist/bin-fix-mismatches/fix-mismatches.d.ts +2 -2
- package/dist/bin-fix-mismatches/fix-mismatches.js +42 -24
- package/dist/bin-format/format-cli.d.ts +2 -2
- package/dist/bin-format/format-cli.js +2 -1
- package/dist/bin-format/format.d.ts +2 -2
- package/dist/bin-format/format.js +4 -1
- package/dist/bin-lint/index.d.ts +2 -0
- package/dist/bin-lint/index.js +39 -0
- package/dist/bin-lint/lint-cli.d.ts +3 -0
- package/dist/bin-lint/lint-cli.js +11 -0
- package/dist/bin-lint/lint.d.ts +2 -0
- package/dist/bin-lint/lint.js +116 -0
- 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 +2 -1
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +2 -2
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +29 -25
- package/dist/bin-list/list-cli.d.ts +2 -2
- package/dist/bin-list/list-cli.js +2 -1
- package/dist/bin-list/list.d.ts +2 -2
- package/dist/bin-list/list.js +58 -54
- package/dist/bin-list-mismatches/list-mismatches-cli.d.ts +2 -2
- package/dist/bin-list-mismatches/list-mismatches-cli.js +2 -1
- package/dist/bin-list-mismatches/list-mismatches.d.ts +2 -2
- package/dist/bin-list-mismatches/list-mismatches.js +72 -106
- 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 +2 -1
- package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +2 -2
- package/dist/bin-set-semver-ranges/set-semver-ranges.js +17 -3
- package/dist/bin.js +3 -0
- package/dist/config/get-custom-types.d.ts +9 -0
- package/dist/config/get-custom-types.js +49 -0
- package/dist/config/get-enabled-types.d.ts +3 -0
- package/dist/config/get-enabled-types.js +48 -0
- package/dist/config/get-filter.d.ts +2 -0
- package/dist/config/get-filter.js +13 -0
- package/dist/config/get-indent.d.ts +2 -0
- package/dist/config/get-indent.js +12 -0
- package/dist/config/get-semver-range.d.ts +3 -0
- package/dist/config/get-semver-range.js +12 -0
- package/dist/config/get-sort-az.d.ts +2 -0
- package/dist/config/get-sort-az.js +18 -0
- package/dist/config/get-sort-first.d.ts +2 -0
- package/dist/config/get-sort-first.js +10 -0
- package/dist/config/get-source.d.ts +2 -0
- package/dist/config/get-source.js +13 -0
- package/dist/config/types.d.ts +106 -0
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +1 -0
- package/dist/get-context/index.d.ts +8 -16
- package/dist/get-context/index.js +7 -33
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-file-paths.d.ts +3 -3
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-file-paths.js +4 -4
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/get-lerna-patterns.d.ts +1 -1
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/get-lerna-patterns.js +1 -1
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/get-pnpm-patterns.d.ts +1 -1
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/get-pnpm-patterns.js +1 -1
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/get-yarn-patterns.d.ts +1 -1
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/get-yarn-patterns.js +1 -1
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/index.d.ts +3 -3
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/index.js +4 -3
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/read-json-safe.d.ts +1 -1
- package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/read-yaml-safe.d.ts +1 -1
- package/dist/{get-context/get-package-json-files → get-package-json-files}/index.d.ts +3 -3
- package/dist/{get-context/get-package-json-files → get-package-json-files}/index.js +1 -1
- package/dist/{get-context/get-package-json-files/package-json-file → get-package-json-files}/instance.d.ts +6 -8
- package/dist/get-package-json-files/instance.js +23 -0
- 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
- package/dist/get-package-json-files/package-json-file.js +45 -0
- package/dist/get-semver-groups/catch-all.d.ts +4 -0
- package/dist/get-semver-groups/catch-all.js +11 -0
- package/dist/get-semver-groups/filtered-out.d.ts +13 -0
- package/dist/get-semver-groups/filtered-out.js +29 -0
- package/dist/get-semver-groups/ignored.d.ts +11 -0
- package/dist/get-semver-groups/ignored.js +22 -0
- package/dist/get-semver-groups/index.d.ts +32 -0
- package/dist/get-semver-groups/index.js +90 -0
- package/dist/get-semver-groups/with-range.d.ts +11 -0
- package/dist/get-semver-groups/with-range.js +55 -0
- package/dist/get-version-groups/banned.d.ts +11 -0
- package/dist/get-version-groups/banned.js +24 -0
- package/dist/get-version-groups/catch-all.d.ts +4 -0
- package/dist/get-version-groups/catch-all.js +11 -0
- package/dist/get-version-groups/filtered-out.d.ts +13 -0
- package/dist/get-version-groups/filtered-out.js +31 -0
- package/dist/get-version-groups/ignored.d.ts +11 -0
- package/dist/get-version-groups/ignored.js +24 -0
- package/dist/get-version-groups/index.d.ts +57 -0
- package/dist/get-version-groups/index.js +119 -0
- package/dist/get-version-groups/lib/delete.d.ts +2 -0
- package/dist/get-version-groups/lib/delete.js +4 -0
- package/dist/get-version-groups/lib/get-highest-version.js +13 -0
- package/dist/get-version-groups/lib/get-lowest-version.js +13 -0
- package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups}/lib/get-range-score.js +3 -2
- package/dist/get-version-groups/lib/get-unique-versions.d.ts +2 -0
- package/dist/get-version-groups/lib/get-unique-versions.js +8 -0
- package/dist/get-version-groups/lib/group-by.d.ts +1 -0
- package/dist/get-version-groups/lib/group-by.js +11 -0
- package/dist/get-version-groups/lib/sort.d.ts +1 -0
- package/dist/get-version-groups/lib/sort.js +44 -0
- package/dist/get-version-groups/pinned.d.ts +11 -0
- package/dist/get-version-groups/pinned.js +43 -0
- package/dist/get-version-groups/snapped-to.d.ts +11 -0
- package/dist/get-version-groups/snapped-to.js +52 -0
- package/dist/get-version-groups/standard.d.ts +11 -0
- package/dist/get-version-groups/standard.js +95 -0
- package/dist/index.d.ts +2 -0
- package/dist/{get-context → lib}/$R.d.ts +2 -2
- package/dist/{get-context → lib}/$R.js +3 -4
- package/dist/lib/disk.d.ts +3 -2
- package/dist/lib/exit-if-invalid.d.ts +2 -2
- package/dist/lib/is-semver.d.ts +5 -3
- package/dist/lib/is-semver.js +17 -3
- package/dist/lib/log.d.ts +4 -8
- package/dist/lib/log.js +3 -29
- package/dist/lib/set-semver-range.d.ts +2 -2
- package/dist/lib/write-if-changed.d.ts +2 -2
- package/dist/lib/write-if-changed.js +6 -25
- package/dist/{get-context/get-config/path-strategy → strategy}/lib/get-non-empty-string-prop.d.ts +1 -1
- package/dist/{get-context/get-config/path-strategy → strategy}/lib/get-non-empty-string-prop.js +1 -2
- package/dist/strategy/name-and-version-props.d.ts +12 -0
- package/dist/strategy/name-and-version-props.js +50 -0
- package/dist/strategy/named-version-string.d.ts +11 -0
- package/dist/{get-context/get-config/path-strategy/name-and-version-string.js → strategy/named-version-string.js} +26 -22
- package/dist/strategy/unnamed-version-string.d.ts +11 -0
- package/dist/strategy/unnamed-version-string.js +48 -0
- package/dist/strategy/versions-by-name.d.ts +11 -0
- package/dist/strategy/versions-by-name.js +29 -0
- package/package.json +8 -4
- package/dist/get-context/get-config/get-core-types.d.ts +0 -36
- package/dist/get-context/get-config/get-core-types.js +0 -38
- package/dist/get-context/get-config/get-custom-types.d.ts +0 -4
- package/dist/get-context/get-config/get-custom-types.js +0 -16
- package/dist/get-context/get-config/get-enabled-types.d.ts +0 -4
- package/dist/get-context/get-config/get-enabled-types.js +0 -17
- package/dist/get-context/get-config/index.d.ts +0 -8
- package/dist/get-context/get-config/index.js +0 -98
- package/dist/get-context/get-config/path-strategy/index.d.ts +0 -8
- package/dist/get-context/get-config/path-strategy/index.js +0 -18
- package/dist/get-context/get-config/path-strategy/name-and-version-props.d.ts +0 -2
- package/dist/get-context/get-config/path-strategy/name-and-version-props.js +0 -44
- package/dist/get-context/get-config/path-strategy/name-and-version-string.d.ts +0 -2
- package/dist/get-context/get-config/path-strategy/types.d.ts +0 -14
- package/dist/get-context/get-config/path-strategy/version-string.d.ts +0 -2
- package/dist/get-context/get-config/path-strategy/version-string.js +0 -49
- package/dist/get-context/get-config/path-strategy/versions-by-name.d.ts +0 -2
- package/dist/get-context/get-config/path-strategy/versions-by-name.js +0 -21
- package/dist/get-context/get-config/schema/base-group.d.ts +0 -7
- package/dist/get-context/get-config/schema/base-group.js +0 -10
- package/dist/get-context/get-config/schema/index.d.ts +0 -1540
- package/dist/get-context/get-config/schema/index.js +0 -81
- package/dist/get-context/get-config/schema/lib/non-empty-string.d.ts +0 -2
- package/dist/get-context/get-config/schema/lib/non-empty-string.js +0 -5
- package/dist/get-context/get-config/schema/paths.d.ts +0 -89
- package/dist/get-context/get-config/schema/paths.js +0 -33
- package/dist/get-context/get-config/schema/semver-group.d.ts +0 -119
- package/dist/get-context/get-config/schema/semver-group.js +0 -43
- package/dist/get-context/get-config/schema/semver-range.d.ts +0 -2
- package/dist/get-context/get-config/schema/semver-range.js +0 -16
- package/dist/get-context/get-config/schema/version-group.d.ts +0 -230
- package/dist/get-context/get-config/schema/version-group.js +0 -36
- package/dist/get-context/get-groups/base-group.d.ts +0 -22
- package/dist/get-context/get-groups/base-group.js +0 -39
- package/dist/get-context/get-groups/index.d.ts +0 -11
- package/dist/get-context/get-groups/index.js +0 -53
- package/dist/get-context/get-groups/semver-group.d.ts +0 -15
- package/dist/get-context/get-groups/semver-group.js +0 -46
- package/dist/get-context/get-groups/version-group/index.d.ts +0 -15
- package/dist/get-context/get-groups/version-group/index.js +0 -40
- package/dist/get-context/get-groups/version-group/instance-group/get-highest-version.js +0 -42
- package/dist/get-context/get-groups/version-group/instance-group/get-lowest-version.js +0 -44
- package/dist/get-context/get-groups/version-group/instance-group/index.d.ts +0 -34
- package/dist/get-context/get-groups/version-group/instance-group/index.js +0 -103
- package/dist/get-context/get-groups/version-group/instance-group/lib/compare-semver.d.ts +0 -4
- package/dist/get-context/get-groups/version-group/instance-group/lib/compare-semver.js +0 -38
- package/dist/get-context/get-package-json-files/package-json-file/index.js +0 -65
- package/dist/get-context/get-package-json-files/package-json-file/instance.js +0 -46
- package/dist/lib/error.d.ts +0 -12
- package/dist/lib/error.js +0 -25
- package/dist/types.d.ts +0 -90
- /package/dist/{get-context/get-config/path-strategy → config}/types.js +0 -0
- /package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/read-json-safe.js +0 -0
- /package/dist/{get-context/get-package-json-files → get-package-json-files}/get-patterns/read-yaml-safe.js +0 -0
- /package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups}/lib/clean.d.ts +0 -0
- /package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups}/lib/clean.js +0 -0
- /package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups/lib}/get-highest-version.d.ts +0 -0
- /package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups/lib}/get-lowest-version.d.ts +0 -0
- /package/dist/{get-context/get-groups/version-group/instance-group → get-version-groups}/lib/get-range-score.d.ts +0 -0
- /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 minimatch_1 = __importDefault(require("minimatch"));
|
|
8
|
-
const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
|
|
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,11 +0,0 @@
|
|
|
1
|
-
import type { Result } from 'tightrope/result';
|
|
2
|
-
import type { Syncpack } from '../../types';
|
|
3
|
-
import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
|
|
4
|
-
import { SemverGroup } from './semver-group';
|
|
5
|
-
import { VersionGroup } from './version-group';
|
|
6
|
-
interface GroupsByPropName {
|
|
7
|
-
semverGroups: SemverGroup[];
|
|
8
|
-
versionGroups: VersionGroup[];
|
|
9
|
-
}
|
|
10
|
-
export declare function getGroups(config: Syncpack.Config.Private, packageJsonFiles: PackageJsonFile[]): Result<GroupsByPropName>;
|
|
11
|
-
export {};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getGroups = void 0;
|
|
4
|
-
const pipe_1 = require("tightrope/fn/pipe");
|
|
5
|
-
const from_try_1 = require("tightrope/result/from-try");
|
|
6
|
-
const map_err_1 = require("tightrope/result/map-err");
|
|
7
|
-
const error_1 = require("../../lib/error");
|
|
8
|
-
const log_1 = require("../../lib/log");
|
|
9
|
-
const sort_by_name_1 = require("../../lib/sort-by-name");
|
|
10
|
-
const semver_group_1 = require("./semver-group");
|
|
11
|
-
const version_group_1 = require("./version-group");
|
|
12
|
-
function getGroups(config, packageJsonFiles) {
|
|
13
|
-
const ERR_CREATING_GROUPS = 'Error creating semver and version groups';
|
|
14
|
-
return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => unsafeGetGroups(config, packageJsonFiles)), (0, map_err_1.mapErr)(error_1.BaseError.map(ERR_CREATING_GROUPS)));
|
|
15
|
-
}
|
|
16
|
-
exports.getGroups = getGroups;
|
|
17
|
-
function unsafeGetGroups(config, packageJsonFiles) {
|
|
18
|
-
const groupsByName = {
|
|
19
|
-
semverGroups: config.semverGroups.map((group) => new semver_group_1.SemverGroup(config, group, packageJsonFiles)),
|
|
20
|
-
versionGroups: config.versionGroups.map((group) => new version_group_1.VersionGroup(config, group, packageJsonFiles)),
|
|
21
|
-
};
|
|
22
|
-
const groupNames = Object.keys(groupsByName);
|
|
23
|
-
const instances = packageJsonFiles
|
|
24
|
-
.flatMap((pkg) => pkg.getInstances())
|
|
25
|
-
.sort(sort_by_name_1.sortByName);
|
|
26
|
-
instances.forEach((instance) => {
|
|
27
|
-
const { name, pkgName } = instance;
|
|
28
|
-
groupNames.forEach((key) => {
|
|
29
|
-
for (const group of groupsByName[key]) {
|
|
30
|
-
if (group.canAdd(instance)) {
|
|
31
|
-
group.add(instance);
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
throw new Error(`${name} in ${pkgName} did not match any ${key}`);
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
/* istanbul ignore if */
|
|
39
|
-
if (process.env.SYNCPACK_VERBOSE) {
|
|
40
|
-
groupNames.forEach((key) => {
|
|
41
|
-
groupsByName[key].forEach((group, i) => {
|
|
42
|
-
const size = group.instances.length;
|
|
43
|
-
const ref = `${key}[${group.isDefault ? 'default' : i}]`;
|
|
44
|
-
(0, log_1.verbose)(`${ref} has ${size} instances`);
|
|
45
|
-
group.instances.forEach(({ name, pathDef, version, packageJsonFile }) => {
|
|
46
|
-
const shortPath = packageJsonFile.shortPath;
|
|
47
|
-
(0, log_1.verbose)(`${ref} ← ${name}@${version} in ${pathDef.path} of ${shortPath}`);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
return groupsByName;
|
|
53
|
-
}
|
|
@@ -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 type { Option } from 'tightrope/option';
|
|
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(): Option<string[]>;
|
|
10
|
-
getAllInstanceGroups(): InstanceGroup[];
|
|
11
|
-
getInvalidInstanceGroups(): InstanceGroup[];
|
|
12
|
-
getPinnedVersion(): Option<string>;
|
|
13
|
-
/** Is `pinVersion` defined and this group does not match that version? */
|
|
14
|
-
isUnpinned(): boolean;
|
|
15
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VersionGroup = void 0;
|
|
4
|
-
const pipe_1 = require("tightrope/fn/pipe");
|
|
5
|
-
const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
|
|
6
|
-
const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
|
|
7
|
-
const from_guard_1 = require("tightrope/option/from-guard");
|
|
8
|
-
const is_some_1 = require("tightrope/option/is-some");
|
|
9
|
-
const map_1 = require("tightrope/option/map");
|
|
10
|
-
const unwrap_or_1 = require("tightrope/option/unwrap-or");
|
|
11
|
-
const base_group_1 = require("../base-group");
|
|
12
|
-
const instance_group_1 = require("./instance-group");
|
|
13
|
-
class VersionGroup extends base_group_1.BaseGroup {
|
|
14
|
-
isBanned() {
|
|
15
|
-
return this.groupConfig.isBanned === true;
|
|
16
|
-
}
|
|
17
|
-
isIgnored() {
|
|
18
|
-
return this.groupConfig.isIgnored === true;
|
|
19
|
-
}
|
|
20
|
-
hasSnappedToPackages() {
|
|
21
|
-
return (0, is_some_1.isSome)(this.getSnappedToPackages());
|
|
22
|
-
}
|
|
23
|
-
getSnappedToPackages() {
|
|
24
|
-
return (0, from_guard_1.fromGuard)(is_array_of_strings_1.isArrayOfStrings, this.groupConfig.snapTo);
|
|
25
|
-
}
|
|
26
|
-
getAllInstanceGroups() {
|
|
27
|
-
return Object.entries(this.instancesByName).map(([name, instances]) => new instance_group_1.InstanceGroup(this, name, instances));
|
|
28
|
-
}
|
|
29
|
-
getInvalidInstanceGroups() {
|
|
30
|
-
return this.getAllInstanceGroups().filter((group) => group.isInvalid());
|
|
31
|
-
}
|
|
32
|
-
getPinnedVersion() {
|
|
33
|
-
return (0, from_guard_1.fromGuard)(is_non_empty_string_1.isNonEmptyString, this.groupConfig.pinVersion);
|
|
34
|
-
}
|
|
35
|
-
/** Is `pinVersion` defined and this group does not match that version? */
|
|
36
|
-
isUnpinned() {
|
|
37
|
-
return (0, pipe_1.pipe)(this.getPinnedVersion(), (0, map_1.map)((pinVersion) => this.instances.some((o) => o.version !== pinVersion)), (0, unwrap_or_1.unwrapOr)(false));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.VersionGroup = VersionGroup;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getHighestVersion = void 0;
|
|
4
|
-
const result_1 = require("tightrope/result");
|
|
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 new result_1.Ok(withRange);
|
|
16
|
-
}
|
|
17
|
-
// impossible to know how the user wants to resolve unsupported versions
|
|
18
|
-
case 'invalid': {
|
|
19
|
-
return new result_1.Err(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
|
-
? new result_1.Ok(highest.withRange)
|
|
37
|
-
: new result_1.Err(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,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLowestVersion = void 0;
|
|
4
|
-
const result_1 = require("tightrope/result");
|
|
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 new result_1.Err(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
|
-
? new result_1.Ok(lowest.withRange)
|
|
39
|
-
: new result_1.Err(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,34 +0,0 @@
|
|
|
1
|
-
import type { Result } from 'tightrope/result';
|
|
2
|
-
import type { VersionGroup } from '..';
|
|
3
|
-
import type { Instance } from '../../../get-package-json-files/package-json-file/instance';
|
|
4
|
-
export declare const DELETE: unique symbol;
|
|
5
|
-
export type Delete = typeof DELETE;
|
|
6
|
-
/** Every `Instance` of eg `"lodash"` for a given `VersionGroup` */
|
|
7
|
-
export declare class InstanceGroup {
|
|
8
|
-
/** Every package/pathName location where this dependency was found */
|
|
9
|
-
instances: Instance[];
|
|
10
|
-
/** @example `"lodash"` */
|
|
11
|
-
name: string;
|
|
12
|
-
/** The `VersionGroup` which this `InstanceGroup` belongs to */
|
|
13
|
-
versionGroup: VersionGroup;
|
|
14
|
-
constructor(versionGroup: VersionGroup, name: string, instances: Instance[]);
|
|
15
|
-
hasUnsupportedVersion(): boolean;
|
|
16
|
-
getUniqueVersions(): string[];
|
|
17
|
-
hasMismatchingVersions(): boolean;
|
|
18
|
-
isInvalid(): boolean;
|
|
19
|
-
getExpectedVersion(): Result<string | Delete>;
|
|
20
|
-
/** If all versions are valid semver, return the newest one */
|
|
21
|
-
getHighestVersion(): Result<string>;
|
|
22
|
-
/** If all versions are valid semver, return the lowest one */
|
|
23
|
-
getLowestVersion(): Result<string>;
|
|
24
|
-
/** Get the first version matched by the `snapTo` packages */
|
|
25
|
-
getSnappedVersion(): Result<string>;
|
|
26
|
-
/** Is `snapTo` defined and this group does not match that version? */
|
|
27
|
-
isUnsnapped(): Result<boolean>;
|
|
28
|
-
/** Get version of dependency which is developed in this monorepo */
|
|
29
|
-
getWorkspaceVersion(): Result<string>;
|
|
30
|
-
/** Find instance of this dependency which is developed in this monorepo */
|
|
31
|
-
getWorkspaceInstance(): Result<Instance>;
|
|
32
|
-
/** Is an instance of this dependency developed in this monorepo? */
|
|
33
|
-
hasWorkspaceInstance(): boolean;
|
|
34
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InstanceGroup = exports.DELETE = void 0;
|
|
4
|
-
const uniq_1 = require("tightrope/array/uniq");
|
|
5
|
-
const get_1 = require("tightrope/fn/get");
|
|
6
|
-
const identity_1 = require("tightrope/fn/identity");
|
|
7
|
-
const pipe_1 = require("tightrope/fn/pipe");
|
|
8
|
-
const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
|
|
9
|
-
const filter_1 = require("tightrope/option/filter");
|
|
10
|
-
const map_1 = require("tightrope/option/map");
|
|
11
|
-
const ok_or_1 = require("tightrope/option/ok-or");
|
|
12
|
-
const result_1 = require("tightrope/result");
|
|
13
|
-
const and_then_1 = require("tightrope/result/and-then");
|
|
14
|
-
const filter_2 = require("tightrope/result/filter");
|
|
15
|
-
const is_ok_1 = require("tightrope/result/is-ok");
|
|
16
|
-
const map_2 = require("tightrope/result/map");
|
|
17
|
-
const map_err_1 = require("tightrope/result/map-err");
|
|
18
|
-
const unwrap_1 = require("tightrope/result/unwrap");
|
|
19
|
-
const error_1 = require("../../../../lib/error");
|
|
20
|
-
const is_semver_1 = require("../../../../lib/is-semver");
|
|
21
|
-
const print_strings_1 = require("../../../../lib/print-strings");
|
|
22
|
-
const get_highest_version_1 = require("./get-highest-version");
|
|
23
|
-
const get_lowest_version_1 = require("./get-lowest-version");
|
|
24
|
-
exports.DELETE = Symbol('DELETE');
|
|
25
|
-
/** Every `Instance` of eg `"lodash"` for a given `VersionGroup` */
|
|
26
|
-
class InstanceGroup {
|
|
27
|
-
constructor(versionGroup, name, instances) {
|
|
28
|
-
this.instances = instances;
|
|
29
|
-
this.name = name;
|
|
30
|
-
this.versionGroup = versionGroup;
|
|
31
|
-
}
|
|
32
|
-
hasUnsupportedVersion() {
|
|
33
|
-
return this.instances.some((obj) => !(0, is_semver_1.isSemver)(obj.version));
|
|
34
|
-
}
|
|
35
|
-
getUniqueVersions() {
|
|
36
|
-
return (0, uniq_1.uniq)(this.instances.map((obj) => obj.version)).sort();
|
|
37
|
-
}
|
|
38
|
-
hasMismatchingVersions() {
|
|
39
|
-
return this.getUniqueVersions().length > 1;
|
|
40
|
-
}
|
|
41
|
-
isInvalid() {
|
|
42
|
-
return this.versionGroup.isIgnored()
|
|
43
|
-
? false
|
|
44
|
-
: this.versionGroup.isBanned() ||
|
|
45
|
-
this.versionGroup.isUnpinned() ||
|
|
46
|
-
this.hasMismatchingVersions();
|
|
47
|
-
}
|
|
48
|
-
getExpectedVersion() {
|
|
49
|
-
const versionGroup = this.versionGroup;
|
|
50
|
-
if (versionGroup.isBanned())
|
|
51
|
-
return new result_1.Ok(exports.DELETE);
|
|
52
|
-
if (versionGroup.isUnpinned())
|
|
53
|
-
return (0, pipe_1.pipe)(versionGroup.getPinnedVersion(), (0, ok_or_1.okOr)(new error_1.BaseError(`${this.name} is in a versionGroup with pinVersion configuration, but the pinVersion value is not valid`)));
|
|
54
|
-
if (versionGroup.hasSnappedToPackages() && (0, unwrap_1.unwrap)(this.isUnsnapped()))
|
|
55
|
-
return this.getSnappedVersion();
|
|
56
|
-
if (this.hasWorkspaceInstance())
|
|
57
|
-
return this.getWorkspaceVersion();
|
|
58
|
-
if (this.hasUnsupportedVersion()) {
|
|
59
|
-
return new result_1.Err(new error_1.BaseError(`${this.name} contains unsupported versions: ${(0, print_strings_1.printStrings)(this.getUniqueVersions())}`));
|
|
60
|
-
}
|
|
61
|
-
return versionGroup.groupConfig.preferVersion ===
|
|
62
|
-
'lowestSemver'
|
|
63
|
-
? this.getLowestVersion()
|
|
64
|
-
: this.getHighestVersion();
|
|
65
|
-
}
|
|
66
|
-
/** If all versions are valid semver, return the newest one */
|
|
67
|
-
getHighestVersion() {
|
|
68
|
-
return (0, get_highest_version_1.getHighestVersion)(this.getUniqueVersions());
|
|
69
|
-
}
|
|
70
|
-
/** If all versions are valid semver, return the lowest one */
|
|
71
|
-
getLowestVersion() {
|
|
72
|
-
return (0, get_lowest_version_1.getLowestVersion)(this.getUniqueVersions());
|
|
73
|
-
}
|
|
74
|
-
/** Get the first version matched by the `snapTo` packages */
|
|
75
|
-
getSnappedVersion() {
|
|
76
|
-
return (0, pipe_1.pipe)(this.versionGroup.getSnappedToPackages(), (0, map_1.map)((pkgNames) => this.instances
|
|
77
|
-
.filter(({ pkgName }) => pkgNames.includes(pkgName))
|
|
78
|
-
.map(({ version }) => version)
|
|
79
|
-
.find(Boolean) || ''), (0, filter_1.filter)(is_non_empty_string_1.isNonEmptyString), (0, ok_or_1.okOr)(new error_1.BaseError(`${this.name} is in a versionGroup with snapTo configuration, but ${this.name} was not found in those packages`)));
|
|
80
|
-
}
|
|
81
|
-
/** Is `snapTo` defined and this group does not match that version? */
|
|
82
|
-
isUnsnapped() {
|
|
83
|
-
return this.versionGroup.hasSnappedToPackages()
|
|
84
|
-
? (0, pipe_1.pipe)(this.getSnappedVersion(), (0, map_2.map)((nextVersion) => this.instances.some(({ version }) => version !== nextVersion)))
|
|
85
|
-
: new result_1.Ok(false);
|
|
86
|
-
}
|
|
87
|
-
/** Get version of dependency which is developed in this monorepo */
|
|
88
|
-
getWorkspaceVersion() {
|
|
89
|
-
return (0, pipe_1.pipe)(this.getWorkspaceInstance(), (0, and_then_1.andThen)((instance) => (0, get_1.get)(instance, 'packageJsonFile', 'contents', 'version')), (0, filter_2.filter)(is_non_empty_string_1.isNonEmptyString, ''), identity_1.identity, (0, map_err_1.mapErr)(() => 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`)));
|
|
90
|
-
}
|
|
91
|
-
/** Find instance of this dependency which is developed in this monorepo */
|
|
92
|
-
getWorkspaceInstance() {
|
|
93
|
-
const instance = this.instances.find(({ pathDef }) => pathDef.name === 'workspace');
|
|
94
|
-
return instance
|
|
95
|
-
? new result_1.Ok(instance)
|
|
96
|
-
: new result_1.Err(new error_1.BaseError('Workspace instance not found'));
|
|
97
|
-
}
|
|
98
|
-
/** Is an instance of this dependency developed in this monorepo? */
|
|
99
|
-
hasWorkspaceInstance() {
|
|
100
|
-
return (0, is_ok_1.isOk)(this.getWorkspaceInstance());
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
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,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PackageJsonFile = void 0;
|
|
4
|
-
const path_1 = require("path");
|
|
5
|
-
const pipe_1 = require("tightrope/fn/pipe");
|
|
6
|
-
const result_1 = require("tightrope/result");
|
|
7
|
-
const unwrap_or_1 = require("tightrope/result/unwrap-or");
|
|
8
|
-
const constants_1 = require("../../../constants");
|
|
9
|
-
const log_1 = require("../../../lib/log");
|
|
10
|
-
const newlines_1 = require("../../../lib/newlines");
|
|
11
|
-
const path_strategy_1 = require("../../get-config/path-strategy");
|
|
12
|
-
const instance_1 = require("./instance");
|
|
13
|
-
class PackageJsonFile {
|
|
14
|
-
constructor(jsonFile, config, disk) {
|
|
15
|
-
this.contents = jsonFile.contents;
|
|
16
|
-
this.disk = disk;
|
|
17
|
-
this.filePath = jsonFile.filePath;
|
|
18
|
-
this.json = jsonFile.json;
|
|
19
|
-
this.config = config;
|
|
20
|
-
this.shortPath = (0, path_1.relative)(constants_1.CWD, jsonFile.filePath);
|
|
21
|
-
}
|
|
22
|
-
hasChanged() {
|
|
23
|
-
return this.json !== this.getSource();
|
|
24
|
-
}
|
|
25
|
-
write() {
|
|
26
|
-
this.disk.writeFileSync(this.filePath, this.getSource());
|
|
27
|
-
}
|
|
28
|
-
getSource() {
|
|
29
|
-
const contents = this.contents;
|
|
30
|
-
const indent = this.config.indent;
|
|
31
|
-
const EOL = newlines_1.newlines.detect(this.json);
|
|
32
|
-
const source = `${JSON.stringify(contents, null, indent)}${EOL}`;
|
|
33
|
-
return newlines_1.newlines.fix(source, EOL);
|
|
34
|
-
}
|
|
35
|
-
getInstances() {
|
|
36
|
-
return this.config.enabledTypes
|
|
37
|
-
.flatMap((pathDef) => this.getPathEntries(pathDef, this).map(([name, version]) => new instance_1.Instance(pathDef, name, this, version)))
|
|
38
|
-
.filter((instance) => {
|
|
39
|
-
const { pathDef, name, version } = instance;
|
|
40
|
-
const filter = this.config.filter;
|
|
41
|
-
if (name.search(new RegExp(filter)) === -1) {
|
|
42
|
-
(0, log_1.verbose)(`skip, name "${name}" does not match filter "${filter}"`);
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
(0, log_1.verbose)(`add ${name}@${version} to ${pathDef.name}:${pathDef.strategy} ${this.shortPath}`);
|
|
46
|
-
return true;
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
getPathEntries(pathDef, file) {
|
|
50
|
-
const strategyName = pathDef.strategy;
|
|
51
|
-
switch (strategyName) {
|
|
52
|
-
case 'name@version':
|
|
53
|
-
return (0, pipe_1.pipe)(path_strategy_1.strategyByName[strategyName].read(file, pathDef), (0, unwrap_or_1.unwrapOr)(new result_1.Ok([])));
|
|
54
|
-
case 'name~version':
|
|
55
|
-
return (0, pipe_1.pipe)(path_strategy_1.strategyByName[strategyName].read(file, pathDef), (0, unwrap_or_1.unwrapOr)(new result_1.Ok([])));
|
|
56
|
-
case 'version':
|
|
57
|
-
return (0, pipe_1.pipe)(path_strategy_1.strategyByName[strategyName].read(file, pathDef), (0, unwrap_or_1.unwrapOr)(new result_1.Ok([])));
|
|
58
|
-
case 'versionsByName':
|
|
59
|
-
return (0, pipe_1.pipe)(path_strategy_1.strategyByName[strategyName].read(file, pathDef), (0, unwrap_or_1.unwrapOr)(new result_1.Ok([])));
|
|
60
|
-
default:
|
|
61
|
-
return (0, path_strategy_1.exhaustiveCheck)(strategyName);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
exports.PackageJsonFile = PackageJsonFile;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Instance = void 0;
|
|
4
|
-
const pipe_1 = require("tightrope/fn/pipe");
|
|
5
|
-
const _R_1 = require("../../$R");
|
|
6
|
-
const path_strategy_1 = require("../../get-config/path-strategy");
|
|
7
|
-
const instance_group_1 = require("../../get-groups/version-group/instance-group");
|
|
8
|
-
class Instance {
|
|
9
|
-
constructor(pathDef, name, packageJsonFile, version) {
|
|
10
|
-
this.pathDef = pathDef;
|
|
11
|
-
this.name = name;
|
|
12
|
-
this.packageJsonFile = packageJsonFile;
|
|
13
|
-
this.pkgName = packageJsonFile.contents.name || 'PACKAGE_JSON_HAS_NO_NAME';
|
|
14
|
-
this.version = version;
|
|
15
|
-
}
|
|
16
|
-
/** Is this instance the package.json file of this package developed in this repo? */
|
|
17
|
-
isWorkspace() {
|
|
18
|
-
return this.pathDef.name === 'workspace';
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* In the case of banned dependencies, their version is set to `undefined`,
|
|
22
|
-
* which causes them to be removed by `JSON.stringify`.
|
|
23
|
-
*/
|
|
24
|
-
setVersion(version) {
|
|
25
|
-
const strategyName = this.pathDef.strategy;
|
|
26
|
-
const entry = [this.name, version === instance_group_1.DELETE ? undefined : version];
|
|
27
|
-
const file = this.packageJsonFile;
|
|
28
|
-
switch (strategyName) {
|
|
29
|
-
case 'name@version':
|
|
30
|
-
(0, pipe_1.pipe)(path_strategy_1.strategyByName[strategyName].write(file, this.pathDef, entry), _R_1.$R.tapErrVerbose);
|
|
31
|
-
break;
|
|
32
|
-
case 'name~version':
|
|
33
|
-
(0, pipe_1.pipe)(path_strategy_1.strategyByName[strategyName].write(file, this.pathDef, entry), _R_1.$R.tapErrVerbose);
|
|
34
|
-
break;
|
|
35
|
-
case 'version':
|
|
36
|
-
(0, pipe_1.pipe)(path_strategy_1.strategyByName[strategyName].write(file, this.pathDef, entry), _R_1.$R.tapErrVerbose);
|
|
37
|
-
break;
|
|
38
|
-
case 'versionsByName':
|
|
39
|
-
(0, pipe_1.pipe)(path_strategy_1.strategyByName[strategyName].write(file, this.pathDef, entry), _R_1.$R.tapErrVerbose);
|
|
40
|
-
break;
|
|
41
|
-
default:
|
|
42
|
-
return (0, path_strategy_1.exhaustiveCheck)(strategyName);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.Instance = Instance;
|
package/dist/lib/error.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class BaseError extends Error {
|
|
2
|
-
name: 'SyncpackError';
|
|
3
|
-
cause?: BaseError | Error | null;
|
|
4
|
-
constructor(message: string, options?: {
|
|
5
|
-
cause?: unknown;
|
|
6
|
-
props?: {
|
|
7
|
-
args: any[];
|
|
8
|
-
};
|
|
9
|
-
});
|
|
10
|
-
static normalize(value: unknown): BaseError | Error | null;
|
|
11
|
-
static map(message: string): (cause: unknown) => BaseError;
|
|
12
|
-
}
|