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
|
@@ -1,43 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.setSemverRanges = void 0;
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
|
|
6
|
+
const fix_mismatches_1 = require("../bin-fix-mismatches/fix-mismatches");
|
|
7
|
+
const lint_semver_ranges_1 = require("../bin-lint-semver-ranges/lint-semver-ranges");
|
|
8
|
+
const list_mismatches_1 = require("../bin-list-mismatches/list-mismatches");
|
|
30
9
|
const tag_1 = require("../config/tag");
|
|
31
|
-
const semver_ranges_1 = require("../create-program/semver-ranges");
|
|
32
|
-
const create_env_1 = require("../env/create-env");
|
|
33
|
-
const exit_if_invalid_1 = require("../env/exit-if-invalid");
|
|
34
|
-
const tags_1 = require("../env/tags");
|
|
35
|
-
const write_if_changed_1 = require("../env/write-if-changed");
|
|
36
|
-
const create_error_handlers_1 = require("../error-handlers/create-error-handlers");
|
|
37
10
|
const default_error_handlers_1 = require("../error-handlers/default-error-handlers");
|
|
38
11
|
const get_context_1 = require("../get-context");
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
12
|
+
const get_instances_1 = require("../get-instances");
|
|
13
|
+
const io_1 = require("../io");
|
|
14
|
+
const exit_if_invalid_1 = require("../io/exit-if-invalid");
|
|
15
|
+
const write_if_changed_1 = require("../io/write-if-changed");
|
|
16
|
+
const with_logger_1 = require("../lib/with-logger");
|
|
17
|
+
function setSemverRanges({ io, cli, errorHandlers = default_error_handlers_1.defaultErrorHandlers }) {
|
|
18
|
+
return (0, effect_1.pipe)((0, get_context_1.getContext)({ io, cli, errorHandlers }), effect_1.Effect.flatMap((ctx) => (0, effect_1.pipe)(effect_1.Effect.gen(function* ($) {
|
|
19
|
+
// no semver groups have been configured, they are disabled by default
|
|
20
|
+
if (!(0, is_non_empty_array_1.isNonEmptyArray)(ctx.config.rcFile.semverGroups)) {
|
|
21
|
+
ctx.isInvalid = true;
|
|
22
|
+
yield* $((0, lint_semver_ranges_1.logSemverGroupsDisabledWarning)());
|
|
23
|
+
return ctx;
|
|
24
|
+
}
|
|
25
|
+
const { semverGroups } = yield* $((0, get_instances_1.getInstances)(ctx, io, errorHandlers));
|
|
26
|
+
let fixedCount = 0;
|
|
27
|
+
let unfixableCount = 0;
|
|
28
|
+
let validCount = 0;
|
|
29
|
+
for (const group of semverGroups) {
|
|
30
|
+
if (group._tag === 'WithRange') {
|
|
31
|
+
for (const instance of group.instances) {
|
|
32
|
+
const report = yield* $(group.inspect(instance));
|
|
33
|
+
const _tag = report._tag;
|
|
34
|
+
if (_tag === 'SemverRangeMismatch') {
|
|
35
|
+
yield* $((0, fix_mismatches_1.fixMismatch)(report));
|
|
36
|
+
fixedCount++;
|
|
37
|
+
}
|
|
38
|
+
else if (_tag === 'UnsupportedMismatch') {
|
|
39
|
+
yield* $((0, list_mismatches_1.logUnsupportedMismatch)(report));
|
|
40
|
+
unfixableCount++;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
validCount++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (validCount)
|
|
49
|
+
yield* $((0, fix_mismatches_1.logAlreadyValidSize)(validCount));
|
|
50
|
+
if (fixedCount)
|
|
51
|
+
yield* $((0, fix_mismatches_1.logFixedSize)(fixedCount));
|
|
52
|
+
if (unfixableCount)
|
|
53
|
+
yield* $((0, fix_mismatches_1.logUnfixableSize)(unfixableCount));
|
|
54
|
+
return ctx;
|
|
55
|
+
}), effect_1.Effect.flatMap(write_if_changed_1.writeIfChanged), effect_1.Effect.catchTags((0, default_error_handlers_1.chainErrorHandlers)(ctx, errorHandlers)), effect_1.Effect.flatMap(exit_if_invalid_1.exitIfInvalid))), effect_1.Effect.provide((0, effect_1.pipe)(effect_1.Context.empty(), effect_1.Context.add(tag_1.CliConfigTag, cli), effect_1.Context.add(io_1.IoTag, io))), with_logger_1.withLogger);
|
|
42
56
|
}
|
|
43
57
|
exports.setSemverRanges = setSemverRanges;
|
|
@@ -1,11 +1,51 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Instance } from '../get-instances/instance';
|
|
3
|
+
declare const Releases_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 & {
|
|
4
|
+
readonly _tag: "Releases";
|
|
5
|
+
}>;
|
|
6
|
+
/** full release history from the npm registry for a given package */
|
|
7
|
+
declare class Releases extends Releases_base<{
|
|
8
|
+
instance: Instance;
|
|
5
9
|
versions: {
|
|
6
10
|
all: string[];
|
|
7
11
|
latest: string;
|
|
8
12
|
};
|
|
13
|
+
}> {
|
|
9
14
|
}
|
|
10
|
-
|
|
15
|
+
declare const PromptCancelled_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 & {
|
|
16
|
+
readonly _tag: "PromptCancelled";
|
|
17
|
+
}>;
|
|
18
|
+
declare class PromptCancelled extends PromptCancelled_base<{
|
|
19
|
+
name: string;
|
|
20
|
+
}> {
|
|
21
|
+
}
|
|
22
|
+
declare const HttpError_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 & {
|
|
23
|
+
readonly _tag: "HttpError";
|
|
24
|
+
}>;
|
|
25
|
+
declare class HttpError extends HttpError_base<{
|
|
26
|
+
error: string;
|
|
27
|
+
}> {
|
|
28
|
+
}
|
|
29
|
+
declare const NpmRegistryError_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 & {
|
|
30
|
+
readonly _tag: "NpmRegistryError";
|
|
31
|
+
}>;
|
|
32
|
+
declare class NpmRegistryError extends NpmRegistryError_base<{
|
|
33
|
+
error: string;
|
|
34
|
+
}> {
|
|
35
|
+
}
|
|
36
|
+
export declare const updateEffects: {
|
|
37
|
+
onFetchAllStart(): Effect.Effect<never, never, void>;
|
|
38
|
+
onFetchStart(instance: Instance, totalCount: number): Effect.Effect<never, never, void>;
|
|
39
|
+
onFetchEnd(instance: Instance, versions?: Releases['versions']): Effect.Effect<never, never, void>;
|
|
40
|
+
/** After checking the registry, store this instance known to be up to date */
|
|
41
|
+
onUpToDate(instance: Instance): Effect.Effect<never, never, void>;
|
|
42
|
+
/** After checking the registry, store this instance known to have newer versions available */
|
|
43
|
+
onOutdated(instance: Instance, latest: string): Effect.Effect<never, never, void>;
|
|
44
|
+
/** As the last request completes, remove the progress information */
|
|
45
|
+
onFetchAllEnd(): Effect.Effect<never, never, void>;
|
|
46
|
+
/** Fetch available versions for a given package from the npm registry */
|
|
47
|
+
fetchLatestVersions(instance: Instance): Effect.Effect<never, HttpError | NpmRegistryError, Releases>;
|
|
48
|
+
/** Given responses from npm, ask the user which they want */
|
|
49
|
+
promptForUpdates(outdated: Releases[]): Effect.Effect<never, PromptCancelled, void>;
|
|
50
|
+
};
|
|
11
51
|
export {};
|
|
@@ -27,151 +27,237 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.updateEffects = void 0;
|
|
30
|
-
const Data = __importStar(require("@effect/data/Data"));
|
|
31
|
-
const Function_1 = require("@effect/data/Function");
|
|
32
|
-
const Effect = __importStar(require("@effect/io/Effect"));
|
|
33
30
|
const Schema = __importStar(require("@effect/schema/Schema"));
|
|
34
31
|
const chalk_1 = __importDefault(require("chalk"));
|
|
32
|
+
const effect_1 = require("effect");
|
|
35
33
|
const https_1 = __importDefault(require("https"));
|
|
36
34
|
const ora_1 = __importDefault(require("ora"));
|
|
35
|
+
const os_1 = require("os");
|
|
37
36
|
const prompts_1 = __importDefault(require("prompts"));
|
|
38
|
-
const
|
|
37
|
+
const semver_1 = require("semver");
|
|
38
|
+
const gtr_1 = __importDefault(require("semver/ranges/gtr"));
|
|
39
|
+
const is_array_1 = require("tightrope/guard/is-array");
|
|
40
|
+
const is_empty_object_1 = require("tightrope/guard/is-empty-object");
|
|
39
41
|
const constants_1 = require("../constants");
|
|
40
|
-
const
|
|
41
|
-
const get_unique_specifiers_1 = require("../get-version-groups/lib/get-unique-specifiers");
|
|
42
|
-
const log_verbose_1 = require("../lib/log-verbose");
|
|
42
|
+
const ring_buffer_1 = require("../lib/ring-buffer");
|
|
43
43
|
const set_semver_range_1 = require("../lib/set-semver-range");
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
const specifier_1 = require("../specifier");
|
|
45
|
+
/** full release history from the npm registry for a given package */
|
|
46
|
+
class Releases extends effect_1.Data.TaggedClass('Releases') {
|
|
47
|
+
}
|
|
48
|
+
// https://github.com/terkelg/prompts?tab=readme-ov-file#prompts
|
|
49
|
+
class PromptCancelled extends effect_1.Data.TaggedClass('PromptCancelled') {
|
|
50
|
+
}
|
|
51
|
+
class HttpError extends effect_1.Data.TaggedClass('HttpError') {
|
|
52
|
+
}
|
|
53
|
+
class NpmRegistryError extends effect_1.Data.TaggedClass('NpmRegistryError') {
|
|
54
|
+
}
|
|
55
|
+
/** the API client for the terminal spinner */
|
|
56
|
+
let spinner = null;
|
|
57
|
+
/** how many HTTP requests have been sent */
|
|
58
|
+
let fetchedCount = 0;
|
|
59
|
+
/** how many instances have updates available */
|
|
60
|
+
let outdatedCount = 0;
|
|
61
|
+
/** names of instances currently being fetched from npm */
|
|
62
|
+
const inFlight = new Set();
|
|
63
|
+
/** names of instances most recently finished being fetched from npm */
|
|
64
|
+
const mostRecent = new ring_buffer_1.RingBuffer(5);
|
|
65
|
+
/** page size when prompting */
|
|
66
|
+
const optionsPerPage = 50;
|
|
67
|
+
/** instance names in `inFlight` are formatted for display */
|
|
68
|
+
function format(instance) {
|
|
69
|
+
return (0, chalk_1.default) `{gray ${instance.name}}`;
|
|
70
|
+
}
|
|
71
|
+
/** we need to remove colours when sorting loading status output */
|
|
72
|
+
function stripAnsi(str) {
|
|
73
|
+
// eslint-disable-next-line no-control-regex
|
|
74
|
+
const ansiChars = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
|
|
75
|
+
return str.replace(ansiChars, '');
|
|
76
|
+
}
|
|
46
77
|
exports.updateEffects = {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return Effect.unit;
|
|
78
|
+
onFetchAllStart() {
|
|
79
|
+
if (!spinner)
|
|
80
|
+
spinner = (0, ora_1.default)().start();
|
|
81
|
+
fetchedCount = 0;
|
|
82
|
+
return effect_1.Effect.unit;
|
|
52
83
|
},
|
|
53
|
-
|
|
54
|
-
|
|
84
|
+
onFetchStart(instance, totalCount) {
|
|
85
|
+
inFlight.add(format(instance));
|
|
86
|
+
fetchedCount++;
|
|
87
|
+
if (spinner) {
|
|
88
|
+
const indent = `${os_1.EOL} `;
|
|
89
|
+
const progress = new Set([...mostRecent.filter(Boolean), ...inFlight.values()]);
|
|
90
|
+
const sortedProgress = Array.from(progress).sort((a, b) => stripAnsi(a).localeCompare(stripAnsi(b)));
|
|
91
|
+
const suffixText = sortedProgress.join(indent);
|
|
92
|
+
spinner.text = (0, chalk_1.default) `${outdatedCount} updates found in ${fetchedCount}/${totalCount} dependencies${indent}${suffixText}`;
|
|
93
|
+
}
|
|
94
|
+
return effect_1.Effect.unit;
|
|
55
95
|
},
|
|
56
|
-
|
|
57
|
-
|
|
96
|
+
onFetchEnd(instance, versions) {
|
|
97
|
+
inFlight.delete(format(instance));
|
|
98
|
+
const latest = versions?.latest;
|
|
99
|
+
if (latest) {
|
|
100
|
+
if ((0, gtr_1.default)(latest, instance.rawSpecifier, true)) {
|
|
101
|
+
outdatedCount++;
|
|
102
|
+
mostRecent.push((0, chalk_1.default) `${instance.name} {gray {red ${instance.rawSpecifier}} ${constants_1.ICON.rightArrow}} {green ${latest}}`);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
mostRecent.push((0, chalk_1.default) `{green ${instance.name}}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return effect_1.Effect.unit;
|
|
58
109
|
},
|
|
59
|
-
|
|
60
|
-
|
|
110
|
+
/** After checking the registry, store this instance known to be up to date */
|
|
111
|
+
onUpToDate(instance) {
|
|
112
|
+
mostRecent.push((0, chalk_1.default) `{green ${instance.name}}`);
|
|
113
|
+
return effect_1.Effect.unit;
|
|
61
114
|
},
|
|
62
|
-
|
|
63
|
-
|
|
115
|
+
/** After checking the registry, store this instance known to have newer versions available */
|
|
116
|
+
onOutdated(instance, latest) {
|
|
117
|
+
outdatedCount++;
|
|
118
|
+
mostRecent.push((0, chalk_1.default) `${instance.name} {gray {red ${instance.rawSpecifier}} ${constants_1.ICON.rightArrow}} {green ${latest}}`);
|
|
119
|
+
return effect_1.Effect.unit;
|
|
64
120
|
},
|
|
65
|
-
|
|
66
|
-
|
|
121
|
+
/** As the last request completes, remove the progress information */
|
|
122
|
+
onFetchAllEnd() {
|
|
123
|
+
if (spinner)
|
|
124
|
+
spinner.stop();
|
|
125
|
+
spinner = null;
|
|
126
|
+
fetchedCount = 0;
|
|
127
|
+
return effect_1.Effect.unit;
|
|
67
128
|
},
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
129
|
+
/** Fetch available versions for a given package from the npm registry */
|
|
130
|
+
fetchLatestVersions(instance) {
|
|
131
|
+
return (0, effect_1.pipe)(fetchJson(`https://registry.npmjs.org/${instance.name}`),
|
|
132
|
+
// parse and validate the specific data we expect
|
|
133
|
+
effect_1.Effect.flatMap(Schema.parse(Schema.struct({
|
|
134
|
+
'dist-tags': Schema.struct({ latest: Schema.string }),
|
|
135
|
+
'time': Schema.record(Schema.string, Schema.string),
|
|
136
|
+
}))),
|
|
137
|
+
// transform it into something more appropriate
|
|
138
|
+
effect_1.Effect.map((struct) => new Releases({
|
|
139
|
+
instance,
|
|
140
|
+
versions: {
|
|
141
|
+
all: Object.keys(struct.time).filter((key) => key !== 'modified' && key !== 'created'),
|
|
142
|
+
latest: struct['dist-tags'].latest,
|
|
143
|
+
},
|
|
144
|
+
})),
|
|
145
|
+
// hide ParseErrors and just treat them as another kind of NpmRegistryError
|
|
146
|
+
effect_1.Effect.catchTags({
|
|
147
|
+
ParseError: () => effect_1.Effect.fail(new NpmRegistryError({ error: `Invalid response for ${instance.name}` })),
|
|
148
|
+
}));
|
|
79
149
|
},
|
|
80
|
-
|
|
81
|
-
|
|
150
|
+
/** Given responses from npm, ask the user which they want */
|
|
151
|
+
promptForUpdates(outdated) {
|
|
152
|
+
return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('releasesByType', () => groupByReleaseType(outdated)),
|
|
153
|
+
// Create choices to ask if they want major, minor, patch etc
|
|
154
|
+
effect_1.Effect.bind('releaseTypeQuestions', ({ releasesByType }) => effect_1.Effect.succeed(Object.keys(releasesByType)
|
|
155
|
+
.filter((type) => releasesByType[type].length > 0)
|
|
156
|
+
.map((type) => ({
|
|
157
|
+
title: (0, chalk_1.default) `${releasesByType[type].length} ${type}`,
|
|
158
|
+
selected: true,
|
|
159
|
+
value: type,
|
|
160
|
+
})))),
|
|
161
|
+
// Ask which release types (major, minor, patch etc) they want
|
|
162
|
+
effect_1.Effect.bind('releaseTypeAnswers', ({ releaseTypeQuestions }) => releaseTypeQuestions.length > 0
|
|
163
|
+
? (0, effect_1.pipe)(effect_1.Effect.tryPromise({
|
|
164
|
+
try: () => (0, prompts_1.default)({
|
|
165
|
+
name: 'releaseTypeAnswers',
|
|
166
|
+
type: 'multiselect',
|
|
167
|
+
instructions: true,
|
|
168
|
+
message: `${outdated.length} updates are available`,
|
|
169
|
+
choices: releaseTypeQuestions,
|
|
170
|
+
}).then((res) => res?.releaseTypeAnswers || []),
|
|
171
|
+
catch: effect_1.identity,
|
|
172
|
+
}), effect_1.Effect.catchAll(() => (0, effect_1.pipe)(effect_1.Effect.logError('Error when prompting for releaseTypeAnswers'), effect_1.Effect.map(() => []))))
|
|
173
|
+
: effect_1.Effect.succeed([])),
|
|
174
|
+
// For each chosen release type, list the available updates to choose from
|
|
175
|
+
effect_1.Effect.bind('prepatchAnswers', (doState) => promptForReleaseType('prepatch', doState)), effect_1.Effect.bind('patchAnswers', (doState) => promptForReleaseType('patch', doState)), effect_1.Effect.bind('preminorAnswers', (doState) => promptForReleaseType('preminor', doState)), effect_1.Effect.bind('minorAnswers', (doState) => promptForReleaseType('minor', doState)), effect_1.Effect.bind('premajorAnswers', (doState) => promptForReleaseType('premajor', doState)), effect_1.Effect.bind('majorAnswers', (doState) => promptForReleaseType('major', doState)), effect_1.Effect.bind('prereleaseAnswers', (doState) => promptForReleaseType('prerelease', doState)),
|
|
176
|
+
/** Apply every update to the package.json files */
|
|
177
|
+
effect_1.Effect.flatMap((doState) => (0, effect_1.pipe)([
|
|
178
|
+
...doState.prepatchAnswers,
|
|
179
|
+
...doState.patchAnswers,
|
|
180
|
+
...doState.preminorAnswers,
|
|
181
|
+
...doState.minorAnswers,
|
|
182
|
+
...doState.premajorAnswers,
|
|
183
|
+
...doState.majorAnswers,
|
|
184
|
+
...doState.prereleaseAnswers,
|
|
185
|
+
], effect_1.Effect.forEach(({ instance, versions }) => (0, effect_1.pipe)(instance.semverGroup.getFixed(specifier_1.Specifier.create(instance, versions.latest)), effect_1.Effect.flatMap((latestWithRange) => instance.write(latestWithRange.raw)), effect_1.Effect.catchTag('NonSemverError', effect_1.Effect.logError))), effect_1.Effect.flatMap(() => effect_1.Effect.unit))));
|
|
82
186
|
},
|
|
83
187
|
};
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
function fetchPackageVersions(input) {
|
|
93
|
-
if (!spinner)
|
|
94
|
-
spinner = (0, ora_1.default)().start();
|
|
95
|
-
fetchCount++;
|
|
96
|
-
spinner.text = chalk_1.default.blue(`Checked updates for ${fetchCount} dependencies`);
|
|
97
|
-
return (0, Function_1.pipe)(fetchUrl(`https://registry.npmjs.org/${input.report.name}`), Effect.flatMap(safeGetVersion), Effect.map((struct) => ({
|
|
98
|
-
input,
|
|
99
|
-
versions: {
|
|
100
|
-
all: Object.keys(struct.time).filter((key) => key !== 'modified' && key !== 'created'),
|
|
101
|
-
latest: struct['dist-tags'].latest,
|
|
102
|
-
},
|
|
103
|
-
})), Effect.catchTags({
|
|
104
|
-
HttpError(err) {
|
|
105
|
-
return Effect.sync(() => {
|
|
106
|
-
(0, log_verbose_1.logVerbose)(`HttpError for "${input.report.name}" ${err}`);
|
|
107
|
-
});
|
|
108
|
-
},
|
|
109
|
-
JsonParseError(err) {
|
|
110
|
-
return Effect.sync(() => {
|
|
111
|
-
(0, log_verbose_1.logVerbose)(`JsonParseError for "${input.report.name}" ${err}`);
|
|
112
|
-
});
|
|
113
|
-
},
|
|
114
|
-
ParseError(err) {
|
|
115
|
-
return Effect.sync(() => {
|
|
116
|
-
(0, log_verbose_1.logVerbose)(`ParseError for "${input.report.name}" ${err}`);
|
|
117
|
-
});
|
|
118
|
-
},
|
|
119
|
-
}));
|
|
120
|
-
}
|
|
121
|
-
function promptForUpdates(results) {
|
|
122
|
-
spinner.stop();
|
|
123
|
-
return (0, Function_1.pipe)(Effect.Do, Effect.bind('choices', () => Effect.sync(() => results.reduce((arr, result) => {
|
|
124
|
-
if (!result)
|
|
125
|
-
return arr;
|
|
126
|
-
if (!['SameRange', 'Standard'].includes(result.input.group._tag))
|
|
127
|
-
return arr;
|
|
128
|
-
const input = result.input;
|
|
129
|
-
const latestVersion = result.versions.latest;
|
|
130
|
-
const uniqueVersions = (0, get_unique_specifiers_1.getUniqueSpecifiers)(input.report.instances).map((i) => i.specifier);
|
|
131
|
-
const highestVersion = (0, unwrap_1.unwrap)((0, get_highest_version_1.getHighestVersion)(uniqueVersions));
|
|
132
|
-
const exactHighestVersion = (0, set_semver_range_1.setSemverRange)('', highestVersion);
|
|
133
|
-
if (exactHighestVersion === latestVersion)
|
|
134
|
-
return arr;
|
|
135
|
-
const semverRange = (0, set_semver_range_1.getSemverRange)(highestVersion);
|
|
136
|
-
const latestWithRange = (0, set_semver_range_1.setSemverRange)(semverRange, latestVersion);
|
|
137
|
-
arr.push({
|
|
138
|
-
result,
|
|
139
|
-
selected: true,
|
|
140
|
-
title: (0, chalk_1.default) `NAME {red OLD} ARROW {green NEW}`
|
|
141
|
-
.replace('NAME', input.report.name)
|
|
142
|
-
.replace('OLD', uniqueVersions.join(chalk_1.default.dim(', ')))
|
|
143
|
-
.replace('ARROW', constants_1.ICON.rightArrow)
|
|
144
|
-
.replace('NEW', latestWithRange),
|
|
145
|
-
});
|
|
146
|
-
return arr;
|
|
147
|
-
}, []))), Effect.bind('chosenUpdates', ({ choices }) => Effect.tryPromise({
|
|
148
|
-
try: () => (0, prompts_1.default)([
|
|
149
|
-
{
|
|
150
|
-
name: 'indexes',
|
|
188
|
+
function promptForReleaseType(releaseType, doState) {
|
|
189
|
+
const { releasesByType, releaseTypeAnswers } = doState;
|
|
190
|
+
const prop = `${releaseType}Answers`;
|
|
191
|
+
const releases = releasesByType[releaseType];
|
|
192
|
+
return releaseTypeAnswers.includes(releaseType)
|
|
193
|
+
? (0, effect_1.pipe)(effect_1.Effect.tryPromise({
|
|
194
|
+
try: () => (0, prompts_1.default)({
|
|
195
|
+
name: prop,
|
|
151
196
|
type: 'multiselect',
|
|
152
|
-
|
|
153
|
-
instructions: true,
|
|
197
|
+
instructions: false,
|
|
154
198
|
// @ts-expect-error optionsPerPage *does* exist https://github.com/terkelg/prompts#options-7
|
|
155
|
-
optionsPerPage
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
199
|
+
optionsPerPage,
|
|
200
|
+
message: `${releases.length} ${releaseType} updates`,
|
|
201
|
+
choices: releases.map((updateable) => ({
|
|
202
|
+
title: (0, chalk_1.default) `${updateable.instance.name} {gray ${updateable.instance.rawSpecifier} ${constants_1.ICON.rightArrow}} {green ${updateable.versions.latest}}`,
|
|
203
|
+
selected: true,
|
|
204
|
+
value: updateable,
|
|
205
|
+
})),
|
|
206
|
+
}),
|
|
207
|
+
catch: effect_1.identity,
|
|
208
|
+
}),
|
|
209
|
+
// Paper over errors in terkelg/prompts for now
|
|
210
|
+
effect_1.Effect.catchAll(() => (0, effect_1.pipe)(effect_1.Effect.logError(`terkelg/prompts errored while prompting for ${prop}`), effect_1.Effect.map(() => ({ [prop]: [] })))),
|
|
211
|
+
// In terkelg/prompts, an empty object means that the user cancelled via
|
|
212
|
+
// ctrl+c or the escape key etc. Handle this case so we can skip any
|
|
213
|
+
// remaining steps.
|
|
214
|
+
effect_1.Effect.flatMap((res) => (0, is_empty_object_1.isEmptyObject)(res)
|
|
215
|
+
? effect_1.Effect.fail(new PromptCancelled({ name: releaseType }))
|
|
216
|
+
: effect_1.Effect.succeed((0, is_array_1.isArray)(res?.[prop]) ? res?.[prop] : [])))
|
|
217
|
+
: effect_1.Effect.succeed([]);
|
|
218
|
+
}
|
|
219
|
+
function groupByReleaseType(releases) {
|
|
220
|
+
return effect_1.Effect.succeed(releases.reduce((releasesByType, release) => {
|
|
221
|
+
const previous = (0, set_semver_range_1.setSemverRange)('', release.instance.rawSpecifier);
|
|
222
|
+
const latest = release.versions.latest;
|
|
223
|
+
try {
|
|
224
|
+
const type = (0, semver_1.diff)(previous, latest);
|
|
225
|
+
if (type && releasesByType[type]) {
|
|
226
|
+
releasesByType[type].push(release);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
//
|
|
231
|
+
}
|
|
232
|
+
return releasesByType;
|
|
233
|
+
}, {
|
|
234
|
+
prepatch: [],
|
|
235
|
+
patch: [],
|
|
236
|
+
preminor: [],
|
|
237
|
+
minor: [],
|
|
238
|
+
premajor: [],
|
|
239
|
+
major: [],
|
|
240
|
+
prerelease: [],
|
|
241
|
+
}));
|
|
171
242
|
}
|
|
172
243
|
// @TODO: add a cache with a short TTL on disk in $TMPDIR
|
|
173
|
-
function
|
|
174
|
-
return (0,
|
|
244
|
+
function fetchJson(url) {
|
|
245
|
+
return (0, effect_1.pipe)(effect_1.Effect.async((resume) => {
|
|
246
|
+
// setTimeout(
|
|
247
|
+
// () => {
|
|
248
|
+
// resume(
|
|
249
|
+
// Effect.succeed(
|
|
250
|
+
// JSON.stringify({
|
|
251
|
+
// 'dist-tags': { latest: '3.1.1' },
|
|
252
|
+
// 'time': {
|
|
253
|
+
// '0.3.1': new Date().toJSON(),
|
|
254
|
+
// },
|
|
255
|
+
// }),
|
|
256
|
+
// ),
|
|
257
|
+
// );
|
|
258
|
+
// },
|
|
259
|
+
// Math.floor(Math.random() * 500) + 1,
|
|
260
|
+
// );
|
|
175
261
|
https_1.default
|
|
176
262
|
.get(url, (res) => {
|
|
177
263
|
let body = '';
|
|
@@ -180,14 +266,14 @@ function fetchUrl(url) {
|
|
|
180
266
|
body = `${body}${chunk}`;
|
|
181
267
|
});
|
|
182
268
|
res.on('end', () => {
|
|
183
|
-
resume(Effect.succeed(body));
|
|
269
|
+
resume(effect_1.Effect.succeed(body));
|
|
184
270
|
});
|
|
185
271
|
})
|
|
186
272
|
.on('error', (err) => {
|
|
187
|
-
resume(Effect.fail(new HttpError({ error: String(err) })));
|
|
273
|
+
resume(effect_1.Effect.fail(new HttpError({ error: `Node https threw on ${url}: ${String(err)}` })));
|
|
188
274
|
});
|
|
189
|
-
}), Effect.flatMap((body) => Effect.try({
|
|
275
|
+
}), effect_1.Effect.flatMap((body) => effect_1.Effect.try({
|
|
190
276
|
try: () => JSON.parse(body),
|
|
191
|
-
catch: (
|
|
277
|
+
catch: () => new NpmRegistryError({ error: `JSON.parse threw on response from ${url}` }),
|
|
192
278
|
})));
|
|
193
279
|
}
|
package/dist/bin-update/index.js
CHANGED
|
@@ -1,36 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
-
if (k2 === undefined) k2 = k;
|
|
5
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
20
|
-
if (mod && mod.__esModule) return mod;
|
|
21
|
-
var result = {};
|
|
22
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
23
|
-
__setModuleDefault(result, mod);
|
|
24
|
-
return result;
|
|
25
|
-
};
|
|
26
3
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
5
|
};
|
|
29
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
const Effect = __importStar(require("@effect/io/Effect"));
|
|
31
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
32
8
|
const commander_1 = require("commander");
|
|
33
|
-
const
|
|
9
|
+
const effect_1 = require("effect");
|
|
10
|
+
const io_1 = require("../io");
|
|
34
11
|
const show_help_on_error_1 = require("../lib/show-help-on-error");
|
|
35
12
|
const option_1 = require("../option");
|
|
36
13
|
const update_1 = require("./update");
|
|
@@ -72,9 +49,9 @@ commander_1.program
|
|
|
72
49
|
.option(...option_1.option.config)
|
|
73
50
|
.option(...option_1.option.types)
|
|
74
51
|
.parse(process.argv);
|
|
75
|
-
Effect.runPromise((0, update_1.update)({
|
|
52
|
+
effect_1.Effect.runPromise((0, update_1.update)(io_1.io, {
|
|
76
53
|
configPath: commander_1.program.opts().config,
|
|
77
54
|
filter: commander_1.program.opts().filter,
|
|
78
55
|
source: commander_1.program.opts().source,
|
|
79
56
|
types: commander_1.program.opts().types,
|
|
80
|
-
}
|
|
57
|
+
}));
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
2
|
import { type CliConfig } from '../config/types';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
3
|
+
import type { ErrorHandlers } from '../error-handlers/default-error-handlers';
|
|
4
|
+
import type { Io } from '../io';
|
|
5
|
+
import { updateEffects } from './effects';
|
|
6
|
+
export declare function update(io: Io, cli: Partial<CliConfig>, effects?: typeof updateEffects, errorHandlers?: ErrorHandlers): Effect.Effect<never, never, unknown>;
|