syncpack 10.7.3 → 11.2.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/dist/bin-fix-mismatches/effects.js +9 -9
- package/dist/bin-fix-mismatches/fix-mismatches.js +2 -2
- package/dist/bin-format/format-cli.js +2 -2
- package/dist/bin-format/format.js +4 -3
- package/dist/bin-lint/lint.js +2 -2
- package/dist/bin-lint-semver-ranges/effects.js +10 -10
- package/dist/bin-lint-semver-ranges/lint-semver-ranges.js +2 -2
- package/dist/bin-list/effects.js +16 -14
- package/dist/bin-list/list.js +2 -2
- package/dist/bin-list-mismatches/effects.js +22 -22
- package/dist/bin-list-mismatches/list-mismatches.js +2 -2
- package/dist/bin-prompt/effects.js +15 -15
- package/dist/bin-prompt/prompt.js +2 -2
- package/dist/bin-set-semver-ranges/effects.js +10 -10
- package/dist/bin-set-semver-ranges/set-semver-ranges.js +2 -2
- package/dist/bin-update/effects.js +36 -30
- package/dist/bin-update/update.js +2 -2
- package/dist/config/get-enabled-types.d.ts +6 -1
- package/dist/config/get-enabled-types.js +62 -34
- package/dist/config/tag.d.ts +3 -0
- package/dist/config/tag.js +28 -0
- package/dist/config/types.d.ts +0 -2
- package/dist/config/types.js +0 -26
- package/dist/constants.d.ts +3 -4
- package/dist/constants.js +12 -13
- package/dist/create-program/effects.d.ts +4 -4
- package/dist/create-program/semver-ranges.d.ts +2 -2
- package/dist/create-program/semver-ranges.js +6 -6
- package/dist/create-program/versions.d.ts +2 -2
- package/dist/create-program/versions.js +6 -6
- package/dist/env/create-env.js +28 -7
- package/dist/env/default-env.js +14 -9
- package/dist/env/exit-if-invalid.js +1 -1
- package/dist/env/write-if-changed.js +1 -1
- package/dist/error-handlers/create-error-handlers.d.ts +2 -1
- package/dist/error-handlers/create-error-handlers.js +3 -0
- package/dist/error-handlers/default-error-handlers.js +5 -0
- package/dist/get-context/index.js +2 -2
- package/dist/get-package-json-files/get-patterns/get-lerna-patterns.js +1 -1
- package/dist/get-package-json-files/get-patterns/get-pnpm-patterns.js +1 -1
- package/dist/get-package-json-files/get-patterns/get-yarn-patterns.js +9 -6
- package/dist/get-package-json-files/get-patterns/index.js +1 -1
- package/dist/get-package-json-files/get-patterns/read-json-safe.js +5 -2
- package/dist/get-package-json-files/package-json-file.d.ts +4 -2
- package/dist/get-package-json-files/package-json-file.js +5 -4
- package/dist/get-semver-groups/filtered-out.d.ts +3 -3
- package/dist/get-semver-groups/filtered-out.js +1 -1
- package/dist/get-semver-groups/ignored.d.ts +3 -3
- package/dist/get-semver-groups/index.d.ts +18 -18
- package/dist/get-semver-groups/index.js +5 -5
- package/dist/get-semver-groups/with-range.d.ts +4 -4
- package/dist/get-semver-groups/with-range.js +9 -9
- package/dist/get-version-groups/banned.d.ts +3 -3
- package/dist/get-version-groups/filtered-out.d.ts +3 -3
- package/dist/get-version-groups/filtered-out.js +1 -1
- package/dist/get-version-groups/ignored.d.ts +3 -3
- package/dist/get-version-groups/index.d.ts +72 -24
- package/dist/get-version-groups/index.js +54 -6
- package/dist/get-version-groups/lib/{sort.js → compare-semver.js} +0 -5
- package/dist/get-version-groups/lib/get-highest-version.js +2 -2
- package/dist/get-version-groups/lib/get-lowest-version.js +2 -2
- package/dist/get-version-groups/lib/get-unique-specifiers.d.ts +2 -0
- package/dist/get-version-groups/lib/get-unique-specifiers.js +11 -0
- package/dist/get-version-groups/pinned.d.ts +3 -3
- package/dist/get-version-groups/pinned.js +1 -1
- package/dist/get-version-groups/same-range.d.ts +3 -3
- package/dist/get-version-groups/same-range.js +1 -1
- package/dist/get-version-groups/snapped-to.d.ts +3 -3
- package/dist/get-version-groups/snapped-to.js +4 -3
- package/dist/get-version-groups/standard.d.ts +4 -4
- package/dist/get-version-groups/standard.js +19 -18
- package/dist/guards/can-add-to-group.d.ts +2 -2
- package/dist/guards/can-add-to-group.js +35 -5
- package/dist/guards/is-loose-semver.d.ts +1 -0
- package/dist/guards/is-loose-semver.js +1 -0
- package/dist/guards/is-semver.d.ts +1 -0
- package/dist/guards/is-semver.js +1 -0
- package/dist/guards/is-valid-semver-range.d.ts +1 -0
- package/dist/guards/is-valid-semver-range.js +1 -0
- package/dist/instance/create.d.ts +4 -0
- package/dist/instance/create.js +142 -0
- package/dist/instance/index.d.ts +122 -0
- package/dist/instance/index.js +154 -0
- package/dist/schema.json +361 -0
- package/package.json +24 -20
- package/dist/get-package-json-files/instance.d.ts +0 -21
- package/dist/get-package-json-files/instance.js +0 -23
- package/dist/get-version-groups/lib/get-unique-versions.d.ts +0 -2
- package/dist/get-version-groups/lib/get-unique-versions.js +0 -8
- package/dist/guards/is-supported.d.ts +0 -1
- package/dist/guards/is-supported.js +0 -17
- /package/dist/get-version-groups/lib/{sort.d.ts → compare-semver.d.ts} +0 -0
|
@@ -38,44 +38,44 @@ const prompts_1 = __importDefault(require("prompts"));
|
|
|
38
38
|
const unwrap_1 = require("tightrope/result/unwrap");
|
|
39
39
|
const constants_1 = require("../constants");
|
|
40
40
|
const get_highest_version_1 = require("../get-version-groups/lib/get-highest-version");
|
|
41
|
-
const
|
|
41
|
+
const get_unique_specifiers_1 = require("../get-version-groups/lib/get-unique-specifiers");
|
|
42
42
|
const log_verbose_1 = require("../lib/log-verbose");
|
|
43
43
|
const set_semver_range_1 = require("../lib/set-semver-range");
|
|
44
44
|
let spinner;
|
|
45
45
|
let fetchCount = 0;
|
|
46
46
|
exports.updateEffects = {
|
|
47
47
|
onFilteredOut() {
|
|
48
|
-
return Effect.unit
|
|
48
|
+
return Effect.unit;
|
|
49
49
|
},
|
|
50
50
|
onIgnored() {
|
|
51
|
-
return Effect.unit
|
|
51
|
+
return Effect.unit;
|
|
52
52
|
},
|
|
53
53
|
onValid(input) {
|
|
54
54
|
return fetchPackageVersions(input);
|
|
55
55
|
},
|
|
56
56
|
onBanned() {
|
|
57
|
-
return Effect.unit
|
|
57
|
+
return Effect.unit;
|
|
58
58
|
},
|
|
59
59
|
onHighestSemverMismatch(input) {
|
|
60
60
|
return fetchPackageVersions(input);
|
|
61
61
|
},
|
|
62
62
|
onLowestSemverMismatch() {
|
|
63
|
-
return Effect.unit
|
|
63
|
+
return Effect.unit;
|
|
64
64
|
},
|
|
65
65
|
onPinnedMismatch() {
|
|
66
|
-
return Effect.unit
|
|
66
|
+
return Effect.unit;
|
|
67
67
|
},
|
|
68
68
|
onSameRangeMismatch(input) {
|
|
69
69
|
return fetchPackageVersions(input);
|
|
70
70
|
},
|
|
71
71
|
onSnappedToMismatch() {
|
|
72
|
-
return Effect.unit
|
|
72
|
+
return Effect.unit;
|
|
73
73
|
},
|
|
74
|
-
|
|
75
|
-
return Effect.unit
|
|
74
|
+
onNonSemverMismatch() {
|
|
75
|
+
return Effect.unit;
|
|
76
76
|
},
|
|
77
|
-
|
|
78
|
-
return Effect.unit
|
|
77
|
+
onLocalPackageMismatch() {
|
|
78
|
+
return Effect.unit;
|
|
79
79
|
},
|
|
80
80
|
onComplete(ctx, results) {
|
|
81
81
|
return promptForUpdates(results);
|
|
@@ -120,14 +120,14 @@ function fetchPackageVersions(input) {
|
|
|
120
120
|
}
|
|
121
121
|
function promptForUpdates(results) {
|
|
122
122
|
spinner.stop();
|
|
123
|
-
return (0, Function_1.pipe)(Effect.Do
|
|
123
|
+
return (0, Function_1.pipe)(Effect.Do, Effect.bind('choices', () => Effect.sync(() => results.reduce((arr, result) => {
|
|
124
124
|
if (!result)
|
|
125
125
|
return arr;
|
|
126
126
|
if (!['SameRange', 'Standard'].includes(result.input.group._tag))
|
|
127
127
|
return arr;
|
|
128
128
|
const input = result.input;
|
|
129
129
|
const latestVersion = result.versions.latest;
|
|
130
|
-
const uniqueVersions = (0,
|
|
130
|
+
const uniqueVersions = (0, get_unique_specifiers_1.getUniqueSpecifiers)(input.report.instances).map((i) => i.specifier);
|
|
131
131
|
const highestVersion = (0, unwrap_1.unwrap)((0, get_highest_version_1.getHighestVersion)(uniqueVersions));
|
|
132
132
|
const exactHighestVersion = (0, set_semver_range_1.setSemverRange)('', highestVersion);
|
|
133
133
|
if (exactHighestVersion === latestVersion)
|
|
@@ -144,27 +144,30 @@ function promptForUpdates(results) {
|
|
|
144
144
|
.replace('NEW', latestWithRange),
|
|
145
145
|
});
|
|
146
146
|
return arr;
|
|
147
|
-
}, []))), Effect.bind('chosenUpdates', ({ choices }) => Effect.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
147
|
+
}, []))), Effect.bind('chosenUpdates', ({ choices }) => Effect.tryPromise({
|
|
148
|
+
try: () => (0, prompts_1.default)([
|
|
149
|
+
{
|
|
150
|
+
name: 'indexes',
|
|
151
|
+
type: 'multiselect',
|
|
152
|
+
message: 'Choose which packages to upgrade',
|
|
153
|
+
instructions: true,
|
|
154
|
+
// @ts-expect-error optionsPerPage *does* exist https://github.com/terkelg/prompts#options-7
|
|
155
|
+
optionsPerPage: 50,
|
|
156
|
+
choices: choices,
|
|
157
|
+
},
|
|
158
|
+
])
|
|
159
|
+
.then(({ indexes = [] }) => ({ choices, indexes }))
|
|
160
|
+
.then(({ choices, indexes }) => indexes.map((i) => choices[i].result)),
|
|
161
|
+
catch: () => new Error('Prompt failed'),
|
|
162
|
+
})), Effect.flatMap(({ chosenUpdates }) => Effect.sync(() => {
|
|
160
163
|
chosenUpdates.forEach(({ input, versions }) => {
|
|
161
164
|
input.report.instances.forEach((instance) => {
|
|
162
|
-
const semverRange = (0, set_semver_range_1.getSemverRange)(instance.
|
|
165
|
+
const semverRange = (0, set_semver_range_1.getSemverRange)(instance.specifier);
|
|
163
166
|
const latestWithRange = (0, set_semver_range_1.setSemverRange)(semverRange, versions.latest);
|
|
164
|
-
instance.
|
|
167
|
+
instance.setSpecifier(latestWithRange);
|
|
165
168
|
});
|
|
166
169
|
});
|
|
167
|
-
})), Effect.catchAll(() => Effect.unit
|
|
170
|
+
})), Effect.catchAll(() => Effect.unit));
|
|
168
171
|
}
|
|
169
172
|
// @TODO: add a cache with a short TTL on disk in $TMPDIR
|
|
170
173
|
function fetchUrl(url) {
|
|
@@ -183,5 +186,8 @@ function fetchUrl(url) {
|
|
|
183
186
|
.on('error', (err) => {
|
|
184
187
|
resume(Effect.fail(new HttpError({ error: String(err) })));
|
|
185
188
|
});
|
|
186
|
-
}), Effect.flatMap((body) => Effect.
|
|
189
|
+
}), Effect.flatMap((body) => Effect.try({
|
|
190
|
+
try: () => JSON.parse(body),
|
|
191
|
+
catch: (err) => new JsonParseError({ error: String(err) }),
|
|
192
|
+
})));
|
|
187
193
|
}
|
|
@@ -28,7 +28,7 @@ const Context = __importStar(require("@effect/data/Context"));
|
|
|
28
28
|
const Function_1 = require("@effect/data/Function");
|
|
29
29
|
const Effect = __importStar(require("@effect/io/Effect"));
|
|
30
30
|
// import { setSemverRangesEffects } from '../bin-set-semver-ranges/effects';
|
|
31
|
-
const
|
|
31
|
+
const tag_1 = require("../config/tag");
|
|
32
32
|
// import { createSemverRangesProgram } from '../create-program/semver-ranges';
|
|
33
33
|
const versions_1 = require("../create-program/versions");
|
|
34
34
|
const create_env_1 = require("../env/create-env");
|
|
@@ -42,6 +42,6 @@ const effects_1 = require("./effects");
|
|
|
42
42
|
function update(cli, env) {
|
|
43
43
|
return (0, Function_1.pipe)((0, get_context_1.getContext)(), Effect.flatMap((ctx) => (0, versions_1.createVersionsProgram)(ctx, effects_1.updateEffects)),
|
|
44
44
|
// Effect.flatMap((ctx) => createSemverRangesProgram(ctx, setSemverRangesEffects)),
|
|
45
|
-
Effect.flatMap(write_if_changed_1.writeIfChanged), Effect.flatMap(exit_if_invalid_1.exitIfInvalid), Effect.catchTags((0, create_error_handlers_1.createErrorHandlers)(default_error_handlers_1.defaultErrorHandlers)), Effect.
|
|
45
|
+
Effect.flatMap(write_if_changed_1.writeIfChanged), Effect.flatMap(exit_if_invalid_1.exitIfInvalid), Effect.catchTags((0, create_error_handlers_1.createErrorHandlers)(default_error_handlers_1.defaultErrorHandlers)), Effect.withConcurrency(10), Effect.provideContext((0, Function_1.pipe)(Context.empty(), Context.add(tag_1.CliConfigTag, cli), Context.add(tags_1.EnvTag, (0, create_env_1.createEnv)(env)))));
|
|
46
46
|
}
|
|
47
47
|
exports.update = update;
|
|
@@ -9,5 +9,10 @@ export declare class DeprecatedTypesError extends DeprecatedTypesError_base<{
|
|
|
9
9
|
readonly types: string[];
|
|
10
10
|
}> {
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
declare const RenamedWorkspaceTypeError_base: new <A extends Record<string, any>>(args: Data.IsEqualTo<Omit<A, keyof import("@effect/data/Equal").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal").Equal>) => Data.Data<A & {
|
|
13
|
+
_tag: "RenamedWorkspaceTypeError";
|
|
14
|
+
}>;
|
|
15
|
+
export declare class RenamedWorkspaceTypeError extends RenamedWorkspaceTypeError_base<Record<string, never>> {
|
|
16
|
+
}
|
|
17
|
+
export declare function getEnabledTypes({ cli, rcFile, }: Ctx['config']): Effect.Effect<never, DeprecatedTypesError | RenamedWorkspaceTypeError, Strategy.Any[]>;
|
|
13
18
|
export {};
|
|
@@ -23,8 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.getEnabledTypes = exports.DeprecatedTypesError = void 0;
|
|
26
|
+
exports.getEnabledTypes = exports.RenamedWorkspaceTypeError = exports.DeprecatedTypesError = void 0;
|
|
27
27
|
const Data = __importStar(require("@effect/data/Data"));
|
|
28
|
+
const ReadonlyArray_1 = require("@effect/data/ReadonlyArray");
|
|
28
29
|
const Effect = __importStar(require("@effect/io/Effect"));
|
|
29
30
|
const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
|
|
30
31
|
const is_boolean_1 = require("tightrope/guard/is-boolean");
|
|
@@ -37,46 +38,73 @@ const get_custom_types_1 = require("./get-custom-types");
|
|
|
37
38
|
class DeprecatedTypesError extends Data.TaggedClass('DeprecatedTypesError') {
|
|
38
39
|
}
|
|
39
40
|
exports.DeprecatedTypesError = DeprecatedTypesError;
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
class RenamedWorkspaceTypeError extends Data.TaggedClass('RenamedWorkspaceTypeError') {
|
|
42
|
+
}
|
|
43
|
+
exports.RenamedWorkspaceTypeError = RenamedWorkspaceTypeError;
|
|
42
44
|
function getEnabledTypes({ cli, rcFile, }) {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
: (0, is_array_of_strings_1.isArrayOfStrings)(rcFile.dependencyTypes)
|
|
47
|
-
? rcFile.dependencyTypes
|
|
48
|
-
: []).filter(is_non_empty_string_1.isNonEmptyString);
|
|
49
|
-
const useDefaults = (0, is_empty_array_1.isEmptyArray)(enabledTypeNames);
|
|
50
|
-
const deprecatedTypes = constants_1.DEFAULT_CONFIG.dependencyTypes.filter((key) => (0, is_boolean_1.isBoolean)(rcFile[key]));
|
|
51
|
-
if (deprecatedTypes.length > 0) {
|
|
52
|
-
return Effect.fail(new DeprecatedTypesError({ types: deprecatedTypes }));
|
|
53
|
-
}
|
|
54
|
-
if (useDefaults || enabledTypeNames.includes('dev')) {
|
|
55
|
-
enabledTypes.push(new versions_by_name_1.VersionsByNameStrategy('dev', 'devDependencies'));
|
|
45
|
+
const deprecatedTypeProps = getDeprecatedTypeProps();
|
|
46
|
+
if (deprecatedTypeProps.length > 0) {
|
|
47
|
+
return Effect.fail(new DeprecatedTypesError({ types: deprecatedTypeProps }));
|
|
56
48
|
}
|
|
57
|
-
|
|
58
|
-
|
|
49
|
+
const allStrategiesByName = Object.fromEntries([
|
|
50
|
+
['dev', new versions_by_name_1.VersionsByNameStrategy('dev', 'devDependencies')],
|
|
51
|
+
['local', new name_and_version_props_1.NameAndVersionPropsStrategy('local', 'version', 'name')],
|
|
52
|
+
['overrides', new versions_by_name_1.VersionsByNameStrategy('overrides', 'overrides')],
|
|
53
|
+
['peer', new versions_by_name_1.VersionsByNameStrategy('peer', 'peerDependencies')],
|
|
54
|
+
['pnpmOverrides', new versions_by_name_1.VersionsByNameStrategy('pnpmOverrides', 'pnpm.overrides')],
|
|
55
|
+
['prod', new versions_by_name_1.VersionsByNameStrategy('prod', 'dependencies')],
|
|
56
|
+
['resolutions', new versions_by_name_1.VersionsByNameStrategy('resolutions', 'resolutions')],
|
|
57
|
+
...(0, get_custom_types_1.getCustomTypes)({ cli, rcFile }).map((customType) => [customType.name, customType]),
|
|
58
|
+
]);
|
|
59
|
+
const allStrategyNames = Object.keys(allStrategiesByName);
|
|
60
|
+
const names = {
|
|
61
|
+
provided: ((0, is_non_empty_string_1.isNonEmptyString)(cli.types)
|
|
62
|
+
? cli.types.split(',')
|
|
63
|
+
: (0, is_array_of_strings_1.isArrayOfStrings)(rcFile.dependencyTypes)
|
|
64
|
+
? rcFile.dependencyTypes
|
|
65
|
+
: []).filter(is_non_empty_string_1.isNonEmptyString),
|
|
66
|
+
enabled: [],
|
|
67
|
+
positive: [],
|
|
68
|
+
negative: [],
|
|
69
|
+
};
|
|
70
|
+
if ((0, is_empty_array_1.isEmptyArray)(names.provided) || names.provided.join('') === '**') {
|
|
71
|
+
return Effect.succeed(allStrategyNames.map(getStrategyByName));
|
|
59
72
|
}
|
|
60
|
-
|
|
61
|
-
|
|
73
|
+
names.provided.forEach((name) => {
|
|
74
|
+
if (name.startsWith('!')) {
|
|
75
|
+
names.negative.push(name.replace('!', ''));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
names.positive.push(name);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
if ((0, ReadonlyArray_1.isNonEmptyArray)(names.negative)) {
|
|
82
|
+
allStrategyNames.forEach((name) => {
|
|
83
|
+
if (!names.negative.includes(name)) {
|
|
84
|
+
names.enabled.push(name);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
62
87
|
}
|
|
63
|
-
if (
|
|
64
|
-
|
|
88
|
+
if ((0, ReadonlyArray_1.isNonEmptyArray)(names.positive)) {
|
|
89
|
+
names.positive.forEach((name) => {
|
|
90
|
+
if (!names.enabled.includes(name)) {
|
|
91
|
+
names.enabled.push(name);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
65
94
|
}
|
|
66
|
-
if (
|
|
67
|
-
|
|
95
|
+
if (names.enabled.includes('workspace')) {
|
|
96
|
+
return Effect.fail(new RenamedWorkspaceTypeError({}));
|
|
68
97
|
}
|
|
69
|
-
|
|
70
|
-
|
|
98
|
+
return Effect.succeed(names.enabled.map(getStrategyByName));
|
|
99
|
+
function getStrategyByName(type) {
|
|
100
|
+
return allStrategiesByName[type];
|
|
71
101
|
}
|
|
72
|
-
|
|
73
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Look for dependency types defined using the old syntax of `{ prod: true }`
|
|
104
|
+
* which was deprecated in syncpack@9.0.0.
|
|
105
|
+
*/
|
|
106
|
+
function getDeprecatedTypeProps() {
|
|
107
|
+
return constants_1.INTERNAL_TYPES.filter((key) => (0, is_boolean_1.isBoolean)(rcFile[key]));
|
|
74
108
|
}
|
|
75
|
-
(0, get_custom_types_1.getCustomTypes)({ cli, rcFile }).forEach((customType) => {
|
|
76
|
-
if (useDefaults || enabledTypeNames.includes(customType.name)) {
|
|
77
|
-
enabledTypes.push(customType);
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
return Effect.succeed(enabledTypes);
|
|
81
109
|
}
|
|
82
110
|
exports.getEnabledTypes = getEnabledTypes;
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.CliConfigTag = void 0;
|
|
27
|
+
const Context = __importStar(require("@effect/data/Context"));
|
|
28
|
+
exports.CliConfigTag = Context.Tag();
|
package/dist/config/types.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import * as Context from '@effect/data/Context';
|
|
2
1
|
import type { Union } from 'ts-toolbelt';
|
|
3
2
|
/**
|
|
4
3
|
* Aliases for semver range formats supported by syncpack
|
|
@@ -88,7 +87,6 @@ export interface CliConfig {
|
|
|
88
87
|
readonly source: string[];
|
|
89
88
|
readonly types: string;
|
|
90
89
|
}
|
|
91
|
-
export declare const CliConfigTag: Context.Tag<Partial<CliConfig>, Partial<CliConfig>>;
|
|
92
90
|
export interface RcConfig {
|
|
93
91
|
/** @see https://jamiemason.github.io/syncpack/config/custom-types */
|
|
94
92
|
customTypes: Record<string, CustomTypeConfig.Any>;
|
package/dist/config/types.js
CHANGED
|
@@ -1,28 +1,2 @@
|
|
|
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
|
-
exports.CliConfigTag = void 0;
|
|
27
|
-
const Context = __importStar(require("@effect/data/Context"));
|
|
28
|
-
exports.CliConfigTag = Context.Tag();
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/** Single source of truth, intended to aid testing or to override */
|
|
2
2
|
export declare const CWD: string;
|
|
3
|
-
/** Where to search for packages if none are provided by the user */
|
|
4
|
-
export declare const DEFAULT_SOURCES: string[];
|
|
5
3
|
/** Single source of truth for icons used in output */
|
|
6
4
|
export declare const ICON: {
|
|
7
5
|
readonly cross: "✘";
|
|
@@ -23,14 +21,15 @@ export declare const RANGE: {
|
|
|
23
21
|
readonly PATCH: "~";
|
|
24
22
|
readonly WORKSPACE: "workspace:";
|
|
25
23
|
};
|
|
24
|
+
export declare const INTERNAL_TYPES: readonly ["dev", "local", "overrides", "peer", "pnpmOverrides", "prod", "resolutions"];
|
|
26
25
|
export declare const DEFAULT_CONFIG: {
|
|
27
|
-
readonly dependencyTypes: readonly ["
|
|
26
|
+
readonly dependencyTypes: readonly ["**"];
|
|
28
27
|
readonly filter: ".";
|
|
29
28
|
readonly indent: " ";
|
|
30
29
|
readonly semverGroups: readonly [];
|
|
31
30
|
readonly semverRange: "";
|
|
32
31
|
readonly sortAz: readonly ["contributors", "dependencies", "devDependencies", "keywords", "peerDependencies", "resolutions", "scripts"];
|
|
33
32
|
readonly sortFirst: readonly ["name", "description", "version", "author"];
|
|
34
|
-
readonly source:
|
|
33
|
+
readonly source: readonly ["package.json", "packages/*/package.json"];
|
|
35
34
|
readonly versionGroups: readonly [];
|
|
36
35
|
};
|
package/dist/constants.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_CONFIG = exports.
|
|
3
|
+
exports.DEFAULT_CONFIG = exports.INTERNAL_TYPES = exports.RANGE = exports.ICON = exports.CWD = void 0;
|
|
4
4
|
/** Single source of truth, intended to aid testing or to override */
|
|
5
5
|
exports.CWD = process.env.MOCK_CWD || process.cwd();
|
|
6
|
-
/** Where to search for packages if none are provided by the user */
|
|
7
|
-
exports.DEFAULT_SOURCES = ['package.json', 'packages/*/package.json'];
|
|
8
6
|
/** Single source of truth for icons used in output */
|
|
9
7
|
exports.ICON = {
|
|
10
8
|
cross: '✘',
|
|
@@ -26,16 +24,17 @@ exports.RANGE = {
|
|
|
26
24
|
PATCH: '~',
|
|
27
25
|
WORKSPACE: 'workspace:',
|
|
28
26
|
};
|
|
27
|
+
exports.INTERNAL_TYPES = [
|
|
28
|
+
'dev',
|
|
29
|
+
'local',
|
|
30
|
+
'overrides',
|
|
31
|
+
'peer',
|
|
32
|
+
'pnpmOverrides',
|
|
33
|
+
'prod',
|
|
34
|
+
'resolutions',
|
|
35
|
+
];
|
|
29
36
|
exports.DEFAULT_CONFIG = {
|
|
30
|
-
dependencyTypes: [
|
|
31
|
-
'dev',
|
|
32
|
-
'overrides',
|
|
33
|
-
'peer',
|
|
34
|
-
'pnpmOverrides',
|
|
35
|
-
'prod',
|
|
36
|
-
'resolutions',
|
|
37
|
-
'workspace',
|
|
38
|
-
],
|
|
37
|
+
dependencyTypes: ['**'],
|
|
39
38
|
filter: '.',
|
|
40
39
|
indent: ' ',
|
|
41
40
|
semverGroups: [],
|
|
@@ -50,6 +49,6 @@ exports.DEFAULT_CONFIG = {
|
|
|
50
49
|
'scripts',
|
|
51
50
|
],
|
|
52
51
|
sortFirst: ['name', 'description', 'version', 'author'],
|
|
53
|
-
source:
|
|
52
|
+
source: ['package.json', 'packages/*/package.json'],
|
|
54
53
|
versionGroups: [],
|
|
55
54
|
};
|
|
@@ -19,9 +19,9 @@ export interface SemverRangeEffects<A> {
|
|
|
19
19
|
onFilteredOut: (input: SemverRangeEffectInput<SR.FilteredOut>) => Effect.Effect<Env | never, never, A>;
|
|
20
20
|
onIgnored: (input: SemverRangeEffectInput<SR.Ignored>) => Effect.Effect<Env | never, never, A>;
|
|
21
21
|
onSemverRangeMismatch: (input: SemverRangeEffectInput<SR.SemverRangeMismatch>) => Effect.Effect<Env | never, never, A>;
|
|
22
|
-
|
|
22
|
+
onNonSemverVersion: (input: SemverRangeEffectInput<SR.NonSemverVersion>) => Effect.Effect<Env | never, never, A>;
|
|
23
23
|
onValid: (input: SemverRangeEffectInput<SR.Valid>) => Effect.Effect<Env | never, never, A>;
|
|
24
|
-
|
|
24
|
+
onLocalPackageSemverRangeMismatch: (input: SemverRangeEffectInput<SR.LocalPackageSemverRangeMismatch>) => Effect.Effect<Env | never, never, A>;
|
|
25
25
|
onComplete: (ctx: Ctx, results: A[]) => Effect.Effect<Env | never, never, A>;
|
|
26
26
|
}
|
|
27
27
|
export interface VersionEffects<A> {
|
|
@@ -33,8 +33,8 @@ export interface VersionEffects<A> {
|
|
|
33
33
|
onPinnedMismatch: (input: VersionEffectInput<VR.PinnedMismatch>) => Effect.Effect<Env | never, never, A>;
|
|
34
34
|
onSameRangeMismatch: (input: VersionEffectInput<VR.SameRangeMismatch>) => Effect.Effect<Env | never, never, A>;
|
|
35
35
|
onSnappedToMismatch: (input: VersionEffectInput<VR.SnappedToMismatch>) => Effect.Effect<Env | never, never, A>;
|
|
36
|
-
|
|
36
|
+
onNonSemverMismatch: (input: VersionEffectInput<VR.NonSemverMismatch>) => Effect.Effect<Env | never, never, A>;
|
|
37
37
|
onValid: (input: VersionEffectInput<VR.Valid>) => Effect.Effect<Env | never, never, A>;
|
|
38
|
-
|
|
38
|
+
onLocalPackageMismatch: (input: VersionEffectInput<VR.LocalPackageMismatch>) => Effect.Effect<Env | never, never, A>;
|
|
39
39
|
onComplete: (ctx: Ctx, results: A[]) => Effect.Effect<Env | never, never, A>;
|
|
40
40
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Effect from '@effect/io/Effect';
|
|
2
|
-
import type { DeprecatedTypesError } from '../config/get-enabled-types';
|
|
2
|
+
import type { DeprecatedTypesError, RenamedWorkspaceTypeError } from '../config/get-enabled-types';
|
|
3
3
|
import type { Env } from '../env/create-env';
|
|
4
4
|
import type { Ctx } from '../get-context';
|
|
5
5
|
import type { SemverGroupConfigError } from '../get-semver-groups';
|
|
6
6
|
import type { SemverRangeEffects } from './effects';
|
|
7
|
-
export declare function createSemverRangesProgram<T extends SemverRangeEffects<any>>(ctx: Ctx, effects: T): Effect.Effect<Env, SemverGroupConfigError | DeprecatedTypesError, Ctx>;
|
|
7
|
+
export declare function createSemverRangesProgram<T extends SemverRangeEffects<any>>(ctx: Ctx, effects: T): Effect.Effect<Env, SemverGroupConfigError | DeprecatedTypesError | RenamedWorkspaceTypeError, Ctx>;
|
|
@@ -30,7 +30,7 @@ const Effect = __importStar(require("@effect/io/Effect"));
|
|
|
30
30
|
const Match = __importStar(require("@effect/match"));
|
|
31
31
|
const get_semver_groups_1 = require("../get-semver-groups");
|
|
32
32
|
function createSemverRangesProgram(ctx, effects) {
|
|
33
|
-
return (0, Function_1.pipe)((0, get_semver_groups_1.getSemverGroups)(ctx), Effect.flatMap((semverGroups) => Effect.
|
|
33
|
+
return (0, Function_1.pipe)((0, get_semver_groups_1.getSemverGroups)(ctx), Effect.flatMap((semverGroups) => Effect.all(semverGroups.flatMap((group) => group.inspect().map((reportEffect, index) => (0, Function_1.pipe)((0, Unify_1.unify)(reportEffect), Effect.flatMap((0, Function_1.pipe)(Match.type(), Match.tagsExhaustive({
|
|
34
34
|
FilteredOut(report) {
|
|
35
35
|
return effects.onFilteredOut({ ctx, group, index, report });
|
|
36
36
|
},
|
|
@@ -44,12 +44,12 @@ function createSemverRangesProgram(ctx, effects) {
|
|
|
44
44
|
SemverRangeMismatch(report) {
|
|
45
45
|
return effects.onSemverRangeMismatch({ ctx, group, index, report });
|
|
46
46
|
},
|
|
47
|
-
|
|
48
|
-
return effects.
|
|
47
|
+
NonSemverVersion(report) {
|
|
48
|
+
return effects.onNonSemverVersion({ ctx, group, index, report });
|
|
49
49
|
},
|
|
50
|
-
|
|
51
|
-
return effects.
|
|
50
|
+
LocalPackageSemverRangeMismatch(report) {
|
|
51
|
+
return effects.onLocalPackageSemverRangeMismatch({ ctx, group, index, report });
|
|
52
52
|
},
|
|
53
|
-
})))))), Effect.flatMap((results) => effects.onComplete(ctx, results)), Effect.map(() => ctx));
|
|
53
|
+
})))), { concurrency: 'inherit' })), Effect.flatMap((results) => effects.onComplete(ctx, results)), Effect.map(() => ctx));
|
|
54
54
|
}
|
|
55
55
|
exports.createSemverRangesProgram = createSemverRangesProgram;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Effect from '@effect/io/Effect';
|
|
2
|
-
import type { DeprecatedTypesError } from '../config/get-enabled-types';
|
|
2
|
+
import type { DeprecatedTypesError, RenamedWorkspaceTypeError } from '../config/get-enabled-types';
|
|
3
3
|
import type { Env } from '../env/create-env';
|
|
4
4
|
import type { Ctx } from '../get-context';
|
|
5
5
|
import type { VersionGroupConfigError } from '../get-version-groups';
|
|
6
6
|
import type { VersionEffects } from './effects';
|
|
7
|
-
export declare function createVersionsProgram<T extends VersionEffects<any>>(ctx: Ctx, effects: T): Effect.Effect<Env, VersionGroupConfigError | DeprecatedTypesError, Ctx>;
|
|
7
|
+
export declare function createVersionsProgram<T extends VersionEffects<any>>(ctx: Ctx, effects: T): Effect.Effect<Env, VersionGroupConfigError | DeprecatedTypesError | RenamedWorkspaceTypeError, Ctx>;
|
|
@@ -30,7 +30,7 @@ const Effect = __importStar(require("@effect/io/Effect"));
|
|
|
30
30
|
const Match = __importStar(require("@effect/match"));
|
|
31
31
|
const get_version_groups_1 = require("../get-version-groups");
|
|
32
32
|
function createVersionsProgram(ctx, effects) {
|
|
33
|
-
return (0, Function_1.pipe)((0, get_version_groups_1.getVersionGroups)(ctx), Effect.flatMap((versionGroups) => Effect.
|
|
33
|
+
return (0, Function_1.pipe)((0, get_version_groups_1.getVersionGroups)(ctx), Effect.flatMap((versionGroups) => Effect.all(versionGroups.flatMap((group) => group.inspect().map((reportEffect, index) => (0, Function_1.pipe)((0, Unify_1.unify)(reportEffect), Effect.flatMap((0, Function_1.pipe)(Match.type(), Match.tagsExhaustive({
|
|
34
34
|
FilteredOut(report) {
|
|
35
35
|
return effects.onFilteredOut({ ctx, group, index, report });
|
|
36
36
|
},
|
|
@@ -59,12 +59,12 @@ function createVersionsProgram(ctx, effects) {
|
|
|
59
59
|
SnappedToMismatch(report) {
|
|
60
60
|
return effects.onSnappedToMismatch({ ctx, group, index, report });
|
|
61
61
|
},
|
|
62
|
-
|
|
63
|
-
return effects.
|
|
62
|
+
NonSemverMismatch(report) {
|
|
63
|
+
return effects.onNonSemverMismatch({ ctx, group, index, report });
|
|
64
64
|
},
|
|
65
|
-
|
|
66
|
-
return effects.
|
|
65
|
+
LocalPackageMismatch(report) {
|
|
66
|
+
return effects.onLocalPackageMismatch({ ctx, group, index, report });
|
|
67
67
|
},
|
|
68
|
-
})))))), Effect.flatMap((results) => effects.onComplete(ctx, results)), Effect.map(() => ctx));
|
|
68
|
+
})))), { concurrency: 'inherit' })), Effect.flatMap((results) => effects.onComplete(ctx, results)), Effect.map(() => ctx));
|
|
69
69
|
}
|
|
70
70
|
exports.createVersionsProgram = createVersionsProgram;
|
package/dist/env/create-env.js
CHANGED
|
@@ -29,10 +29,16 @@ const tags_1 = require("./tags");
|
|
|
29
29
|
function createEnv(env) {
|
|
30
30
|
return {
|
|
31
31
|
askForChoice(opts) {
|
|
32
|
-
return Effect.
|
|
32
|
+
return Effect.tryPromise({
|
|
33
|
+
try: () => env.askForChoice(opts),
|
|
34
|
+
catch: (err) => new tags_1.AskForChoiceError({ error: String(err) }),
|
|
35
|
+
});
|
|
33
36
|
},
|
|
34
37
|
askForInput(opts) {
|
|
35
|
-
return Effect.
|
|
38
|
+
return Effect.tryPromise({
|
|
39
|
+
try: () => env.askForInput(opts),
|
|
40
|
+
catch: (err) => new tags_1.AskForInputError({ error: String(err) }),
|
|
41
|
+
});
|
|
36
42
|
},
|
|
37
43
|
// @FIXME: process.exit is probably handled some other way in effect-ts
|
|
38
44
|
exitProcess(code) {
|
|
@@ -41,19 +47,34 @@ function createEnv(env) {
|
|
|
41
47
|
});
|
|
42
48
|
},
|
|
43
49
|
globSync(patterns) {
|
|
44
|
-
return Effect.
|
|
50
|
+
return Effect.try({
|
|
51
|
+
try: () => env.globSync(patterns),
|
|
52
|
+
catch: (err) => new tags_1.GlobError({ error: String(err) }),
|
|
53
|
+
});
|
|
45
54
|
},
|
|
46
55
|
readConfigFileSync(filePath) {
|
|
47
|
-
return Effect.
|
|
56
|
+
return Effect.try({
|
|
57
|
+
try: () => env.readConfigFileSync(filePath),
|
|
58
|
+
catch: (err) => new tags_1.ReadConfigFileError({ filePath: filePath || '', error: String(err) }),
|
|
59
|
+
});
|
|
48
60
|
},
|
|
49
61
|
readFileSync(filePath) {
|
|
50
|
-
return Effect.
|
|
62
|
+
return Effect.try({
|
|
63
|
+
try: () => env.readFileSync(filePath),
|
|
64
|
+
catch: (err) => new tags_1.ReadFileError({ filePath, error: String(err) }),
|
|
65
|
+
});
|
|
51
66
|
},
|
|
52
67
|
readYamlFileSync(filePath) {
|
|
53
|
-
return Effect.
|
|
68
|
+
return Effect.try({
|
|
69
|
+
try: () => env.readYamlFileSync(filePath),
|
|
70
|
+
catch: (err) => new tags_1.ReadYamlFileError({ filePath, error: String(err) }),
|
|
71
|
+
});
|
|
54
72
|
},
|
|
55
73
|
writeFileSync(filePath, contents) {
|
|
56
|
-
return Effect.
|
|
74
|
+
return Effect.try({
|
|
75
|
+
try: () => env.writeFileSync(filePath, contents),
|
|
76
|
+
catch: (err) => new tags_1.WriteFileError({ filePath, error: String(err) }),
|
|
77
|
+
});
|
|
57
78
|
},
|
|
58
79
|
};
|
|
59
80
|
}
|