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
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
_tag = 'AliasSpecifier';
|
|
11
|
+
/** Return the version portion if it is valid semver */
|
|
12
|
+
getSemver() {
|
|
13
|
+
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
|
|
14
|
+
? effect_1.Effect.succeed(subSpec.fetchSpec)
|
|
15
|
+
: non_semver_error_1.NonSemverError.asEffect(this)));
|
|
16
|
+
}
|
|
17
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
18
|
+
setSemver(version) {
|
|
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.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)));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
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,56 @@
|
|
|
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
|
+
/** should be overridden by sub classes */
|
|
10
|
+
_tag = 'BaseSpecifier';
|
|
11
|
+
/** The raw semver/workspace:/git etc version value */
|
|
12
|
+
raw;
|
|
13
|
+
/**
|
|
14
|
+
* A `Specifier` describes the version specifier (eg "^1.4.4") of a given
|
|
15
|
+
* instance.
|
|
16
|
+
*
|
|
17
|
+
* Initially there will be a `Specifier` which describes the version as it is
|
|
18
|
+
* on disk, but other `Specifier`s will need to be created which reflect what
|
|
19
|
+
* the version should be once fixed – first for the instance's version group
|
|
20
|
+
* and second for its semver group.
|
|
21
|
+
*
|
|
22
|
+
* The intermediate and final variants of `Specifier` could differ along the
|
|
23
|
+
* way and whether we're linting the current state of the monorepo or
|
|
24
|
+
* determining whether possible fixes will ultimately still have a valid
|
|
25
|
+
* version and range, each one has a reference back to the original `Instance`
|
|
26
|
+
* for writing back to it when we do finally commit our fixes once verified.
|
|
27
|
+
*/
|
|
28
|
+
instance;
|
|
29
|
+
constructor(data) {
|
|
30
|
+
this.raw = data.raw;
|
|
31
|
+
this.instance = data.instance;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parse the raw version specifier using
|
|
35
|
+
* https://github.com/npm/npm-package-arg
|
|
36
|
+
*/
|
|
37
|
+
parse() {
|
|
38
|
+
const name = this.instance.name;
|
|
39
|
+
const raw = this.raw;
|
|
40
|
+
const packageJsonFile = this.instance.packageJsonFile;
|
|
41
|
+
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}`)));
|
|
42
|
+
}
|
|
43
|
+
/** Return the version portion if it is valid semver */
|
|
44
|
+
getSemver() {
|
|
45
|
+
return non_semver_error_1.NonSemverError.asEffect(this);
|
|
46
|
+
}
|
|
47
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
48
|
+
setSemver(_version) {
|
|
49
|
+
return non_semver_error_1.NonSemverError.asEffect(this);
|
|
50
|
+
}
|
|
51
|
+
/** Apply the given specifier to a new one with this instance bound to it */
|
|
52
|
+
replaceWith(specifier) {
|
|
53
|
+
return _1.Specifier.create(this.instance, specifier.raw);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
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,18 @@
|
|
|
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
|
+
_tag = 'DeleteSpecifier';
|
|
8
|
+
raw;
|
|
9
|
+
instance;
|
|
10
|
+
constructor(data) {
|
|
11
|
+
this.raw = data.raw;
|
|
12
|
+
this.instance = data.instance;
|
|
13
|
+
}
|
|
14
|
+
getSemver = base_1.BaseSpecifier.prototype.getSemver;
|
|
15
|
+
setSemver = base_1.BaseSpecifier.prototype.setSemver;
|
|
16
|
+
replaceWith = base_1.BaseSpecifier.prototype.replaceWith;
|
|
17
|
+
}
|
|
18
|
+
exports.DeleteSpecifier = DeleteSpecifier;
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
+
_tag = 'FileSpecifier';
|
|
8
|
+
}
|
|
9
|
+
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,24 @@
|
|
|
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
|
+
_tag = 'HostedGitSpecifier';
|
|
12
|
+
/** Return the git tag if it is valid semver */
|
|
13
|
+
getSemver() {
|
|
14
|
+
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)));
|
|
15
|
+
}
|
|
16
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
17
|
+
setSemver(version) {
|
|
18
|
+
return (0, effect_1.pipe)(this.parse(), effect_1.Effect.mapError(() => new non_semver_error_1.NonSemverError({ specifier: this })), effect_1.Effect.map((parsed) => ({
|
|
19
|
+
gitCommittish: parsed.gitCommittish || '',
|
|
20
|
+
rawSpec: parsed.rawSpec || '',
|
|
21
|
+
})), effect_1.Effect.map(({ gitCommittish, rawSpec }) => rawSpec.replace(gitCommittish, version)), effect_1.Effect.map((raw) => _1.Specifier.create(this.instance, raw)));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
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
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Specifier = void 0;
|
|
4
|
+
const delete_1 = require("../version-group/lib/delete");
|
|
5
|
+
const alias_1 = require("./alias");
|
|
6
|
+
const delete_2 = require("./delete");
|
|
7
|
+
const file_1 = require("./file");
|
|
8
|
+
const hosted_git_1 = require("./hosted-git");
|
|
9
|
+
const parse_specifier_1 = require("./lib/parse-specifier");
|
|
10
|
+
const range_1 = require("./range");
|
|
11
|
+
const tag_1 = require("./tag");
|
|
12
|
+
const unsupported_1 = require("./unsupported");
|
|
13
|
+
const url_1 = require("./url");
|
|
14
|
+
const version_1 = require("./version");
|
|
15
|
+
const workspace_protocol_1 = require("./workspace-protocol");
|
|
16
|
+
var Specifier;
|
|
17
|
+
(function (Specifier) {
|
|
18
|
+
Specifier.Alias = alias_1.AliasSpecifier;
|
|
19
|
+
Specifier.Delete = delete_2.DeleteSpecifier;
|
|
20
|
+
Specifier.File = file_1.FileSpecifier;
|
|
21
|
+
Specifier.HostedGit = hosted_git_1.HostedGitSpecifier;
|
|
22
|
+
Specifier.Range = range_1.RangeSpecifier;
|
|
23
|
+
Specifier.Tag = tag_1.TagSpecifier;
|
|
24
|
+
Specifier.Unsupported = unsupported_1.UnsupportedSpecifier;
|
|
25
|
+
Specifier.Url = url_1.UrlSpecifier;
|
|
26
|
+
Specifier.Version = version_1.VersionSpecifier;
|
|
27
|
+
Specifier.WorkspaceProtocol = workspace_protocol_1.WorkspaceProtocolSpecifier;
|
|
28
|
+
function create(instance, raw) {
|
|
29
|
+
if (raw === delete_1.DELETE)
|
|
30
|
+
return new Specifier.Delete({ instance, raw });
|
|
31
|
+
if (!raw)
|
|
32
|
+
return new Specifier.Unsupported({ instance, raw });
|
|
33
|
+
try {
|
|
34
|
+
if (raw === 'latest')
|
|
35
|
+
raw = '*';
|
|
36
|
+
const parsed = (0, parse_specifier_1.parseSpecifier)(instance.name, raw, instance.packageJsonFile);
|
|
37
|
+
const type = parsed.type;
|
|
38
|
+
const data = { instance, raw };
|
|
39
|
+
if (type === 'version')
|
|
40
|
+
return new Specifier.Version(data);
|
|
41
|
+
if (type === 'range')
|
|
42
|
+
return new Specifier.Range(data);
|
|
43
|
+
if (type === 'workspaceProtocol')
|
|
44
|
+
return new Specifier.WorkspaceProtocol(data);
|
|
45
|
+
if (type === 'alias')
|
|
46
|
+
return new Specifier.Alias(data);
|
|
47
|
+
if (type === 'file' || type === 'directory')
|
|
48
|
+
return new Specifier.File(data);
|
|
49
|
+
if (type === 'remote')
|
|
50
|
+
return new Specifier.Url(data);
|
|
51
|
+
if (type === 'git')
|
|
52
|
+
return new Specifier.HostedGit(data);
|
|
53
|
+
if (type === 'tag')
|
|
54
|
+
return new Specifier.Tag(data);
|
|
55
|
+
return new Specifier.Unsupported(data);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return new Specifier.Unsupported({ instance, raw });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
Specifier.create = create;
|
|
62
|
+
})(Specifier || (exports.Specifier = Specifier = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Specifier } from '..';
|
|
3
|
+
declare const NonSemverError_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> & {
|
|
4
|
+
readonly _tag: "NonSemverError";
|
|
5
|
+
}>;
|
|
6
|
+
export declare class NonSemverError extends NonSemverError_base<{
|
|
7
|
+
specifier: Specifier.Any;
|
|
8
|
+
}> {
|
|
9
|
+
static asEffect<T>(specifier: Specifier.Any): Effect.Effect<never, NonSemverError, T>;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NonSemverError = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
class NonSemverError extends effect_1.Data.TaggedClass('NonSemverError') {
|
|
6
|
+
static asEffect(specifier) {
|
|
7
|
+
return effect_1.Effect.fail(new NonSemverError({ specifier }));
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.NonSemverError = NonSemverError;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import npa from 'npm-package-arg';
|
|
2
|
+
import type { PackageJsonFile } from '../../get-package-json-files/package-json-file';
|
|
3
|
+
/** Extends npm/npm-package-arg to support "workspace:*" */
|
|
4
|
+
export interface WorkspaceProtocolResult {
|
|
5
|
+
type: 'workspaceProtocol';
|
|
6
|
+
raw: string;
|
|
7
|
+
name: string | null;
|
|
8
|
+
escapedName: string | null;
|
|
9
|
+
scope: string | null;
|
|
10
|
+
rawSpec: string;
|
|
11
|
+
saveSpec: string;
|
|
12
|
+
}
|
|
13
|
+
export type NpmPackageArgResult = ReturnType<typeof npa.resolve> | WorkspaceProtocolResult;
|
|
14
|
+
export declare function parseSpecifier(name: string, specifier: string, packageJsonFile: PackageJsonFile): NpmPackageArgResult;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseSpecifier = void 0;
|
|
7
|
+
const npm_package_arg_1 = __importDefault(require("npm-package-arg"));
|
|
8
|
+
function parseSpecifier(name, specifier, packageJsonFile) {
|
|
9
|
+
if (specifier === 'workspace:*' || specifier === 'workspace:~') {
|
|
10
|
+
const parsed = npm_package_arg_1.default.resolve(name, packageJsonFile.jsonFile.dirPath, specifier.replace('workspace:', 'file:'));
|
|
11
|
+
return {
|
|
12
|
+
escapedName: parsed.escapedName,
|
|
13
|
+
name: parsed.name,
|
|
14
|
+
raw: parsed.raw.replace('file:', 'workspace:'),
|
|
15
|
+
rawSpec: parsed.rawSpec.replace('file:', 'workspace:'),
|
|
16
|
+
saveSpec: parsed.saveSpec.replace('file:', 'workspace:'),
|
|
17
|
+
scope: parsed.scope,
|
|
18
|
+
type: 'workspaceProtocol',
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
return npm_package_arg_1.default.resolve(name, specifier, packageJsonFile.jsonFile.dirPath);
|
|
22
|
+
}
|
|
23
|
+
exports.parseSpecifier = parseSpecifier;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RegistryResult } from 'npm-package-arg';
|
|
2
|
+
/**
|
|
3
|
+
* A helper to create specific classes for each of the possible
|
|
4
|
+
* `RegistryResult` types from npm/npm-package-arg. Instead of grouping them
|
|
5
|
+
* together we are being more specific
|
|
6
|
+
*/
|
|
7
|
+
export type SpecificRegistryResult<T extends RegistryResult['type'] | 'local'> = Omit<RegistryResult, 'type'> & {
|
|
8
|
+
type: T;
|
|
9
|
+
};
|
|
@@ -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<'range'>;
|
|
7
|
+
/**
|
|
8
|
+
* @example "*"
|
|
9
|
+
* @example "^1.2.3"
|
|
10
|
+
*/
|
|
11
|
+
export declare class RangeSpecifier extends BaseSpecifier<T> {
|
|
12
|
+
_tag: string;
|
|
13
|
+
/** Return the semver version including the range */
|
|
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,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RangeSpecifier = 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
|
+
* @example "*"
|
|
10
|
+
* @example "^1.2.3"
|
|
11
|
+
*/
|
|
12
|
+
class RangeSpecifier extends base_1.BaseSpecifier {
|
|
13
|
+
_tag = 'RangeSpecifier';
|
|
14
|
+
/** Return the semver version including the range */
|
|
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.fetchSpec));
|
|
17
|
+
}
|
|
18
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
19
|
+
setSemver(version) {
|
|
20
|
+
return effect_1.Effect.succeed(_1.Specifier.create(this.instance, version));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.RangeSpecifier = RangeSpecifier;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseSpecifier } from './base';
|
|
2
|
+
import type { SpecificRegistryResult } from './lib/specific-registry-result';
|
|
3
|
+
/**
|
|
4
|
+
* @example "latest"
|
|
5
|
+
* @example "made-up-by-some-dev"
|
|
6
|
+
*/
|
|
7
|
+
export declare class TagSpecifier extends BaseSpecifier<SpecificRegistryResult<'tag'>> {
|
|
8
|
+
_tag: string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TagSpecifier = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
/**
|
|
6
|
+
* @example "latest"
|
|
7
|
+
* @example "made-up-by-some-dev"
|
|
8
|
+
*/
|
|
9
|
+
class TagSpecifier extends base_1.BaseSpecifier {
|
|
10
|
+
_tag = 'TagSpecifier';
|
|
11
|
+
}
|
|
12
|
+
exports.TagSpecifier = TagSpecifier;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UnsupportedSpecifier = void 0;
|
|
4
|
+
const base_1 = require("./base");
|
|
5
|
+
/** A specifier not supported by the `npm` package manager */
|
|
6
|
+
class UnsupportedSpecifier extends base_1.BaseSpecifier {
|
|
7
|
+
_tag = 'UnsupportedSpecifier';
|
|
8
|
+
}
|
|
9
|
+
exports.UnsupportedSpecifier = UnsupportedSpecifier;
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
+
_tag = 'UrlSpecifier';
|
|
8
|
+
}
|
|
9
|
+
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,23 @@
|
|
|
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
|
+
_tag = 'VersionSpecifier';
|
|
14
|
+
/** Return the semver version */
|
|
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.fetchSpec));
|
|
17
|
+
}
|
|
18
|
+
/** Get a new `Specifier` from the given semver version applied to this one */
|
|
19
|
+
setSemver(version) {
|
|
20
|
+
return effect_1.Effect.succeed(_1.Specifier.create(this.instance, version));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
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,35 @@
|
|
|
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
|
+
_tag = 'WorkspaceProtocolSpecifier';
|
|
10
|
+
/**
|
|
11
|
+
* Return an equivalent value which actually is semver, so that it can be used
|
|
12
|
+
* with tools which expect values which conform to the spec. This value is
|
|
13
|
+
* used only when sorting versions.
|
|
14
|
+
*/
|
|
15
|
+
getSemverEquivalent(ctx) {
|
|
16
|
+
if (this.raw === 'workspace:*') {
|
|
17
|
+
return effect_1.Effect.succeed('*');
|
|
18
|
+
}
|
|
19
|
+
if (this.raw === 'workspace:~') {
|
|
20
|
+
const local = ctx.packageJsonFilesByName[this.instance.name];
|
|
21
|
+
const version = local?.jsonFile?.contents?.version;
|
|
22
|
+
if (version)
|
|
23
|
+
return effect_1.Effect.succeed(`~${version}`);
|
|
24
|
+
}
|
|
25
|
+
return effect_1.Effect.succeed('0.0.0');
|
|
26
|
+
}
|
|
27
|
+
// @TODO: this name is inaccurate, check how it is used and change logic or rename
|
|
28
|
+
getSemver() {
|
|
29
|
+
return effect_1.Effect.succeed(this.raw);
|
|
30
|
+
}
|
|
31
|
+
setSemver(version) {
|
|
32
|
+
return effect_1.Effect.succeed(_1.Specifier.create(this.instance, version));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
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
|
}
|