syncpack 10.9.3 → 12.0.0-alpha.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/dist/bin-fix-mismatches/fix-mismatches.d.ts +15 -3
- package/dist/bin-fix-mismatches/fix-mismatches.js +120 -36
- package/dist/bin-fix-mismatches/index.js +12 -32
- package/dist/bin-format/format.d.ts +11 -3
- package/dist/bin-format/format.js +46 -61
- package/dist/bin-format/index.js +11 -31
- package/dist/bin-lint/index.js +8 -28
- package/dist/bin-lint/lint.d.ts +10 -3
- package/dist/bin-lint/lint.js +12 -36
- package/dist/bin-lint-semver-ranges/index.js +11 -39
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +15 -3
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +94 -35
- package/dist/bin-list/index.js +11 -31
- package/dist/bin-list/list.d.ts +11 -3
- package/dist/bin-list/list.js +121 -35
- package/dist/bin-list-mismatches/index.js +11 -31
- package/dist/bin-list-mismatches/list-mismatches.d.ts +18 -3
- package/dist/bin-list-mismatches/list-mismatches.js +254 -35
- package/dist/bin-prompt/index.js +15 -31
- package/dist/bin-prompt/prompt.d.ts +10 -3
- package/dist/bin-prompt/prompt.js +83 -34
- package/dist/bin-set-semver-ranges/index.js +12 -40
- package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +10 -3
- package/dist/bin-set-semver-ranges/set-semver-ranges.js +50 -36
- package/dist/bin-update/effects.d.ts +45 -5
- package/dist/bin-update/effects.js +214 -128
- package/dist/bin-update/index.js +4 -27
- package/dist/bin-update/update.d.ts +5 -3
- package/dist/bin-update/update.js +52 -38
- package/dist/bin.js +0 -1
- package/dist/config/get-custom-types.d.ts +11 -1
- package/dist/config/get-custom-types.js +26 -21
- package/dist/config/get-enabled-types.d.ts +10 -6
- package/dist/config/get-enabled-types.js +84 -66
- package/dist/config/get-indent.js +1 -1
- package/dist/config/tag.d.ts +3 -0
- package/dist/config/tag.js +5 -0
- package/dist/config/types.d.ts +8 -11
- package/dist/config/types.js +0 -26
- package/dist/constants.d.ts +7 -5
- package/dist/constants.js +15 -14
- package/dist/create-program/effects.d.ts +51 -29
- package/dist/error-handlers/default-error-handlers.d.ts +38 -2
- package/dist/error-handlers/default-error-handlers.js +83 -35
- package/dist/get-context/index.d.ts +12 -6
- package/dist/get-context/index.js +13 -30
- package/dist/get-context/lib/key-by.d.ts +6 -0
- package/dist/get-context/lib/key-by.js +16 -0
- package/dist/get-instances/index.d.ts +14 -0
- package/dist/get-instances/index.js +46 -0
- package/dist/get-instances/instance.d.ts +25 -0
- package/dist/get-instances/instance.js +20 -0
- package/dist/get-package-json-files/get-file-paths.d.ts +6 -7
- package/dist/get-package-json-files/get-file-paths.js +10 -33
- package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +3 -4
- package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +6 -32
- package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +3 -4
- package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +6 -32
- package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +3 -4
- package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +11 -40
- package/dist/get-package-json-files/get-patterns/index.d.ts +3 -5
- package/dist/get-package-json-files/get-patterns/index.js +6 -33
- package/dist/get-package-json-files/index.d.ts +6 -5
- package/dist/get-package-json-files/index.js +4 -28
- package/dist/get-package-json-files/package-json-file.d.ts +16 -16
- package/dist/get-package-json-files/package-json-file.js +13 -18
- package/dist/guards/can-add-to-group.d.ts +5 -4
- package/dist/guards/can-add-to-group.js +40 -6
- package/dist/guards/is-semver.d.ts +1 -1
- package/dist/guards/is-semver.js +1 -1
- package/dist/guards/is-valid-semver-range.d.ts +1 -1
- package/dist/guards/is-valid-semver-range.js +1 -1
- package/dist/io/ask-for-choice.d.ts +14 -0
- package/dist/io/ask-for-choice.js +22 -0
- package/dist/io/ask-for-input.d.ts +13 -0
- package/dist/io/ask-for-input.js +19 -0
- package/dist/io/exit-if-invalid.d.ts +4 -0
- package/dist/io/exit-if-invalid.js +13 -0
- package/dist/io/glob-sync.d.ts +11 -0
- package/dist/io/glob-sync.js +19 -0
- package/dist/io/index.d.ts +28 -0
- package/dist/{env/exit-if-invalid.js → io/index.js} +27 -9
- package/dist/io/read-config-file-sync.d.ts +7 -0
- package/dist/io/read-config-file-sync.js +26 -0
- package/dist/io/read-file-sync.d.ts +12 -0
- package/dist/io/read-file-sync.js +14 -0
- package/dist/io/read-json-file-sync.d.ts +30 -0
- package/dist/io/read-json-file-sync.js +25 -0
- package/dist/io/read-yaml-file-sync.d.ts +12 -0
- package/dist/io/read-yaml-file-sync.js +14 -0
- package/dist/io/write-file-sync.d.ts +12 -0
- package/dist/io/write-file-sync.js +15 -0
- package/dist/{env → io}/write-if-changed.d.ts +4 -4
- package/dist/io/write-if-changed.js +45 -0
- package/dist/lib/get-group-header.d.ts +10 -0
- package/dist/lib/get-group-header.js +31 -0
- package/dist/lib/get.d.ts +11 -0
- package/dist/lib/get.js +40 -0
- package/dist/lib/pad-start.d.ts +1 -0
- package/dist/lib/pad-start.js +7 -0
- package/dist/lib/ring-buffer.d.ts +10 -0
- package/dist/lib/ring-buffer.js +22 -0
- package/dist/lib/set-semver-range.d.ts +1 -1
- package/dist/lib/set-semver-range.js +7 -11
- package/dist/lib/with-logger.d.ts +2 -0
- package/dist/lib/with-logger.js +35 -0
- package/dist/option.d.ts +0 -1
- package/dist/option.js +0 -4
- package/dist/report.d.ts +166 -0
- package/dist/report.js +67 -0
- package/dist/schema.json +392 -0
- package/dist/semver-group/create-semver-groups.d.ts +4 -0
- package/dist/semver-group/create-semver-groups.js +77 -0
- package/dist/semver-group/disabled.d.ts +26 -0
- package/dist/semver-group/disabled.js +34 -0
- package/dist/semver-group/filtered-out.d.ts +27 -0
- package/dist/semver-group/filtered-out.js +40 -0
- package/dist/semver-group/ignored.d.ts +22 -0
- package/dist/semver-group/ignored.js +30 -0
- package/dist/semver-group/index.d.ts +22 -0
- package/dist/semver-group/index.js +10 -0
- package/dist/semver-group/with-range.d.ts +22 -0
- package/dist/semver-group/with-range.js +57 -0
- package/dist/specifier/alias.d.ts +15 -0
- package/dist/specifier/alias.js +25 -0
- package/dist/specifier/base.d.ts +39 -0
- package/dist/specifier/base.js +38 -0
- package/dist/specifier/delete.d.ts +15 -0
- package/dist/specifier/delete.js +16 -0
- package/dist/specifier/file.d.ts +6 -0
- package/dist/specifier/file.js +12 -0
- package/dist/specifier/hosted-git.d.ts +13 -0
- package/dist/specifier/hosted-git.js +27 -0
- package/dist/specifier/index.d.ts +27 -0
- package/dist/specifier/index.js +62 -0
- package/dist/specifier/lib/non-semver-error.d.ts +11 -0
- package/dist/specifier/lib/non-semver-error.js +10 -0
- package/dist/specifier/lib/parse-specifier.d.ts +14 -0
- package/dist/specifier/lib/parse-specifier.js +23 -0
- package/dist/specifier/lib/specific-registry-result.d.ts +9 -0
- package/dist/specifier/lib/specific-registry-result.js +2 -0
- package/dist/specifier/range.d.ts +18 -0
- package/dist/specifier/range.js +26 -0
- package/dist/specifier/tag.d.ts +9 -0
- package/dist/specifier/tag.js +15 -0
- package/dist/specifier/unsupported.d.ts +5 -0
- package/dist/specifier/unsupported.js +12 -0
- package/dist/specifier/url.d.ts +6 -0
- package/dist/specifier/url.js +13 -0
- package/dist/specifier/version.d.ts +18 -0
- package/dist/specifier/version.js +26 -0
- package/dist/specifier/workspace-protocol.d.ts +17 -0
- package/dist/specifier/workspace-protocol.js +38 -0
- package/dist/strategy/lib/get-non-empty-string-prop.d.ts +2 -2
- package/dist/strategy/lib/get-non-empty-string-prop.js +4 -5
- package/dist/strategy/name-and-version-props.d.ts +4 -4
- package/dist/strategy/name-and-version-props.js +32 -21
- package/dist/strategy/named-version-string.d.ts +4 -4
- package/dist/strategy/named-version-string.js +22 -24
- package/dist/strategy/unnamed-version-string.d.ts +4 -4
- package/dist/strategy/unnamed-version-string.js +20 -21
- package/dist/strategy/versions-by-name.d.ts +4 -4
- package/dist/strategy/versions-by-name.js +9 -11
- package/dist/version-group/banned.d.ts +17 -0
- package/dist/version-group/banned.js +32 -0
- package/dist/version-group/create-version-groups.d.ts +4 -0
- package/dist/version-group/create-version-groups.js +107 -0
- package/dist/version-group/filtered-out.d.ts +19 -0
- package/dist/version-group/filtered-out.js +34 -0
- package/dist/version-group/ignored.d.ts +17 -0
- package/dist/version-group/ignored.js +27 -0
- package/dist/version-group/index.d.ts +28 -0
- package/dist/version-group/index.js +10 -0
- package/dist/version-group/lib/get-highest-version.d.ts +6 -0
- package/dist/version-group/lib/get-highest-version.js +12 -0
- package/dist/version-group/lib/get-lowest-version.d.ts +6 -0
- package/dist/version-group/lib/get-lowest-version.js +12 -0
- package/dist/version-group/lib/get-preferred-version.d.ts +5 -0
- package/dist/{get-version-groups/lib/compare-semver.js → version-group/lib/get-preferred-version.js} +14 -2
- package/dist/version-group/lib/group-by.d.ts +5 -0
- package/dist/{get-version-groups → version-group}/lib/group-by.js +4 -0
- package/dist/version-group/pinned.d.ts +17 -0
- package/dist/version-group/pinned.js +30 -0
- package/dist/version-group/same-range.d.ts +19 -0
- package/dist/version-group/same-range.js +108 -0
- package/dist/version-group/snapped-to.d.ts +17 -0
- package/dist/version-group/snapped-to.js +83 -0
- package/dist/version-group/standard.d.ts +18 -0
- package/dist/version-group/standard.js +131 -0
- package/package.json +28 -25
- package/dist/bin-fix-mismatches/effects.d.ts +0 -2
- package/dist/bin-fix-mismatches/effects.js +0 -112
- package/dist/bin-format/format-cli.d.ts +0 -4
- package/dist/bin-format/format-cli.js +0 -42
- package/dist/bin-lint-semver-ranges/effects.d.ts +0 -2
- package/dist/bin-lint-semver-ranges/effects.js +0 -70
- package/dist/bin-list/effects.d.ts +0 -2
- package/dist/bin-list/effects.js +0 -114
- package/dist/bin-list-mismatches/effects.d.ts +0 -2
- package/dist/bin-list-mismatches/effects.js +0 -136
- package/dist/bin-prompt/effects.d.ts +0 -2
- package/dist/bin-prompt/effects.js +0 -110
- package/dist/bin-set-semver-ranges/effects.d.ts +0 -2
- package/dist/bin-set-semver-ranges/effects.js +0 -61
- package/dist/config/get-semver-range.d.ts +0 -3
- package/dist/config/get-semver-range.js +0 -12
- package/dist/create-program/semver-ranges.d.ts +0 -7
- package/dist/create-program/semver-ranges.js +0 -55
- package/dist/create-program/versions.d.ts +0 -7
- package/dist/create-program/versions.js +0 -70
- package/dist/env/create-env.d.ts +0 -21
- package/dist/env/create-env.js +0 -81
- package/dist/env/default-env.d.ts +0 -18
- package/dist/env/default-env.js +0 -96
- package/dist/env/exit-if-invalid.d.ts +0 -4
- package/dist/env/tags.d.ts +0 -58
- package/dist/env/tags.js +0 -50
- package/dist/env/write-if-changed.js +0 -73
- package/dist/error-handlers/create-error-handlers.d.ts +0 -19
- package/dist/error-handlers/create-error-handlers.js +0 -57
- package/dist/get-package-json-files/get-patterns/read-json-safe.d.ts +0 -23
- package/dist/get-package-json-files/get-patterns/read-json-safe.js +0 -43
- package/dist/get-semver-groups/filtered-out.d.ts +0 -19
- package/dist/get-semver-groups/filtered-out.js +0 -55
- package/dist/get-semver-groups/ignored.d.ts +0 -17
- package/dist/get-semver-groups/ignored.js +0 -48
- package/dist/get-semver-groups/index.d.ts +0 -84
- package/dist/get-semver-groups/index.js +0 -139
- package/dist/get-semver-groups/with-range.d.ts +0 -18
- package/dist/get-semver-groups/with-range.js +0 -79
- package/dist/get-version-groups/banned.d.ts +0 -17
- package/dist/get-version-groups/banned.js +0 -50
- package/dist/get-version-groups/filtered-out.d.ts +0 -19
- package/dist/get-version-groups/filtered-out.js +0 -57
- package/dist/get-version-groups/ignored.d.ts +0 -17
- package/dist/get-version-groups/ignored.js +0 -50
- package/dist/get-version-groups/index.d.ts +0 -187
- package/dist/get-version-groups/index.js +0 -246
- package/dist/get-version-groups/lib/compare-semver.d.ts +0 -1
- package/dist/get-version-groups/lib/get-highest-version.d.ts +0 -2
- package/dist/get-version-groups/lib/get-highest-version.js +0 -13
- package/dist/get-version-groups/lib/get-lowest-version.d.ts +0 -2
- package/dist/get-version-groups/lib/get-lowest-version.js +0 -13
- package/dist/get-version-groups/lib/get-unique-specifiers.d.ts +0 -2
- package/dist/get-version-groups/lib/get-unique-specifiers.js +0 -11
- package/dist/get-version-groups/lib/group-by.d.ts +0 -1
- package/dist/get-version-groups/pinned.d.ts +0 -17
- package/dist/get-version-groups/pinned.js +0 -66
- package/dist/get-version-groups/same-range.d.ts +0 -17
- package/dist/get-version-groups/same-range.js +0 -73
- package/dist/get-version-groups/snapped-to.d.ts +0 -17
- package/dist/get-version-groups/snapped-to.js +0 -78
- package/dist/get-version-groups/standard.d.ts +0 -18
- package/dist/get-version-groups/standard.js +0 -109
- package/dist/guards/is-loose-semver.d.ts +0 -2
- package/dist/guards/is-loose-semver.js +0 -10
- package/dist/instance/create.d.ts +0 -4
- package/dist/instance/create.js +0 -142
- package/dist/instance/index.d.ts +0 -122
- package/dist/instance/index.js +0 -154
- package/dist/lib/$R.d.ts +0 -12
- package/dist/lib/$R.js +0 -34
- package/dist/lib/log-group-header.d.ts +0 -6
- package/dist/lib/log-group-header.js +0 -34
- package/dist/lib/log-verbose.d.ts +0 -1
- package/dist/lib/log-verbose.js +0 -24
- package/dist/lib/split-name-and-version.d.ts +0 -5
- package/dist/lib/split-name-and-version.js +0 -12
- /package/dist/{get-version-groups → version-group}/lib/clean.d.ts +0 -0
- /package/dist/{get-version-groups → version-group}/lib/clean.js +0 -0
- /package/dist/{get-version-groups → version-group}/lib/delete.d.ts +0 -0
- /package/dist/{get-version-groups → version-group}/lib/delete.js +0 -0
- /package/dist/{get-version-groups → version-group}/lib/get-range-score.d.ts +0 -0
- /package/dist/{get-version-groups → version-group}/lib/get-range-score.js +0 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSemverGroups = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
|
|
6
|
+
const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
|
|
7
|
+
const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
|
|
8
|
+
const is_object_1 = require("tightrope/guard/is-object");
|
|
9
|
+
const _1 = require(".");
|
|
10
|
+
const is_valid_semver_range_1 = require("../guards/is-valid-semver-range");
|
|
11
|
+
const disabled_1 = require("./disabled");
|
|
12
|
+
const filtered_out_1 = require("./filtered-out");
|
|
13
|
+
const ignored_1 = require("./ignored");
|
|
14
|
+
const with_range_1 = require("./with-range");
|
|
15
|
+
function createSemverGroups(ctx) {
|
|
16
|
+
const { rcFile } = ctx.config;
|
|
17
|
+
const semverGroups = [
|
|
18
|
+
effect_1.Effect.succeed(new filtered_out_1.FilteredOutSemverGroup(ctx)),
|
|
19
|
+
effect_1.Effect.succeed(new with_range_1.WithRangeSemverGroup(false, {
|
|
20
|
+
dependencies: ['**'],
|
|
21
|
+
dependencyTypes: ['local'],
|
|
22
|
+
label: 'the version property of package.json files must always be exact',
|
|
23
|
+
packages: ['**'],
|
|
24
|
+
range: '',
|
|
25
|
+
})),
|
|
26
|
+
];
|
|
27
|
+
if ((0, is_non_empty_array_1.isNonEmptyArray)(rcFile.semverGroups)) {
|
|
28
|
+
rcFile.semverGroups.forEach((config) => {
|
|
29
|
+
if (!(0, is_object_1.isObject)(config)) {
|
|
30
|
+
return semverGroups.push(effect_1.Effect.fail(new _1.SemverGroup.ConfigError({
|
|
31
|
+
config,
|
|
32
|
+
error: 'config is not an object',
|
|
33
|
+
})));
|
|
34
|
+
}
|
|
35
|
+
const mutuallyExclusiveProps = ['isIgnored', 'range'].filter((prop) => Boolean(config[prop]));
|
|
36
|
+
if (mutuallyExclusiveProps.length > 1) {
|
|
37
|
+
return semverGroups.push(effect_1.Effect.fail(new _1.SemverGroup.ConfigError({
|
|
38
|
+
config,
|
|
39
|
+
error: `it's unclear what kind of semver group you want, as it contains both ${mutuallyExclusiveProps.join(' and ')}`,
|
|
40
|
+
})));
|
|
41
|
+
}
|
|
42
|
+
const label = (0, is_non_empty_string_1.isNonEmptyString)(config.label) ? config.label : '';
|
|
43
|
+
const dependencyTypes = (0, is_array_of_strings_1.isArrayOfStrings)(config.dependencyTypes)
|
|
44
|
+
? config.dependencyTypes
|
|
45
|
+
: ['**'];
|
|
46
|
+
const dependencies = (0, is_array_of_strings_1.isArrayOfStrings)(config.dependencies) ? config.dependencies : ['**'];
|
|
47
|
+
const packages = (0, is_array_of_strings_1.isArrayOfStrings)(config.packages) ? config.packages : ['**'];
|
|
48
|
+
if (config.isIgnored === true) {
|
|
49
|
+
semverGroups.push(effect_1.Effect.succeed(new ignored_1.IgnoredSemverGroup({
|
|
50
|
+
dependencies,
|
|
51
|
+
dependencyTypes,
|
|
52
|
+
isIgnored: true,
|
|
53
|
+
label,
|
|
54
|
+
packages,
|
|
55
|
+
})));
|
|
56
|
+
}
|
|
57
|
+
else if ((0, is_valid_semver_range_1.isValidSemverRange)(config.range)) {
|
|
58
|
+
semverGroups.push(effect_1.Effect.succeed(new with_range_1.WithRangeSemverGroup(false, {
|
|
59
|
+
dependencies,
|
|
60
|
+
dependencyTypes,
|
|
61
|
+
label,
|
|
62
|
+
packages,
|
|
63
|
+
range: config.range,
|
|
64
|
+
})));
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
semverGroups.push(effect_1.Effect.succeed(new disabled_1.DisabledSemverGroup(true, {
|
|
69
|
+
dependencies: ['**'],
|
|
70
|
+
dependencyTypes: ['**'],
|
|
71
|
+
label: 'Default Semver Group',
|
|
72
|
+
packages: ['**'],
|
|
73
|
+
isDisabled: true,
|
|
74
|
+
})));
|
|
75
|
+
return effect_1.Effect.all(semverGroups);
|
|
76
|
+
}
|
|
77
|
+
exports.createSemverGroups = createSemverGroups;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { SemverGroupConfig } from '../config/types';
|
|
3
|
+
import type { Instance } from '../get-instances/instance';
|
|
4
|
+
import { Report } from '../report';
|
|
5
|
+
import type { Specifier } from '../specifier';
|
|
6
|
+
import type { NonSemverError } from '../specifier/lib/non-semver-error';
|
|
7
|
+
declare const DisabledSemverGroup_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
|
|
8
|
+
readonly _tag: "Disabled";
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Semver groups are disabled by default and, when that's the case, every
|
|
12
|
+
* instance is assigned to this group. This group will allow anything.
|
|
13
|
+
*/
|
|
14
|
+
export declare class DisabledSemverGroup extends DisabledSemverGroup_base<{
|
|
15
|
+
config: SemverGroupConfig.Disabled;
|
|
16
|
+
instances: Instance[];
|
|
17
|
+
isCatchAll: boolean;
|
|
18
|
+
}> {
|
|
19
|
+
groupType: string;
|
|
20
|
+
constructor(isCatchAll: boolean, config: SemverGroupConfig.Disabled);
|
|
21
|
+
canAdd(_: Instance): boolean;
|
|
22
|
+
getFixed(specifier: Specifier.Any): Effect.Effect<never, NonSemverError, Specifier.Any>;
|
|
23
|
+
inspectAll(): Effect.Effect<never, never, Report.Disabled[]>;
|
|
24
|
+
inspect(instance: Instance): Effect.Effect<never, never, Report.Disabled>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DisabledSemverGroup = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const report_1 = require("../report");
|
|
6
|
+
/**
|
|
7
|
+
* Semver groups are disabled by default and, when that's the case, every
|
|
8
|
+
* instance is assigned to this group. This group will allow anything.
|
|
9
|
+
*/
|
|
10
|
+
class DisabledSemverGroup extends effect_1.Data.TaggedClass('Disabled') {
|
|
11
|
+
constructor(isCatchAll, config) {
|
|
12
|
+
super({
|
|
13
|
+
config,
|
|
14
|
+
instances: [],
|
|
15
|
+
isCatchAll,
|
|
16
|
+
});
|
|
17
|
+
this.groupType = 'semverGroup';
|
|
18
|
+
}
|
|
19
|
+
canAdd(_) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
getFixed(specifier) {
|
|
23
|
+
return effect_1.Effect.succeed(specifier);
|
|
24
|
+
}
|
|
25
|
+
inspectAll() {
|
|
26
|
+
return effect_1.Effect.all(this.instances.map((instance) => this.inspect(instance)));
|
|
27
|
+
}
|
|
28
|
+
inspect(instance) {
|
|
29
|
+
return effect_1.Effect.succeed(new report_1.Report.Disabled({
|
|
30
|
+
instance,
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.DisabledSemverGroup = DisabledSemverGroup;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { GroupConfig } from '../config/types';
|
|
3
|
+
import type { Ctx } from '../get-context';
|
|
4
|
+
import type { Instance } from '../get-instances/instance';
|
|
5
|
+
import { Report } from '../report';
|
|
6
|
+
import type { Specifier } from '../specifier';
|
|
7
|
+
import type { NonSemverError } from '../specifier/lib/non-semver-error';
|
|
8
|
+
declare const FilteredOutSemverGroup_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
|
|
9
|
+
readonly _tag: "FilteredOut";
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Instances which do not match a given `--filter` option are assigned to this
|
|
13
|
+
* group and nothing will be changed.
|
|
14
|
+
*/
|
|
15
|
+
export declare class FilteredOutSemverGroup extends FilteredOutSemverGroup_base<{
|
|
16
|
+
config: GroupConfig;
|
|
17
|
+
filter: string;
|
|
18
|
+
instances: Instance[];
|
|
19
|
+
}> {
|
|
20
|
+
groupType: string;
|
|
21
|
+
constructor(ctx: Ctx);
|
|
22
|
+
canAdd(instance: Instance): boolean;
|
|
23
|
+
getFixed(specifier: Specifier.Any): Effect.Effect<never, NonSemverError, Specifier.Any>;
|
|
24
|
+
inspectAll(): Effect.Effect<never, never, Report.FilteredOut[]>;
|
|
25
|
+
inspect(instance: Instance): Effect.Effect<never, never, Report.FilteredOut>;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FilteredOutSemverGroup = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const get_filter_1 = require("../config/get-filter");
|
|
6
|
+
const report_1 = require("../report");
|
|
7
|
+
/**
|
|
8
|
+
* Instances which do not match a given `--filter` option are assigned to this
|
|
9
|
+
* group and nothing will be changed.
|
|
10
|
+
*/
|
|
11
|
+
class FilteredOutSemverGroup extends effect_1.Data.TaggedClass('FilteredOut') {
|
|
12
|
+
constructor(ctx) {
|
|
13
|
+
super({
|
|
14
|
+
config: {
|
|
15
|
+
dependencies: ['**'],
|
|
16
|
+
dependencyTypes: ['**'],
|
|
17
|
+
label: 'Filtered out',
|
|
18
|
+
packages: ['**'],
|
|
19
|
+
},
|
|
20
|
+
filter: (0, get_filter_1.getFilter)(ctx.config),
|
|
21
|
+
instances: [],
|
|
22
|
+
});
|
|
23
|
+
this.groupType = 'semverGroup';
|
|
24
|
+
}
|
|
25
|
+
canAdd(instance) {
|
|
26
|
+
return instance.name.search(new RegExp(this.filter)) === -1;
|
|
27
|
+
}
|
|
28
|
+
getFixed(specifier) {
|
|
29
|
+
return effect_1.Effect.succeed(specifier);
|
|
30
|
+
}
|
|
31
|
+
inspectAll() {
|
|
32
|
+
return effect_1.Effect.all(this.instances.map((instance) => this.inspect(instance)));
|
|
33
|
+
}
|
|
34
|
+
inspect(instance) {
|
|
35
|
+
return effect_1.Effect.succeed(new report_1.Report.FilteredOut({
|
|
36
|
+
instance,
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.FilteredOutSemverGroup = FilteredOutSemverGroup;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { SemverGroupConfig } from '../config/types';
|
|
3
|
+
import type { Instance } from '../get-instances/instance';
|
|
4
|
+
import { Report } from '../report';
|
|
5
|
+
import type { Specifier } from '../specifier';
|
|
6
|
+
import type { NonSemverError } from '../specifier/lib/non-semver-error';
|
|
7
|
+
declare const IgnoredSemverGroup_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
|
|
8
|
+
readonly _tag: "Ignored";
|
|
9
|
+
}>;
|
|
10
|
+
/** Every instance in this group is ignored and nothing will be changed */
|
|
11
|
+
export declare class IgnoredSemverGroup extends IgnoredSemverGroup_base<{
|
|
12
|
+
config: SemverGroupConfig.Ignored;
|
|
13
|
+
instances: Instance[];
|
|
14
|
+
}> {
|
|
15
|
+
groupType: string;
|
|
16
|
+
constructor(config: SemverGroupConfig.Ignored);
|
|
17
|
+
canAdd(_: Instance): boolean;
|
|
18
|
+
getFixed(specifier: Specifier.Any): Effect.Effect<never, NonSemverError, Specifier.Any>;
|
|
19
|
+
inspectAll(): Effect.Effect<never, never, Report.Ignored[]>;
|
|
20
|
+
inspect(instance: Instance): Effect.Effect<never, never, Report.Ignored>;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IgnoredSemverGroup = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const report_1 = require("../report");
|
|
6
|
+
/** Every instance in this group is ignored and nothing will be changed */
|
|
7
|
+
class IgnoredSemverGroup extends effect_1.Data.TaggedClass('Ignored') {
|
|
8
|
+
constructor(config) {
|
|
9
|
+
super({
|
|
10
|
+
config,
|
|
11
|
+
instances: [],
|
|
12
|
+
});
|
|
13
|
+
this.groupType = 'semverGroup';
|
|
14
|
+
}
|
|
15
|
+
canAdd(_) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
getFixed(specifier) {
|
|
19
|
+
return effect_1.Effect.succeed(specifier);
|
|
20
|
+
}
|
|
21
|
+
inspectAll() {
|
|
22
|
+
return effect_1.Effect.all(this.instances.map((instance) => this.inspect(instance)));
|
|
23
|
+
}
|
|
24
|
+
inspect(instance) {
|
|
25
|
+
return effect_1.Effect.succeed(new report_1.Report.Ignored({
|
|
26
|
+
instance,
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.IgnoredSemverGroup = IgnoredSemverGroup;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Data } from 'effect';
|
|
2
|
+
import type { Union } from 'ts-toolbelt';
|
|
3
|
+
import type { DisabledSemverGroup } from './disabled';
|
|
4
|
+
import type { FilteredOutSemverGroup } from './filtered-out';
|
|
5
|
+
import type { IgnoredSemverGroup } from './ignored';
|
|
6
|
+
import type { WithRangeSemverGroup } from './with-range';
|
|
7
|
+
export declare namespace SemverGroup {
|
|
8
|
+
export type Disabled = DisabledSemverGroup;
|
|
9
|
+
export type FilteredOut = FilteredOutSemverGroup;
|
|
10
|
+
export type Ignored = IgnoredSemverGroup;
|
|
11
|
+
export type WithRange = WithRangeSemverGroup;
|
|
12
|
+
export type Any = Union.Strict<Disabled | FilteredOut | Ignored | WithRange>;
|
|
13
|
+
const ConfigError_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
|
|
14
|
+
readonly _tag: "SemverGroupConfigError";
|
|
15
|
+
}>;
|
|
16
|
+
export class ConfigError extends ConfigError_base<{
|
|
17
|
+
readonly config: unknown;
|
|
18
|
+
readonly error: string;
|
|
19
|
+
}> {
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SemverGroup = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
var SemverGroup;
|
|
6
|
+
(function (SemverGroup) {
|
|
7
|
+
class ConfigError extends effect_1.Data.TaggedClass('SemverGroupConfigError') {
|
|
8
|
+
}
|
|
9
|
+
SemverGroup.ConfigError = ConfigError;
|
|
10
|
+
})(SemverGroup || (exports.SemverGroup = SemverGroup = {}));
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { SemverGroupConfig } from '../config/types';
|
|
3
|
+
import type { Instance } from '../get-instances/instance';
|
|
4
|
+
import { Report } from '../report';
|
|
5
|
+
import { Specifier } from '../specifier';
|
|
6
|
+
import type { NonSemverError } from '../specifier/lib/non-semver-error';
|
|
7
|
+
declare const WithRangeSemverGroup_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
|
|
8
|
+
readonly _tag: "WithRange";
|
|
9
|
+
}>;
|
|
10
|
+
export declare class WithRangeSemverGroup extends WithRangeSemverGroup_base<{
|
|
11
|
+
config: SemverGroupConfig.WithRange;
|
|
12
|
+
instances: Instance[];
|
|
13
|
+
isCatchAll: boolean;
|
|
14
|
+
}> {
|
|
15
|
+
groupType: string;
|
|
16
|
+
constructor(isCatchAll: boolean, config: SemverGroupConfig.WithRange);
|
|
17
|
+
canAdd(_: Instance): boolean;
|
|
18
|
+
getFixed(specifier: Specifier.Any): Effect.Effect<never, NonSemverError, Specifier.Any>;
|
|
19
|
+
inspectAll(): Effect.Effect<never, never, (Report.UnsupportedMismatch | Report.SemverRangeMismatch | Report.Valid)[]>;
|
|
20
|
+
inspect(instance: Instance): Effect.Effect<never, never, Report.UnsupportedMismatch | Report.SemverRangeMismatch | Report.Valid>;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WithRangeSemverGroup = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const set_semver_range_1 = require("../lib/set-semver-range");
|
|
6
|
+
const report_1 = require("../report");
|
|
7
|
+
const specifier_1 = require("../specifier");
|
|
8
|
+
class WithRangeSemverGroup extends effect_1.Data.TaggedClass('WithRange') {
|
|
9
|
+
constructor(isCatchAll, config) {
|
|
10
|
+
super({
|
|
11
|
+
config,
|
|
12
|
+
instances: [],
|
|
13
|
+
isCatchAll,
|
|
14
|
+
});
|
|
15
|
+
this.groupType = 'semverGroup';
|
|
16
|
+
this.getFixed = this.getFixed.bind(this);
|
|
17
|
+
}
|
|
18
|
+
canAdd(_) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
getFixed(specifier) {
|
|
22
|
+
return (0, effect_1.pipe)(specifier.getSemver(), effect_1.Effect.map((semver) => (0, set_semver_range_1.setSemverRange)(this.config.range, semver)), effect_1.Effect.flatMap((nextSemver) => specifier.setSemver(nextSemver)));
|
|
23
|
+
}
|
|
24
|
+
inspectAll() {
|
|
25
|
+
return effect_1.Effect.all(this.instances.map((instance) => this.inspect(instance)));
|
|
26
|
+
}
|
|
27
|
+
inspect(instance) {
|
|
28
|
+
const current = specifier_1.Specifier.create(instance, instance.rawSpecifier);
|
|
29
|
+
return (0, effect_1.pipe)(this.getFixed(current), effect_1.Effect.match({
|
|
30
|
+
// if range is fixable
|
|
31
|
+
onSuccess: (valid) =>
|
|
32
|
+
// if it is pinned and matches its pin
|
|
33
|
+
instance.versionGroup._tag === 'Pinned' &&
|
|
34
|
+
instance.rawSpecifier === instance.versionGroup.config.pinVersion
|
|
35
|
+
? // the pinned version takes precendence and is a match
|
|
36
|
+
new report_1.Report.Valid({
|
|
37
|
+
specifier: current,
|
|
38
|
+
})
|
|
39
|
+
: // if it is already like this on disk
|
|
40
|
+
instance.rawSpecifier === valid.raw
|
|
41
|
+
? // it is a match
|
|
42
|
+
new report_1.Report.Valid({
|
|
43
|
+
specifier: current,
|
|
44
|
+
})
|
|
45
|
+
: // it is a mismatch and should be this one
|
|
46
|
+
new report_1.Report.SemverRangeMismatch({
|
|
47
|
+
fixable: valid,
|
|
48
|
+
}),
|
|
49
|
+
// if range is NOT fixable, it is a mismatch we can't auto-fix
|
|
50
|
+
// as it seems to not be semver
|
|
51
|
+
onFailure: () => new report_1.Report.UnsupportedMismatch({
|
|
52
|
+
unfixable: instance,
|
|
53
|
+
}),
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.WithRangeSemverGroup = WithRangeSemverGroup;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import type { AliasResult } from 'npm-package-arg';
|
|
3
|
+
import { Specifier } from '.';
|
|
4
|
+
import { BaseSpecifier } from './base';
|
|
5
|
+
import { NonSemverError } from './lib/non-semver-error';
|
|
6
|
+
type T = AliasResult;
|
|
7
|
+
/** @example "npm:imageoptim-cli@3.1.7" */
|
|
8
|
+
export declare class AliasSpecifier extends BaseSpecifier<T> {
|
|
9
|
+
_tag: string;
|
|
10
|
+
/** Return the version portion if it is valid semver */
|
|
11
|
+
getSemver(): Effect.Effect<never, NonSemverError, string>;
|
|
12
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
13
|
+
setSemver(version: string): Effect.Effect<never, NonSemverError, Specifier.Any>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AliasSpecifier = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const base_1 = require("./base");
|
|
7
|
+
const non_semver_error_1 = require("./lib/non-semver-error");
|
|
8
|
+
/** @example "npm:imageoptim-cli@3.1.7" */
|
|
9
|
+
class AliasSpecifier extends base_1.BaseSpecifier {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this._tag = 'AliasSpecifier';
|
|
13
|
+
}
|
|
14
|
+
/** Return the version portion if it is valid semver */
|
|
15
|
+
getSemver() {
|
|
16
|
+
return (0, effect_1.pipe)(this.parse(), effect_1.Effect.mapError(() => new non_semver_error_1.NonSemverError({ specifier: this })), effect_1.Effect.map((parsed) => parsed.subSpec), effect_1.Effect.flatMap((subSpec) => ['range', 'version'].includes(subSpec.type) && subSpec.fetchSpec !== null
|
|
17
|
+
? effect_1.Effect.succeed(subSpec.fetchSpec)
|
|
18
|
+
: non_semver_error_1.NonSemverError.asEffect(this)));
|
|
19
|
+
}
|
|
20
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
21
|
+
setSemver(version) {
|
|
22
|
+
return (0, effect_1.pipe)(this.parse(), effect_1.Effect.mapError(() => new non_semver_error_1.NonSemverError({ specifier: this })), effect_1.Effect.map((parsed) => parsed.subSpec), effect_1.Effect.map((subSpec) => subSpec.name || ''), effect_1.Effect.map((name) => `npm:${name}@${version}`), effect_1.Effect.map((raw) => _1.Specifier.create(this.instance, raw)));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.AliasSpecifier = AliasSpecifier;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import { Specifier } from '.';
|
|
3
|
+
import type { Instance } from '../get-instances/instance';
|
|
4
|
+
import { NonSemverError } from './lib/non-semver-error';
|
|
5
|
+
import type { NpmPackageArgResult } from './lib/parse-specifier';
|
|
6
|
+
export declare class BaseSpecifier<T extends NpmPackageArgResult | unknown> {
|
|
7
|
+
/** should be overridden by sub classes */
|
|
8
|
+
_tag: string;
|
|
9
|
+
/** The raw semver/workspace:/git etc version value */
|
|
10
|
+
raw: string;
|
|
11
|
+
/**
|
|
12
|
+
* A `Specifier` describes the version specifier (eg "^1.4.4") of a given
|
|
13
|
+
* instance.
|
|
14
|
+
*
|
|
15
|
+
* Initially there will be a `Specifier` which describes the version as it is
|
|
16
|
+
* on disk, but other `Specifier`s will need to be created which reflect what
|
|
17
|
+
* the version should be once fixed – first for the instance's version group
|
|
18
|
+
* and second for its semver group.
|
|
19
|
+
*
|
|
20
|
+
* The intermediate and final variants of `Specifier` could differ along the
|
|
21
|
+
* way and whether we're linting the current state of the monorepo or
|
|
22
|
+
* determining whether possible fixes will ultimately still have a valid
|
|
23
|
+
* version and range, each one has a reference back to the original `Instance`
|
|
24
|
+
* for writing back to it when we do finally commit our fixes once verified.
|
|
25
|
+
*/
|
|
26
|
+
instance: Instance;
|
|
27
|
+
constructor(data: Pick<BaseSpecifier<T>, 'raw' | 'instance'>);
|
|
28
|
+
/**
|
|
29
|
+
* Parse the raw version specifier using
|
|
30
|
+
* https://github.com/npm/npm-package-arg
|
|
31
|
+
*/
|
|
32
|
+
protected parse(): Effect.Effect<never, unknown, T>;
|
|
33
|
+
/** Return the version portion if it is valid semver */
|
|
34
|
+
getSemver(): Effect.Effect<never, NonSemverError, string>;
|
|
35
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
36
|
+
setSemver(_version: string): Effect.Effect<never, NonSemverError, Specifier.Any>;
|
|
37
|
+
/** Apply the given specifier to a new one with this instance bound to it */
|
|
38
|
+
replaceWith<T extends Specifier.Any>(specifier: T): T;
|
|
39
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseSpecifier = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const non_semver_error_1 = require("./lib/non-semver-error");
|
|
7
|
+
const parse_specifier_1 = require("./lib/parse-specifier");
|
|
8
|
+
class BaseSpecifier {
|
|
9
|
+
constructor(data) {
|
|
10
|
+
/** should be overridden by sub classes */
|
|
11
|
+
this._tag = 'BaseSpecifier';
|
|
12
|
+
this.raw = data.raw;
|
|
13
|
+
this.instance = data.instance;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parse the raw version specifier using
|
|
17
|
+
* https://github.com/npm/npm-package-arg
|
|
18
|
+
*/
|
|
19
|
+
parse() {
|
|
20
|
+
const name = this.instance.name;
|
|
21
|
+
const raw = this.raw;
|
|
22
|
+
const packageJsonFile = this.instance.packageJsonFile;
|
|
23
|
+
return (0, effect_1.pipe)(effect_1.Effect.try(() => (0, parse_specifier_1.parseSpecifier)(name, raw, packageJsonFile)), effect_1.Effect.tapError(() => effect_1.Effect.logError(`parseSpecifier threw on ${name}@${raw} at ${packageJsonFile.jsonFile.shortPath}`)));
|
|
24
|
+
}
|
|
25
|
+
/** Return the version portion if it is valid semver */
|
|
26
|
+
getSemver() {
|
|
27
|
+
return non_semver_error_1.NonSemverError.asEffect(this);
|
|
28
|
+
}
|
|
29
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
30
|
+
setSemver(_version) {
|
|
31
|
+
return non_semver_error_1.NonSemverError.asEffect(this);
|
|
32
|
+
}
|
|
33
|
+
/** Apply the given specifier to a new one with this instance bound to it */
|
|
34
|
+
replaceWith(specifier) {
|
|
35
|
+
return _1.Specifier.create(this.instance, specifier.raw);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.BaseSpecifier = BaseSpecifier;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Instance } from '../get-instances/instance';
|
|
2
|
+
import type { Delete } from '../version-group/lib/delete';
|
|
3
|
+
/** A instance which should be deleted */
|
|
4
|
+
export declare class DeleteSpecifier {
|
|
5
|
+
_tag: string;
|
|
6
|
+
raw: Delete;
|
|
7
|
+
instance: Instance;
|
|
8
|
+
constructor(data: {
|
|
9
|
+
raw: Delete;
|
|
10
|
+
instance: Instance;
|
|
11
|
+
});
|
|
12
|
+
getSemver: () => import("effect/Effect").Effect<never, import("./lib/non-semver-error").NonSemverError, string>;
|
|
13
|
+
setSemver: (_version: string) => import("effect/Effect").Effect<never, import("./lib/non-semver-error").NonSemverError, import(".").Specifier.Any>;
|
|
14
|
+
replaceWith: <T extends import(".").Specifier.Any>(specifier: T) => T;
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeleteSpecifier = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
/** A instance which should be deleted */
|
|
6
|
+
class DeleteSpecifier {
|
|
7
|
+
constructor(data) {
|
|
8
|
+
this._tag = 'DeleteSpecifier';
|
|
9
|
+
this.getSemver = base_1.BaseSpecifier.prototype.getSemver;
|
|
10
|
+
this.setSemver = base_1.BaseSpecifier.prototype.setSemver;
|
|
11
|
+
this.replaceWith = base_1.BaseSpecifier.prototype.replaceWith;
|
|
12
|
+
this.raw = data.raw;
|
|
13
|
+
this.instance = data.instance;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.DeleteSpecifier = DeleteSpecifier;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileSpecifier = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
/** @example */
|
|
6
|
+
class FileSpecifier extends base_1.BaseSpecifier {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this._tag = 'FileSpecifier';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.FileSpecifier = FileSpecifier;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import type { HostedGitResult } from 'npm-package-arg';
|
|
3
|
+
import { Specifier } from '.';
|
|
4
|
+
import { BaseSpecifier } from './base';
|
|
5
|
+
import { NonSemverError } from './lib/non-semver-error';
|
|
6
|
+
/** @example "git+https://github.com/user/foo" */
|
|
7
|
+
export declare class HostedGitSpecifier extends BaseSpecifier<HostedGitResult> {
|
|
8
|
+
_tag: string;
|
|
9
|
+
/** Return the git tag if it is valid semver */
|
|
10
|
+
getSemver(): Effect.Effect<never, NonSemverError, string>;
|
|
11
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
12
|
+
setSemver(version: string): Effect.Effect<never, NonSemverError, Specifier.Any>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HostedGitSpecifier = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const is_semver_1 = require("../guards/is-semver");
|
|
7
|
+
const base_1 = require("./base");
|
|
8
|
+
const non_semver_error_1 = require("./lib/non-semver-error");
|
|
9
|
+
/** @example "git+https://github.com/user/foo" */
|
|
10
|
+
class HostedGitSpecifier extends base_1.BaseSpecifier {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this._tag = 'HostedGitSpecifier';
|
|
14
|
+
}
|
|
15
|
+
/** Return the git tag if it is valid semver */
|
|
16
|
+
getSemver() {
|
|
17
|
+
return (0, effect_1.pipe)(this.parse(), effect_1.Effect.mapError(() => new non_semver_error_1.NonSemverError({ specifier: this })), effect_1.Effect.map((parsed) => parsed.gitCommittish || ''), effect_1.Effect.flatMap((gitCommittish) => (0, is_semver_1.isSemver)(gitCommittish) ? effect_1.Effect.succeed(gitCommittish) : non_semver_error_1.NonSemverError.asEffect(this)));
|
|
18
|
+
}
|
|
19
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
20
|
+
setSemver(version) {
|
|
21
|
+
return (0, effect_1.pipe)(this.parse(), effect_1.Effect.mapError(() => new non_semver_error_1.NonSemverError({ specifier: this })), effect_1.Effect.map((parsed) => ({
|
|
22
|
+
gitCommittish: parsed.gitCommittish || '',
|
|
23
|
+
rawSpec: parsed.rawSpec || '',
|
|
24
|
+
})), effect_1.Effect.map(({ gitCommittish, rawSpec }) => rawSpec.replace(gitCommittish, version)), effect_1.Effect.map((raw) => _1.Specifier.create(this.instance, raw)));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.HostedGitSpecifier = HostedGitSpecifier;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Union } from 'ts-toolbelt';
|
|
2
|
+
import type { Instance } from '../get-instances/instance';
|
|
3
|
+
import { type Delete } from '../version-group/lib/delete';
|
|
4
|
+
import { AliasSpecifier } from './alias';
|
|
5
|
+
import { DeleteSpecifier } from './delete';
|
|
6
|
+
import { FileSpecifier } from './file';
|
|
7
|
+
import { HostedGitSpecifier } from './hosted-git';
|
|
8
|
+
import { RangeSpecifier } from './range';
|
|
9
|
+
import { TagSpecifier } from './tag';
|
|
10
|
+
import { UnsupportedSpecifier } from './unsupported';
|
|
11
|
+
import { UrlSpecifier } from './url';
|
|
12
|
+
import { VersionSpecifier } from './version';
|
|
13
|
+
import { WorkspaceProtocolSpecifier } from './workspace-protocol';
|
|
14
|
+
export declare namespace Specifier {
|
|
15
|
+
const Alias: typeof AliasSpecifier;
|
|
16
|
+
const Delete: typeof DeleteSpecifier;
|
|
17
|
+
const File: typeof FileSpecifier;
|
|
18
|
+
const HostedGit: typeof HostedGitSpecifier;
|
|
19
|
+
const Range: typeof RangeSpecifier;
|
|
20
|
+
const Tag: typeof TagSpecifier;
|
|
21
|
+
const Unsupported: typeof UnsupportedSpecifier;
|
|
22
|
+
const Url: typeof UrlSpecifier;
|
|
23
|
+
const Version: typeof VersionSpecifier;
|
|
24
|
+
const WorkspaceProtocol: typeof WorkspaceProtocolSpecifier;
|
|
25
|
+
type Any = Union.Strict<AliasSpecifier | DeleteSpecifier | FileSpecifier | HostedGitSpecifier | RangeSpecifier | TagSpecifier | UnsupportedSpecifier | UrlSpecifier | VersionSpecifier | WorkspaceProtocolSpecifier>;
|
|
26
|
+
function create(instance: Instance, raw: string | Delete): Specifier.Any;
|
|
27
|
+
}
|