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
|
@@ -1,49 +1,20 @@
|
|
|
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.getYarnPatterns = void 0;
|
|
27
|
-
const
|
|
28
|
-
const O = __importStar(require("@effect/data/Option"));
|
|
29
|
-
const Effect = __importStar(require("@effect/io/Effect"));
|
|
4
|
+
const effect_1 = require("effect");
|
|
30
5
|
const path_1 = require("path");
|
|
31
6
|
const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
|
|
32
7
|
const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
: O.none();
|
|
44
|
-
}), Effect.catchTags({
|
|
45
|
-
ReadFileError: () => Effect.succeed(O.none()),
|
|
46
|
-
JsonParseError: () => Effect.succeed(O.none()),
|
|
8
|
+
const read_json_file_sync_1 = require("../../io/read-json-file-sync");
|
|
9
|
+
function getYarnPatterns(io) {
|
|
10
|
+
return (0, effect_1.pipe)((0, read_json_file_sync_1.readJsonFileSync)(io, (0, path_1.join)(io.process.cwd(), 'package.json')), effect_1.Effect.map((file) => (0, is_non_empty_object_1.isNonEmptyObject)(file.contents.workspaces) &&
|
|
11
|
+
(0, is_array_of_strings_1.isArrayOfStrings)(file.contents.workspaces.packages)
|
|
12
|
+
? effect_1.Option.some(file.contents.workspaces.packages)
|
|
13
|
+
: (0, is_array_of_strings_1.isArrayOfStrings)(file.contents.workspaces)
|
|
14
|
+
? effect_1.Option.some(file.contents.workspaces)
|
|
15
|
+
: effect_1.Option.none()), effect_1.Effect.catchTags({
|
|
16
|
+
ReadFileError: () => effect_1.Effect.succeed(effect_1.Option.none()),
|
|
17
|
+
JsonParseError: () => effect_1.Effect.succeed(effect_1.Option.none()),
|
|
47
18
|
}));
|
|
48
19
|
}
|
|
49
20
|
exports.getYarnPatterns = getYarnPatterns;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Env } from '../../env/create-env';
|
|
1
|
+
import { Effect } from 'effect';
|
|
3
2
|
import type { Ctx } from '../../get-context';
|
|
3
|
+
import type { Io } from '../../io';
|
|
4
4
|
/**
|
|
5
5
|
* Find every glob pattern which should be used to find package.json files for
|
|
6
6
|
* this monorepo.
|
|
7
|
-
*
|
|
8
|
-
* @returns `['./package.json', './packages/* /package.json']`
|
|
9
7
|
*/
|
|
10
|
-
export declare function getPatterns(config: Ctx['config']): Effect.Effect<
|
|
8
|
+
export declare function getPatterns(io: Io, config: Ctx['config']): Effect.Effect<never, never, string[]>;
|
|
@@ -1,32 +1,7 @@
|
|
|
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.getPatterns = void 0;
|
|
27
|
-
const
|
|
28
|
-
const O = __importStar(require("@effect/data/Option"));
|
|
29
|
-
const Effect = __importStar(require("@effect/io/Effect"));
|
|
4
|
+
const effect_1 = require("effect");
|
|
30
5
|
const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
|
|
31
6
|
const get_source_1 = require("../../config/get-source");
|
|
32
7
|
const constants_1 = require("../../constants");
|
|
@@ -36,16 +11,14 @@ const get_yarn_patterns_1 = require("./get-yarn-patterns");
|
|
|
36
11
|
/**
|
|
37
12
|
* Find every glob pattern which should be used to find package.json files for
|
|
38
13
|
* this monorepo.
|
|
39
|
-
*
|
|
40
|
-
* @returns `['./package.json', './packages/* /package.json']`
|
|
41
14
|
*/
|
|
42
|
-
function getPatterns(config) {
|
|
43
|
-
return (0,
|
|
15
|
+
function getPatterns(io, config) {
|
|
16
|
+
return (0, effect_1.pipe)(getCliPatterns(), effect_1.Effect.flatMap((opt) => (effect_1.Option.isSome(opt) ? effect_1.Effect.succeed(opt) : getWorkspacePatterns())), effect_1.Effect.map(effect_1.Option.map(limitToPackageJson)), effect_1.Effect.map(effect_1.Option.getOrElse(() => [...constants_1.DEFAULT_CONFIG.source])));
|
|
44
17
|
function getCliPatterns() {
|
|
45
|
-
return (0,
|
|
18
|
+
return (0, effect_1.pipe)(effect_1.Option.some((0, get_source_1.getSource)(config)), effect_1.Option.filter(is_array_of_strings_1.isArrayOfStrings), effect_1.Effect.succeed);
|
|
46
19
|
}
|
|
47
|
-
function
|
|
48
|
-
return ['package.json', ...patterns];
|
|
20
|
+
function getWorkspacePatterns() {
|
|
21
|
+
return (0, effect_1.pipe)((0, get_yarn_patterns_1.getYarnPatterns)(io), effect_1.Effect.flatMap((opt) => (effect_1.Option.isSome(opt) ? effect_1.Effect.succeed(opt) : (0, get_pnpm_patterns_1.getPnpmPatterns)(io))), effect_1.Effect.flatMap((opt) => (effect_1.Option.isSome(opt) ? effect_1.Effect.succeed(opt) : (0, get_lerna_patterns_1.getLernaPatterns)(io))), effect_1.Effect.map(effect_1.Option.map((patterns) => ['package.json', ...patterns])));
|
|
49
22
|
}
|
|
50
23
|
function limitToPackageJson(patterns) {
|
|
51
24
|
return patterns.map((pattern) => pattern.includes('package.json') ? pattern : `${pattern}/package.json`);
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Env } from '../env/create-env';
|
|
3
|
-
import type { GlobError, ReadFileError } from '../env/tags';
|
|
1
|
+
import { Effect } from 'effect';
|
|
4
2
|
import type { Ctx } from '../get-context';
|
|
3
|
+
import type { Io } from '../io';
|
|
4
|
+
import type { GlobError } from '../io/glob-sync';
|
|
5
|
+
import type { ReadFileError } from '../io/read-file-sync';
|
|
6
|
+
import type { JsonParseError } from '../io/read-json-file-sync';
|
|
5
7
|
import type { NoSourcesFoundError } from './get-file-paths';
|
|
6
|
-
import type { JsonParseError } from './get-patterns/read-json-safe';
|
|
7
8
|
import { PackageJsonFile } from './package-json-file';
|
|
8
9
|
/** Create an API for every package.json file needed. */
|
|
9
|
-
export declare function getPackageJsonFiles(config: Ctx['config']): Effect.Effect<
|
|
10
|
+
export declare function getPackageJsonFiles(io: Io, config: Ctx['config']): Effect.Effect<never, NoSourcesFoundError | GlobError | ReadFileError | JsonParseError, PackageJsonFile[]>;
|
|
@@ -1,36 +1,12 @@
|
|
|
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.getPackageJsonFiles = void 0;
|
|
27
|
-
const
|
|
28
|
-
const
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const read_json_file_sync_1 = require("../io/read-json-file-sync");
|
|
29
6
|
const get_file_paths_1 = require("./get-file-paths");
|
|
30
|
-
const read_json_safe_1 = require("./get-patterns/read-json-safe");
|
|
31
7
|
const package_json_file_1 = require("./package-json-file");
|
|
32
8
|
/** Create an API for every package.json file needed. */
|
|
33
|
-
function getPackageJsonFiles(config) {
|
|
34
|
-
return (0,
|
|
9
|
+
function getPackageJsonFiles(io, config) {
|
|
10
|
+
return (0, effect_1.pipe)((0, get_file_paths_1.getFilePaths)(io, config), effect_1.Effect.flatMap((filePaths) => effect_1.Effect.all(filePaths.map((filePath) => (0, read_json_file_sync_1.readJsonFileSync)(io, filePath)))), effect_1.Effect.map((files) => files.map((file) => new package_json_file_1.PackageJsonFile(file, config))), effect_1.Effect.tap((files) => effect_1.Effect.logDebug(`${files.length} package.json files found`)));
|
|
35
11
|
}
|
|
36
12
|
exports.getPackageJsonFiles = getPackageJsonFiles;
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import type { RcFile } from '..';
|
|
1
3
|
import type { Strategy } from '../config/get-custom-types';
|
|
2
4
|
import type { Ctx } from '../get-context';
|
|
3
|
-
import
|
|
4
|
-
import type { JsonFile } from '
|
|
5
|
-
export
|
|
5
|
+
import { Instance } from '../get-instances/instance';
|
|
6
|
+
import type { JsonFile } from '../io/read-json-file-sync';
|
|
7
|
+
export type PackageJson = {
|
|
6
8
|
bugs?: {
|
|
7
9
|
url: string;
|
|
8
10
|
} | string;
|
|
11
|
+
config?: {
|
|
12
|
+
syncpack?: RcFile;
|
|
13
|
+
};
|
|
9
14
|
dependencies?: Record<string, string>;
|
|
10
15
|
description?: string;
|
|
11
16
|
devDependencies?: Record<string, string>;
|
|
@@ -27,21 +32,16 @@ export interface PackageJson {
|
|
|
27
32
|
workspaces?: string[] | {
|
|
28
33
|
packages?: string[];
|
|
29
34
|
};
|
|
30
|
-
|
|
31
|
-
}
|
|
35
|
+
} & Record<string, Record<string, string | string[] | Record<string, string | string[]>> | string | string[] | undefined>;
|
|
32
36
|
export declare class PackageJsonFile {
|
|
33
|
-
/** parsed JSON contents of the file */
|
|
34
|
-
contents: PackageJson;
|
|
35
|
-
/** absolute path on disk to this file */
|
|
36
|
-
readonly filePath: string;
|
|
37
|
-
/** absolute path on disk to this file's directory */
|
|
38
|
-
readonly dirPath: string;
|
|
39
|
-
/** raw file contents of the file */
|
|
40
|
-
readonly json: string;
|
|
41
37
|
/** resolved configuration */
|
|
42
38
|
readonly config: Ctx['config'];
|
|
43
|
-
/**
|
|
44
|
-
|
|
39
|
+
/** ensure only one set of instances is ever created and shared */
|
|
40
|
+
private _instances;
|
|
41
|
+
/** the wrapped package.json file */
|
|
42
|
+
jsonFile: JsonFile<PackageJson>;
|
|
43
|
+
/** the .name property from the package.json file */
|
|
44
|
+
name: string | undefined;
|
|
45
45
|
constructor(jsonFile: JsonFile<PackageJson>, config: Ctx['config']);
|
|
46
|
-
getInstances(enabledTypes: Strategy.Any[]): Instance
|
|
46
|
+
getInstances(enabledTypes: Strategy.Any[]): Effect.Effect<never, never, Instance[]>;
|
|
47
47
|
}
|
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PackageJsonFile = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const map_1 = require("tightrope/result/map");
|
|
7
|
-
const constants_1 = require("../constants");
|
|
8
|
-
const create_1 = require("../instance/create");
|
|
9
|
-
const log_verbose_1 = require("../lib/log-verbose");
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const instance_1 = require("../get-instances/instance");
|
|
10
6
|
class PackageJsonFile {
|
|
7
|
+
/** resolved configuration */
|
|
8
|
+
config;
|
|
9
|
+
/** ensure only one set of instances is ever created and shared */
|
|
10
|
+
_instances;
|
|
11
|
+
/** the wrapped package.json file */
|
|
12
|
+
jsonFile;
|
|
13
|
+
/** the .name property from the package.json file */
|
|
14
|
+
name;
|
|
11
15
|
constructor(jsonFile, config) {
|
|
16
|
+
this._instances = null;
|
|
12
17
|
this.config = config;
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
15
|
-
this.dirPath = (0, path_1.dirname)(jsonFile.filePath);
|
|
16
|
-
this.json = jsonFile.json;
|
|
17
|
-
this.shortPath = (0, path_1.relative)(constants_1.CWD, jsonFile.filePath);
|
|
18
|
+
this.jsonFile = jsonFile;
|
|
19
|
+
this.name = jsonFile.contents.name;
|
|
18
20
|
}
|
|
19
21
|
getInstances(enabledTypes) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
(
|
|
24
|
-
|
|
22
|
+
if (!this._instances) {
|
|
23
|
+
return (0, effect_1.pipe)(effect_1.Effect.all(enabledTypes.map((strategy) => (0, effect_1.pipe)(strategy.read(this), effect_1.Effect.map((entries) => entries.map(([name, rawSpecifier]) => new instance_1.Instance(name, rawSpecifier, this, strategy)))))), effect_1.Effect.map((array) => array.flat()), effect_1.Effect.tapBoth({
|
|
24
|
+
onSuccess: (instances) => effect_1.Effect.logDebug(`found ${instances.length} instances in <${this.jsonFile.shortPath}>`),
|
|
25
|
+
onFailure: () => effect_1.Effect.logError(`failed to get instances from <${this.jsonFile.shortPath}>`),
|
|
26
|
+
}), effect_1.Effect.catchAll(() => effect_1.Effect.succeed([])), effect_1.Effect.tap((instances) => effect_1.Effect.sync(() => {
|
|
27
|
+
this._instances = instances;
|
|
25
28
|
})));
|
|
26
|
-
}
|
|
27
|
-
return
|
|
29
|
+
}
|
|
30
|
+
return effect_1.Effect.succeed(this._instances);
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
exports.PackageJsonFile = PackageJsonFile;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
|
|
1
|
+
import type { Ctx } from '../get-context';
|
|
2
|
+
import type { Instance } from '../get-instances/instance';
|
|
3
|
+
import type { SemverGroup } from '../semver-group';
|
|
4
|
+
import type { VersionGroup } from '../version-group';
|
|
5
|
+
export declare function canAddToGroup(packageJsonFilesByName: Ctx['packageJsonFilesByName'], group: SemverGroup.Any | VersionGroup.Any, instance: Instance): boolean;
|
|
@@ -3,19 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.canAddToGroup = void 0;
|
|
4
4
|
const minimatch_1 = require("minimatch");
|
|
5
5
|
const is_non_empty_array_1 = require("tightrope/guard/is-non-empty-array");
|
|
6
|
-
function canAddToGroup(group, instance) {
|
|
6
|
+
function canAddToGroup(packageJsonFilesByName, group, instance) {
|
|
7
7
|
const { dependencies, dependencyTypes, packages } = group.config;
|
|
8
8
|
return (group.canAdd(instance) &&
|
|
9
9
|
matchesDependencyTypes(dependencyTypes, instance) &&
|
|
10
10
|
matchesPackages(packages, instance) &&
|
|
11
|
-
matchesDependencies(dependencies, instance));
|
|
11
|
+
matchesDependencies(packageJsonFilesByName, group, dependencies, instance));
|
|
12
12
|
}
|
|
13
13
|
exports.canAddToGroup = canAddToGroup;
|
|
14
|
-
function matchesDependencies(dependencies, instance) {
|
|
14
|
+
function matchesDependencies(packageJsonFilesByName, group, dependencies, instance) {
|
|
15
15
|
// matches if not defined
|
|
16
16
|
if (!(0, is_non_empty_array_1.isNonEmptyArray)(dependencies))
|
|
17
17
|
return true;
|
|
18
|
-
return dependencies.some((pattern) => (
|
|
18
|
+
return dependencies.some((pattern) => (pattern === '$LOCAL' &&
|
|
19
|
+
instance.name in packageJsonFilesByName &&
|
|
20
|
+
((group.groupType === 'versionGroup' && instance.versionGroup === null) ||
|
|
21
|
+
(group.groupType === 'semverGroup' && instance.semverGroup === null))) ||
|
|
22
|
+
(0, minimatch_1.minimatch)(instance.name, pattern));
|
|
19
23
|
}
|
|
20
24
|
function matchesPackages(packages, instance) {
|
|
21
25
|
// matches if not defined
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/** @deprecated */
|
|
1
|
+
/** @deprecated migrate to make better use of npm-package-arg */
|
|
2
2
|
export declare function isSemver(version: unknown): boolean;
|
package/dist/guards/is-semver.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isSemver = void 0;
|
|
4
4
|
const is_string_1 = require("tightrope/guard/is-string");
|
|
5
|
-
/** @deprecated */
|
|
5
|
+
/** @deprecated migrate to make better use of npm-package-arg */
|
|
6
6
|
function isSemver(version) {
|
|
7
7
|
const range = '(~|\\^|>=|>|<=|<)?';
|
|
8
8
|
const ints = '[0-9]+';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isValidSemverRange = void 0;
|
|
4
4
|
const constants_1 = require("../constants");
|
|
5
|
-
/** @deprecated */
|
|
5
|
+
/** @deprecated migrate to make better use of npm-package-arg */
|
|
6
6
|
function isValidSemverRange(value) {
|
|
7
7
|
return (value === constants_1.RANGE.ANY ||
|
|
8
8
|
value === constants_1.RANGE.EXACT ||
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Io } from '.';
|
|
3
|
+
declare const AskForChoiceError_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: "AskForChoiceError";
|
|
5
|
+
}>;
|
|
6
|
+
declare class AskForChoiceError extends AskForChoiceError_base<{
|
|
7
|
+
readonly error: string;
|
|
8
|
+
}> {
|
|
9
|
+
}
|
|
10
|
+
export declare function askForChoice(opts: {
|
|
11
|
+
message: string;
|
|
12
|
+
choices: string[];
|
|
13
|
+
}): Effect.Effect<Io, AskForChoiceError, string>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.askForChoice = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
class AskForChoiceError extends effect_1.Data.TaggedClass('AskForChoiceError') {
|
|
7
|
+
}
|
|
8
|
+
function askForChoice(opts) {
|
|
9
|
+
return (0, effect_1.pipe)(_1.IoTag, effect_1.Effect.flatMap((io) => effect_1.Effect.tryPromise({
|
|
10
|
+
try: () => io.enquirer
|
|
11
|
+
.prompt({
|
|
12
|
+
type: 'select',
|
|
13
|
+
name: 'choice',
|
|
14
|
+
message: opts.message,
|
|
15
|
+
choices: opts.choices,
|
|
16
|
+
})
|
|
17
|
+
.then((res) => res.choice),
|
|
18
|
+
catch: (err) => new AskForChoiceError({ error: String(err) }),
|
|
19
|
+
})));
|
|
20
|
+
}
|
|
21
|
+
exports.askForChoice = askForChoice;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Io } from '.';
|
|
3
|
+
declare const AskForInputError_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: "AskForInputError";
|
|
5
|
+
}>;
|
|
6
|
+
declare class AskForInputError extends AskForInputError_base<{
|
|
7
|
+
readonly error: string;
|
|
8
|
+
}> {
|
|
9
|
+
}
|
|
10
|
+
export declare function askForInput(opts: {
|
|
11
|
+
message: string;
|
|
12
|
+
}): Effect.Effect<Io, AskForInputError, string>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.askForInput = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
class AskForInputError extends effect_1.Data.TaggedClass('AskForInputError') {
|
|
7
|
+
}
|
|
8
|
+
function askForInput(opts) {
|
|
9
|
+
return (0, effect_1.pipe)(_1.IoTag, effect_1.Effect.flatMap((io) => effect_1.Effect.tryPromise({
|
|
10
|
+
try: () => io.enquirer.prompt({
|
|
11
|
+
name: 'version',
|
|
12
|
+
type: 'input',
|
|
13
|
+
message: opts.message,
|
|
14
|
+
}),
|
|
15
|
+
catch: (err) => new AskForInputError({ error: String(err) }),
|
|
16
|
+
})));
|
|
17
|
+
}
|
|
18
|
+
exports.askForInput = askForInput;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exitIfInvalid = void 0;
|
|
4
|
+
const effect_1 = require("effect");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
function exitIfInvalid(ctx) {
|
|
7
|
+
return (0, effect_1.pipe)(_1.IoTag, effect_1.Effect.tap((io) => effect_1.Effect.sync(() => {
|
|
8
|
+
if (ctx.isInvalid) {
|
|
9
|
+
io.process.exit(1);
|
|
10
|
+
}
|
|
11
|
+
})), effect_1.Effect.map(() => ctx));
|
|
12
|
+
}
|
|
13
|
+
exports.exitIfInvalid = exitIfInvalid;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Data, Effect } from 'effect';
|
|
2
|
+
import type { Io } from '.';
|
|
3
|
+
declare const GlobError_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: "GlobError";
|
|
5
|
+
}>;
|
|
6
|
+
export declare class GlobError extends GlobError_base<{
|
|
7
|
+
readonly error: string;
|
|
8
|
+
}> {
|
|
9
|
+
}
|
|
10
|
+
export declare function globSync(io: Io, patterns: string[]): Effect.Effect<never, GlobError, string[]>;
|
|
11
|
+
export {};
|
|
@@ -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/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: "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 {};
|