syncpack 10.9.3 → 12.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin-fix-mismatches/fix-mismatches.d.ts +15 -3
- package/dist/bin-fix-mismatches/fix-mismatches.js +120 -36
- package/dist/bin-fix-mismatches/index.js +12 -32
- package/dist/bin-format/format.d.ts +11 -3
- package/dist/bin-format/format.js +46 -61
- package/dist/bin-format/index.js +11 -31
- package/dist/bin-lint/index.js +8 -28
- package/dist/bin-lint/lint.d.ts +10 -3
- package/dist/bin-lint/lint.js +12 -36
- package/dist/bin-lint-semver-ranges/index.js +11 -39
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.d.ts +15 -3
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +94 -35
- package/dist/bin-list/index.js +11 -31
- package/dist/bin-list/list.d.ts +11 -3
- package/dist/bin-list/list.js +121 -35
- package/dist/bin-list-mismatches/index.js +11 -31
- package/dist/bin-list-mismatches/list-mismatches.d.ts +18 -3
- package/dist/bin-list-mismatches/list-mismatches.js +254 -35
- package/dist/bin-prompt/index.js +15 -31
- package/dist/bin-prompt/prompt.d.ts +10 -3
- package/dist/bin-prompt/prompt.js +83 -34
- package/dist/bin-set-semver-ranges/index.js +12 -40
- package/dist/bin-set-semver-ranges/set-semver-ranges.d.ts +10 -3
- package/dist/bin-set-semver-ranges/set-semver-ranges.js +50 -36
- package/dist/bin-update/effects.d.ts +45 -5
- package/dist/bin-update/effects.js +214 -128
- package/dist/bin-update/index.js +4 -27
- package/dist/bin-update/update.d.ts +5 -3
- package/dist/bin-update/update.js +52 -38
- package/dist/bin.js +0 -1
- package/dist/config/get-custom-types.d.ts +11 -1
- package/dist/config/get-custom-types.js +26 -21
- package/dist/config/get-enabled-types.d.ts +10 -6
- package/dist/config/get-enabled-types.js +84 -66
- package/dist/config/get-indent.js +1 -1
- package/dist/config/tag.d.ts +3 -0
- package/dist/config/tag.js +5 -0
- package/dist/config/types.d.ts +8 -11
- package/dist/config/types.js +0 -26
- package/dist/constants.d.ts +7 -5
- package/dist/constants.js +15 -14
- package/dist/create-program/effects.d.ts +51 -29
- package/dist/error-handlers/default-error-handlers.d.ts +38 -2
- package/dist/error-handlers/default-error-handlers.js +83 -35
- package/dist/get-context/index.d.ts +12 -6
- package/dist/get-context/index.js +13 -30
- package/dist/get-context/lib/key-by.d.ts +6 -0
- package/dist/get-context/lib/key-by.js +16 -0
- package/dist/get-instances/index.d.ts +14 -0
- package/dist/get-instances/index.js +46 -0
- package/dist/get-instances/instance.d.ts +25 -0
- package/dist/get-instances/instance.js +20 -0
- package/dist/get-package-json-files/get-file-paths.d.ts +6 -7
- package/dist/get-package-json-files/get-file-paths.js +10 -33
- package/dist/get-package-json-files/get-patterns/get-lerna-patterns.d.ts +3 -4
- package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +6 -32
- package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.d.ts +3 -4
- package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +6 -32
- package/dist/get-package-json-files/get-patterns/get-yarn-patterns.d.ts +3 -4
- package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +11 -40
- package/dist/get-package-json-files/get-patterns/index.d.ts +3 -5
- package/dist/get-package-json-files/get-patterns/index.js +6 -33
- package/dist/get-package-json-files/index.d.ts +6 -5
- package/dist/get-package-json-files/index.js +4 -28
- package/dist/get-package-json-files/package-json-file.d.ts +16 -16
- package/dist/get-package-json-files/package-json-file.js +13 -18
- package/dist/guards/can-add-to-group.d.ts +5 -4
- package/dist/guards/can-add-to-group.js +40 -6
- package/dist/guards/is-semver.d.ts +1 -1
- package/dist/guards/is-semver.js +1 -1
- package/dist/guards/is-valid-semver-range.d.ts +1 -1
- package/dist/guards/is-valid-semver-range.js +1 -1
- package/dist/io/ask-for-choice.d.ts +14 -0
- package/dist/io/ask-for-choice.js +22 -0
- package/dist/io/ask-for-input.d.ts +13 -0
- package/dist/io/ask-for-input.js +19 -0
- package/dist/io/exit-if-invalid.d.ts +4 -0
- package/dist/io/exit-if-invalid.js +13 -0
- package/dist/io/glob-sync.d.ts +11 -0
- package/dist/io/glob-sync.js +19 -0
- package/dist/io/index.d.ts +28 -0
- package/dist/{env/exit-if-invalid.js → io/index.js} +27 -9
- package/dist/io/read-config-file-sync.d.ts +7 -0
- package/dist/io/read-config-file-sync.js +26 -0
- package/dist/io/read-file-sync.d.ts +12 -0
- package/dist/io/read-file-sync.js +14 -0
- package/dist/io/read-json-file-sync.d.ts +30 -0
- package/dist/io/read-json-file-sync.js +25 -0
- package/dist/io/read-yaml-file-sync.d.ts +12 -0
- package/dist/io/read-yaml-file-sync.js +14 -0
- package/dist/io/write-file-sync.d.ts +12 -0
- package/dist/io/write-file-sync.js +15 -0
- package/dist/{env → io}/write-if-changed.d.ts +4 -4
- package/dist/io/write-if-changed.js +45 -0
- package/dist/lib/get-group-header.d.ts +10 -0
- package/dist/lib/get-group-header.js +31 -0
- package/dist/lib/get.d.ts +11 -0
- package/dist/lib/get.js +40 -0
- package/dist/lib/pad-start.d.ts +1 -0
- package/dist/lib/pad-start.js +7 -0
- package/dist/lib/ring-buffer.d.ts +10 -0
- package/dist/lib/ring-buffer.js +22 -0
- package/dist/lib/set-semver-range.d.ts +1 -1
- package/dist/lib/set-semver-range.js +7 -11
- package/dist/lib/with-logger.d.ts +2 -0
- package/dist/lib/with-logger.js +35 -0
- package/dist/option.d.ts +0 -1
- package/dist/option.js +0 -4
- package/dist/report.d.ts +166 -0
- package/dist/report.js +67 -0
- package/dist/schema.json +392 -0
- package/dist/semver-group/create-semver-groups.d.ts +4 -0
- package/dist/semver-group/create-semver-groups.js +77 -0
- package/dist/semver-group/disabled.d.ts +26 -0
- package/dist/semver-group/disabled.js +34 -0
- package/dist/semver-group/filtered-out.d.ts +27 -0
- package/dist/semver-group/filtered-out.js +40 -0
- package/dist/semver-group/ignored.d.ts +22 -0
- package/dist/semver-group/ignored.js +30 -0
- package/dist/semver-group/index.d.ts +22 -0
- package/dist/semver-group/index.js +10 -0
- package/dist/semver-group/with-range.d.ts +22 -0
- package/dist/semver-group/with-range.js +57 -0
- package/dist/specifier/alias.d.ts +15 -0
- package/dist/specifier/alias.js +25 -0
- package/dist/specifier/base.d.ts +39 -0
- package/dist/specifier/base.js +38 -0
- package/dist/specifier/delete.d.ts +15 -0
- package/dist/specifier/delete.js +16 -0
- package/dist/specifier/file.d.ts +6 -0
- package/dist/specifier/file.js +12 -0
- package/dist/specifier/hosted-git.d.ts +13 -0
- package/dist/specifier/hosted-git.js +27 -0
- package/dist/specifier/index.d.ts +27 -0
- package/dist/specifier/index.js +62 -0
- package/dist/specifier/lib/non-semver-error.d.ts +11 -0
- package/dist/specifier/lib/non-semver-error.js +10 -0
- package/dist/specifier/lib/parse-specifier.d.ts +14 -0
- package/dist/specifier/lib/parse-specifier.js +23 -0
- package/dist/specifier/lib/specific-registry-result.d.ts +9 -0
- package/dist/specifier/lib/specific-registry-result.js +2 -0
- package/dist/specifier/range.d.ts +18 -0
- package/dist/specifier/range.js +26 -0
- package/dist/specifier/tag.d.ts +9 -0
- package/dist/specifier/tag.js +15 -0
- package/dist/specifier/unsupported.d.ts +5 -0
- package/dist/specifier/unsupported.js +12 -0
- package/dist/specifier/url.d.ts +6 -0
- package/dist/specifier/url.js +13 -0
- package/dist/specifier/version.d.ts +18 -0
- package/dist/specifier/version.js +26 -0
- package/dist/specifier/workspace-protocol.d.ts +17 -0
- package/dist/specifier/workspace-protocol.js +38 -0
- package/dist/strategy/lib/get-non-empty-string-prop.d.ts +2 -2
- package/dist/strategy/lib/get-non-empty-string-prop.js +4 -5
- package/dist/strategy/name-and-version-props.d.ts +4 -4
- package/dist/strategy/name-and-version-props.js +32 -21
- package/dist/strategy/named-version-string.d.ts +4 -4
- package/dist/strategy/named-version-string.js +22 -24
- package/dist/strategy/unnamed-version-string.d.ts +4 -4
- package/dist/strategy/unnamed-version-string.js +20 -21
- package/dist/strategy/versions-by-name.d.ts +4 -4
- package/dist/strategy/versions-by-name.js +9 -11
- package/dist/version-group/banned.d.ts +17 -0
- package/dist/version-group/banned.js +32 -0
- package/dist/version-group/create-version-groups.d.ts +4 -0
- package/dist/version-group/create-version-groups.js +107 -0
- package/dist/version-group/filtered-out.d.ts +19 -0
- package/dist/version-group/filtered-out.js +34 -0
- package/dist/version-group/ignored.d.ts +17 -0
- package/dist/version-group/ignored.js +27 -0
- package/dist/version-group/index.d.ts +28 -0
- package/dist/version-group/index.js +10 -0
- package/dist/version-group/lib/get-highest-version.d.ts +6 -0
- package/dist/version-group/lib/get-highest-version.js +12 -0
- package/dist/version-group/lib/get-lowest-version.d.ts +6 -0
- package/dist/version-group/lib/get-lowest-version.js +12 -0
- package/dist/version-group/lib/get-preferred-version.d.ts +5 -0
- package/dist/{get-version-groups/lib/compare-semver.js → version-group/lib/get-preferred-version.js} +14 -2
- package/dist/version-group/lib/group-by.d.ts +5 -0
- package/dist/{get-version-groups → version-group}/lib/group-by.js +4 -0
- package/dist/version-group/pinned.d.ts +17 -0
- package/dist/version-group/pinned.js +30 -0
- package/dist/version-group/same-range.d.ts +19 -0
- package/dist/version-group/same-range.js +108 -0
- package/dist/version-group/snapped-to.d.ts +17 -0
- package/dist/version-group/snapped-to.js +83 -0
- package/dist/version-group/standard.d.ts +18 -0
- package/dist/version-group/standard.js +131 -0
- package/package.json +28 -25
- package/dist/bin-fix-mismatches/effects.d.ts +0 -2
- package/dist/bin-fix-mismatches/effects.js +0 -112
- package/dist/bin-format/format-cli.d.ts +0 -4
- package/dist/bin-format/format-cli.js +0 -42
- package/dist/bin-lint-semver-ranges/effects.d.ts +0 -2
- package/dist/bin-lint-semver-ranges/effects.js +0 -70
- package/dist/bin-list/effects.d.ts +0 -2
- package/dist/bin-list/effects.js +0 -114
- package/dist/bin-list-mismatches/effects.d.ts +0 -2
- package/dist/bin-list-mismatches/effects.js +0 -136
- package/dist/bin-prompt/effects.d.ts +0 -2
- package/dist/bin-prompt/effects.js +0 -110
- package/dist/bin-set-semver-ranges/effects.d.ts +0 -2
- package/dist/bin-set-semver-ranges/effects.js +0 -61
- package/dist/config/get-semver-range.d.ts +0 -3
- package/dist/config/get-semver-range.js +0 -12
- package/dist/create-program/semver-ranges.d.ts +0 -7
- package/dist/create-program/semver-ranges.js +0 -55
- package/dist/create-program/versions.d.ts +0 -7
- package/dist/create-program/versions.js +0 -70
- package/dist/env/create-env.d.ts +0 -21
- package/dist/env/create-env.js +0 -81
- package/dist/env/default-env.d.ts +0 -18
- package/dist/env/default-env.js +0 -96
- package/dist/env/exit-if-invalid.d.ts +0 -4
- package/dist/env/tags.d.ts +0 -58
- package/dist/env/tags.js +0 -50
- package/dist/env/write-if-changed.js +0 -73
- package/dist/error-handlers/create-error-handlers.d.ts +0 -19
- package/dist/error-handlers/create-error-handlers.js +0 -57
- package/dist/get-package-json-files/get-patterns/read-json-safe.d.ts +0 -23
- package/dist/get-package-json-files/get-patterns/read-json-safe.js +0 -43
- package/dist/get-semver-groups/filtered-out.d.ts +0 -19
- package/dist/get-semver-groups/filtered-out.js +0 -55
- package/dist/get-semver-groups/ignored.d.ts +0 -17
- package/dist/get-semver-groups/ignored.js +0 -48
- package/dist/get-semver-groups/index.d.ts +0 -84
- package/dist/get-semver-groups/index.js +0 -139
- package/dist/get-semver-groups/with-range.d.ts +0 -18
- package/dist/get-semver-groups/with-range.js +0 -79
- package/dist/get-version-groups/banned.d.ts +0 -17
- package/dist/get-version-groups/banned.js +0 -50
- package/dist/get-version-groups/filtered-out.d.ts +0 -19
- package/dist/get-version-groups/filtered-out.js +0 -57
- package/dist/get-version-groups/ignored.d.ts +0 -17
- package/dist/get-version-groups/ignored.js +0 -50
- package/dist/get-version-groups/index.d.ts +0 -187
- package/dist/get-version-groups/index.js +0 -246
- package/dist/get-version-groups/lib/compare-semver.d.ts +0 -1
- package/dist/get-version-groups/lib/get-highest-version.d.ts +0 -2
- package/dist/get-version-groups/lib/get-highest-version.js +0 -13
- package/dist/get-version-groups/lib/get-lowest-version.d.ts +0 -2
- package/dist/get-version-groups/lib/get-lowest-version.js +0 -13
- package/dist/get-version-groups/lib/get-unique-specifiers.d.ts +0 -2
- package/dist/get-version-groups/lib/get-unique-specifiers.js +0 -11
- package/dist/get-version-groups/lib/group-by.d.ts +0 -1
- package/dist/get-version-groups/pinned.d.ts +0 -17
- package/dist/get-version-groups/pinned.js +0 -66
- package/dist/get-version-groups/same-range.d.ts +0 -17
- package/dist/get-version-groups/same-range.js +0 -73
- package/dist/get-version-groups/snapped-to.d.ts +0 -17
- package/dist/get-version-groups/snapped-to.js +0 -78
- package/dist/get-version-groups/standard.d.ts +0 -18
- package/dist/get-version-groups/standard.js +0 -109
- package/dist/guards/is-loose-semver.d.ts +0 -2
- package/dist/guards/is-loose-semver.js +0 -10
- package/dist/instance/create.d.ts +0 -4
- package/dist/instance/create.js +0 -142
- package/dist/instance/index.d.ts +0 -122
- package/dist/instance/index.js +0 -154
- package/dist/lib/$R.d.ts +0 -12
- package/dist/lib/$R.js +0 -34
- package/dist/lib/log-group-header.d.ts +0 -6
- package/dist/lib/log-group-header.js +0 -34
- package/dist/lib/log-verbose.d.ts +0 -1
- package/dist/lib/log-verbose.js +0 -24
- package/dist/lib/split-name-and-version.d.ts +0 -5
- package/dist/lib/split-name-and-version.js +0 -12
- /package/dist/{get-version-groups → version-group}/lib/clean.d.ts +0 -0
- /package/dist/{get-version-groups → version-group}/lib/clean.js +0 -0
- /package/dist/{get-version-groups → version-group}/lib/delete.d.ts +0 -0
- /package/dist/{get-version-groups → version-group}/lib/delete.js +0 -0
- /package/dist/{get-version-groups → version-group}/lib/get-range-score.d.ts +0 -0
- /package/dist/{get-version-groups → version-group}/lib/get-range-score.js +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.globSync = exports.GlobError = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
class GlobError extends effect_1.Data.TaggedClass('GlobError') {
|
|
6
|
+
}
|
|
7
|
+
exports.GlobError = GlobError;
|
|
8
|
+
function globSync(io, patterns) {
|
|
9
|
+
return effect_1.Effect.try({
|
|
10
|
+
try: () => io.globby.sync(patterns, {
|
|
11
|
+
absolute: true,
|
|
12
|
+
cwd: io.process.cwd(),
|
|
13
|
+
fs: io.fs,
|
|
14
|
+
ignore: ['**/node_modules/**'],
|
|
15
|
+
}),
|
|
16
|
+
catch: (err) => new GlobError({ error: String(err) }),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
exports.globSync = globSync;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { cosmiconfigSync } from 'cosmiconfig';
|
|
3
|
+
import { Context } from 'effect';
|
|
4
|
+
import { prompt } from 'enquirer';
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as globby from 'globby';
|
|
7
|
+
import * as readYamlFile from 'read-yaml-file';
|
|
8
|
+
export interface Io {
|
|
9
|
+
cosmiconfig: {
|
|
10
|
+
cosmiconfigSync: typeof cosmiconfigSync;
|
|
11
|
+
};
|
|
12
|
+
enquirer: {
|
|
13
|
+
prompt: typeof prompt<any>;
|
|
14
|
+
};
|
|
15
|
+
fs: typeof fs;
|
|
16
|
+
globby: {
|
|
17
|
+
sync: typeof globby.sync;
|
|
18
|
+
};
|
|
19
|
+
process: {
|
|
20
|
+
cwd: typeof process.cwd;
|
|
21
|
+
exit: typeof process.exit;
|
|
22
|
+
};
|
|
23
|
+
readYamlFile: {
|
|
24
|
+
sync: typeof readYamlFile.sync<any>;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export declare const IoTag: Context.Tag<Io, Io>;
|
|
28
|
+
export declare const io: Io;
|
|
@@ -23,12 +23,30 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
exports.
|
|
26
|
+
exports.io = exports.IoTag = void 0;
|
|
27
|
+
const cosmiconfig_1 = require("cosmiconfig");
|
|
28
|
+
const effect_1 = require("effect");
|
|
29
|
+
const enquirer_1 = require("enquirer");
|
|
30
|
+
const fs = __importStar(require("fs"));
|
|
31
|
+
const globby = __importStar(require("globby"));
|
|
32
|
+
const readYamlFile = __importStar(require("read-yaml-file"));
|
|
33
|
+
exports.IoTag = effect_1.Context.Tag();
|
|
34
|
+
exports.io = {
|
|
35
|
+
cosmiconfig: {
|
|
36
|
+
cosmiconfigSync: cosmiconfig_1.cosmiconfigSync,
|
|
37
|
+
},
|
|
38
|
+
enquirer: {
|
|
39
|
+
prompt: enquirer_1.prompt,
|
|
40
|
+
},
|
|
41
|
+
fs: fs,
|
|
42
|
+
globby: {
|
|
43
|
+
sync: globby.sync,
|
|
44
|
+
},
|
|
45
|
+
process: {
|
|
46
|
+
cwd: process.cwd,
|
|
47
|
+
exit: process.exit,
|
|
48
|
+
},
|
|
49
|
+
readYamlFile: {
|
|
50
|
+
sync: readYamlFile.sync,
|
|
51
|
+
},
|
|
52
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import type { O } from 'ts-toolbelt';
|
|
3
|
+
import type { Io } from '.';
|
|
4
|
+
import type { RcConfig } from '../config/types';
|
|
5
|
+
type UnverifiedRcConfig = O.Partial<RcConfig, 'deep'>;
|
|
6
|
+
export declare function readConfigFileSync(io: Io, configPath?: string): Effect.Effect<never, never, UnverifiedRcConfig>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readConfigFileSync = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
|
|
7
|
+
const read_json_file_sync_1 = require("./read-json-file-sync");
|
|
8
|
+
const getOptionOfNonEmptyObject = effect_1.Option.liftPredicate((is_non_empty_object_1.isNonEmptyObject));
|
|
9
|
+
function readConfigFileSync(io, configPath) {
|
|
10
|
+
return (0, effect_1.pipe)(effect_1.Effect.try(() => io.cosmiconfig.cosmiconfigSync('syncpack')), effect_1.Effect.flatMap((client) => effect_1.Effect.try(() => (configPath ? client.load(configPath) : client.search()))), effect_1.Effect.flatMap((result) => result !== null ? getValueFromCosmiconfig(result) : findConfigInPackageJson(io)), effect_1.Effect.tap((config) => effect_1.Effect.logDebug(`config file found: ${JSON.stringify(config)}`)), effect_1.Effect.tapError(() => effect_1.Effect.logDebug('no config file found, will use defaults')), effect_1.Effect.catchAll(() => effect_1.Effect.succeed({})));
|
|
11
|
+
}
|
|
12
|
+
exports.readConfigFileSync = readConfigFileSync;
|
|
13
|
+
/**
|
|
14
|
+
* Look for a .config.syncpack property in the root package.json.
|
|
15
|
+
* @see https://github.com/JamieMason/syncpack/issues/86
|
|
16
|
+
*/
|
|
17
|
+
function findConfigInPackageJson(io) {
|
|
18
|
+
return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('rcPath', () => effect_1.Effect.succeed((0, path_1.join)(io.process.cwd(), 'package.json'))), effect_1.Effect.bind('packageJson', ({ rcPath }) => (0, read_json_file_sync_1.readJsonFileSync)(io, rcPath)), effect_1.Effect.bind('config', ({ packageJson }) => effect_1.Effect.try(() => packageJson.contents?.config?.syncpack)), effect_1.Effect.flatMap(({ config }) => getOptionOfNonEmptyObject(config)), effect_1.Effect.tapBoth({
|
|
19
|
+
onSuccess: () => effect_1.Effect.logDebug('config found in <package.json>.config.syncpack'),
|
|
20
|
+
onFailure: () => effect_1.Effect.logDebug('config not found in <package.json>.config.syncpack'),
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
/** Extract the value from a successful search by cosmiconfig */
|
|
24
|
+
function getValueFromCosmiconfig(result) {
|
|
25
|
+
return (0, effect_1.pipe)(effect_1.Effect.succeed(result), effect_1.Effect.tap((result) => effect_1.Effect.logDebug(`cosmiconfig found ${result.filepath}`)), effect_1.Effect.flatMap((result) => getOptionOfNonEmptyObject(result.config)));
|
|
26
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Io } from '.';
|
|
3
|
+
declare const ReadFileError_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: "ReadFileError";
|
|
5
|
+
}>;
|
|
6
|
+
export declare class ReadFileError extends ReadFileError_base<{
|
|
7
|
+
readonly filePath: string;
|
|
8
|
+
readonly error: string;
|
|
9
|
+
}> {
|
|
10
|
+
}
|
|
11
|
+
export declare function readFileSync(io: Io, filePath: string): Effect.Effect<never, ReadFileError, string>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readFileSync = exports.ReadFileError = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
class ReadFileError extends effect_1.Data.TaggedClass('ReadFileError') {
|
|
6
|
+
}
|
|
7
|
+
exports.ReadFileError = ReadFileError;
|
|
8
|
+
function readFileSync(io, filePath) {
|
|
9
|
+
return effect_1.Effect.try({
|
|
10
|
+
try: () => io.fs.readFileSync(filePath, { encoding: 'utf8' }),
|
|
11
|
+
catch: (err) => new ReadFileError({ filePath, error: String(err) }),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
exports.readFileSync = readFileSync;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Io } from '.';
|
|
3
|
+
import type { ReadFileError } from './read-file-sync';
|
|
4
|
+
declare const JsonParseError_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 & {
|
|
5
|
+
readonly _tag: "JsonParseError";
|
|
6
|
+
}>;
|
|
7
|
+
export declare class JsonParseError extends JsonParseError_base<{
|
|
8
|
+
readonly error: unknown;
|
|
9
|
+
readonly filePath: string;
|
|
10
|
+
readonly json: string;
|
|
11
|
+
}> {
|
|
12
|
+
}
|
|
13
|
+
declare const JsonFile_base: new <A extends Record<string, any>>(args: import("effect/Types").Equals<Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("effect/dist/declarations/src/Equal").Equal>) => Data.Data<A & {
|
|
14
|
+
readonly _tag: "JsonFile";
|
|
15
|
+
}>;
|
|
16
|
+
export declare class JsonFile<T> extends JsonFile_base<{
|
|
17
|
+
/** absolute path on disk to the directory of this file */
|
|
18
|
+
readonly dirPath: string;
|
|
19
|
+
/** absolute path on disk to this file */
|
|
20
|
+
readonly filePath: string;
|
|
21
|
+
/** relative path on disk to this file */
|
|
22
|
+
readonly shortPath: string;
|
|
23
|
+
/** parsed JSON contents of the file */
|
|
24
|
+
contents: T;
|
|
25
|
+
/** raw file contents of the file */
|
|
26
|
+
readonly json: string;
|
|
27
|
+
}> {
|
|
28
|
+
}
|
|
29
|
+
export declare function readJsonFileSync<T>(io: Io, filePath: string): Effect.Effect<never, ReadFileError | JsonParseError, JsonFile<T>>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readJsonFileSync = exports.JsonFile = exports.JsonParseError = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const read_file_sync_1 = require("./read-file-sync");
|
|
7
|
+
class JsonParseError extends effect_1.Data.TaggedClass('JsonParseError') {
|
|
8
|
+
}
|
|
9
|
+
exports.JsonParseError = JsonParseError;
|
|
10
|
+
class JsonFile extends effect_1.Data.TaggedClass('JsonFile') {
|
|
11
|
+
}
|
|
12
|
+
exports.JsonFile = JsonFile;
|
|
13
|
+
function readJsonFileSync(io, filePath) {
|
|
14
|
+
return (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('json', () => (0, read_file_sync_1.readFileSync)(io, filePath)), effect_1.Effect.bind('contents', ({ json }) => effect_1.Effect.try({
|
|
15
|
+
try: () => JSON.parse(json),
|
|
16
|
+
catch: (error) => new JsonParseError({ error, filePath, json }),
|
|
17
|
+
})), effect_1.Effect.map(({ contents, json }) => new JsonFile({
|
|
18
|
+
contents,
|
|
19
|
+
dirPath: (0, path_1.dirname)(filePath),
|
|
20
|
+
filePath,
|
|
21
|
+
json,
|
|
22
|
+
shortPath: (0, path_1.relative)(io.process.cwd(), filePath),
|
|
23
|
+
})));
|
|
24
|
+
}
|
|
25
|
+
exports.readJsonFileSync = readJsonFileSync;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Io } from '.';
|
|
3
|
+
declare const ReadYamlFileError_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: "ReadYamlFileError";
|
|
5
|
+
}>;
|
|
6
|
+
export declare class ReadYamlFileError extends ReadYamlFileError_base<{
|
|
7
|
+
readonly filePath: string;
|
|
8
|
+
readonly error: string;
|
|
9
|
+
}> {
|
|
10
|
+
}
|
|
11
|
+
export declare function readYamlFileSync<T = unknown>(io: Io, filePath: string): Effect.Effect<never, ReadYamlFileError, T>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readYamlFileSync = exports.ReadYamlFileError = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
class ReadYamlFileError extends effect_1.Data.TaggedClass('ReadYamlFileError') {
|
|
6
|
+
}
|
|
7
|
+
exports.ReadYamlFileError = ReadYamlFileError;
|
|
8
|
+
function readYamlFileSync(io, filePath) {
|
|
9
|
+
return effect_1.Effect.try({
|
|
10
|
+
try: () => io.readYamlFile.sync(filePath),
|
|
11
|
+
catch: (err) => new ReadYamlFileError({ filePath, error: String(err) }),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
exports.readYamlFileSync = readYamlFileSync;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Io } from '.';
|
|
3
|
+
declare const WriteFileError_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: "WriteFileError";
|
|
5
|
+
}>;
|
|
6
|
+
export declare class WriteFileError extends WriteFileError_base<{
|
|
7
|
+
readonly filePath: string;
|
|
8
|
+
readonly error: string;
|
|
9
|
+
}> {
|
|
10
|
+
}
|
|
11
|
+
export declare function writeFileSync(filePath: string, contents: string): Effect.Effect<Io, WriteFileError, void>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.writeFileSync = exports.WriteFileError = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
class WriteFileError extends effect_1.Data.TaggedClass('WriteFileError') {
|
|
7
|
+
}
|
|
8
|
+
exports.WriteFileError = WriteFileError;
|
|
9
|
+
function writeFileSync(filePath, contents) {
|
|
10
|
+
return (0, effect_1.pipe)(_1.IoTag, effect_1.Effect.flatMap((io) => effect_1.Effect.try({
|
|
11
|
+
try: () => io.fs.writeFileSync(filePath, contents),
|
|
12
|
+
catch: (err) => new WriteFileError({ filePath, error: String(err) }),
|
|
13
|
+
})));
|
|
14
|
+
}
|
|
15
|
+
exports.writeFileSync = writeFileSync;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import type { Io } from '.';
|
|
2
3
|
import type { Ctx } from '../get-context';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
export declare function writeIfChanged(ctx: Ctx): Effect.Effect<Env, WriteFileError, Ctx>;
|
|
4
|
+
import type { WriteFileError } from './write-file-sync';
|
|
5
|
+
export declare function writeIfChanged(ctx: Ctx): Effect.Effect<Io, WriteFileError, Ctx>;
|
|
6
6
|
type Ending = '\n' | '\r' | '\r\n' | string;
|
|
7
7
|
export declare const newlines: {
|
|
8
8
|
detect(source: string): Ending;
|
|
@@ -0,0 +1,45 @@
|
|
|
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.newlines = exports.writeIfChanged = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const effect_1 = require("effect");
|
|
9
|
+
const os_1 = require("os");
|
|
10
|
+
const get_indent_1 = require("../config/get-indent");
|
|
11
|
+
const constants_1 = require("../constants");
|
|
12
|
+
const write_file_sync_1 = require("./write-file-sync");
|
|
13
|
+
function writeIfChanged(ctx) {
|
|
14
|
+
return (0, effect_1.pipe)(effect_1.Effect.all(ctx.packageJsonFiles.map((file) => (0, effect_1.pipe)(effect_1.Effect.Do, effect_1.Effect.bind('nextJson', () => toJson(file)), effect_1.Effect.bind('hasChanged', ({ nextJson }) => effect_1.Effect.succeed(file.jsonFile.json !== nextJson)), effect_1.Effect.flatMap(({ hasChanged, nextJson }) => hasChanged
|
|
15
|
+
? (0, effect_1.pipe)((0, write_file_sync_1.writeFileSync)(file.jsonFile.filePath, nextJson), effect_1.Effect.flatMap(() => effect_1.Effect.logInfo((0, chalk_1.default) `{green ${constants_1.ICON.tick}} ${file.jsonFile.shortPath}`)))
|
|
16
|
+
: effect_1.Effect.logInfo((0, chalk_1.default) `{dim ${constants_1.ICON.skip} ${file.jsonFile.shortPath}}`))))), effect_1.Effect.map(() => ctx));
|
|
17
|
+
function toJson(file) {
|
|
18
|
+
const contents = file.jsonFile.contents;
|
|
19
|
+
const indent = (0, get_indent_1.getIndent)(ctx.config);
|
|
20
|
+
const EOL = exports.newlines.detect(file.jsonFile.json);
|
|
21
|
+
const source = `${JSON.stringify(contents, null, indent)}${EOL}`;
|
|
22
|
+
return effect_1.Effect.succeed(exports.newlines.fix(source, EOL));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.writeIfChanged = writeIfChanged;
|
|
26
|
+
const CR = '\r';
|
|
27
|
+
const CRLF = '\r\n';
|
|
28
|
+
const LF = '\n';
|
|
29
|
+
exports.newlines = {
|
|
30
|
+
detect(source) {
|
|
31
|
+
const cr = source.split(CR).length;
|
|
32
|
+
const lf = source.split(LF).length;
|
|
33
|
+
const crlf = source.split(CRLF).length;
|
|
34
|
+
if (cr + lf === 0)
|
|
35
|
+
return os_1.EOL;
|
|
36
|
+
if (crlf === cr && crlf === lf)
|
|
37
|
+
return CRLF;
|
|
38
|
+
if (cr > lf)
|
|
39
|
+
return CR;
|
|
40
|
+
return LF;
|
|
41
|
+
},
|
|
42
|
+
fix(source, lineEnding) {
|
|
43
|
+
return source.replace(/\r\n|\n|\r/g, lineEnding);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SemverGroup } from '../semver-group';
|
|
2
|
+
import type { VersionGroup } from '../version-group';
|
|
3
|
+
export declare function getSemverGroupHeader(input: {
|
|
4
|
+
group: SemverGroup.Any;
|
|
5
|
+
index: number;
|
|
6
|
+
}): string;
|
|
7
|
+
export declare function getVersionGroupHeader(input: {
|
|
8
|
+
group: VersionGroup.Any;
|
|
9
|
+
index: number;
|
|
10
|
+
}): string;
|
|
@@ -0,0 +1,31 @@
|
|
|
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.getVersionGroupHeader = exports.getSemverGroupHeader = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
function getSemverGroupHeader(input) {
|
|
9
|
+
return getGroupHeader(input.group.config.label || `Semver Group ${input.index + 1}`);
|
|
10
|
+
}
|
|
11
|
+
exports.getSemverGroupHeader = getSemverGroupHeader;
|
|
12
|
+
function getVersionGroupHeader(input) {
|
|
13
|
+
return getGroupHeader(input.group.config.label || `Version Group ${input.index + 1}`);
|
|
14
|
+
}
|
|
15
|
+
exports.getVersionGroupHeader = getVersionGroupHeader;
|
|
16
|
+
function getGroupHeader(label) {
|
|
17
|
+
const trimmed = label.trim();
|
|
18
|
+
const hasNewLines = trimmed.search(/[\r\n]/) !== -1;
|
|
19
|
+
const header = hasNewLines ? formatMultiLine(trimmed) : formatSingleLine(trimmed);
|
|
20
|
+
return chalk_1.default.blue(header);
|
|
21
|
+
}
|
|
22
|
+
function formatSingleLine(label) {
|
|
23
|
+
const leftSide = `= ${label} `;
|
|
24
|
+
const dividerWidth = 80 - leftSide.length;
|
|
25
|
+
const rightSide = dividerWidth > 0 ? '='.repeat(dividerWidth) : '';
|
|
26
|
+
return `${leftSide}${rightSide}`;
|
|
27
|
+
}
|
|
28
|
+
function formatMultiLine(label) {
|
|
29
|
+
const reindented = label.replace(/^\s+/gm, ' ');
|
|
30
|
+
return `= ${reindented}`;
|
|
31
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Either } from 'effect';
|
|
2
|
+
export declare function get<T, P1 extends keyof NonNullable<T>>(obj: T, prop1: P1): Either.Either<Error, NonNullable<T>[P1]>;
|
|
3
|
+
export declare function get<T, P1 extends keyof NonNullable<T>, P2 extends keyof NonNullable<NonNullable<T>[P1]>>(obj: T, prop1: P1, prop2: P2): Either.Either<Error, NonNullable<NonNullable<T>[P1]>[P2]>;
|
|
4
|
+
export declare function get<T, P1 extends keyof NonNullable<T>, P2 extends keyof NonNullable<NonNullable<T>[P1]>, P3 extends keyof NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>>(obj: T, prop1: P1, prop2: P2, prop3: P3): Either.Either<Error, NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>;
|
|
5
|
+
export declare function get<T, P1 extends keyof NonNullable<T>, P2 extends keyof NonNullable<NonNullable<T>[P1]>, P3 extends keyof NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>, P4 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>>(obj: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4): Either.Either<Error, NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>;
|
|
6
|
+
export declare function get<T, P1 extends keyof NonNullable<T>, P2 extends keyof NonNullable<NonNullable<T>[P1]>, P3 extends keyof NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>, P4 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>, P5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>>(obj: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5): Either.Either<Error, NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>;
|
|
7
|
+
export declare function get<T, P1 extends keyof NonNullable<T>, P2 extends keyof NonNullable<NonNullable<T>[P1]>, P3 extends keyof NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>, P4 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>, P5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>, P6 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>>(obj: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6): Either.Either<Error, NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>;
|
|
8
|
+
export declare function get<T, P1 extends keyof NonNullable<T>, P2 extends keyof NonNullable<NonNullable<T>[P1]>, P3 extends keyof NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>, P4 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>, P5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>, P6 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>, P7 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>>(obj: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7): Either.Either<Error, NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>[P7]>;
|
|
9
|
+
export declare function get<T, P1 extends keyof NonNullable<T>, P2 extends keyof NonNullable<NonNullable<T>[P1]>, P3 extends keyof NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>, P4 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>, P5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>, P6 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>, P7 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>, P8 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>[P7]>>(obj: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8): Either.Either<Error, NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>[P7]>[P8]>;
|
|
10
|
+
export declare function get<T, P1 extends keyof NonNullable<T>, P2 extends keyof NonNullable<NonNullable<T>[P1]>, P3 extends keyof NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>, P4 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>, P5 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>, P6 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>, P7 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>, P8 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>[P7]>, P9 extends keyof NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>[P7]>[P8]>>(obj: T, prop1: P1, prop2: P2, prop3: P3, prop4: P4, prop5: P5, prop6: P6, prop7: P7, prop8: P8, prop9: P9): Either.Either<Error, NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<NonNullable<T>[P1]>[P2]>[P3]>[P4]>[P5]>[P6]>[P7]>[P8]>[P9]>;
|
|
11
|
+
export declare function get<T>(obj: T, ...props: any[]): Either.Either<Error, unknown>;
|
package/dist/lib/get.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.get = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const is_function_1 = require("tightrope/guard/is-function");
|
|
6
|
+
const is_primitive_1 = require("tightrope/guard/is-primitive");
|
|
7
|
+
const is_readable_1 = require("tightrope/guard/is-readable");
|
|
8
|
+
function get(origin, ...props) {
|
|
9
|
+
return (0, is_readable_1.isReadable)(origin) ? props.reduce(getChild, origin) : ERR_UNREADABLE_ORIGIN(props, origin);
|
|
10
|
+
}
|
|
11
|
+
exports.get = get;
|
|
12
|
+
/** Used internally by get to retrieve a single child property from a parent object. */
|
|
13
|
+
function getChild(parent, prop) {
|
|
14
|
+
// quit if any ancestor was already not found
|
|
15
|
+
if (effect_1.Either.isEither(parent) && effect_1.Either.isLeft(parent))
|
|
16
|
+
return parent;
|
|
17
|
+
// ensure we have a plain value and not an Ok
|
|
18
|
+
const value = effect_1.Either.isEither(parent) && effect_1.Either.isRight(parent) ? effect_1.Either.getOrThrow(parent) : parent;
|
|
19
|
+
// quit if we can't read properties of value (eg value.likeThis)
|
|
20
|
+
if (!(0, is_readable_1.isReadable)(value))
|
|
21
|
+
return ERR_UNREADABLE_CHILD(prop, value);
|
|
22
|
+
// quit if value is object/array/function etc but the child is not found
|
|
23
|
+
if (!(0, is_primitive_1.isPrimitive)(value) && prop in value === false)
|
|
24
|
+
return ERR_NOT_FOUND(prop, value);
|
|
25
|
+
// quit if eg true.toFixed, 12.toUpperCase
|
|
26
|
+
if ((0, is_primitive_1.isPrimitive)(value) && value[prop] === undefined)
|
|
27
|
+
return ERR_NOT_FOUND(prop, value);
|
|
28
|
+
// the value is present, return it
|
|
29
|
+
const child = value[prop];
|
|
30
|
+
return effect_1.Either.right((0, is_function_1.isFunction)(child) ? child.bind(value) : child);
|
|
31
|
+
}
|
|
32
|
+
function ERR_UNREADABLE_CHILD(child, value) {
|
|
33
|
+
return effect_1.Either.left(new Error(`Cannot read "${child}" from unreadable value: ${value}`));
|
|
34
|
+
}
|
|
35
|
+
function ERR_NOT_FOUND(child, value) {
|
|
36
|
+
return effect_1.Either.left(new Error(`Property "${child}" not found on value: ${value}`));
|
|
37
|
+
}
|
|
38
|
+
function ERR_UNREADABLE_ORIGIN(props, origin) {
|
|
39
|
+
return effect_1.Either.left(new Error(`Cannot read "${props.join('.')}" from unreadable value: ${origin}`));
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function padStart(value: number): string;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An Array with a maximum size which, once reached, will replace the oldest
|
|
3
|
+
* item when a new one is added.
|
|
4
|
+
*/
|
|
5
|
+
export declare class RingBuffer<T> extends Array {
|
|
6
|
+
cursor: number;
|
|
7
|
+
fixedLength: number;
|
|
8
|
+
constructor(fixedLength: number);
|
|
9
|
+
push(...values: T[]): number;
|
|
10
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RingBuffer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* An Array with a maximum size which, once reached, will replace the oldest
|
|
6
|
+
* item when a new one is added.
|
|
7
|
+
*/
|
|
8
|
+
class RingBuffer extends Array {
|
|
9
|
+
constructor(fixedLength) {
|
|
10
|
+
super(fixedLength);
|
|
11
|
+
this.cursor = 0;
|
|
12
|
+
this.fixedLength = fixedLength;
|
|
13
|
+
}
|
|
14
|
+
push(...values) {
|
|
15
|
+
values.forEach((value) => {
|
|
16
|
+
this[this.cursor++] = value;
|
|
17
|
+
this.cursor %= this.length;
|
|
18
|
+
});
|
|
19
|
+
return this.length;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.RingBuffer = RingBuffer;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { SemverRange } from '../config/types';
|
|
2
|
-
|
|
2
|
+
/** @deprecated migrate to make better use of npm-package-arg */
|
|
3
3
|
export declare function setSemverRange(semverRange: SemverRange, version: string): string;
|
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.setSemverRange =
|
|
3
|
+
exports.setSemverRange = void 0;
|
|
4
|
+
const is_string_1 = require("tightrope/guard/is-string");
|
|
4
5
|
const constants_1 = require("../constants");
|
|
5
|
-
const is_loose_semver_1 = require("../guards/is-loose-semver");
|
|
6
6
|
const is_semver_1 = require("../guards/is-semver");
|
|
7
7
|
const is_valid_semver_range_1 = require("../guards/is-valid-semver-range");
|
|
8
|
-
|
|
9
|
-
if (version === '*')
|
|
10
|
-
return version;
|
|
11
|
-
const from1stNumber = version.search(/[0-9]/);
|
|
12
|
-
const semverRange = version.slice(0, from1stNumber);
|
|
13
|
-
return (0, is_valid_semver_range_1.isValidSemverRange)(semverRange) ? semverRange : '';
|
|
14
|
-
}
|
|
15
|
-
exports.getSemverRange = getSemverRange;
|
|
8
|
+
/** @deprecated migrate to make better use of npm-package-arg */
|
|
16
9
|
function setSemverRange(semverRange, version) {
|
|
17
10
|
if (!(0, is_semver_1.isSemver)(version) || !(0, is_valid_semver_range_1.isValidSemverRange)(semverRange))
|
|
18
11
|
return version;
|
|
19
12
|
if (semverRange === '*')
|
|
20
13
|
return semverRange;
|
|
21
|
-
const nextVersion =
|
|
14
|
+
const nextVersion = isLooseSemver(version) ? version.replace(/\.x/g, '.0') : version;
|
|
22
15
|
const from1stNumber = nextVersion.search(/[0-9]/);
|
|
23
16
|
const from1stDot = nextVersion.indexOf('.');
|
|
24
17
|
return semverRange === constants_1.RANGE.LOOSE
|
|
@@ -26,3 +19,6 @@ function setSemverRange(semverRange, version) {
|
|
|
26
19
|
: `${semverRange}${nextVersion.slice(from1stNumber)}`;
|
|
27
20
|
}
|
|
28
21
|
exports.setSemverRange = setSemverRange;
|
|
22
|
+
function isLooseSemver(version) {
|
|
23
|
+
return (0, is_string_1.isString)(version) && (0, is_semver_1.isSemver)(version) && version.search(/\.x(\.|$)/) !== -1;
|
|
24
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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.withLogger = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const effect_1 = require("effect");
|
|
9
|
+
function withLogger(program) {
|
|
10
|
+
const logger = effect_1.Logger.make(({ logLevel, message }) => {
|
|
11
|
+
if (logLevel === effect_1.LogLevel.Info) {
|
|
12
|
+
globalThis.console.info(message);
|
|
13
|
+
}
|
|
14
|
+
else if (logLevel === effect_1.LogLevel.Debug) {
|
|
15
|
+
globalThis.console.info((0, chalk_1.default) `{magenta ? %s}`, message);
|
|
16
|
+
}
|
|
17
|
+
else if (logLevel === effect_1.LogLevel.Error) {
|
|
18
|
+
globalThis.console.error((0, chalk_1.default) `{red ! %s}`, message);
|
|
19
|
+
}
|
|
20
|
+
else if (logLevel === effect_1.LogLevel.Warning) {
|
|
21
|
+
globalThis.console.warn((0, chalk_1.default) `{yellow ! %s}`, message);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
globalThis.console.log((0, chalk_1.default) `{cyan [%s] %s}`, logLevel, message);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const layer = effect_1.Logger.replace(effect_1.Logger.defaultLogger, logger);
|
|
28
|
+
const logLevel = process.env.SYNCPACK_VERBOSE === 'true'
|
|
29
|
+
? effect_1.LogLevel.Debug
|
|
30
|
+
: process.env.NODE_ENV === 'test'
|
|
31
|
+
? effect_1.LogLevel.None
|
|
32
|
+
: effect_1.LogLevel.Info;
|
|
33
|
+
return effect_1.Effect.provide(effect_1.Logger.withMinimumLogLevel(program, logLevel), layer);
|
|
34
|
+
}
|
|
35
|
+
exports.withLogger = withLogger;
|
package/dist/option.d.ts
CHANGED
|
@@ -2,7 +2,6 @@ export declare const option: {
|
|
|
2
2
|
readonly config: readonly ["-c, --config <path>", "path to a syncpack config file"];
|
|
3
3
|
readonly filter: readonly ["-f, --filter [pattern]", string];
|
|
4
4
|
readonly indent: readonly ["-i, --indent [value]", "override indentation. defaults to \" \""];
|
|
5
|
-
readonly semverRange: readonly ["-r, --semver-range <range>", "see supported ranges below. defaults to \"\""];
|
|
6
5
|
readonly source: readonly ["-s, --source [pattern]", "glob pattern for package.json files to read from", typeof collect, string[]];
|
|
7
6
|
readonly types: readonly ["-t, --types <names>", string];
|
|
8
7
|
};
|
package/dist/option.js
CHANGED
|
@@ -13,10 +13,6 @@ exports.option = {
|
|
|
13
13
|
(0, chalk_1.default) `only include dependencies whose {yellow name} matches this regex`,
|
|
14
14
|
],
|
|
15
15
|
indent: ['-i, --indent [value]', `override indentation. defaults to "${constants_1.DEFAULT_CONFIG.indent}"`],
|
|
16
|
-
semverRange: [
|
|
17
|
-
'-r, --semver-range <range>',
|
|
18
|
-
`see supported ranges below. defaults to "${constants_1.DEFAULT_CONFIG.semverRange}"`,
|
|
19
|
-
],
|
|
20
16
|
source: [
|
|
21
17
|
'-s, --source [pattern]',
|
|
22
18
|
'glob pattern for package.json files to read from',
|