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
package/dist/env/default-env.js
CHANGED
|
@@ -25,14 +25,21 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.defaultEnv = void 0;
|
|
27
27
|
const cosmiconfig_1 = require("cosmiconfig");
|
|
28
|
+
const pipe_1 = require("tightrope/fn/pipe");
|
|
29
|
+
const from_try_1 = require("tightrope/result/from-try");
|
|
30
|
+
const unwrap_or_else_1 = require("tightrope/result/unwrap-or-else");
|
|
28
31
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
29
32
|
// @ts-ignore Select *does* exist
|
|
30
33
|
const enquirer_1 = require("enquirer");
|
|
31
|
-
const
|
|
34
|
+
const fs_1 = require("fs");
|
|
32
35
|
const globby = __importStar(require("globby"));
|
|
33
36
|
const path_1 = require("path");
|
|
34
37
|
const readYamlFile = __importStar(require("read-yaml-file"));
|
|
35
38
|
const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
|
|
39
|
+
const result_1 = require("tightrope/result");
|
|
40
|
+
const filter_1 = require("tightrope/result/filter");
|
|
41
|
+
const map_1 = require("tightrope/result/map");
|
|
42
|
+
const map_err_1 = require("tightrope/result/map-err");
|
|
36
43
|
const constants_1 = require("../constants");
|
|
37
44
|
const log_verbose_1 = require("../lib/log-verbose");
|
|
38
45
|
exports.defaultEnv = {
|
|
@@ -64,12 +71,10 @@ exports.defaultEnv = {
|
|
|
64
71
|
const result = configPath ? client.load(configPath) : client.search();
|
|
65
72
|
if (!(0, is_non_empty_object_1.isNonEmptyObject)(result)) {
|
|
66
73
|
const rcPath = (0, path_1.join)(constants_1.CWD, 'package.json');
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
(0, log_verbose_1.logVerbose)('no config file found');
|
|
72
|
-
return {};
|
|
74
|
+
return (0, pipe_1.pipe)((0, from_try_1.fromTry)(() => (0, fs_1.readFileSync)(rcPath, { encoding: 'utf8' })), (0, map_1.map)(JSON.parse), (0, map_1.map)((pjson) => { var _a; return (_a = pjson === null || pjson === void 0 ? void 0 : pjson.config) === null || _a === void 0 ? void 0 : _a.syncpack; }), (0, filter_1.filter)(is_non_empty_object_1.isNonEmptyObject, 'no config file found'), (0, map_err_1.mapErr)((err) => {
|
|
75
|
+
(0, log_verbose_1.logVerbose)('no config file found');
|
|
76
|
+
return err;
|
|
77
|
+
}), (0, unwrap_or_else_1.unwrapOrElse)(() => new result_1.Ok({})));
|
|
73
78
|
}
|
|
74
79
|
const rcPath = result.filepath;
|
|
75
80
|
const rcConfig = result.config;
|
|
@@ -80,7 +85,7 @@ exports.defaultEnv = {
|
|
|
80
85
|
/* istanbul ignore next */
|
|
81
86
|
readFileSync(filePath) {
|
|
82
87
|
(0, log_verbose_1.logVerbose)('readFileSync(', filePath, ')');
|
|
83
|
-
return (0,
|
|
88
|
+
return (0, fs_1.readFileSync)(filePath, { encoding: 'utf8' });
|
|
84
89
|
},
|
|
85
90
|
/* istanbul ignore next */
|
|
86
91
|
readYamlFileSync(filePath) {
|
|
@@ -90,6 +95,6 @@ exports.defaultEnv = {
|
|
|
90
95
|
/* istanbul ignore next */
|
|
91
96
|
writeFileSync(filePath, contents) {
|
|
92
97
|
(0, log_verbose_1.logVerbose)('writeFileSync(', filePath, contents, ')');
|
|
93
|
-
(0,
|
|
98
|
+
(0, fs_1.writeFileSync)(filePath, contents);
|
|
94
99
|
},
|
|
95
100
|
};
|
|
@@ -29,6 +29,6 @@ const Effect = __importStar(require("@effect/io/Effect"));
|
|
|
29
29
|
const tags_1 = require("./tags");
|
|
30
30
|
// @TODO what's the effect-ts way to process.exit?
|
|
31
31
|
function exitIfInvalid(ctx) {
|
|
32
|
-
return (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => (ctx.isInvalid ? env.exitProcess(1) : Effect.unit
|
|
32
|
+
return (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => (ctx.isInvalid ? env.exitProcess(1) : Effect.unit)), Effect.map(() => ctx));
|
|
33
33
|
}
|
|
34
34
|
exports.exitIfInvalid = exitIfInvalid;
|
|
@@ -35,7 +35,7 @@ const get_indent_1 = require("../config/get-indent");
|
|
|
35
35
|
const constants_1 = require("../constants");
|
|
36
36
|
const tags_1 = require("./tags");
|
|
37
37
|
function writeIfChanged(ctx) {
|
|
38
|
-
return (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => Effect.all(ctx.packageJsonFiles.map((file) => (0, Function_1.pipe)(Effect.Do
|
|
38
|
+
return (0, Function_1.pipe)(tags_1.EnvTag, Effect.flatMap((env) => Effect.all(ctx.packageJsonFiles.map((file) => (0, Function_1.pipe)(Effect.Do, Effect.bind('nextJson', () => toJson(file)), Effect.bind('hasChanged', ({ nextJson }) => Effect.succeed(file.json !== nextJson)), Effect.flatMap(({ hasChanged, nextJson }) => hasChanged
|
|
39
39
|
? (0, Function_1.pipe)(env.writeFileSync(file.filePath, nextJson), Effect.flatMap(() => Effect.sync(() => {
|
|
40
40
|
console.log((0, chalk_1.default) `{green ${constants_1.ICON.tick}}`, file.shortPath);
|
|
41
41
|
})))
|
|
@@ -1,5 +1,5 @@
|
|
|
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 { GlobError, ReadConfigFileError, ReadFileError, WriteFileError } from '../env/tags';
|
|
4
4
|
import type { NoSourcesFoundError } from '../get-package-json-files/get-file-paths';
|
|
5
5
|
import type { JsonParseError } from '../get-package-json-files/get-patterns/read-json-safe';
|
|
@@ -12,6 +12,7 @@ export interface ErrorHandlers<R = Effect.Effect<never, never, void>> {
|
|
|
12
12
|
NoSourcesFoundError(err: NoSourcesFoundError): R;
|
|
13
13
|
ReadConfigFileError(err: ReadConfigFileError): R;
|
|
14
14
|
ReadFileError(err: ReadFileError): R;
|
|
15
|
+
RenamedWorkspaceTypeError(err: RenamedWorkspaceTypeError): R;
|
|
15
16
|
SemverGroupConfigError(err: SemverGroupConfigError): R;
|
|
16
17
|
VersionGroupConfigError(err: VersionGroupConfigError): R;
|
|
17
18
|
WriteFileError(err: WriteFileError): R;
|
|
@@ -44,6 +44,9 @@ const createErrorHandlers = (errorHandlers) => ({
|
|
|
44
44
|
ReadFileError(err) {
|
|
45
45
|
return Effect.sync(() => errorHandlers.ReadFileError(err));
|
|
46
46
|
},
|
|
47
|
+
RenamedWorkspaceTypeError(err) {
|
|
48
|
+
return Effect.sync(() => errorHandlers.RenamedWorkspaceTypeError(err));
|
|
49
|
+
},
|
|
47
50
|
SemverGroupConfigError(err) {
|
|
48
51
|
return Effect.sync(() => errorHandlers.SemverGroupConfigError(err));
|
|
49
52
|
},
|
|
@@ -37,6 +37,11 @@ exports.defaultErrorHandlers = {
|
|
|
37
37
|
console.log(chalk_1.default.red(' File:', err.filePath));
|
|
38
38
|
console.log(chalk_1.default.red(' Error:', err.error));
|
|
39
39
|
},
|
|
40
|
+
RenamedWorkspaceTypeError() {
|
|
41
|
+
const url = 'https://github.com/JamieMason/syncpack/releases/tag/11.2.1';
|
|
42
|
+
console.log(chalk_1.default.red(constants_1.ICON.panic, `The "workspace" dependency type was renamed to "local" in ${url}`));
|
|
43
|
+
console.log(chalk_1.default.red(' Docs: https://jamiemason.github.io/syncpack/config/dependency-types'));
|
|
44
|
+
},
|
|
40
45
|
SemverGroupConfigError(err) {
|
|
41
46
|
console.log(chalk_1.default.red(constants_1.ICON.panic, 'Your semver group config contains an error'));
|
|
42
47
|
console.log(chalk_1.default.red(' Error:', err.error));
|
|
@@ -26,11 +26,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.getContext = void 0;
|
|
27
27
|
const Function_1 = require("@effect/data/Function");
|
|
28
28
|
const Effect = __importStar(require("@effect/io/Effect"));
|
|
29
|
-
const
|
|
29
|
+
const tag_1 = require("../config/tag");
|
|
30
30
|
const tags_1 = require("../env/tags");
|
|
31
31
|
const get_package_json_files_1 = require("../get-package-json-files");
|
|
32
32
|
function getContext() {
|
|
33
|
-
return (0, Function_1.pipe)(Effect.Do
|
|
33
|
+
return (0, Function_1.pipe)(Effect.Do, Effect.bind('cli', () => tag_1.CliConfigTag), Effect.bind('env', () => tags_1.EnvTag), Effect.bind('rcFile', ({ cli, env }) => env.readConfigFileSync(cli.configPath)), Effect.bind('packageJsonFiles', get_package_json_files_1.getPackageJsonFiles), Effect.map(({ cli, rcFile, packageJsonFiles }) => ({
|
|
34
34
|
config: { cli, rcFile },
|
|
35
35
|
isInvalid: false,
|
|
36
36
|
packageJsonFiles,
|
|
@@ -32,7 +32,7 @@ const is_array_of_strings_1 = require("tightrope/guard/is-array-of-strings");
|
|
|
32
32
|
const constants_1 = require("../../constants");
|
|
33
33
|
const read_json_safe_1 = require("./read-json-safe");
|
|
34
34
|
function getLernaPatterns() {
|
|
35
|
-
return (0, Function_1.pipe)((0, read_json_safe_1.readJsonSafe)((0, path_1.join)(constants_1.CWD, 'lerna.json')), Effect.map((file) => (0, is_array_of_strings_1.isArrayOfStrings)(file
|
|
35
|
+
return (0, Function_1.pipe)((0, read_json_safe_1.readJsonSafe)((0, path_1.join)(constants_1.CWD, 'lerna.json')), Effect.map((file) => { var _a; return (0, is_array_of_strings_1.isArrayOfStrings)((_a = file === null || file === void 0 ? void 0 : file.contents) === null || _a === void 0 ? void 0 : _a.packages) ? O.some(file.contents.packages) : O.none(); }), Effect.catchTags({
|
|
36
36
|
ReadFileError: () => Effect.succeed(O.none()),
|
|
37
37
|
JsonParseError: () => Effect.succeed(O.none()),
|
|
38
38
|
}));
|
|
@@ -37,7 +37,7 @@ function getPnpmPatterns() {
|
|
|
37
37
|
// - "packages/**"
|
|
38
38
|
// - "components/**"
|
|
39
39
|
// - "!**/test/**"
|
|
40
|
-
tags_1.EnvTag, Effect.flatMap((env) => env.readYamlFileSync((0, path_1.join)(constants_1.CWD, 'pnpm-workspace.yaml'))), Effect.map((file) => ((0, is_array_of_strings_1.isArrayOfStrings)(file
|
|
40
|
+
tags_1.EnvTag, Effect.flatMap((env) => env.readYamlFileSync((0, path_1.join)(constants_1.CWD, 'pnpm-workspace.yaml'))), Effect.map((file) => ((0, is_array_of_strings_1.isArrayOfStrings)(file === null || file === void 0 ? void 0 : file.packages) ? O.some(file.packages) : O.none())), Effect.catchTags({
|
|
41
41
|
ReadYamlFileError: () => Effect.succeed(O.none()),
|
|
42
42
|
}));
|
|
43
43
|
}
|
|
@@ -33,12 +33,15 @@ const is_non_empty_object_1 = require("tightrope/guard/is-non-empty-object");
|
|
|
33
33
|
const constants_1 = require("../../constants");
|
|
34
34
|
const read_json_safe_1 = require("./read-json-safe");
|
|
35
35
|
function getYarnPatterns() {
|
|
36
|
-
return (0, Function_1.pipe)((0, read_json_safe_1.readJsonSafe)((0, path_1.join)(constants_1.CWD, 'package.json')), Effect.map((file) =>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
? O.some(file.contents.workspaces)
|
|
41
|
-
:
|
|
36
|
+
return (0, Function_1.pipe)((0, read_json_safe_1.readJsonSafe)((0, path_1.join)(constants_1.CWD, 'package.json')), Effect.map((file) => {
|
|
37
|
+
var _a, _b, _c;
|
|
38
|
+
return (0, is_non_empty_object_1.isNonEmptyObject)((_a = file === null || file === void 0 ? void 0 : file.contents) === null || _a === void 0 ? void 0 : _a.workspaces) &&
|
|
39
|
+
(0, is_array_of_strings_1.isArrayOfStrings)((_b = file.contents.workspaces) === null || _b === void 0 ? void 0 : _b.packages)
|
|
40
|
+
? O.some(file.contents.workspaces.packages)
|
|
41
|
+
: (0, is_array_of_strings_1.isArrayOfStrings)((_c = file === null || file === void 0 ? void 0 : file.contents) === null || _c === void 0 ? void 0 : _c.workspaces)
|
|
42
|
+
? O.some(file.contents.workspaces)
|
|
43
|
+
: O.none();
|
|
44
|
+
}), Effect.catchTags({
|
|
42
45
|
ReadFileError: () => Effect.succeed(O.none()),
|
|
43
46
|
JsonParseError: () => Effect.succeed(O.none()),
|
|
44
47
|
}));
|
|
@@ -40,7 +40,7 @@ const get_yarn_patterns_1 = require("./get-yarn-patterns");
|
|
|
40
40
|
* @returns `['./package.json', './packages/* /package.json']`
|
|
41
41
|
*/
|
|
42
42
|
function getPatterns(config) {
|
|
43
|
-
return (0, Function_1.pipe)(getCliPatterns(), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_yarn_patterns_1.getYarnPatterns)())), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_pnpm_patterns_1.getPnpmPatterns)())), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_lerna_patterns_1.getLernaPatterns)())), Effect.map((option) => (0, Function_1.pipe)(option, O.map(addRootDir), O.map(limitToPackageJson), O.getOrElse(() => constants_1.
|
|
43
|
+
return (0, Function_1.pipe)(getCliPatterns(), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_yarn_patterns_1.getYarnPatterns)())), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_pnpm_patterns_1.getPnpmPatterns)())), Effect.flatMap((option) => (O.isSome(option) ? Effect.succeed(option) : (0, get_lerna_patterns_1.getLernaPatterns)())), Effect.map((option) => (0, Function_1.pipe)(option, O.map(addRootDir), O.map(limitToPackageJson), O.getOrElse(() => [...constants_1.DEFAULT_CONFIG.source]))));
|
|
44
44
|
function getCliPatterns() {
|
|
45
45
|
return (0, Function_1.pipe)(O.some((0, get_source_1.getSource)(config)), O.filter(is_array_of_strings_1.isArrayOfStrings), Effect.succeed);
|
|
46
46
|
}
|
|
@@ -33,8 +33,11 @@ class JsonParseError extends Data.TaggedClass('JsonParseError') {
|
|
|
33
33
|
exports.JsonParseError = JsonParseError;
|
|
34
34
|
// @TODO: move to env.readJsonFileSync
|
|
35
35
|
function readJsonSafe(filePath) {
|
|
36
|
-
return (0, Function_1.pipe)(Effect.Do
|
|
36
|
+
return (0, Function_1.pipe)(Effect.Do, Effect.bind('env', () => tags_1.EnvTag), Effect.bind('json', ({ env }) => env.readFileSync(filePath)), Effect.bind('contents', ({ json }) =>
|
|
37
37
|
// @TODO: move to env.parseJson
|
|
38
|
-
Effect.
|
|
38
|
+
Effect.try({
|
|
39
|
+
try: () => JSON.parse(json),
|
|
40
|
+
catch: (err) => new JsonParseError({ error: String(err), filePath, json }),
|
|
41
|
+
})), Effect.map(({ contents, json }) => ({ contents, filePath, json })));
|
|
39
42
|
}
|
|
40
43
|
exports.readJsonSafe = readJsonSafe;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Strategy } from '../config/get-custom-types';
|
|
2
2
|
import type { Ctx } from '../get-context';
|
|
3
|
+
import type { Instance } from '../instance';
|
|
3
4
|
import type { JsonFile } from './get-patterns/read-json-safe';
|
|
4
|
-
import { Instance } from './instance';
|
|
5
5
|
export interface PackageJson {
|
|
6
6
|
bugs?: {
|
|
7
7
|
url: string;
|
|
@@ -34,6 +34,8 @@ export declare class PackageJsonFile {
|
|
|
34
34
|
contents: PackageJson;
|
|
35
35
|
/** absolute path on disk to this file */
|
|
36
36
|
readonly filePath: string;
|
|
37
|
+
/** absolute path on disk to this file's directory */
|
|
38
|
+
readonly dirPath: string;
|
|
37
39
|
/** raw file contents of the file */
|
|
38
40
|
readonly json: string;
|
|
39
41
|
/** resolved configuration */
|
|
@@ -41,5 +43,5 @@ export declare class PackageJsonFile {
|
|
|
41
43
|
/** relative path on disk to this file */
|
|
42
44
|
readonly shortPath: string;
|
|
43
45
|
constructor(jsonFile: JsonFile<PackageJson>, config: Ctx['config']);
|
|
44
|
-
getInstances(enabledTypes: Strategy.Any[]): Instance[];
|
|
46
|
+
getInstances(enabledTypes: Strategy.Any[]): Instance.Any[];
|
|
45
47
|
}
|
|
@@ -5,22 +5,23 @@ const Function_1 = require("@effect/data/Function");
|
|
|
5
5
|
const path_1 = require("path");
|
|
6
6
|
const map_1 = require("tightrope/result/map");
|
|
7
7
|
const constants_1 = require("../constants");
|
|
8
|
+
const create_1 = require("../instance/create");
|
|
8
9
|
const log_verbose_1 = require("../lib/log-verbose");
|
|
9
|
-
const instance_1 = require("./instance");
|
|
10
10
|
class PackageJsonFile {
|
|
11
11
|
constructor(jsonFile, config) {
|
|
12
12
|
this.config = config;
|
|
13
13
|
this.contents = jsonFile.contents;
|
|
14
14
|
this.filePath = jsonFile.filePath;
|
|
15
|
+
this.dirPath = (0, path_1.dirname)(jsonFile.filePath);
|
|
15
16
|
this.json = jsonFile.json;
|
|
16
17
|
this.shortPath = (0, path_1.relative)(constants_1.CWD, jsonFile.filePath);
|
|
17
18
|
}
|
|
18
19
|
getInstances(enabledTypes) {
|
|
19
20
|
const instances = [];
|
|
20
21
|
enabledTypes.forEach((strategy) => {
|
|
21
|
-
(0, Function_1.pipe)(strategy.read(this), (0, map_1.map)((entries) => entries.forEach(([name,
|
|
22
|
-
(0, log_verbose_1.logVerbose)(`add ${name}@${
|
|
23
|
-
instances.push(
|
|
22
|
+
(0, Function_1.pipe)(strategy.read(this), (0, map_1.map)((entries) => entries.forEach(([name, specifier]) => {
|
|
23
|
+
(0, log_verbose_1.logVerbose)(`add ${name}@${specifier} to ${strategy.name}:${strategy._tag} ${this.shortPath}`);
|
|
24
|
+
instances.push((0, create_1.createInstance)(strategy, name, this, specifier));
|
|
24
25
|
})));
|
|
25
26
|
});
|
|
26
27
|
return instances;
|
|
@@ -3,17 +3,17 @@ import * as Effect from '@effect/io/Effect';
|
|
|
3
3
|
import { SemverGroupReport } from '.';
|
|
4
4
|
import type { GroupConfig } from '../config/types';
|
|
5
5
|
import type { Ctx } from '../get-context';
|
|
6
|
-
import type { Instance } from '../
|
|
6
|
+
import type { Instance } from '../instance';
|
|
7
7
|
declare const FilteredOutSemverGroup_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 & {
|
|
8
8
|
_tag: "FilteredOut";
|
|
9
9
|
}>;
|
|
10
10
|
export declare class FilteredOutSemverGroup extends FilteredOutSemverGroup_base<{
|
|
11
11
|
config: GroupConfig;
|
|
12
12
|
filter: string;
|
|
13
|
-
instances: Instance[];
|
|
13
|
+
instances: Instance.Any[];
|
|
14
14
|
}> {
|
|
15
15
|
constructor(ctx: Ctx);
|
|
16
|
-
canAdd(instance: Instance): boolean;
|
|
16
|
+
canAdd(instance: Instance.Any): boolean;
|
|
17
17
|
inspect(): Effect.Effect<never, never, SemverGroupReport.FilteredOut>[];
|
|
18
18
|
}
|
|
19
19
|
export {};
|
|
@@ -2,16 +2,16 @@ import * as Data from '@effect/data/Data';
|
|
|
2
2
|
import * as Effect from '@effect/io/Effect';
|
|
3
3
|
import { SemverGroupReport } from '.';
|
|
4
4
|
import type { SemverGroupConfig } from '../config/types';
|
|
5
|
-
import type { Instance } from '../
|
|
5
|
+
import type { Instance } from '../instance';
|
|
6
6
|
declare const IgnoredSemverGroup_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 & {
|
|
7
7
|
_tag: "Ignored";
|
|
8
8
|
}>;
|
|
9
9
|
export declare class IgnoredSemverGroup extends IgnoredSemverGroup_base<{
|
|
10
10
|
config: SemverGroupConfig.Ignored;
|
|
11
|
-
instances: Instance[];
|
|
11
|
+
instances: Instance.Any[];
|
|
12
12
|
}> {
|
|
13
13
|
constructor(config: SemverGroupConfig.Ignored);
|
|
14
|
-
canAdd(_: Instance): boolean;
|
|
14
|
+
canAdd(_: Instance.Any): boolean;
|
|
15
15
|
inspect(): Effect.Effect<never, never, SemverGroupReport.Ignored>[];
|
|
16
16
|
}
|
|
17
17
|
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as Data from '@effect/data/Data';
|
|
2
2
|
import * as Effect from '@effect/io/Effect';
|
|
3
3
|
import type { Union } from 'ts-toolbelt';
|
|
4
|
-
import type { DeprecatedTypesError } from '../config/get-enabled-types';
|
|
4
|
+
import type { DeprecatedTypesError, RenamedWorkspaceTypeError } from '../config/get-enabled-types';
|
|
5
5
|
import type { Ctx } from '../get-context';
|
|
6
|
-
import type { Instance } from '../
|
|
6
|
+
import type { Instance } from '../instance';
|
|
7
7
|
import { FilteredOutSemverGroup } from './filtered-out';
|
|
8
8
|
import { IgnoredSemverGroup } from './ignored';
|
|
9
9
|
import { WithRangeSemverGroup } from './with-range';
|
|
@@ -14,7 +14,7 @@ export declare namespace SemverGroupReport {
|
|
|
14
14
|
}>;
|
|
15
15
|
export class FilteredOut extends FilteredOut_base<{
|
|
16
16
|
name: string;
|
|
17
|
-
instance: Instance;
|
|
17
|
+
instance: Instance.Any;
|
|
18
18
|
readonly isValid: true;
|
|
19
19
|
}> {
|
|
20
20
|
}
|
|
@@ -23,7 +23,7 @@ export declare namespace SemverGroupReport {
|
|
|
23
23
|
}>;
|
|
24
24
|
export class Ignored extends Ignored_base<{
|
|
25
25
|
name: string;
|
|
26
|
-
instance: Instance;
|
|
26
|
+
instance: Instance.Any;
|
|
27
27
|
readonly isValid: true;
|
|
28
28
|
}> {
|
|
29
29
|
}
|
|
@@ -32,16 +32,16 @@ export declare namespace SemverGroupReport {
|
|
|
32
32
|
}>;
|
|
33
33
|
export class Valid extends Valid_base<{
|
|
34
34
|
name: string;
|
|
35
|
-
instance: Instance;
|
|
35
|
+
instance: Instance.Any;
|
|
36
36
|
readonly isValid: true;
|
|
37
37
|
}> {
|
|
38
38
|
}
|
|
39
|
-
const
|
|
40
|
-
_tag: "
|
|
39
|
+
const LocalPackageSemverRangeMismatch_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 & {
|
|
40
|
+
_tag: "LocalPackageSemverRangeMismatch";
|
|
41
41
|
}>;
|
|
42
|
-
export class
|
|
42
|
+
export class LocalPackageSemverRangeMismatch extends LocalPackageSemverRangeMismatch_base<{
|
|
43
43
|
name: string;
|
|
44
|
-
instance: Instance;
|
|
44
|
+
instance: Instance.Any;
|
|
45
45
|
readonly isValid: false;
|
|
46
46
|
readonly expectedVersion: string;
|
|
47
47
|
}> {
|
|
@@ -51,24 +51,24 @@ export declare namespace SemverGroupReport {
|
|
|
51
51
|
}>;
|
|
52
52
|
export class SemverRangeMismatch extends SemverRangeMismatch_base<{
|
|
53
53
|
name: string;
|
|
54
|
-
instance: Instance;
|
|
54
|
+
instance: Instance.Any;
|
|
55
55
|
readonly isValid: false;
|
|
56
56
|
readonly expectedVersion: string;
|
|
57
57
|
}> {
|
|
58
58
|
}
|
|
59
|
-
const
|
|
60
|
-
_tag: "
|
|
59
|
+
const NonSemverVersion_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 & {
|
|
60
|
+
_tag: "NonSemverVersion";
|
|
61
61
|
}>;
|
|
62
|
-
export class
|
|
62
|
+
export class NonSemverVersion extends NonSemverVersion_base<{
|
|
63
63
|
name: string;
|
|
64
|
-
instance: Instance;
|
|
64
|
+
instance: Instance.Any;
|
|
65
65
|
readonly isValid: false;
|
|
66
66
|
}> {
|
|
67
67
|
}
|
|
68
68
|
export type ValidCases = Union.Strict<FilteredOut | Ignored | Valid>;
|
|
69
|
-
export type InvalidCases = Union.Strict<SemverRangeMismatch |
|
|
70
|
-
export type FixableCases = Union.Strict<SemverRangeMismatch |
|
|
71
|
-
export type UnfixableCases = Union.Strict<
|
|
69
|
+
export type InvalidCases = Union.Strict<SemverRangeMismatch | NonSemverVersion | LocalPackageSemverRangeMismatch>;
|
|
70
|
+
export type FixableCases = Union.Strict<SemverRangeMismatch | LocalPackageSemverRangeMismatch>;
|
|
71
|
+
export type UnfixableCases = Union.Strict<NonSemverVersion>;
|
|
72
72
|
export type Any = Union.Strict<ValidCases | InvalidCases>;
|
|
73
73
|
export {};
|
|
74
74
|
}
|
|
@@ -80,5 +80,5 @@ export declare class SemverGroupConfigError extends SemverGroupConfigError_base<
|
|
|
80
80
|
readonly error: string;
|
|
81
81
|
}> {
|
|
82
82
|
}
|
|
83
|
-
export declare function getSemverGroups(ctx: Ctx): Effect.Effect<never, SemverGroupConfigError | DeprecatedTypesError, AnySemverGroup[]>;
|
|
83
|
+
export declare function getSemverGroups(ctx: Ctx): Effect.Effect<never, SemverGroupConfigError | DeprecatedTypesError | RenamedWorkspaceTypeError, AnySemverGroup[]>;
|
|
84
84
|
export {};
|
|
@@ -50,21 +50,21 @@ var SemverGroupReport;
|
|
|
50
50
|
class Valid extends Data.TaggedClass('Valid') {
|
|
51
51
|
}
|
|
52
52
|
SemverGroupReport.Valid = Valid;
|
|
53
|
-
class
|
|
53
|
+
class LocalPackageSemverRangeMismatch extends Data.TaggedClass('LocalPackageSemverRangeMismatch') {
|
|
54
54
|
}
|
|
55
|
-
SemverGroupReport.
|
|
55
|
+
SemverGroupReport.LocalPackageSemverRangeMismatch = LocalPackageSemverRangeMismatch;
|
|
56
56
|
class SemverRangeMismatch extends Data.TaggedClass('SemverRangeMismatch') {
|
|
57
57
|
}
|
|
58
58
|
SemverGroupReport.SemverRangeMismatch = SemverRangeMismatch;
|
|
59
|
-
class
|
|
59
|
+
class NonSemverVersion extends Data.TaggedClass('NonSemverVersion') {
|
|
60
60
|
}
|
|
61
|
-
SemverGroupReport.
|
|
61
|
+
SemverGroupReport.NonSemverVersion = NonSemverVersion;
|
|
62
62
|
})(SemverGroupReport || (exports.SemverGroupReport = SemverGroupReport = {}));
|
|
63
63
|
class SemverGroupConfigError extends Data.TaggedClass('SemverGroupConfigError') {
|
|
64
64
|
}
|
|
65
65
|
exports.SemverGroupConfigError = SemverGroupConfigError;
|
|
66
66
|
function getSemverGroups(ctx) {
|
|
67
|
-
return (0, Function_1.pipe)(Effect.Do
|
|
67
|
+
return (0, Function_1.pipe)(Effect.Do, Effect.bind('enabledTypes', () => (0, get_enabled_types_1.getEnabledTypes)(ctx.config)), Effect.bind('semverGroups', () => createSemverGroups(ctx)), Effect.flatMap(({ enabledTypes, semverGroups }) => {
|
|
68
68
|
for (const file of ctx.packageJsonFiles) {
|
|
69
69
|
instances: for (const instance of file.getInstances(enabledTypes)) {
|
|
70
70
|
for (const group of semverGroups) {
|
|
@@ -2,17 +2,17 @@ import * as Data from '@effect/data/Data';
|
|
|
2
2
|
import * as Effect from '@effect/io/Effect';
|
|
3
3
|
import { SemverGroupReport } from '.';
|
|
4
4
|
import type { SemverGroupConfig } from '../config/types';
|
|
5
|
-
import type { Instance } from '../
|
|
5
|
+
import type { Instance } from '../instance';
|
|
6
6
|
declare const WithRangeSemverGroup_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 & {
|
|
7
7
|
_tag: "WithRange";
|
|
8
8
|
}>;
|
|
9
9
|
export declare class WithRangeSemverGroup extends WithRangeSemverGroup_base<{
|
|
10
10
|
config: SemverGroupConfig.WithRange;
|
|
11
|
-
instances: Instance[];
|
|
11
|
+
instances: Instance.Any[];
|
|
12
12
|
isCatchAll: boolean;
|
|
13
13
|
}> {
|
|
14
14
|
constructor(isCatchAll: boolean, config: SemverGroupConfig.WithRange);
|
|
15
|
-
canAdd(_: Instance): boolean;
|
|
16
|
-
inspect(): Effect.Effect<never, SemverGroupReport.
|
|
15
|
+
canAdd(_: Instance.Any): boolean;
|
|
16
|
+
inspect(): Effect.Effect<never, SemverGroupReport.NonSemverVersion | SemverGroupReport.LocalPackageSemverRangeMismatch | SemverGroupReport.SemverRangeMismatch, SemverGroupReport.Valid>[];
|
|
17
17
|
}
|
|
18
18
|
export {};
|
|
@@ -25,9 +25,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.WithRangeSemverGroup = void 0;
|
|
27
27
|
const Data = __importStar(require("@effect/data/Data"));
|
|
28
|
+
const Option = __importStar(require("@effect/data/Option"));
|
|
28
29
|
const Effect = __importStar(require("@effect/io/Effect"));
|
|
29
30
|
const _1 = require(".");
|
|
30
|
-
const is_supported_1 = require("../guards/is-supported");
|
|
31
31
|
const set_semver_range_1 = require("../lib/set-semver-range");
|
|
32
32
|
class WithRangeSemverGroup extends Data.TaggedClass('WithRange') {
|
|
33
33
|
constructor(isCatchAll, config) {
|
|
@@ -42,25 +42,25 @@ class WithRangeSemverGroup extends Data.TaggedClass('WithRange') {
|
|
|
42
42
|
}
|
|
43
43
|
inspect() {
|
|
44
44
|
return this.instances.map((instance) => {
|
|
45
|
-
if (
|
|
46
|
-
return Effect.fail(new _1.SemverGroupReport.
|
|
45
|
+
if (Option.isNone(instance.getSemverSpecifier())) {
|
|
46
|
+
return Effect.fail(new _1.SemverGroupReport.NonSemverVersion({
|
|
47
47
|
name: instance.name,
|
|
48
48
|
instance,
|
|
49
49
|
isValid: false,
|
|
50
50
|
}));
|
|
51
51
|
}
|
|
52
|
-
const
|
|
53
|
-
const exactVersion = (0, set_semver_range_1.setSemverRange)('', instance.
|
|
54
|
-
const expectedVersion = (0, set_semver_range_1.setSemverRange)(this.config.range, instance.
|
|
55
|
-
if (
|
|
56
|
-
return Effect.fail(new _1.SemverGroupReport.
|
|
52
|
+
const isLocalPackageInstance = instance.strategy.name === 'local';
|
|
53
|
+
const exactVersion = (0, set_semver_range_1.setSemverRange)('', instance.specifier);
|
|
54
|
+
const expectedVersion = (0, set_semver_range_1.setSemverRange)(this.config.range, instance.specifier);
|
|
55
|
+
if (isLocalPackageInstance && instance.specifier !== exactVersion) {
|
|
56
|
+
return Effect.fail(new _1.SemverGroupReport.LocalPackageSemverRangeMismatch({
|
|
57
57
|
name: instance.name,
|
|
58
58
|
instance,
|
|
59
59
|
isValid: false,
|
|
60
60
|
expectedVersion: exactVersion,
|
|
61
61
|
}));
|
|
62
62
|
}
|
|
63
|
-
if (instance.
|
|
63
|
+
if (instance.specifier === expectedVersion) {
|
|
64
64
|
return Effect.succeed(new _1.SemverGroupReport.Valid({
|
|
65
65
|
name: instance.name,
|
|
66
66
|
instance,
|
|
@@ -2,16 +2,16 @@ import * as Data from '@effect/data/Data';
|
|
|
2
2
|
import * as Effect from '@effect/io/Effect';
|
|
3
3
|
import { VersionGroupReport } from '.';
|
|
4
4
|
import type { VersionGroupConfig } from '../config/types';
|
|
5
|
-
import type { Instance } from '../
|
|
5
|
+
import type { Instance } from '../instance';
|
|
6
6
|
declare const BannedVersionGroup_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 & {
|
|
7
7
|
_tag: "Banned";
|
|
8
8
|
}>;
|
|
9
9
|
export declare class BannedVersionGroup extends BannedVersionGroup_base<{
|
|
10
10
|
config: VersionGroupConfig.Banned;
|
|
11
|
-
instances: Instance[];
|
|
11
|
+
instances: Instance.Any[];
|
|
12
12
|
}> {
|
|
13
13
|
constructor(config: VersionGroupConfig.Banned);
|
|
14
|
-
canAdd(_: Instance): boolean;
|
|
14
|
+
canAdd(_: Instance.Any): boolean;
|
|
15
15
|
inspect(): Effect.Effect<never, VersionGroupReport.Banned, never>[];
|
|
16
16
|
}
|
|
17
17
|
export {};
|
|
@@ -3,17 +3,17 @@ import * as Effect from '@effect/io/Effect';
|
|
|
3
3
|
import { VersionGroupReport } from '.';
|
|
4
4
|
import type { GroupConfig } from '../config/types';
|
|
5
5
|
import type { Ctx } from '../get-context';
|
|
6
|
-
import type { Instance } from '../
|
|
6
|
+
import type { Instance } from '../instance';
|
|
7
7
|
declare const FilteredOutVersionGroup_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 & {
|
|
8
8
|
_tag: "FilteredOut";
|
|
9
9
|
}>;
|
|
10
10
|
export declare class FilteredOutVersionGroup extends FilteredOutVersionGroup_base<{
|
|
11
11
|
config: GroupConfig;
|
|
12
12
|
filter: string;
|
|
13
|
-
instances: Instance[];
|
|
13
|
+
instances: Instance.Any[];
|
|
14
14
|
}> {
|
|
15
15
|
constructor(ctx: Ctx);
|
|
16
|
-
canAdd(instance: Instance): boolean;
|
|
16
|
+
canAdd(instance: Instance.Any): boolean;
|
|
17
17
|
inspect(): Effect.Effect<never, never, VersionGroupReport.FilteredOut>[];
|
|
18
18
|
}
|
|
19
19
|
export {};
|
|
@@ -2,16 +2,16 @@ import * as Data from '@effect/data/Data';
|
|
|
2
2
|
import * as Effect from '@effect/io/Effect';
|
|
3
3
|
import { VersionGroupReport } from '.';
|
|
4
4
|
import type { VersionGroupConfig } from '../config/types';
|
|
5
|
-
import type { Instance } from '../
|
|
5
|
+
import type { Instance } from '../instance';
|
|
6
6
|
declare const IgnoredVersionGroup_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 & {
|
|
7
7
|
_tag: "Ignored";
|
|
8
8
|
}>;
|
|
9
9
|
export declare class IgnoredVersionGroup extends IgnoredVersionGroup_base<{
|
|
10
10
|
config: VersionGroupConfig.Ignored;
|
|
11
|
-
instances: Instance[];
|
|
11
|
+
instances: Instance.Any[];
|
|
12
12
|
}> {
|
|
13
13
|
constructor(config: VersionGroupConfig.Ignored);
|
|
14
|
-
canAdd(_: Instance): boolean;
|
|
14
|
+
canAdd(_: Instance.Any): boolean;
|
|
15
15
|
inspect(): Effect.Effect<never, never, VersionGroupReport.Ignored>[];
|
|
16
16
|
}
|
|
17
17
|
export {};
|