@lerna-lite/core 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +16 -0
  3. package/dist/child-process.d.ts +13 -0
  4. package/dist/child-process.js +129 -0
  5. package/dist/child-process.js.map +1 -0
  6. package/dist/command.d.ts +37 -0
  7. package/dist/command.js +269 -0
  8. package/dist/command.js.map +1 -0
  9. package/dist/conventional-commits/constants.d.ts +4 -0
  10. package/dist/conventional-commits/constants.js +13 -0
  11. package/dist/conventional-commits/constants.js.map +1 -0
  12. package/dist/conventional-commits/get-changelog-config.d.ts +12 -0
  13. package/dist/conventional-commits/get-changelog-config.js +92 -0
  14. package/dist/conventional-commits/get-changelog-config.js.map +1 -0
  15. package/dist/conventional-commits/index.d.ts +6 -0
  16. package/dist/conventional-commits/index.js +19 -0
  17. package/dist/conventional-commits/index.js.map +1 -0
  18. package/dist/conventional-commits/make-bump-only-filter.d.ts +6 -0
  19. package/dist/conventional-commits/make-bump-only-filter.js +23 -0
  20. package/dist/conventional-commits/make-bump-only-filter.js.map +1 -0
  21. package/dist/conventional-commits/read-existing-changelog.d.ts +7 -0
  22. package/dist/conventional-commits/read-existing-changelog.js +33 -0
  23. package/dist/conventional-commits/read-existing-changelog.js.map +1 -0
  24. package/dist/conventional-commits/recommend-version.d.ts +10 -0
  25. package/dist/conventional-commits/recommend-version.js +87 -0
  26. package/dist/conventional-commits/recommend-version.js.map +1 -0
  27. package/dist/conventional-commits/update-changelog.d.ts +11 -0
  28. package/dist/conventional-commits/update-changelog.js +84 -0
  29. package/dist/conventional-commits/update-changelog.js.map +1 -0
  30. package/dist/git-clients/github-client.d.ts +6 -0
  31. package/dist/git-clients/github-client.js +41 -0
  32. package/dist/git-clients/github-client.js.map +1 -0
  33. package/dist/git-clients/gitlab-client.d.ts +5 -0
  34. package/dist/git-clients/gitlab-client.js +53 -0
  35. package/dist/git-clients/gitlab-client.js.map +1 -0
  36. package/dist/git-clients/index.d.ts +2 -0
  37. package/dist/git-clients/index.js +15 -0
  38. package/dist/git-clients/index.js.map +1 -0
  39. package/dist/index.d.ts +12 -0
  40. package/dist/index.js +27 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/models/index.d.ts +97 -0
  43. package/dist/models/index.js +3 -0
  44. package/dist/models/index.js.map +1 -0
  45. package/dist/otplease.d.ts +13 -0
  46. package/dist/otplease.js +110 -0
  47. package/dist/otplease.js.map +1 -0
  48. package/dist/package-graph/index.d.ts +2 -0
  49. package/dist/package-graph/index.js +15 -0
  50. package/dist/package-graph/index.js.map +1 -0
  51. package/dist/package-graph/lib/cyclic-package-graph-node.d.ts +41 -0
  52. package/dist/package-graph/lib/cyclic-package-graph-node.js +101 -0
  53. package/dist/package-graph/lib/cyclic-package-graph-node.js.map +1 -0
  54. package/dist/package-graph/lib/index.d.ts +3 -0
  55. package/dist/package-graph/lib/index.js +16 -0
  56. package/dist/package-graph/lib/index.js.map +1 -0
  57. package/dist/package-graph/lib/package-graph-node.d.ts +35 -0
  58. package/dist/package-graph/lib/package-graph-node.js +61 -0
  59. package/dist/package-graph/lib/package-graph-node.js.map +1 -0
  60. package/dist/package-graph/lib/report-cycles.d.ts +1 -0
  61. package/dist/package-graph/lib/report-cycles.js +20 -0
  62. package/dist/package-graph/lib/report-cycles.js.map +1 -0
  63. package/dist/package-graph/package-graph.d.ts +78 -0
  64. package/dist/package-graph/package-graph.js +256 -0
  65. package/dist/package-graph/package-graph.js.map +1 -0
  66. package/dist/package.d.ts +96 -0
  67. package/dist/package.js +260 -0
  68. package/dist/package.js.map +1 -0
  69. package/dist/project/index.d.ts +2 -0
  70. package/dist/project/index.js +15 -0
  71. package/dist/project/index.js.map +1 -0
  72. package/dist/project/lib/apply-extends.d.ts +6 -0
  73. package/dist/project/lib/apply-extends.js +38 -0
  74. package/dist/project/lib/apply-extends.js.map +1 -0
  75. package/dist/project/lib/index.d.ts +3 -0
  76. package/dist/project/lib/index.js +16 -0
  77. package/dist/project/lib/index.js.map +1 -0
  78. package/dist/project/lib/make-file-finder.d.ts +2 -0
  79. package/dist/project/lib/make-file-finder.js +72 -0
  80. package/dist/project/lib/make-file-finder.js.map +1 -0
  81. package/dist/project/lib/shallow-extend.d.ts +5 -0
  82. package/dist/project/lib/shallow-extend.js +25 -0
  83. package/dist/project/lib/shallow-extend.js.map +1 -0
  84. package/dist/project/project.d.ts +50 -0
  85. package/dist/project/project.js +193 -0
  86. package/dist/project/project.js.map +1 -0
  87. package/dist/prompt.d.ts +5 -0
  88. package/dist/prompt.js +65 -0
  89. package/dist/prompt.js.map +1 -0
  90. package/dist/utils/check-working-tree.d.ts +8 -0
  91. package/dist/utils/check-working-tree.js +42 -0
  92. package/dist/utils/check-working-tree.js.map +1 -0
  93. package/dist/utils/clean-stack.d.ts +5 -0
  94. package/dist/utils/clean-stack.js +19 -0
  95. package/dist/utils/clean-stack.js.map +1 -0
  96. package/dist/utils/collect-dependents.d.ts +11 -0
  97. package/dist/utils/collect-dependents.js +46 -0
  98. package/dist/utils/collect-dependents.js.map +1 -0
  99. package/dist/utils/collect-uncommitted.d.ts +19 -0
  100. package/dist/utils/collect-uncommitted.js +46 -0
  101. package/dist/utils/collect-uncommitted.js.map +1 -0
  102. package/dist/utils/collect-updates/collect-updates.d.ts +25 -0
  103. package/dist/utils/collect-updates/collect-updates.js +100 -0
  104. package/dist/utils/collect-updates/collect-updates.js.map +1 -0
  105. package/dist/utils/collect-updates/index.d.ts +2 -0
  106. package/dist/utils/collect-updates/index.js +15 -0
  107. package/dist/utils/collect-updates/index.js.map +1 -0
  108. package/dist/utils/collect-updates/lib/collect-packages.d.ts +13 -0
  109. package/dist/utils/collect-updates/lib/collect-packages.js +34 -0
  110. package/dist/utils/collect-updates/lib/collect-packages.js.map +1 -0
  111. package/dist/utils/collect-updates/lib/get-packages-for-option.d.ts +5 -0
  112. package/dist/utils/collect-updates/lib/get-packages-for-option.js +31 -0
  113. package/dist/utils/collect-updates/lib/get-packages-for-option.js.map +1 -0
  114. package/dist/utils/collect-updates/lib/has-tags.d.ts +5 -0
  115. package/dist/utils/collect-updates/lib/has-tags.js +27 -0
  116. package/dist/utils/collect-updates/lib/has-tags.js.map +1 -0
  117. package/dist/utils/collect-updates/lib/index.d.ts +4 -0
  118. package/dist/utils/collect-updates/lib/index.js +17 -0
  119. package/dist/utils/collect-updates/lib/index.js.map +1 -0
  120. package/dist/utils/collect-updates/lib/make-diff-predicate.d.ts +6 -0
  121. package/dist/utils/collect-updates/lib/make-diff-predicate.js +65 -0
  122. package/dist/utils/collect-updates/lib/make-diff-predicate.js.map +1 -0
  123. package/dist/utils/conf.d.ts +23 -0
  124. package/dist/utils/conf.js +256 -0
  125. package/dist/utils/conf.js.map +1 -0
  126. package/dist/utils/defaults.d.ts +1 -0
  127. package/dist/utils/defaults.js +182 -0
  128. package/dist/utils/defaults.js.map +1 -0
  129. package/dist/utils/describe-ref.d.ts +24 -0
  130. package/dist/utils/describe-ref.js +81 -0
  131. package/dist/utils/describe-ref.js.map +1 -0
  132. package/dist/utils/env-replace.d.ts +1 -0
  133. package/dist/utils/env-replace.js +23 -0
  134. package/dist/utils/env-replace.js.map +1 -0
  135. package/dist/utils/find-prefix.d.ts +2 -0
  136. package/dist/utils/find-prefix.js +49 -0
  137. package/dist/utils/find-prefix.js.map +1 -0
  138. package/dist/utils/format-error.d.ts +7 -0
  139. package/dist/utils/format-error.js +20 -0
  140. package/dist/utils/format-error.js.map +1 -0
  141. package/dist/utils/index.d.ts +23 -0
  142. package/dist/utils/index.js +36 -0
  143. package/dist/utils/index.js.map +1 -0
  144. package/dist/utils/log-package-error.d.ts +5 -0
  145. package/dist/utils/log-package-error.js +36 -0
  146. package/dist/utils/log-package-error.js.map +1 -0
  147. package/dist/utils/nerf-dart.d.ts +1 -0
  148. package/dist/utils/nerf-dart.js +19 -0
  149. package/dist/utils/nerf-dart.js.map +1 -0
  150. package/dist/utils/npm-conf.d.ts +2 -0
  151. package/dist/utils/npm-conf.js +54 -0
  152. package/dist/utils/npm-conf.js.map +1 -0
  153. package/dist/utils/parse-field.d.ts +1 -0
  154. package/dist/utils/parse-field.js +66 -0
  155. package/dist/utils/parse-field.js.map +1 -0
  156. package/dist/utils/prerelease-id-from-version.d.ts +5 -0
  157. package/dist/utils/prerelease-id-from-version.js +16 -0
  158. package/dist/utils/prerelease-id-from-version.js.map +1 -0
  159. package/dist/utils/pulse-till-done.d.ts +1 -0
  160. package/dist/utils/pulse-till-done.js +41 -0
  161. package/dist/utils/pulse-till-done.js.map +1 -0
  162. package/dist/utils/query-graph.d.ts +36 -0
  163. package/dist/utils/query-graph.js +78 -0
  164. package/dist/utils/query-graph.js.map +1 -0
  165. package/dist/utils/run-lifecycle.d.ts +10 -0
  166. package/dist/utils/run-lifecycle.js +109 -0
  167. package/dist/utils/run-lifecycle.js.map +1 -0
  168. package/dist/utils/run-topologically.d.ts +12 -0
  169. package/dist/utils/run-topologically.js +37 -0
  170. package/dist/utils/run-topologically.js.map +1 -0
  171. package/dist/utils/types.d.ts +128 -0
  172. package/dist/utils/types.js +138 -0
  173. package/dist/utils/types.js.map +1 -0
  174. package/dist/utils/warn-if-hanging.d.ts +1 -0
  175. package/dist/utils/warn-if-hanging.js +18 -0
  176. package/dist/utils/warn-if-hanging.js.map +1 -0
  177. package/dist/utils/write-log-file.d.ts +1 -0
  178. package/dist/utils/write-log-file.js +33 -0
  179. package/dist/utils/write-log-file.js.map +1 -0
  180. package/dist/validation-error.d.ts +4 -0
  181. package/dist/validation-error.js +19 -0
  182. package/dist/validation-error.js.map +1 -0
  183. package/package.json +110 -0
package/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2022, Ghislain B. - Lerna-Lite
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,16 @@
1
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2
+ [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)
3
+ [![npm](https://img.shields.io/npm/v/@lerna-lite/core.svg?color=forest)](https://www.npmjs.com/package/@lerna-lite/core)
4
+ [![npm](https://img.shields.io/npm/dy/@lerna-lite/core?color=forest)](https://www.npmjs.com/package/@lerna-lite/core)
5
+ [![Actions Status](https://github.com/ghiscoding/lerna-lite/workflows/CI%20Build/badge.svg)](https://github.com/ghiscoding/lerna-lite/actions)
6
+
7
+ ## Lerna-Lite Core
8
+ #### @lerna-lite/core
9
+
10
+ The Lerna-Lite core & utils functions, basically the shared code used by the Version & Publish commands.
11
+
12
+ ### Internal Dependencies
13
+ none
14
+
15
+ ### Installation
16
+ Follow the instruction provided in the main [README](https://github.com/ghiscoding/lerna-lite#installation) page.
@@ -0,0 +1,13 @@
1
+ import execa from 'execa';
2
+ import { Package } from '.';
3
+ export declare function exec(command: string, args: string[], opts: any, cmdDryRun?: boolean): any;
4
+ export declare function execSync(command: string, args?: string[], opts?: any, cmdDryRun?: boolean): string;
5
+ export declare function spawn(command: string, args: string[], opts: any, cmdDryRun?: boolean): any;
6
+ export declare function spawnStreaming(command: string, args: string[], opts: any, prefix?: string | boolean, cmdDryRun?: boolean): any;
7
+ export declare function getChildProcessCount(): number;
8
+ export declare function getExitCode(result: any): any;
9
+ export declare function spawnProcess(command: string, args: string[], opts: execa.SyncOptions<string> & {
10
+ pkg: Package;
11
+ }, cmdDryRun?: boolean): any;
12
+ export declare function wrapError(spawned: any): any;
13
+ export declare function logExecCommand(command: any, args?: string[]): string;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.logExecCommand = exports.wrapError = exports.spawnProcess = exports.getExitCode = exports.getChildProcessCount = exports.spawnStreaming = exports.spawn = exports.execSync = exports.exec = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const execa_1 = __importDefault(require("execa"));
9
+ const npmlog_1 = __importDefault(require("npmlog"));
10
+ const os_1 = __importDefault(require("os"));
11
+ const strong_log_transformer_1 = __importDefault(require("strong-log-transformer"));
12
+ // bookkeeping for spawned processes
13
+ const children = new Set();
14
+ // when streaming processes are spawned, use this color for prefix
15
+ const colorWheel = ['cyan', 'magenta', 'blue', 'yellow', 'green', 'red'];
16
+ const NUM_COLORS = colorWheel.length;
17
+ // ever-increasing index ensures colors are always sequential
18
+ let currentColor = 0;
19
+ function exec(command, args, opts, cmdDryRun = false) {
20
+ const options = Object.assign({ stdio: 'pipe' }, opts);
21
+ const spawned = spawnProcess(command, args, options, cmdDryRun);
22
+ return cmdDryRun ? Promise.resolve() : wrapError(spawned);
23
+ }
24
+ exports.exec = exec;
25
+ // resultCallback?: (processResult: ChildProcessResult) => void
26
+ function execSync(command, args, opts, cmdDryRun = false) {
27
+ return cmdDryRun
28
+ ? logExecCommand(command, args)
29
+ : execa_1.default.sync(command, args, opts).stdout;
30
+ }
31
+ exports.execSync = execSync;
32
+ function spawn(command, args, opts, cmdDryRun = false) {
33
+ const options = Object.assign({}, opts, { stdio: 'inherit' });
34
+ const spawned = spawnProcess(command, args, options, cmdDryRun);
35
+ return wrapError(spawned);
36
+ }
37
+ exports.spawn = spawn;
38
+ // istanbul ignore next
39
+ function spawnStreaming(command, args, opts, prefix, cmdDryRun = false) {
40
+ const options = Object.assign({}, opts);
41
+ options.stdio = ['ignore', 'pipe', 'pipe'];
42
+ const spawned = spawnProcess(command, args, options, cmdDryRun);
43
+ const stdoutOpts = {};
44
+ const stderrOpts = {}; // mergeMultiline causes escaped newlines :P
45
+ if (prefix) {
46
+ const colorName = colorWheel[currentColor % NUM_COLORS];
47
+ const color = chalk_1.default[colorName];
48
+ currentColor += 1;
49
+ stdoutOpts.tag = `${color.bold(prefix)}:`;
50
+ stderrOpts.tag = `${color(prefix)}:`;
51
+ }
52
+ // Avoid 'Possible EventEmitter memory leak detected' warning due to piped stdio
53
+ if (children.size > process.stdout.listenerCount('close')) {
54
+ process.stdout.setMaxListeners(children.size);
55
+ process.stderr.setMaxListeners(children.size);
56
+ }
57
+ spawned.stdout.pipe((0, strong_log_transformer_1.default)(stdoutOpts)).pipe(process.stdout);
58
+ spawned.stderr.pipe((0, strong_log_transformer_1.default)(stderrOpts)).pipe(process.stderr);
59
+ return wrapError(spawned);
60
+ }
61
+ exports.spawnStreaming = spawnStreaming;
62
+ function getChildProcessCount() {
63
+ return children.size;
64
+ }
65
+ exports.getChildProcessCount = getChildProcessCount;
66
+ function getExitCode(result) {
67
+ // https://nodejs.org/docs/latest-v6.x/api/child_process.html#child_process_event_close
68
+ if (typeof result.code === 'number') {
69
+ return result.code;
70
+ }
71
+ // https://nodejs.org/docs/latest-v6.x/api/errors.html#errors_error_code
72
+ // istanbul ignore else
73
+ if (typeof result.code === 'string') {
74
+ return os_1.default.constants.errno[result.code];
75
+ }
76
+ // istanbul ignore next: extremely weird
77
+ throw new TypeError(`Received unexpected exit code value ${JSON.stringify(result.code)}`);
78
+ }
79
+ exports.getExitCode = getExitCode;
80
+ function spawnProcess(command, args, opts, cmdDryRun = false) {
81
+ if (cmdDryRun) {
82
+ return logExecCommand(command, args);
83
+ }
84
+ const child = (0, execa_1.default)(command, args, opts);
85
+ const drain = (_code, signal) => {
86
+ children.delete(child);
87
+ // don't run repeatedly if this is the error event
88
+ if (signal === undefined) {
89
+ child.removeListener('exit', drain);
90
+ }
91
+ };
92
+ child.once('exit', drain);
93
+ child.once('error', drain);
94
+ if (opts.pkg) {
95
+ child.pkg = opts.pkg;
96
+ }
97
+ children.add(child);
98
+ return child;
99
+ }
100
+ exports.spawnProcess = spawnProcess;
101
+ function wrapError(spawned) {
102
+ if (spawned.pkg) {
103
+ return spawned.catch(err => {
104
+ // istanbul ignore else
105
+ if (err.code) {
106
+ // ensure code is always a number
107
+ err.code = getExitCode(err);
108
+ // log non-lerna error cleanly
109
+ err.pkg = spawned.pkg;
110
+ }
111
+ throw err;
112
+ });
113
+ }
114
+ return spawned;
115
+ }
116
+ exports.wrapError = wrapError;
117
+ function logExecCommand(command, args) {
118
+ var _a;
119
+ const argStr = (_a = (Array.isArray(args) ? args.join(' ') : args)) !== null && _a !== void 0 ? _a : '';
120
+ const cmdList = [];
121
+ for (const c of [command, argStr]) {
122
+ // @ts-ignore
123
+ cmdList.push((Array.isArray(c) ? c.join(' ') : c));
124
+ }
125
+ npmlog_1.default.info('dry-run>', cmdList.join(' '));
126
+ return '';
127
+ }
128
+ exports.logExecCommand = logExecCommand;
129
+ //# sourceMappingURL=child-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-process.js","sourceRoot":"","sources":["../src/child-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { Logger } from 'npmlog';
2
+ import { Project } from './project/project';
3
+ import { ExecOpts } from './models';
4
+ import { PackageGraph } from './package-graph/package-graph';
5
+ export declare class Command {
6
+ argv: any;
7
+ concurrency: number;
8
+ envDefaults: any;
9
+ libVersion: string;
10
+ sort: any;
11
+ toposort?: number;
12
+ execOpts: ExecOpts;
13
+ name: string;
14
+ composed: any;
15
+ logger: Logger;
16
+ options: any;
17
+ project: Project;
18
+ packageGraph?: PackageGraph;
19
+ runner?: Promise<any>;
20
+ constructor(_argv: any);
21
+ then(onResolved: typeof Promise.resolve, onRejected: typeof Promise.reject): Promise<unknown> | undefined;
22
+ catch(onRejected: typeof Promise.reject): Promise<any> | undefined;
23
+ get requiresGit(): boolean;
24
+ get otherCommandConfigs(): string[];
25
+ configureEnvironment(): void;
26
+ configureOptions(): void;
27
+ configureProperties(): void;
28
+ configureLogging(): void;
29
+ enableProgressBar(): void;
30
+ gitInitialized(): boolean;
31
+ logOutput(...args: any): void;
32
+ runValidations(): void;
33
+ runPreparations(): Promise<void>;
34
+ runCommand(): Promise<void>;
35
+ initialize(): void;
36
+ execute(): void;
37
+ }
@@ -0,0 +1,269 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Command = void 0;
7
+ const clone_deep_1 = __importDefault(require("clone-deep"));
8
+ const dedent_1 = __importDefault(require("dedent"));
9
+ const execa_1 = __importDefault(require("execa"));
10
+ const npmlog_1 = __importDefault(require("npmlog"));
11
+ const os_1 = __importDefault(require("os"));
12
+ const clean_stack_1 = require("./utils/clean-stack");
13
+ const log_package_error_1 = require("./utils/log-package-error");
14
+ const warn_if_hanging_1 = require("./utils/warn-if-hanging");
15
+ const write_log_file_1 = require("./utils/write-log-file");
16
+ const project_1 = require("./project/project");
17
+ const validation_error_1 = require("./validation-error");
18
+ const package_graph_1 = require("./package-graph/package-graph");
19
+ const child_process_1 = require("./child-process");
20
+ // maxBuffer value for running exec
21
+ const DEFAULT_CONCURRENCY = os_1.default.cpus().length;
22
+ class Command {
23
+ constructor(_argv) {
24
+ var _a, _b;
25
+ this.libVersion = '';
26
+ this.name = '';
27
+ npmlog_1.default.pause();
28
+ npmlog_1.default.heading = 'lerna';
29
+ const argv = (0, clone_deep_1.default)(_argv);
30
+ npmlog_1.default.silly('argv', argv);
31
+ // 'FooCommand' => 'foo'
32
+ // this.name = this.constructor.name.replace(/Command$/, '').toLowerCase();
33
+ // composed commands are called from other commands, like publish -> version
34
+ this.composed = typeof argv.composed === 'string' && argv.composed !== this.name;
35
+ this.libVersion = (_b = (_a = this.project) === null || _a === void 0 ? void 0 : _a.version) !== null && _b !== void 0 ? _b : '';
36
+ if (!this.composed) {
37
+ // const pkg = require('../../../package.json');
38
+ // this.libVersion = pkg?.version ?? '';
39
+ // log.notice('cli', `v${this.libVersion}`);
40
+ }
41
+ // launch the command
42
+ let runner = new Promise((resolve, reject) => {
43
+ // run everything inside a Promise chain
44
+ let chain = Promise.resolve();
45
+ chain = chain.then(() => this.project = new project_1.Project(argv.cwd));
46
+ chain = chain.then(() => this.configureEnvironment());
47
+ chain = chain.then(() => this.configureOptions());
48
+ chain = chain.then(() => this.configureProperties());
49
+ chain = chain.then(() => this.configureLogging());
50
+ chain = chain.then(() => this.runValidations());
51
+ chain = chain.then(() => this.runPreparations());
52
+ chain = chain.then(() => this.runCommand());
53
+ chain.then((result) => {
54
+ (0, warn_if_hanging_1.warnIfHanging)();
55
+ resolve(result);
56
+ }, (err) => {
57
+ if (err.pkg) {
58
+ // Cleanly log specific package error details
59
+ (0, log_package_error_1.logPackageError)(err, this.options.stream);
60
+ }
61
+ else if (err.name !== 'ValidationError') {
62
+ // npmlog does some funny stuff to the stack by default,
63
+ // so pass it directly to avoid duplication.
64
+ npmlog_1.default.error('', (0, clean_stack_1.cleanStack)(err, this.constructor.name));
65
+ }
66
+ // ValidationError does not trigger a log dump, nor do external package errors
67
+ if (err.name !== 'ValidationError' && !err.pkg) {
68
+ (0, write_log_file_1.writeLogFile)(this.project.rootPath);
69
+ }
70
+ (0, warn_if_hanging_1.warnIfHanging)();
71
+ // error code is handled by cli.fail()
72
+ reject(err);
73
+ if (err.name === 'ValidationError') {
74
+ npmlog_1.default.error(err.code, (err.body && err.body.error) || err.message);
75
+ }
76
+ });
77
+ });
78
+ // passed via yargs context in tests, never actual CLI
79
+ /* istanbul ignore else */
80
+ if (argv.onResolved || argv.onRejected) {
81
+ runner = runner.then(argv.onResolved, argv.onRejected);
82
+ // when nested, never resolve inner with outer callbacks
83
+ delete argv.onResolved; // eslint-disable-line no-param-reassign
84
+ delete argv.onRejected; // eslint-disable-line no-param-reassign
85
+ }
86
+ // 'hide' irrelevant argv keys from options
87
+ for (const key of ['cwd', '$0']) {
88
+ Object.defineProperty(argv, key, { enumerable: false });
89
+ }
90
+ Object.defineProperty(this, 'argv', {
91
+ value: Object.freeze(argv),
92
+ });
93
+ Object.defineProperty(this, 'runner', {
94
+ value: runner,
95
+ });
96
+ }
97
+ // proxy 'Promise' methods to 'private' instance
98
+ then(onResolved, onRejected) {
99
+ var _a;
100
+ return (_a = this.runner) === null || _a === void 0 ? void 0 : _a.then(onResolved, onRejected);
101
+ }
102
+ /* istanbul ignore next */
103
+ catch(onRejected) {
104
+ var _a;
105
+ return (_a = this.runner) === null || _a === void 0 ? void 0 : _a.catch(onRejected);
106
+ }
107
+ get requiresGit() {
108
+ return true;
109
+ }
110
+ // Override this to inherit config from another command.
111
+ // For example `changed` inherits config from `publish`.
112
+ get otherCommandConfigs() {
113
+ return [];
114
+ }
115
+ configureEnvironment() {
116
+ // eslint-disable-next-line global-require
117
+ const ci = require('is-ci');
118
+ let loglevel;
119
+ let progress;
120
+ /* istanbul ignore next */
121
+ if (ci || !process.stderr.isTTY || process.env.TERM === 'dumb') {
122
+ npmlog_1.default.disableColor();
123
+ progress = false;
124
+ }
125
+ else if (!process.stdout.isTTY) {
126
+ // stdout is being piped, don't log non-errors or progress bars
127
+ progress = false;
128
+ loglevel = 'error';
129
+ }
130
+ else if (process.stderr.isTTY) {
131
+ npmlog_1.default.enableColor();
132
+ npmlog_1.default.enableUnicode();
133
+ }
134
+ Object.defineProperty(this, 'envDefaults', {
135
+ value: {
136
+ ci,
137
+ progress,
138
+ loglevel,
139
+ },
140
+ });
141
+ }
142
+ configureOptions() {
143
+ // Command config object normalized to 'command' namespace
144
+ const commandConfig = this.project.config.command || {};
145
+ // The current command always overrides otherCommandConfigs
146
+ const overrides = [this.name, ...this.otherCommandConfigs].map((key) => commandConfig[key]);
147
+ this.options = defaultOptions(
148
+ // CLI flags, which if defined overrule subsequent values
149
+ this.argv,
150
+ // Namespaced command options from `lerna.json`
151
+ ...overrides,
152
+ // Global options from `lerna.json`
153
+ this.project.config,
154
+ // Environmental defaults prepared in previous step
155
+ this.envDefaults);
156
+ }
157
+ configureProperties() {
158
+ var _a;
159
+ const { concurrency, sort, maxBuffer } = this.options;
160
+ this.concurrency = Math.max(1, +concurrency || DEFAULT_CONCURRENCY);
161
+ this.toposort = sort === undefined || sort;
162
+ this.execOpts = {
163
+ cwd: (_a = this.project.rootPath) !== null && _a !== void 0 ? _a : '',
164
+ maxBuffer,
165
+ };
166
+ }
167
+ configureLogging() {
168
+ const { loglevel } = this.options;
169
+ if (loglevel) {
170
+ npmlog_1.default.level = loglevel;
171
+ }
172
+ // handle log.success()
173
+ npmlog_1.default.addLevel('success', 3001, { fg: 'green', bold: true });
174
+ // create logger that subclasses use
175
+ Object.defineProperty(this, 'logger', {
176
+ value: npmlog_1.default.newGroup(this.name),
177
+ });
178
+ // emit all buffered logs at configured level and higher
179
+ npmlog_1.default.resume();
180
+ }
181
+ enableProgressBar() {
182
+ /* istanbul ignore next */
183
+ if (this.options.progress !== false) {
184
+ npmlog_1.default.enableProgress();
185
+ }
186
+ }
187
+ gitInitialized() {
188
+ var _a;
189
+ const opts = {
190
+ cwd: (_a = this.project.rootPath) !== null && _a !== void 0 ? _a : '',
191
+ // don't throw, just want boolean
192
+ reject: false,
193
+ // only return code, no stdio needed
194
+ stdio: 'ignore',
195
+ };
196
+ const gitCommand = 'git';
197
+ const gitArgs = ['rev-parse'];
198
+ if (this.options.gitDryRun) {
199
+ (0, child_process_1.logExecCommand)(gitCommand, gitArgs);
200
+ return true;
201
+ }
202
+ return execa_1.default.sync(gitCommand, gitArgs, opts).exitCode === 0;
203
+ }
204
+ logOutput(...args) {
205
+ this.logger.clearProgress();
206
+ console.log(...args);
207
+ this.logger.showProgress();
208
+ }
209
+ runValidations() {
210
+ if ((this.options.since !== undefined || this.requiresGit) && !this.gitInitialized()) {
211
+ throw new validation_error_1.ValidationError('ENOGIT', 'The git binary was not found, or this is not a git repository.');
212
+ }
213
+ if (!this.project.manifest) {
214
+ throw new validation_error_1.ValidationError('ENOPKG', 'No `package.json` file found, make sure it exist in the root of your project.');
215
+ }
216
+ if (!this.project.version) {
217
+ throw new validation_error_1.ValidationError('ENOLERNA', 'No `lerna.json` file exist, please create one in the root of your project.');
218
+ }
219
+ if (this.options.independent && !this.project.isIndependent()) {
220
+ throw new validation_error_1.ValidationError('EVERSIONMODE', (0, dedent_1.default) `
221
+ You ran lerna-lite with --independent or -i, but the repository is not set to independent mode.
222
+ To use independent mode you need to set lerna.json's "version" property to "independent".
223
+ Then you won't need to pass the --independent or -i flags.
224
+ `);
225
+ }
226
+ }
227
+ async runPreparations() {
228
+ if (!this.composed && this.project.isIndependent()) {
229
+ // composed commands have already logged the independent status
230
+ npmlog_1.default.info('versioning', 'independent');
231
+ }
232
+ if (!this.composed && this.options.ci) {
233
+ npmlog_1.default.info('ci', 'enabled');
234
+ }
235
+ const packages = await this.project.getPackages();
236
+ this.packageGraph = new package_graph_1.PackageGraph(packages);
237
+ }
238
+ async runCommand() {
239
+ const proceed = await this.initialize();
240
+ if (proceed !== false) {
241
+ return this.execute();
242
+ }
243
+ // early exits set their own exitCode (if non-zero)
244
+ }
245
+ initialize() {
246
+ throw new validation_error_1.ValidationError(this.name, 'initialize() needs to be implemented.');
247
+ }
248
+ execute() {
249
+ throw new validation_error_1.ValidationError(this.name, 'execute() needs to be implemented.');
250
+ }
251
+ }
252
+ exports.Command = Command;
253
+ // _.defaults(), but simplified:
254
+ // * All inputs are plain objects
255
+ // * Only own keys, not inherited
256
+ function defaultOptions(...sources) {
257
+ const options = {};
258
+ for (const source of sources) {
259
+ if (source !== null && source !== undefined) {
260
+ for (const key of Object.keys(source)) {
261
+ if (options[key] === undefined) {
262
+ options[key] = source[key];
263
+ }
264
+ }
265
+ }
266
+ }
267
+ return options;
268
+ }
269
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const EOL = "\n";
2
+ export declare const BLANK_LINE: string;
3
+ export declare const COMMIT_GUIDELINE = "See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.";
4
+ export declare const CHANGELOG_HEADER: string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHANGELOG_HEADER = exports.COMMIT_GUIDELINE = exports.BLANK_LINE = exports.EOL = void 0;
4
+ exports.EOL = '\n';
5
+ exports.BLANK_LINE = exports.EOL + exports.EOL;
6
+ exports.COMMIT_GUIDELINE = 'See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.';
7
+ exports.CHANGELOG_HEADER = [
8
+ '# Change Log',
9
+ '%s',
10
+ 'All notable changes to this project will be documented in this file.',
11
+ exports.COMMIT_GUIDELINE,
12
+ ].join(exports.EOL);
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/conventional-commits/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG,IAAI,CAAC;AACX,QAAA,UAAU,GAAG,WAAG,GAAG,WAAG,CAAC;AACvB,QAAA,gBAAgB,GAC3B,oFAAoF,CAAC;AAC1E,QAAA,gBAAgB,GAAG;IAC9B,cAAc;IACd,IAAI;IACJ,sEAAsE;IACtE,wBAAgB;CACjB,CAAC,IAAI,CAAC,WAAG,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare class GetChangelogConfig {
2
+ static cfgCache: Map<string, any>;
3
+ static isFunction(config: any): boolean;
4
+ static resolveConfigPromise(presetPackageName: string, presetConfig: any): any;
5
+ /**
6
+ * @param {import('..').ChangelogPresetConfig} [changelogPreset]
7
+ * @param {string} [rootPath]
8
+ */
9
+ static getChangelogConfig(changelogPreset: string | {
10
+ name: string;
11
+ } | undefined, rootPath: string): Promise<any>;
12
+ }
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GetChangelogConfig = void 0;
7
+ const npmlog_1 = __importDefault(require("npmlog"));
8
+ const npm_package_arg_1 = __importDefault(require("npm-package-arg"));
9
+ const validation_error_1 = require("../validation-error");
10
+ class GetChangelogConfig {
11
+ static isFunction(config) {
12
+ return Object.prototype.toString.call(config) === '[object Function]';
13
+ }
14
+ static resolveConfigPromise(presetPackageName, presetConfig) {
15
+ npmlog_1.default.verbose('getChangelogConfig', 'Attempting to resolve preset %j', presetPackageName);
16
+ let config = require(presetPackageName);
17
+ npmlog_1.default.info('getChangelogConfig', 'Successfully resolved preset %j', presetPackageName);
18
+ if (this.isFunction(config)) {
19
+ // try assuming config builder function first
20
+ config = config(presetConfig);
21
+ }
22
+ return config;
23
+ }
24
+ /**
25
+ * @param {import('..').ChangelogPresetConfig} [changelogPreset]
26
+ * @param {string} [rootPath]
27
+ */
28
+ static getChangelogConfig(changelogPreset = 'conventional-changelog-angular', rootPath) {
29
+ const presetName = typeof changelogPreset === 'string' ? changelogPreset : changelogPreset.name;
30
+ const presetConfig = typeof changelogPreset === 'object' ? changelogPreset : {};
31
+ const cacheKey = `${presetName}${presetConfig ? JSON.stringify(presetConfig) : ''}`;
32
+ let config = GetChangelogConfig.cfgCache.get(cacheKey);
33
+ if (!config) {
34
+ let presetPackageName = presetName;
35
+ // https://github.com/npm/npm-package-arg#result-object
36
+ const parsed = (0, npm_package_arg_1.default)(presetPackageName, rootPath);
37
+ npmlog_1.default.verbose('getChangelogConfig', 'using preset %j', presetPackageName);
38
+ npmlog_1.default.silly('npa', parsed);
39
+ if (parsed.type === 'directory') {
40
+ if (parsed.raw[0] === '@') {
41
+ // npa parses scoped subpath reference as a directory
42
+ parsed.name = parsed.raw;
43
+ parsed.scope = parsed.raw.substring(0, parsed.raw.indexOf('/'));
44
+ // un-scoped subpath shorthand handled in first catch block
45
+ }
46
+ else {
47
+ presetPackageName = parsed.fetchSpec;
48
+ }
49
+ }
50
+ else if (parsed.type === 'git' && parsed.hosted && parsed.hosted.default === 'shortcut') {
51
+ // probably a shorthand subpath, e.g. 'foo/bar'
52
+ parsed.name = parsed.raw;
53
+ }
54
+ // Maybe it doesn't need an implicit 'conventional-changelog-' prefix?
55
+ try {
56
+ config = this.resolveConfigPromise(presetPackageName, presetConfig);
57
+ GetChangelogConfig.cfgCache.set(cacheKey, config);
58
+ // early exit, yay
59
+ return Promise.resolve(config);
60
+ }
61
+ catch (err) {
62
+ npmlog_1.default.verbose('getChangelogConfig', err.message);
63
+ npmlog_1.default.info('getChangelogConfig', 'Auto-prefixing conventional-changelog preset %j', presetName);
64
+ // probably a deep shorthand subpath :P
65
+ parsed.name = parsed.raw;
66
+ }
67
+ if (parsed.name.indexOf('conventional-changelog-') < 0) {
68
+ // implicit 'conventional-changelog-' prefix
69
+ const parts = parsed.name.split('/');
70
+ const start = parsed.scope ? 1 : 0;
71
+ // foo => conventional-changelog-foo
72
+ // @scope/foo => @scope/conventional-changelog-foo
73
+ parts.splice(start, 1, `conventional-changelog-${parts[start]}`);
74
+ // _technically_ supports 'foo/lib/bar.js', but that's gross
75
+ presetPackageName = parts.join('/');
76
+ }
77
+ try {
78
+ config = this.resolveConfigPromise(presetPackageName, presetConfig);
79
+ GetChangelogConfig.cfgCache.set(cacheKey, config);
80
+ }
81
+ catch (err) {
82
+ npmlog_1.default.warn('getChangelogConfig', err.message);
83
+ throw new validation_error_1.ValidationError('EPRESET', `Unable to load conventional-changelog preset '${presetName}'${presetName !== presetPackageName ? ` (${presetPackageName})` : ''}`);
84
+ }
85
+ }
86
+ // the core presets are bloody Q.all() spreads
87
+ return Promise.resolve(config);
88
+ }
89
+ }
90
+ exports.GetChangelogConfig = GetChangelogConfig;
91
+ GetChangelogConfig.cfgCache = new Map();
92
+ //# sourceMappingURL=get-changelog-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-changelog-config.js","sourceRoot":"","sources":["../../src/conventional-commits/get-changelog-config.ts"],"names":[],"mappings":"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"}