syncpack 11.2.1 → 12.0.0-alpha.1
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 +24 -26
- package/dist/bin-fix-mismatches/fix-mismatches.d.ts +15 -3
- package/dist/bin-fix-mismatches/fix-mismatches.js +124 -35
- package/dist/bin-fix-mismatches/index.js +12 -32
- package/dist/bin-format/format.d.ts +11 -3
- package/dist/bin-format/format.js +51 -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 +11 -35
- 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 +93 -34
- package/dist/bin-list/index.js +11 -31
- package/dist/bin-list/list.d.ts +11 -3
- package/dist/bin-list/list.js +120 -34
- 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 +253 -34
- package/dist/bin-prompt/index.js +15 -31
- package/dist/bin-prompt/prompt.d.ts +10 -3
- package/dist/bin-prompt/prompt.js +87 -33
- 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 +54 -35
- 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 +56 -37
- 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 +7 -8
- package/dist/config/get-enabled-types.js +63 -73
- package/dist/config/get-indent.js +1 -1
- package/dist/config/tag.d.ts +1 -1
- package/dist/config/tag.js +2 -25
- package/dist/config/types.d.ts +8 -9
- package/dist/constants.d.ts +2 -1
- package/dist/constants.js +2 -1
- package/dist/error-handlers/default-error-handlers.d.ts +25 -2
- package/dist/error-handlers/default-error-handlers.js +60 -36
- 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 +34 -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 +21 -18
- package/dist/guards/can-add-to-group.d.ts +5 -4
- package/dist/guards/can-add-to-group.js +8 -4
- 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 +21 -0
- package/dist/io/ask-for-input.d.ts +13 -0
- package/dist/io/ask-for-input.js +18 -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 +13 -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 +24 -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 +51 -20
- 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 +22 -0
- package/dist/specifier/base.d.ts +39 -0
- package/dist/specifier/base.js +56 -0
- package/dist/specifier/delete.d.ts +15 -0
- package/dist/specifier/delete.js +18 -0
- package/dist/specifier/file.d.ts +6 -0
- package/dist/specifier/file.js +9 -0
- package/dist/specifier/hosted-git.d.ts +13 -0
- package/dist/specifier/hosted-git.js +24 -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/range.d.ts +18 -0
- package/dist/specifier/range.js +23 -0
- package/dist/specifier/tag.d.ts +9 -0
- package/dist/specifier/tag.js +12 -0
- package/dist/specifier/unsupported.d.ts +5 -0
- package/dist/specifier/unsupported.js +9 -0
- package/dist/specifier/url.d.ts +6 -0
- package/dist/specifier/url.js +9 -0
- package/dist/specifier/version.d.ts +18 -0
- package/dist/specifier/version.js +23 -0
- package/dist/specifier/workspace-protocol.d.ts +17 -0
- package/dist/specifier/workspace-protocol.js +35 -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 +36 -22
- package/dist/strategy/named-version-string.d.ts +4 -4
- package/dist/strategy/named-version-string.js +25 -25
- package/dist/strategy/unnamed-version-string.d.ts +4 -4
- package/dist/strategy/unnamed-version-string.js +23 -22
- package/dist/strategy/versions-by-name.d.ts +4 -4
- package/dist/strategy/versions-by-name.js +12 -12
- 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 +33 -33
- 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/effects.d.ts +0 -40
- 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 -100
- 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 -20
- package/dist/error-handlers/create-error-handlers.js +0 -60
- 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/{create-program/effects.js → specifier/lib/specific-registry-result.js} +0 -0
- /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
package/dist/report.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Report = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
var Report;
|
|
6
|
+
(function (Report) {
|
|
7
|
+
/** Semver Groups are disabled by default */
|
|
8
|
+
class Disabled extends effect_1.Data.TaggedClass('Disabled') {
|
|
9
|
+
}
|
|
10
|
+
Report.Disabled = Disabled;
|
|
11
|
+
/** Has a name which does not match the `--filter` RegExp */
|
|
12
|
+
class FilteredOut extends effect_1.Data.TaggedClass('FilteredOut') {
|
|
13
|
+
}
|
|
14
|
+
Report.FilteredOut = FilteredOut;
|
|
15
|
+
/** Is in an ignored version group */
|
|
16
|
+
class Ignored extends effect_1.Data.TaggedClass('Ignored') {
|
|
17
|
+
}
|
|
18
|
+
Report.Ignored = Ignored;
|
|
19
|
+
/** Version satisfies the rules of its version group */
|
|
20
|
+
class Valid extends effect_1.Data.TaggedClass('Valid') {
|
|
21
|
+
}
|
|
22
|
+
Report.Valid = Valid;
|
|
23
|
+
/** Must be removed */
|
|
24
|
+
class Banned extends effect_1.Data.TaggedClass('Banned') {
|
|
25
|
+
}
|
|
26
|
+
Report.Banned = Banned;
|
|
27
|
+
/** Version mismatches and should use a higher version found on another */
|
|
28
|
+
class HighestSemverMismatch extends effect_1.Data.TaggedClass('HighestSemverMismatch') {
|
|
29
|
+
}
|
|
30
|
+
Report.HighestSemverMismatch = HighestSemverMismatch;
|
|
31
|
+
/** Version mismatches the `.version` of the package developed in this repo */
|
|
32
|
+
class LocalPackageMismatch extends effect_1.Data.TaggedClass('LocalPackageMismatch') {
|
|
33
|
+
}
|
|
34
|
+
Report.LocalPackageMismatch = LocalPackageMismatch;
|
|
35
|
+
/** Version mismatches and should use a lower version found on another */
|
|
36
|
+
class LowestSemverMismatch extends effect_1.Data.TaggedClass('LowestSemverMismatch') {
|
|
37
|
+
}
|
|
38
|
+
Report.LowestSemverMismatch = LowestSemverMismatch;
|
|
39
|
+
/** Version is not identical to the `pinVersion` of its Pinned version group */
|
|
40
|
+
class PinnedMismatch extends effect_1.Data.TaggedClass('PinnedMismatch') {
|
|
41
|
+
}
|
|
42
|
+
Report.PinnedMismatch = PinnedMismatch;
|
|
43
|
+
/** Version is identical but the semver range does not match its semver group */
|
|
44
|
+
class SemverRangeMismatch extends effect_1.Data.TaggedClass('SemverRangeMismatch') {
|
|
45
|
+
}
|
|
46
|
+
Report.SemverRangeMismatch = SemverRangeMismatch;
|
|
47
|
+
/** Version mismatches the version used by the packages in the `snapTo` array */
|
|
48
|
+
class SnappedToMismatch extends effect_1.Data.TaggedClass('SnappedToMismatch') {
|
|
49
|
+
}
|
|
50
|
+
Report.SnappedToMismatch = SnappedToMismatch;
|
|
51
|
+
/** Dependency should match a local package.json which is missing a .version */
|
|
52
|
+
class MissingLocalVersion extends effect_1.Data.TaggedClass('MissingLocalVersion') {
|
|
53
|
+
}
|
|
54
|
+
Report.MissingLocalVersion = MissingLocalVersion;
|
|
55
|
+
/** Dependency is not present in any of the packages in the `snapTo` array */
|
|
56
|
+
class MissingSnappedToMismatch extends effect_1.Data.TaggedClass('MissingSnappedToMismatch') {
|
|
57
|
+
}
|
|
58
|
+
Report.MissingSnappedToMismatch = MissingSnappedToMismatch;
|
|
59
|
+
/** Specifier does not cover the specifiers of every other instance in this group */
|
|
60
|
+
class SameRangeMismatch extends effect_1.Data.TaggedClass('SameRangeMismatch') {
|
|
61
|
+
}
|
|
62
|
+
Report.SameRangeMismatch = SameRangeMismatch;
|
|
63
|
+
/** Version mismatches and is not semver, syncpack cannot guess what to do */
|
|
64
|
+
class UnsupportedMismatch extends effect_1.Data.TaggedClass('UnsupportedMismatch') {
|
|
65
|
+
}
|
|
66
|
+
Report.UnsupportedMismatch = UnsupportedMismatch;
|
|
67
|
+
})(Report || (exports.Report = Report = {}));
|
package/dist/schema.json
CHANGED
|
@@ -9,16 +9,19 @@
|
|
|
9
9
|
"SemverGroupConfig.Any": {
|
|
10
10
|
"anyOf": [
|
|
11
11
|
{
|
|
12
|
-
"$ref": "#/definitions/{
|
|
12
|
+
"$ref": "#/definitions/{isDisabled:true;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;range?:never;}"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
|
-
"$ref": "#/definitions/{
|
|
15
|
+
"$ref": "#/definitions/{isIgnored:true;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isDisabled?:never;range?:never;}"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"$ref": "#/definitions/{range:SemverRange;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isDisabled?:never;isIgnored?:never;}"
|
|
16
19
|
}
|
|
17
20
|
]
|
|
18
21
|
},
|
|
19
22
|
"SemverRange": {
|
|
20
23
|
"default": "",
|
|
21
|
-
"description": "Aliases for semver range formats supported by syncpack\n\nDefaults to `\"\"` to ensure that exact dependency versions are used
|
|
24
|
+
"description": "Aliases for semver range formats supported by syncpack\n\nDefaults to `\"\"` to ensure that exact dependency versions are used instead of\nloose ranges, but this can be overridden in your config file.\n\n| Supported Range | Example |\n| --------------- | --------: |\n| `\"<\"` | `<1.4.2` |\n| `\"<=\"` | `<=1.4.2` |\n| `\"\"` | `1.4.2` |\n| `\"~\"` | `~1.4.2` |\n| `\"^\"` | `^1.4.2` |\n| `\">=\"` | `>=1.4.2` |\n| `\">\"` | `>1.4.2` |\n| `\"*\"` | `*` |",
|
|
22
25
|
"enum": [
|
|
23
26
|
"",
|
|
24
27
|
"*",
|
|
@@ -35,26 +38,26 @@
|
|
|
35
38
|
"VersionGroupConfig.Any": {
|
|
36
39
|
"anyOf": [
|
|
37
40
|
{
|
|
38
|
-
"$ref": "#/definitions/{isBanned:true;dependencies
|
|
41
|
+
"$ref": "#/definitions/{isBanned:true;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;pinVersion?:never;snapTo?:never;policy?:never;preferVersion?:never;}"
|
|
39
42
|
},
|
|
40
43
|
{
|
|
41
|
-
"$ref": "#/definitions/{isIgnored:true;dependencies
|
|
44
|
+
"$ref": "#/definitions/{isIgnored:true;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isBanned?:never;pinVersion?:never;snapTo?:never;policy?:never;preferVersion?:never;}"
|
|
42
45
|
},
|
|
43
46
|
{
|
|
44
|
-
"$ref": "#/definitions/{pinVersion:string;dependencies
|
|
47
|
+
"$ref": "#/definitions/{pinVersion:string;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;isBanned?:never;snapTo?:never;policy?:never;preferVersion?:never;}"
|
|
45
48
|
},
|
|
46
49
|
{
|
|
47
|
-
"$ref": "#/definitions/{snapTo:string[];dependencies
|
|
50
|
+
"$ref": "#/definitions/{snapTo:string[];dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;isBanned?:never;pinVersion?:never;policy?:never;preferVersion?:never;}"
|
|
48
51
|
},
|
|
49
52
|
{
|
|
50
|
-
"$ref": "#/definitions/{policy:\"sameRange\";dependencies
|
|
53
|
+
"$ref": "#/definitions/{policy:\"sameRange\";dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;isBanned?:never;pinVersion?:never;snapTo?:never;preferVersion?:never;}"
|
|
51
54
|
},
|
|
52
55
|
{
|
|
53
|
-
"$ref": "#/definitions/{preferVersion?:\"highestSemver\"|\"lowestSemver\";dependencies
|
|
56
|
+
"$ref": "#/definitions/{preferVersion?:\"highestSemver\"|\"lowestSemver\";dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;isBanned?:never;pinVersion?:never;snapTo?:never;policy?:never;}"
|
|
54
57
|
}
|
|
55
58
|
]
|
|
56
59
|
},
|
|
57
|
-
"{isBanned:true;dependencies
|
|
60
|
+
"{isBanned:true;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;pinVersion?:never;snapTo?:never;policy?:never;preferVersion?:never;}": {
|
|
58
61
|
"additionalProperties": false,
|
|
59
62
|
"properties": {
|
|
60
63
|
"dependencies": {
|
|
@@ -85,7 +88,38 @@
|
|
|
85
88
|
},
|
|
86
89
|
"type": "object"
|
|
87
90
|
},
|
|
88
|
-
"{
|
|
91
|
+
"{isDisabled:true;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;range?:never;}": {
|
|
92
|
+
"additionalProperties": false,
|
|
93
|
+
"properties": {
|
|
94
|
+
"dependencies": {
|
|
95
|
+
"items": {
|
|
96
|
+
"type": "string"
|
|
97
|
+
},
|
|
98
|
+
"type": "array"
|
|
99
|
+
},
|
|
100
|
+
"dependencyTypes": {
|
|
101
|
+
"items": {
|
|
102
|
+
"type": "string"
|
|
103
|
+
},
|
|
104
|
+
"type": "array"
|
|
105
|
+
},
|
|
106
|
+
"isDisabled": {
|
|
107
|
+
"const": true,
|
|
108
|
+
"type": "boolean"
|
|
109
|
+
},
|
|
110
|
+
"label": {
|
|
111
|
+
"type": "string"
|
|
112
|
+
},
|
|
113
|
+
"packages": {
|
|
114
|
+
"items": {
|
|
115
|
+
"type": "string"
|
|
116
|
+
},
|
|
117
|
+
"type": "array"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"type": "object"
|
|
121
|
+
},
|
|
122
|
+
"{isIgnored:true;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isBanned?:never;pinVersion?:never;snapTo?:never;policy?:never;preferVersion?:never;}": {
|
|
89
123
|
"additionalProperties": false,
|
|
90
124
|
"properties": {
|
|
91
125
|
"dependencies": {
|
|
@@ -116,7 +150,7 @@
|
|
|
116
150
|
},
|
|
117
151
|
"type": "object"
|
|
118
152
|
},
|
|
119
|
-
"{isIgnored:true;dependencies
|
|
153
|
+
"{isIgnored:true;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isDisabled?:never;range?:never;}": {
|
|
120
154
|
"additionalProperties": false,
|
|
121
155
|
"properties": {
|
|
122
156
|
"dependencies": {
|
|
@@ -147,7 +181,7 @@
|
|
|
147
181
|
},
|
|
148
182
|
"type": "object"
|
|
149
183
|
},
|
|
150
|
-
"{pinVersion:string;dependencies
|
|
184
|
+
"{pinVersion:string;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;isBanned?:never;snapTo?:never;policy?:never;preferVersion?:never;}": {
|
|
151
185
|
"additionalProperties": false,
|
|
152
186
|
"properties": {
|
|
153
187
|
"dependencies": {
|
|
@@ -177,7 +211,7 @@
|
|
|
177
211
|
},
|
|
178
212
|
"type": "object"
|
|
179
213
|
},
|
|
180
|
-
"{policy:\"sameRange\";dependencies
|
|
214
|
+
"{policy:\"sameRange\";dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;isBanned?:never;pinVersion?:never;snapTo?:never;preferVersion?:never;}": {
|
|
181
215
|
"additionalProperties": false,
|
|
182
216
|
"properties": {
|
|
183
217
|
"dependencies": {
|
|
@@ -208,7 +242,7 @@
|
|
|
208
242
|
},
|
|
209
243
|
"type": "object"
|
|
210
244
|
},
|
|
211
|
-
"{preferVersion?:\"highestSemver\"|\"lowestSemver\";dependencies
|
|
245
|
+
"{preferVersion?:\"highestSemver\"|\"lowestSemver\";dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;isBanned?:never;pinVersion?:never;snapTo?:never;policy?:never;}": {
|
|
212
246
|
"additionalProperties": false,
|
|
213
247
|
"properties": {
|
|
214
248
|
"dependencies": {
|
|
@@ -242,7 +276,7 @@
|
|
|
242
276
|
},
|
|
243
277
|
"type": "object"
|
|
244
278
|
},
|
|
245
|
-
"{range:SemverRange;dependencies
|
|
279
|
+
"{range:SemverRange;dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isDisabled?:never;isIgnored?:never;}": {
|
|
246
280
|
"additionalProperties": false,
|
|
247
281
|
"properties": {
|
|
248
282
|
"dependencies": {
|
|
@@ -272,7 +306,7 @@
|
|
|
272
306
|
},
|
|
273
307
|
"type": "object"
|
|
274
308
|
},
|
|
275
|
-
"{snapTo:string[];dependencies
|
|
309
|
+
"{snapTo:string[];dependencies?:string[];dependencyTypes?:string[];label?:string;packages?:string[];isIgnored?:never;isBanned?:never;pinVersion?:never;policy?:never;preferVersion?:never;}": {
|
|
276
310
|
"additionalProperties": false,
|
|
277
311
|
"properties": {
|
|
278
312
|
"dependencies": {
|
|
@@ -328,9 +362,6 @@
|
|
|
328
362
|
},
|
|
329
363
|
"type": "array"
|
|
330
364
|
},
|
|
331
|
-
"semverRange": {
|
|
332
|
-
"$ref": "#/definitions/SemverRange"
|
|
333
|
-
},
|
|
334
365
|
"sortAz": {
|
|
335
366
|
"items": {
|
|
336
367
|
"type": "string"
|
|
@@ -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/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<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
|
+
groupType = 'semverGroup';
|
|
12
|
+
constructor(isCatchAll, config) {
|
|
13
|
+
super({
|
|
14
|
+
config,
|
|
15
|
+
instances: [],
|
|
16
|
+
isCatchAll,
|
|
17
|
+
});
|
|
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/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<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
|
+
groupType = 'semverGroup';
|
|
13
|
+
constructor(ctx) {
|
|
14
|
+
super({
|
|
15
|
+
config: {
|
|
16
|
+
dependencies: ['**'],
|
|
17
|
+
dependencyTypes: ['**'],
|
|
18
|
+
label: 'Filtered out',
|
|
19
|
+
packages: ['**'],
|
|
20
|
+
},
|
|
21
|
+
filter: (0, get_filter_1.getFilter)(ctx.config),
|
|
22
|
+
instances: [],
|
|
23
|
+
});
|
|
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/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<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
|
+
groupType = 'semverGroup';
|
|
9
|
+
constructor(config) {
|
|
10
|
+
super({
|
|
11
|
+
config,
|
|
12
|
+
instances: [],
|
|
13
|
+
});
|
|
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/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<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/Equal").Equal>, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" | keyof import("effect/Equal").Equal ? never : P]: A[P]; }) => Data.Data<Readonly<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
|
+
groupType = 'semverGroup';
|
|
10
|
+
constructor(isCatchAll, config) {
|
|
11
|
+
super({
|
|
12
|
+
config,
|
|
13
|
+
instances: [],
|
|
14
|
+
isCatchAll,
|
|
15
|
+
});
|
|
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 {};
|