syncpack 11.2.1 → 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 +119 -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 +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 +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 +82 -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 +49 -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 +51 -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 +4 -1
- package/dist/constants.js +4 -2
- 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 +80 -37
- 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 +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 +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 +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 +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 +24 -23
- 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 -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/{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,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UrlSpecifier = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
/** @example "http://x.com/foo.tgz" */
|
|
6
|
+
class UrlSpecifier extends base_1.BaseSpecifier {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this._tag = 'UrlSpecifier';
|
|
10
|
+
// @TODO: If file name is semver, return that in getSemver()
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.UrlSpecifier = UrlSpecifier;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import { Specifier } from '.';
|
|
3
|
+
import { BaseSpecifier } from './base';
|
|
4
|
+
import { NonSemverError } from './lib/non-semver-error';
|
|
5
|
+
import type { SpecificRegistryResult } from './lib/specific-registry-result';
|
|
6
|
+
type T = SpecificRegistryResult<'version'>;
|
|
7
|
+
/**
|
|
8
|
+
* An exact semver version
|
|
9
|
+
* @example "1.4.4"
|
|
10
|
+
*/
|
|
11
|
+
export declare class VersionSpecifier extends BaseSpecifier<T> {
|
|
12
|
+
_tag: string;
|
|
13
|
+
/** Return the semver version */
|
|
14
|
+
getSemver(): Effect.Effect<never, NonSemverError, string>;
|
|
15
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
16
|
+
setSemver(version: string): Effect.Effect<never, never, Specifier.Any>;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VersionSpecifier = 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
|
+
/**
|
|
9
|
+
* An exact semver version
|
|
10
|
+
* @example "1.4.4"
|
|
11
|
+
*/
|
|
12
|
+
class VersionSpecifier extends base_1.BaseSpecifier {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this._tag = 'VersionSpecifier';
|
|
16
|
+
}
|
|
17
|
+
/** Return the semver version */
|
|
18
|
+
getSemver() {
|
|
19
|
+
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.fetchSpec));
|
|
20
|
+
}
|
|
21
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
22
|
+
setSemver(version) {
|
|
23
|
+
return effect_1.Effect.succeed(_1.Specifier.create(this.instance, version));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.VersionSpecifier = VersionSpecifier;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import { Specifier } from '.';
|
|
3
|
+
import type { Ctx } from '../get-context';
|
|
4
|
+
import { BaseSpecifier } from './base';
|
|
5
|
+
import type { WorkspaceProtocolResult } from './lib/parse-specifier';
|
|
6
|
+
/** Represents "workspace:*" and "workspace:~" */
|
|
7
|
+
export declare class WorkspaceProtocolSpecifier extends BaseSpecifier<WorkspaceProtocolResult> {
|
|
8
|
+
_tag: string;
|
|
9
|
+
/**
|
|
10
|
+
* Return an equivalent value which actually is semver, so that it can be used
|
|
11
|
+
* with tools which expect values which conform to the spec. This value is
|
|
12
|
+
* used only when sorting versions.
|
|
13
|
+
*/
|
|
14
|
+
getSemverEquivalent(ctx: Ctx): Effect.Effect<never, never, string>;
|
|
15
|
+
getSemver(): Effect.Effect<never, never, string>;
|
|
16
|
+
setSemver(version: string): Effect.Effect<never, never, Specifier.Any>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkspaceProtocolSpecifier = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const base_1 = require("./base");
|
|
7
|
+
/** Represents "workspace:*" and "workspace:~" */
|
|
8
|
+
class WorkspaceProtocolSpecifier extends base_1.BaseSpecifier {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this._tag = 'WorkspaceProtocolSpecifier';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Return an equivalent value which actually is semver, so that it can be used
|
|
15
|
+
* with tools which expect values which conform to the spec. This value is
|
|
16
|
+
* used only when sorting versions.
|
|
17
|
+
*/
|
|
18
|
+
getSemverEquivalent(ctx) {
|
|
19
|
+
if (this.raw === 'workspace:*') {
|
|
20
|
+
return effect_1.Effect.succeed('*');
|
|
21
|
+
}
|
|
22
|
+
if (this.raw === 'workspace:~') {
|
|
23
|
+
const local = ctx.packageJsonFilesByName[this.instance.name];
|
|
24
|
+
const version = local?.jsonFile?.contents?.version;
|
|
25
|
+
if (version)
|
|
26
|
+
return effect_1.Effect.succeed(`~${version}`);
|
|
27
|
+
}
|
|
28
|
+
return effect_1.Effect.succeed('0.0.0');
|
|
29
|
+
}
|
|
30
|
+
// @TODO: this name is inaccurate, check how it is used and change logic or rename
|
|
31
|
+
getSemver() {
|
|
32
|
+
return effect_1.Effect.succeed(this.raw);
|
|
33
|
+
}
|
|
34
|
+
setSemver(version) {
|
|
35
|
+
return effect_1.Effect.succeed(_1.Specifier.create(this.instance, version));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.WorkspaceProtocolSpecifier = WorkspaceProtocolSpecifier;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
2
|
import type { PackageJsonFile } from '../../get-package-json-files/package-json-file';
|
|
3
|
-
export declare function getNonEmptyStringProp(propPath: string, file: PackageJsonFile):
|
|
3
|
+
export declare function getNonEmptyStringProp(propPath: string, file: PackageJsonFile): Effect.Effect<never, unknown, string>;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getNonEmptyStringProp = void 0;
|
|
4
|
-
const
|
|
5
|
-
const get_1 = require("tightrope/fn/get");
|
|
4
|
+
const effect_1 = require("effect");
|
|
6
5
|
const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
6
|
+
const get_1 = require("../../lib/get");
|
|
7
|
+
const getOptionOfNonEmptyString = effect_1.Option.liftPredicate(is_non_empty_string_1.isNonEmptyString);
|
|
9
8
|
function getNonEmptyStringProp(propPath, file) {
|
|
10
|
-
return (0,
|
|
9
|
+
return (0, effect_1.pipe)((0, get_1.get)(file.jsonFile.contents, ...propPath.split('.')), effect_1.Effect.flatMap((value) => getOptionOfNonEmptyString(value)), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`<${file.jsonFile.shortPath}>.${propPath} is not a non-empty string`)));
|
|
11
10
|
}
|
|
12
11
|
exports.getNonEmptyStringProp = getNonEmptyStringProp;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
2
|
import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
|
|
3
|
-
import type { Delete } from '../
|
|
3
|
+
import type { Delete } from '../version-group/lib/delete';
|
|
4
4
|
export declare class NameAndVersionPropsStrategy {
|
|
5
5
|
_tag: string;
|
|
6
6
|
name: string;
|
|
7
7
|
path: string;
|
|
8
8
|
namePath: string;
|
|
9
9
|
constructor(name: string, path: string, namePath: string);
|
|
10
|
-
read(file: PackageJsonFile):
|
|
11
|
-
write(file: PackageJsonFile, [, version]: [string, string | Delete]):
|
|
10
|
+
read(file: PackageJsonFile): Effect.Effect<never, never, [string, string][]>;
|
|
11
|
+
write(file: PackageJsonFile, [, version]: [string, string | Delete]): Effect.Effect<never, never, PackageJsonFile>;
|
|
12
12
|
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NameAndVersionPropsStrategy = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const map_1 = require("tightrope/result/map");
|
|
9
|
-
const tap_1 = require("tightrope/result/tap");
|
|
10
|
-
const delete_1 = require("../get-version-groups/lib/delete");
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const is_object_1 = require("tightrope/guard/is-object");
|
|
6
|
+
const get_1 = require("../lib/get");
|
|
7
|
+
const delete_1 = require("../version-group/lib/delete");
|
|
11
8
|
const get_non_empty_string_prop_1 = require("./lib/get-non-empty-string-prop");
|
|
9
|
+
const getOptionOfObject = effect_1.Option.liftPredicate((is_object_1.isObject));
|
|
12
10
|
class NameAndVersionPropsStrategy {
|
|
13
11
|
constructor(name, path, namePath) {
|
|
14
12
|
this._tag = 'name~version';
|
|
@@ -17,33 +15,46 @@ class NameAndVersionPropsStrategy {
|
|
|
17
15
|
this.namePath = namePath;
|
|
18
16
|
}
|
|
19
17
|
read(file) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// get name prop
|
|
24
|
-
(0, get_non_empty_string_prop_1.getNonEmptyStringProp)(namePath, file),
|
|
18
|
+
return (0, effect_1.pipe)(effect_1.Effect.Do,
|
|
19
|
+
// get the name prop
|
|
20
|
+
effect_1.Effect.bind('name', () => (0, get_non_empty_string_prop_1.getNonEmptyStringProp)(this.namePath, file)),
|
|
25
21
|
// add the version prop
|
|
26
|
-
(
|
|
22
|
+
effect_1.Effect.bind('version', () => (0, effect_1.pipe)((0, get_non_empty_string_prop_1.getNonEmptyStringProp)(this.path, file),
|
|
23
|
+
/**
|
|
24
|
+
* In order to report an `InstanceReport.MissingLocalVersion`, we need
|
|
25
|
+
* to ensure that a value is returned for `local` package .version
|
|
26
|
+
* properties so we can know that `this.name` is a package developed
|
|
27
|
+
* in this repo but that its version is missing.
|
|
28
|
+
*
|
|
29
|
+
* Not doing this results in the invalid local package being ignored
|
|
30
|
+
* and each installation of it being checked for mismatches amongst
|
|
31
|
+
* themselves.
|
|
32
|
+
*/
|
|
33
|
+
this.name === 'local'
|
|
34
|
+
? effect_1.Effect.catchAll(() => effect_1.Effect.succeed('PACKAGE_JSON_HAS_NO_VERSION'))
|
|
35
|
+
: effect_1.Effect.map(effect_1.identity))),
|
|
27
36
|
// if both are non empty strings, we can return them
|
|
28
|
-
|
|
37
|
+
effect_1.Effect.map(({ name, version }) => [[name, version]]), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`NameAndVersionPropsStrategy#${this.name} found nothing at <${file.jsonFile.shortPath}>.${this.path} & .${this.namePath}`)),
|
|
38
|
+
// if either are invalid, default to empty
|
|
39
|
+
effect_1.Effect.catchAll(() => effect_1.Effect.succeed([])));
|
|
29
40
|
}
|
|
30
41
|
write(file, [, version]) {
|
|
31
42
|
const path = this.path;
|
|
32
|
-
const { contents } = file;
|
|
43
|
+
const { contents } = file.jsonFile;
|
|
33
44
|
const isNestedPath = path.includes('.');
|
|
34
45
|
const nextValue = version === delete_1.DELETE ? undefined : version;
|
|
35
46
|
if (isNestedPath) {
|
|
36
47
|
const fullPath = path.split('.');
|
|
37
48
|
const pathToParent = fullPath.slice(0, fullPath.length - 1).join('.');
|
|
38
49
|
const key = fullPath.slice(-1).join('');
|
|
39
|
-
return (0,
|
|
40
|
-
parent[key] =
|
|
41
|
-
}), (
|
|
50
|
+
return (0, effect_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), effect_1.Effect.flatMap(getOptionOfObject), effect_1.Effect.flatMap((parent) => effect_1.Effect.try(() => {
|
|
51
|
+
parent[key] = nextValue;
|
|
52
|
+
})), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`strategy ${this._tag} with name ${this.name} failed to write to <${file.jsonFile.shortPath}>.${this.path}`)), effect_1.Effect.catchAll(() => effect_1.Effect.succeed(file)), effect_1.Effect.map(() => file));
|
|
42
53
|
}
|
|
43
54
|
else {
|
|
44
|
-
return (0,
|
|
45
|
-
|
|
46
|
-
}), (
|
|
55
|
+
return (0, effect_1.pipe)(getOptionOfObject(contents), effect_1.Effect.flatMap((parent) => effect_1.Effect.try(() => {
|
|
56
|
+
parent[this.path] = nextValue;
|
|
57
|
+
})), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`strategy ${this._tag} with name ${this.name} failed to write to <${file.jsonFile.shortPath}>.${this.path}`)), effect_1.Effect.catchAll(() => effect_1.Effect.succeed(file)), effect_1.Effect.map(() => file));
|
|
47
58
|
}
|
|
48
59
|
}
|
|
49
60
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
2
|
import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
|
|
3
|
-
import type { Delete } from '../
|
|
3
|
+
import type { Delete } from '../version-group/lib/delete';
|
|
4
4
|
export declare class NamedVersionStringStrategy {
|
|
5
5
|
_tag: string;
|
|
6
6
|
name: string;
|
|
7
7
|
path: string;
|
|
8
8
|
constructor(name: string, path: string);
|
|
9
|
-
read(file: PackageJsonFile):
|
|
10
|
-
write(file: PackageJsonFile, [name, version]: [string, string | Delete]):
|
|
9
|
+
read(file: PackageJsonFile): Effect.Effect<never, never, [string, string][]>;
|
|
10
|
+
write(file: PackageJsonFile, [name, version]: [string, string | Delete]): Effect.Effect<never, never, PackageJsonFile>;
|
|
11
11
|
}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NamedVersionStringStrategy = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
|
|
6
6
|
const is_non_empty_string_1 = require("tightrope/guard/is-non-empty-string");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const from_try_1 = require("tightrope/result/from-try");
|
|
10
|
-
const map_1 = require("tightrope/result/map");
|
|
11
|
-
const tap_1 = require("tightrope/result/tap");
|
|
12
|
-
const delete_1 = require("../get-version-groups/lib/delete");
|
|
7
|
+
const get_1 = require("../lib/get");
|
|
8
|
+
const delete_1 = require("../version-group/lib/delete");
|
|
13
9
|
const get_non_empty_string_prop_1 = require("./lib/get-non-empty-string-prop");
|
|
10
|
+
const getOptionOfNonEmptyString = effect_1.Option.liftPredicate(is_non_empty_string_1.isNonEmptyString);
|
|
11
|
+
const getOptionOfNonEmptyObject = effect_1.Option.liftPredicate((is_non_empty_object_1.isNonEmptyObject));
|
|
14
12
|
class NamedVersionStringStrategy {
|
|
15
13
|
constructor(name, path) {
|
|
16
14
|
this._tag = 'name@version';
|
|
@@ -19,34 +17,34 @@ class NamedVersionStringStrategy {
|
|
|
19
17
|
}
|
|
20
18
|
read(file) {
|
|
21
19
|
const path = this.path;
|
|
22
|
-
return (0,
|
|
20
|
+
return (0, effect_1.pipe)(
|
|
23
21
|
// get version prop
|
|
24
22
|
(0, get_non_empty_string_prop_1.getNonEmptyStringProp)(path, file),
|
|
25
23
|
// if it is a non empty string, we can read it
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
effect_1.Effect.map((value) => value.split(/@(.*)/)),
|
|
25
|
+
// check the string was properly formed
|
|
26
|
+
effect_1.Effect.flatMap(([name, version]) => effect_1.Effect.all([getOptionOfNonEmptyString(name), getOptionOfNonEmptyString(version)])),
|
|
27
|
+
// return an array of one entry if valid
|
|
28
|
+
effect_1.Effect.map(([name, version]) => [[name, version]]), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`NamedVersionStringStrategy#${this.name} found nothing at <${file.jsonFile.shortPath}>.${this.path}`)),
|
|
29
|
+
// if value is invalid, default to empty
|
|
30
|
+
effect_1.Effect.catchAll(() => effect_1.Effect.succeed([])));
|
|
32
31
|
}
|
|
33
32
|
write(file, [name, version]) {
|
|
34
|
-
const { contents } = file;
|
|
35
|
-
const
|
|
36
|
-
const isNestedPath = path.includes('.');
|
|
33
|
+
const { contents } = file.jsonFile;
|
|
34
|
+
const isNestedPath = this.path.includes('.');
|
|
37
35
|
const nextValue = version === delete_1.DELETE ? undefined : `${name}@${version}`;
|
|
38
36
|
if (isNestedPath) {
|
|
39
|
-
const fullPath = path.split('.');
|
|
37
|
+
const fullPath = this.path.split('.');
|
|
40
38
|
const pathToParent = fullPath.slice(0, fullPath.length - 1).join('.');
|
|
41
39
|
const key = fullPath.slice(-1).join('');
|
|
42
|
-
return (0,
|
|
40
|
+
return (0, effect_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), effect_1.Effect.flatMap(getOptionOfNonEmptyObject), effect_1.Effect.flatMap((parent) => effect_1.Effect.try(() => {
|
|
43
41
|
parent[key] = nextValue;
|
|
44
|
-
}), (
|
|
42
|
+
})), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`strategy ${this._tag} with name ${this.name} failed to write to <${file.jsonFile.shortPath}>.${this.path}`)), effect_1.Effect.catchAll(() => effect_1.Effect.succeed(file)), effect_1.Effect.map(() => file));
|
|
45
43
|
}
|
|
46
44
|
else {
|
|
47
|
-
return (0,
|
|
48
|
-
|
|
49
|
-
}), (
|
|
45
|
+
return (0, effect_1.pipe)(getOptionOfNonEmptyObject(contents), effect_1.Effect.flatMap((parent) => effect_1.Effect.try(() => {
|
|
46
|
+
parent[this.path] = nextValue;
|
|
47
|
+
})), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`strategy ${this._tag} with name ${this.name} failed to write to <${file.jsonFile.shortPath}>.${this.path}`)), effect_1.Effect.catchAll(() => effect_1.Effect.succeed(file)), effect_1.Effect.map(() => file));
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
2
|
import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
|
|
3
|
-
import type { Delete } from '../
|
|
3
|
+
import type { Delete } from '../version-group/lib/delete';
|
|
4
4
|
export declare class UnnamedVersionStringStrategy {
|
|
5
5
|
_tag: string;
|
|
6
6
|
name: string;
|
|
7
7
|
path: string;
|
|
8
8
|
constructor(name: string, path: string);
|
|
9
|
-
read(file: PackageJsonFile):
|
|
10
|
-
write(file: PackageJsonFile, [, version]: [string, string | Delete]):
|
|
9
|
+
read(file: PackageJsonFile): Effect.Effect<never, never, [string, string][]>;
|
|
10
|
+
write(file: PackageJsonFile, [, version]: [string, string | Delete]): Effect.Effect<never, never, PackageJsonFile>;
|
|
11
11
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UnnamedVersionStringStrategy = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const tap_1 = require("tightrope/result/tap");
|
|
9
|
-
const delete_1 = require("../get-version-groups/lib/delete");
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
|
|
6
|
+
const get_1 = require("../lib/get");
|
|
7
|
+
const delete_1 = require("../version-group/lib/delete");
|
|
10
8
|
const get_non_empty_string_prop_1 = require("./lib/get-non-empty-string-prop");
|
|
9
|
+
const getOptionOfNonEmptyObject = effect_1.Option.liftPredicate((is_non_empty_object_1.isNonEmptyObject));
|
|
11
10
|
class UnnamedVersionStringStrategy {
|
|
12
11
|
constructor(name, path) {
|
|
13
12
|
this._tag = 'version';
|
|
@@ -15,33 +14,33 @@ class UnnamedVersionStringStrategy {
|
|
|
15
14
|
this.path = path;
|
|
16
15
|
}
|
|
17
16
|
read(file) {
|
|
18
|
-
|
|
19
|
-
return (0, Function_1.pipe)(
|
|
17
|
+
return (0, effect_1.pipe)(
|
|
20
18
|
// get version prop
|
|
21
|
-
(0, get_non_empty_string_prop_1.getNonEmptyStringProp)(path, file),
|
|
19
|
+
(0, get_non_empty_string_prop_1.getNonEmptyStringProp)(this.path, file),
|
|
22
20
|
// if it is a non empty string, we can read it
|
|
23
|
-
|
|
24
|
-
const name = path.split('.').slice(-1).join('');
|
|
21
|
+
effect_1.Effect.map((version) => {
|
|
22
|
+
const name = this.path.split('.').slice(-1).join('');
|
|
25
23
|
return [[name, version]];
|
|
26
|
-
}))
|
|
24
|
+
}), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`UnnamedVersionStringStrategy#${this.name} found nothing at <${file.jsonFile.shortPath}>.${this.path}`)),
|
|
25
|
+
// if value is invalid, default to empty
|
|
26
|
+
effect_1.Effect.catchAll(() => effect_1.Effect.succeed([])));
|
|
27
27
|
}
|
|
28
28
|
write(file, [, version]) {
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const isNestedPath = path.includes('.');
|
|
29
|
+
const { contents } = file.jsonFile;
|
|
30
|
+
const isNestedPath = this.path.includes('.');
|
|
32
31
|
const nextValue = version === delete_1.DELETE ? undefined : version;
|
|
33
32
|
if (isNestedPath) {
|
|
34
|
-
const fullPath = path.split('.');
|
|
33
|
+
const fullPath = this.path.split('.');
|
|
35
34
|
const pathToParent = fullPath.slice(0, fullPath.length - 1).join('.');
|
|
36
35
|
const key = fullPath.slice(-1).join('');
|
|
37
|
-
return (0,
|
|
36
|
+
return (0, effect_1.pipe)((0, get_1.get)(contents, ...pathToParent.split('.')), effect_1.Effect.flatMap(getOptionOfNonEmptyObject), effect_1.Effect.flatMap((parent) => effect_1.Effect.try(() => {
|
|
38
37
|
parent[key] = nextValue;
|
|
39
|
-
}), (
|
|
38
|
+
})), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`strategy ${this._tag} with name ${this.name} failed to write to <${file.jsonFile.shortPath}>.${this.path}`)), effect_1.Effect.catchAll(() => effect_1.Effect.succeed(file)), effect_1.Effect.map(() => file));
|
|
40
39
|
}
|
|
41
40
|
else {
|
|
42
|
-
return (0,
|
|
43
|
-
|
|
44
|
-
}), (
|
|
41
|
+
return (0, effect_1.pipe)(getOptionOfNonEmptyObject(contents), effect_1.Effect.flatMap((parent) => effect_1.Effect.try(() => {
|
|
42
|
+
parent[this.path] = nextValue;
|
|
43
|
+
})), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`strategy ${this._tag} with name ${this.name} failed to write to <${file.jsonFile.shortPath}>.${this.path}`)), effect_1.Effect.catchAll(() => effect_1.Effect.succeed(file)), effect_1.Effect.map(() => file));
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
46
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
2
|
import type { PackageJsonFile } from '../get-package-json-files/package-json-file';
|
|
3
|
-
import type { Delete } from '../
|
|
3
|
+
import type { Delete } from '../version-group/lib/delete';
|
|
4
4
|
export declare class VersionsByNameStrategy {
|
|
5
5
|
_tag: string;
|
|
6
6
|
name: string;
|
|
7
7
|
path: string;
|
|
8
8
|
constructor(name: string, path: string);
|
|
9
|
-
read(file: PackageJsonFile):
|
|
10
|
-
write(file: PackageJsonFile, [name, version]: [string, string | Delete]):
|
|
9
|
+
read(file: PackageJsonFile): Effect.Effect<never, never, [string, string][]>;
|
|
10
|
+
write(file: PackageJsonFile, [name, version]: [string, string | Delete]): Effect.Effect<never, never, PackageJsonFile>;
|
|
11
11
|
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VersionsByNameStrategy = void 0;
|
|
4
|
-
const
|
|
5
|
-
const get_1 = require("tightrope/fn/get");
|
|
4
|
+
const effect_1 = require("effect");
|
|
6
5
|
const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const delete_1 = require("../get-version-groups/lib/delete");
|
|
6
|
+
const get_1 = require("../lib/get");
|
|
7
|
+
const delete_1 = require("../version-group/lib/delete");
|
|
8
|
+
const getOptionOfNonEmptyObject = effect_1.Option.liftPredicate((is_non_empty_object_1.isNonEmptyObject));
|
|
11
9
|
class VersionsByNameStrategy {
|
|
12
10
|
constructor(name, path) {
|
|
13
11
|
this._tag = 'versionsByName';
|
|
@@ -15,15 +13,15 @@ class VersionsByNameStrategy {
|
|
|
15
13
|
this.path = path;
|
|
16
14
|
}
|
|
17
15
|
read(file) {
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
return (0, effect_1.pipe)((0, get_1.get)(file.jsonFile.contents, ...this.path.split('.')), effect_1.Effect.flatMap((value) => getOptionOfNonEmptyObject(value)), effect_1.Effect.map((obj) => Object.entries(obj)), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`VersionsByNameStrategy#${this.name} found nothing at <${file.jsonFile.shortPath}>.${this.path}`)),
|
|
17
|
+
// if value is invalid, default to empty
|
|
18
|
+
effect_1.Effect.catchAll(() => effect_1.Effect.succeed([])));
|
|
20
19
|
}
|
|
21
20
|
write(file, [name, version]) {
|
|
22
|
-
const path = this.path;
|
|
23
21
|
const nextValue = version === delete_1.DELETE ? undefined : version;
|
|
24
|
-
return (0,
|
|
22
|
+
return (0, effect_1.pipe)((0, get_1.get)(file.jsonFile.contents, ...this.path.split('.')), effect_1.Effect.flatMap(getOptionOfNonEmptyObject), effect_1.Effect.flatMap((parent) => effect_1.Effect.try(() => {
|
|
25
23
|
parent[name] = nextValue;
|
|
26
|
-
}), (
|
|
24
|
+
})), effect_1.Effect.tapError(() => effect_1.Effect.logDebug(`strategy ${this._tag} with name ${this.name} failed to write to <${file.jsonFile.shortPath}>.${this.path}.${name}`)), effect_1.Effect.catchAll(() => effect_1.Effect.succeed(file)), effect_1.Effect.map(() => file));
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
exports.VersionsByNameStrategy = VersionsByNameStrategy;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { VersionGroupConfig } from '../config/types';
|
|
3
|
+
import type { Instance } from '../get-instances/instance';
|
|
4
|
+
import { Report } from '../report';
|
|
5
|
+
declare const BannedVersionGroup_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 & {
|
|
6
|
+
readonly _tag: "Banned";
|
|
7
|
+
}>;
|
|
8
|
+
export declare class BannedVersionGroup extends BannedVersionGroup_base<{
|
|
9
|
+
config: VersionGroupConfig.Banned;
|
|
10
|
+
instances: Instance[];
|
|
11
|
+
}> {
|
|
12
|
+
groupType: string;
|
|
13
|
+
constructor(config: VersionGroupConfig.Banned);
|
|
14
|
+
canAdd(_: Instance): boolean;
|
|
15
|
+
inspectAll(): Effect.Effect<never, never, Report.Version.Group[]>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BannedVersionGroup = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const report_1 = require("../report");
|
|
6
|
+
const specifier_1 = require("../specifier");
|
|
7
|
+
const delete_1 = require("./lib/delete");
|
|
8
|
+
const group_by_1 = require("./lib/group-by");
|
|
9
|
+
class BannedVersionGroup extends effect_1.Data.TaggedClass('Banned') {
|
|
10
|
+
constructor(config) {
|
|
11
|
+
super({
|
|
12
|
+
config,
|
|
13
|
+
instances: [],
|
|
14
|
+
});
|
|
15
|
+
this.groupType = 'versionGroup';
|
|
16
|
+
}
|
|
17
|
+
canAdd(_) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
inspectAll() {
|
|
21
|
+
return effect_1.Effect.succeed(Object.entries((0, group_by_1.groupBy)('name', this.instances)).map(([name, instances]) => ({
|
|
22
|
+
name,
|
|
23
|
+
reports: instances.map((instance) =>
|
|
24
|
+
// ✘ package should not be used
|
|
25
|
+
// ✓ is a mismatch we can auto-fix
|
|
26
|
+
new report_1.Report.Banned({
|
|
27
|
+
fixable: specifier_1.Specifier.create(instance, delete_1.DELETE),
|
|
28
|
+
})),
|
|
29
|
+
})));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.BannedVersionGroup = BannedVersionGroup;
|