@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
@@ -0,0 +1,38 @@
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.applyExtends = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const resolve_from_1 = __importDefault(require("resolve-from"));
9
+ const shallow_extend_1 = require("./shallow-extend");
10
+ const validation_error_1 = require("../../validation-error");
11
+ /**
12
+ * @param {{ [key: string]: unknown }} config
13
+ * @param {string} cwd
14
+ * @param {Set<string>} seen
15
+ */
16
+ function applyExtends(config, cwd, seen = new Set()) {
17
+ let defaultConfig = {};
18
+ if ('extends' in config) {
19
+ let pathToDefault;
20
+ try {
21
+ pathToDefault = (0, resolve_from_1.default)(cwd, config.extends);
22
+ }
23
+ catch (err) {
24
+ throw new validation_error_1.ValidationError('ERESOLVED', 'Config .extends must be locally-resolvable', err);
25
+ }
26
+ if (seen.has(pathToDefault)) {
27
+ throw new validation_error_1.ValidationError('ECIRCULAR', 'Config .extends cannot be circular', seen);
28
+ }
29
+ seen.add(pathToDefault);
30
+ defaultConfig = require(pathToDefault);
31
+ delete config.extends; // eslint-disable-line no-param-reassign
32
+ // deprecateConfig(defaultConfig, pathToDefault);
33
+ defaultConfig = applyExtends(defaultConfig, path_1.default.dirname(pathToDefault), seen);
34
+ }
35
+ return (0, shallow_extend_1.shallowExtend)(config, defaultConfig);
36
+ }
37
+ exports.applyExtends = applyExtends;
38
+ //# sourceMappingURL=apply-extends.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-extends.js","sourceRoot":"","sources":["../../../src/project/lib/apply-extends.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,gEAAuC;AAEvC,qDAAiD;AACjD,6DAAyD;AAEzD;;;;GAIG;AACH,SAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,GAAG,EAAE;IACxD,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,IAAI,SAAS,IAAI,MAAM,EAAE;QACvB,IAAI,aAAa,CAAC;QAElB,IAAI;YACF,aAAa,GAAG,IAAA,sBAAW,EAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;SAClD;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,IAAI,kCAAe,CAAC,WAAW,EAAE,4CAA4C,EAAE,GAAG,CAAC,CAAC;SAC3F;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;YAC3B,MAAM,IAAI,kCAAe,CAAC,WAAW,EAAE,oCAAoC,EAAE,IAAW,CAAC,CAAC;SAC3F;QAED,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAExB,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,wCAAwC;QAE/D,iDAAiD;QAEjD,aAAa,GAAG,YAAY,CAAC,aAAa,EAAE,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,CAAC;KAChF;IAED,OAAO,IAAA,8BAAa,EAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC9C,CAAC;AA3BD,oCA2BC"}
@@ -0,0 +1,3 @@
1
+ export * from './apply-extends';
2
+ export * from './make-file-finder';
3
+ export * from './shallow-extend';
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./apply-extends"), exports);
14
+ __exportStar(require("./make-file-finder"), exports);
15
+ __exportStar(require("./shallow-extend"), exports);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/project/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAgC;AAChC,qDAAmC;AACnC,mDAAiC"}
@@ -0,0 +1,2 @@
1
+ export declare function makeFileFinder(rootPath: any, packageConfigs: any): (fileName: string, fileMapper: any, customGlobOpts?: any) => Promise<import("@nodelib/fs.scandir").Entry[]>;
2
+ export declare function makeSyncFileFinder(rootPath: any, packageConfigs: any): (fileName: any, fileMapper: any, customGlobOpts?: any) => import("@nodelib/fs.scandir").Entry[];
@@ -0,0 +1,72 @@
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.makeSyncFileFinder = exports.makeFileFinder = void 0;
7
+ const globby_1 = __importDefault(require("globby"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const p_map_1 = __importDefault(require("p-map"));
10
+ const validation_error_1 = require("../../validation-error");
11
+ /**
12
+ * @param {string[]} results
13
+ */
14
+ function normalize(results) {
15
+ return results.map((fp) => path_1.default.normalize(fp));
16
+ }
17
+ function getGlobOpts(rootPath, packageConfigs) {
18
+ const globOpts = {
19
+ cwd: rootPath,
20
+ absolute: true,
21
+ expandDirectories: false,
22
+ followSymbolicLinks: false,
23
+ };
24
+ if (packageConfigs.some((cfg) => cfg.indexOf('**') > -1)) {
25
+ if (packageConfigs.some((cfg) => cfg.indexOf('node_modules') > -1)) {
26
+ throw new validation_error_1.ValidationError('EPKGCONFIG', 'An explicit node_modules package path does not allow globstars (**)');
27
+ }
28
+ globOpts.ignore = [
29
+ // allow globs like "packages/**",
30
+ // but avoid picking up node_modules/**/package.json
31
+ '**/node_modules/**',
32
+ ];
33
+ }
34
+ return globOpts;
35
+ }
36
+ function makeFileFinder(rootPath, packageConfigs) {
37
+ const globOpts = getGlobOpts(rootPath, packageConfigs);
38
+ return (fileName, fileMapper, customGlobOpts) => {
39
+ const options = Object.assign({}, customGlobOpts, globOpts);
40
+ const promise = (0, p_map_1.default)(Array.from(packageConfigs).sort(), (globPath) => {
41
+ let chain = (0, globby_1.default)(path_1.default.posix.join(globPath, fileName), options);
42
+ // fast-glob does not respect pattern order, so we re-sort by absolute path
43
+ chain = chain.then((results) => results.sort());
44
+ // POSIX results always need to be normalized
45
+ chain = chain.then(normalize);
46
+ if (fileMapper) {
47
+ chain = chain.then(fileMapper);
48
+ }
49
+ return chain;
50
+ }, { concurrency: 4 });
51
+ // always flatten the results
52
+ return promise.then((results) => results.reduce((acc, result) => acc.concat(result), []));
53
+ };
54
+ }
55
+ exports.makeFileFinder = makeFileFinder;
56
+ function makeSyncFileFinder(rootPath, packageConfigs) {
57
+ const globOpts = getGlobOpts(rootPath, packageConfigs);
58
+ return (fileName, fileMapper, customGlobOpts) => {
59
+ const options = Object.assign({}, customGlobOpts, globOpts);
60
+ const patterns = packageConfigs.map((globPath) => path_1.default.posix.join(globPath, fileName)).sort();
61
+ let results = globby_1.default.sync(patterns, options);
62
+ // POSIX results always need to be normalized
63
+ results = normalize(results);
64
+ /* istanbul ignore else */
65
+ if (fileMapper) {
66
+ results = results.map(fileMapper);
67
+ }
68
+ return results;
69
+ };
70
+ }
71
+ exports.makeSyncFileFinder = makeSyncFileFinder;
72
+ //# sourceMappingURL=make-file-finder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-file-finder.js","sourceRoot":"","sources":["../../../src/project/lib/make-file-finder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @param {{ [key: string]: unknown }} json
3
+ * @param {{ [key: string]: unknown }} defaults
4
+ */
5
+ export declare function shallowExtend(json: any, defaults?: {}): {};
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shallowExtend = void 0;
4
+ /**
5
+ * @param {{ [key: string]: unknown }} json
6
+ * @param {{ [key: string]: unknown }} defaults
7
+ */
8
+ function shallowExtend(json, defaults = {}) {
9
+ return Object.keys(json).reduce((obj, key) => {
10
+ const val = json[key];
11
+ if (Array.isArray(val)) {
12
+ // always clobber arrays, merging isn't worth unexpected complexity
13
+ obj[key] = val.slice();
14
+ }
15
+ else if (val && typeof val === 'object') {
16
+ obj[key] = shallowExtend(val, obj[key]);
17
+ }
18
+ else {
19
+ obj[key] = val;
20
+ }
21
+ return obj;
22
+ }, defaults);
23
+ }
24
+ exports.shallowExtend = shallowExtend;
25
+ //# sourceMappingURL=shallow-extend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shallow-extend.js","sourceRoot":"","sources":["../../../src/project/lib/shallow-extend.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,EAAE;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAEtB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,mEAAmE;YACnE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;SACxB;aAAM,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YACzC,GAAG,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACzC;aAAM;YACL,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SAChB;QAED,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,QAAQ,CAAC,CAAC;AACf,CAAC;AAfD,sCAeC"}
@@ -0,0 +1,50 @@
1
+ interface ProjectConfig {
2
+ command?: string;
3
+ packages: string[];
4
+ useWorkspaces: boolean;
5
+ version: string;
6
+ }
7
+ /**
8
+ * A representation of the entire project managed by Lerna.
9
+ *
10
+ * Wherever the lerna.json file is located, that is the project root.
11
+ * All package globs are rooted from this location.
12
+ */
13
+ export declare class Project {
14
+ config: ProjectConfig;
15
+ rootConfigLocation: string;
16
+ rootPath: string;
17
+ static PACKAGE_GLOB: string;
18
+ static LICENSE_GLOB: string;
19
+ /**
20
+ * @param {string} [cwd] Defaults to process.cwd()
21
+ */
22
+ constructor(cwd: string);
23
+ /**
24
+ * @param {string} [cwd] Defaults to process.cwd()
25
+ */
26
+ static getPackages(cwd: string): Promise<any>;
27
+ /**
28
+ * @param {string} [cwd] Defaults to process.cwd()
29
+ */
30
+ static getPackagesSync(cwd: string): import("@nodelib/fs.scandir").Entry[];
31
+ get version(): string;
32
+ set version(val: string);
33
+ get packageConfigs(): any;
34
+ get packageParentDirs(): any;
35
+ get manifest(): any;
36
+ get licensePath(): any;
37
+ get fileFinder(): (fileName: string, fileMapper: any, customGlobOpts?: any) => Promise<import("@nodelib/fs.scandir").Entry[]>;
38
+ /**
39
+ * @returns {Promise<Package[]>} A promise resolving to a list of Package instances
40
+ */
41
+ getPackages(): Promise<any>;
42
+ /**
43
+ * @returns {Package[]} A list of Package instances
44
+ */
45
+ getPackagesSync(): import("@nodelib/fs.scandir").Entry[];
46
+ getPackageLicensePaths(): Promise<import("@nodelib/fs.scandir").Entry[]>;
47
+ isIndependent(): boolean;
48
+ serializeConfig(): Promise<string>;
49
+ }
50
+ export {};
@@ -0,0 +1,193 @@
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.Project = void 0;
7
+ const cosmiconfig_1 = require("cosmiconfig");
8
+ const dedent_1 = __importDefault(require("dedent"));
9
+ const globby_1 = __importDefault(require("globby"));
10
+ const glob_parent_1 = __importDefault(require("glob-parent"));
11
+ const npmlog_1 = __importDefault(require("npmlog"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const p_map_1 = __importDefault(require("p-map"));
14
+ const load_json_file_1 = __importDefault(require("load-json-file"));
15
+ const write_json_file_1 = __importDefault(require("write-json-file"));
16
+ const package_1 = require("../package");
17
+ const apply_extends_1 = require("./lib/apply-extends");
18
+ const validation_error_1 = require("../validation-error");
19
+ const make_file_finder_1 = require("./lib/make-file-finder");
20
+ /**
21
+ * A representation of the entire project managed by Lerna.
22
+ *
23
+ * Wherever the lerna.json file is located, that is the project root.
24
+ * All package globs are rooted from this location.
25
+ */
26
+ class Project {
27
+ /**
28
+ * @param {string} [cwd] Defaults to process.cwd()
29
+ */
30
+ constructor(cwd) {
31
+ var _a, _b;
32
+ const explorer = (0, cosmiconfig_1.cosmiconfigSync)('lerna', {
33
+ searchPlaces: ['lerna.json', 'package.json'],
34
+ transform(obj) {
35
+ // cosmiconfig returns null when nothing is found
36
+ if (!obj) {
37
+ return {
38
+ // No need to distinguish between missing and empty,
39
+ // saves a lot of noisy guards elsewhere
40
+ config: {},
41
+ // path.resolve(".", ...) starts from process.cwd()
42
+ filepath: path_1.default.resolve(cwd || '.', 'lerna.json'),
43
+ };
44
+ }
45
+ obj.config = (0, apply_extends_1.applyExtends)(obj.config, path_1.default.dirname(obj.filepath));
46
+ return obj;
47
+ },
48
+ });
49
+ let loaded;
50
+ try {
51
+ loaded = explorer.search(cwd);
52
+ }
53
+ catch (err) {
54
+ // redecorate JSON syntax errors, avoid debug dump
55
+ if (err.name === 'JSONError') {
56
+ throw new validation_error_1.ValidationError(err.name, err.message);
57
+ }
58
+ // re-throw other errors, could be ours or third-party
59
+ throw err;
60
+ }
61
+ this.config = loaded === null || loaded === void 0 ? void 0 : loaded.config;
62
+ this.rootConfigLocation = (_a = loaded === null || loaded === void 0 ? void 0 : loaded.filepath) !== null && _a !== void 0 ? _a : '';
63
+ this.rootPath = path_1.default.dirname((_b = loaded === null || loaded === void 0 ? void 0 : loaded.filepath) !== null && _b !== void 0 ? _b : '');
64
+ npmlog_1.default.verbose('rootPath', this.rootPath);
65
+ }
66
+ /**
67
+ * @param {string} [cwd] Defaults to process.cwd()
68
+ */
69
+ static getPackages(cwd) {
70
+ return new Project(cwd).getPackages();
71
+ }
72
+ /**
73
+ * @param {string} [cwd] Defaults to process.cwd()
74
+ */
75
+ static getPackagesSync(cwd) {
76
+ return new Project(cwd).getPackagesSync();
77
+ }
78
+ get version() {
79
+ return this.config.version;
80
+ }
81
+ set version(val) {
82
+ this.config.version = val;
83
+ }
84
+ get packageConfigs() {
85
+ var _a;
86
+ if (this.config.useWorkspaces) {
87
+ const workspaces = (_a = this.manifest) === null || _a === void 0 ? void 0 : _a.get('workspaces');
88
+ if (!workspaces) {
89
+ throw new validation_error_1.ValidationError('EWORKSPACES', (0, dedent_1.default) `
90
+ Yarn workspaces need to be defined in the root package.json.
91
+ See: https://github.com/lerna/lerna/blob/master/commands/bootstrap/README.md#--use-workspaces
92
+ `);
93
+ }
94
+ npmlog_1.default.verbose('project workspaces packages', (workspaces.packages || workspaces).join(' '));
95
+ return workspaces.packages || workspaces;
96
+ }
97
+ npmlog_1.default.verbose('project packages', (this.config.packages || [Project.PACKAGE_GLOB]).join(' '));
98
+ return this.config.packages || [Project.PACKAGE_GLOB];
99
+ }
100
+ get packageParentDirs() {
101
+ return this.packageConfigs.map(glob_parent_1.default).map((parentDir) => path_1.default.resolve(this.rootPath, parentDir));
102
+ }
103
+ get manifest() {
104
+ let manifest;
105
+ try {
106
+ const manifestLocation = path_1.default.join(this.rootPath, 'package.json');
107
+ const packageJson = load_json_file_1.default.sync(manifestLocation);
108
+ if (!packageJson.name) {
109
+ // npm-lifecycle chokes if this is missing, so default like npm init does
110
+ packageJson.name = path_1.default.basename(path_1.default.dirname(manifestLocation));
111
+ }
112
+ // Encapsulate raw JSON in Package instance
113
+ manifest = new package_1.Package(packageJson, this.rootPath);
114
+ // redefine getter to lazy-loaded value
115
+ Object.defineProperty(this, 'manifest', {
116
+ value: manifest,
117
+ });
118
+ }
119
+ catch (err) {
120
+ // redecorate JSON syntax errors, avoid debug dump
121
+ if (err.name === 'JSONError') {
122
+ throw new validation_error_1.ValidationError(err.name, err.message);
123
+ }
124
+ // try again next time
125
+ }
126
+ return manifest;
127
+ }
128
+ get licensePath() {
129
+ let licensePath;
130
+ try {
131
+ const search = globby_1.default.sync(Project.LICENSE_GLOB, {
132
+ cwd: this.rootPath,
133
+ absolute: true,
134
+ caseSensitiveMatch: false,
135
+ // Project license is always a sibling of the root manifest
136
+ deep: 0,
137
+ });
138
+ licensePath = search.shift();
139
+ if (licensePath) {
140
+ // POSIX results always need to be normalized
141
+ licensePath = path_1.default.normalize(licensePath);
142
+ // redefine getter to lazy-loaded value
143
+ Object.defineProperty(this, 'licensePath', {
144
+ value: licensePath,
145
+ });
146
+ }
147
+ }
148
+ catch (err) {
149
+ /* istanbul ignore next */
150
+ throw new validation_error_1.ValidationError(err.name, err.message);
151
+ }
152
+ return licensePath;
153
+ }
154
+ get fileFinder() {
155
+ const finder = (0, make_file_finder_1.makeFileFinder)(this.rootPath, this.packageConfigs);
156
+ // redefine getter to lazy-loaded value
157
+ Object.defineProperty(this, 'fileFinder', {
158
+ value: finder,
159
+ });
160
+ return finder;
161
+ }
162
+ /**
163
+ * @returns {Promise<Package[]>} A promise resolving to a list of Package instances
164
+ */
165
+ getPackages() {
166
+ const mapper = (packageConfigPath) => (0, load_json_file_1.default)(packageConfigPath).then((packageJson) => new package_1.Package(packageJson, path_1.default.dirname(packageConfigPath), this.rootPath));
167
+ return this.fileFinder('package.json', (filePaths) => (0, p_map_1.default)(filePaths, mapper, { concurrency: 50 }));
168
+ }
169
+ /**
170
+ * @returns {Package[]} A list of Package instances
171
+ */
172
+ getPackagesSync() {
173
+ return (0, make_file_finder_1.makeSyncFileFinder)(this.rootPath, this.packageConfigs)('package.json', (packageConfigPath) => {
174
+ return new package_1.Package(load_json_file_1.default.sync(packageConfigPath), path_1.default.dirname(packageConfigPath), this.rootPath);
175
+ });
176
+ }
177
+ getPackageLicensePaths() {
178
+ return this.fileFinder(Project.LICENSE_GLOB, null, { caseSensitiveMatch: false });
179
+ }
180
+ isIndependent() {
181
+ return this.version === 'independent';
182
+ }
183
+ serializeConfig() {
184
+ // TODO: might be package.json prop
185
+ return (0, write_json_file_1.default)(this.rootConfigLocation, this.config, { indent: 2, detectIndent: true }).then(() => this.rootConfigLocation);
186
+ }
187
+ }
188
+ exports.Project = Project;
189
+ Project.PACKAGE_GLOB = 'packages/*';
190
+ Project.LICENSE_GLOB = 'LICEN{S,C}E{,.*}';
191
+ Project.PACKAGE_GLOB = 'packages/*';
192
+ Project.LICENSE_GLOB = 'LICEN{S,C}E{,.*}';
193
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/project/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare class PromptUtilities {
2
+ static confirm(message: any): Promise<string>;
3
+ static select(message: any, { choices, filter, validate }?: any): Promise<string>;
4
+ static input(message: any, { filter, validate }?: any): Promise<string>;
5
+ }
package/dist/prompt.js ADDED
@@ -0,0 +1,65 @@
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.PromptUtilities = void 0;
7
+ const inquirer_1 = __importDefault(require("inquirer"));
8
+ const npmlog_1 = __importDefault(require("npmlog"));
9
+ class PromptUtilities {
10
+ static async confirm(message) {
11
+ npmlog_1.default.pause();
12
+ const answers = await inquirer_1.default.prompt([
13
+ {
14
+ type: 'expand',
15
+ name: 'confirm',
16
+ message,
17
+ default: 2,
18
+ choices: [
19
+ { key: 'y', name: 'Yes', value: true },
20
+ { key: 'n', name: 'No', value: false },
21
+ ],
22
+ },
23
+ ]);
24
+ npmlog_1.default.resume();
25
+ return answers.confirm;
26
+ }
27
+ static select(message, { choices, filter, validate } = {}) {
28
+ npmlog_1.default.pause();
29
+ return inquirer_1.default
30
+ .prompt([
31
+ {
32
+ type: 'list',
33
+ name: 'prompt',
34
+ message,
35
+ choices,
36
+ pageSize: choices.length,
37
+ filter,
38
+ validate,
39
+ },
40
+ ])
41
+ .then(answers => {
42
+ npmlog_1.default.resume();
43
+ return answers.prompt;
44
+ });
45
+ }
46
+ static input(message, { filter, validate } = {}) {
47
+ npmlog_1.default.pause();
48
+ return inquirer_1.default
49
+ .prompt([
50
+ {
51
+ type: 'input',
52
+ name: 'input',
53
+ message,
54
+ filter,
55
+ validate,
56
+ },
57
+ ])
58
+ .then(answers => {
59
+ npmlog_1.default.resume();
60
+ return answers.input;
61
+ });
62
+ }
63
+ }
64
+ exports.PromptUtilities = PromptUtilities;
65
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,oDAAyB;AAEzB,MAAa,eAAe;IAC1B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO;QAC1B,gBAAG,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC;YACpC;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,SAAS;gBACf,OAAO;gBACP,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE;oBACP,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;oBACtC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;iBACvC;aACF;SACF,CAAC,CAAC;QACH,gBAAG,CAAC,MAAM,EAAE,CAAC;QAEb,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAS;QAC9D,gBAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,OAAO,kBAAQ;aACZ,MAAM,CAAC;YACN;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO;gBACP,OAAO;gBACP,QAAQ,EAAE,OAAO,CAAC,MAAM;gBACxB,MAAM;gBACN,QAAQ;aACT;SACF,CAAC;aACD,IAAI,CAAC,OAAO,CAAC,EAAE;YACd,gBAAG,CAAC,MAAM,EAAE,CAAC;YAEb,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,KAAK,EAAS;QACpD,gBAAG,CAAC,KAAK,EAAE,CAAC;QAEZ,OAAO,kBAAQ;aACZ,MAAM,CAAC;YACN;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO;gBACP,MAAM;gBACN,QAAQ;aACT;SACF,CAAC;aACD,IAAI,CAAC,OAAO,CAAC,EAAE;YACd,gBAAG,CAAC,MAAM,EAAE,CAAC;YAEb,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;CACF;AA7DD,0CA6DC"}
@@ -0,0 +1,8 @@
1
+ export declare function checkWorkingTree({ cwd }?: any, gitDryRun?: boolean): Promise<void>;
2
+ export declare function throwIfReleased({ refCount }: {
3
+ refCount: any;
4
+ }): void;
5
+ export declare function mkThrowIfUncommitted(options?: any, gitDryRun?: boolean): ({ isDirty }: {
6
+ isDirty: any;
7
+ }) => any;
8
+ export declare function throwIfUncommitted(): void;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.throwIfUncommitted = exports.mkThrowIfUncommitted = exports.throwIfReleased = exports.checkWorkingTree = void 0;
4
+ const collect_uncommitted_1 = require("./collect-uncommitted");
5
+ const describe_ref_1 = require("./describe-ref");
6
+ const validation_error_1 = require("../validation-error");
7
+ function checkWorkingTree({ cwd } = {}, gitDryRun = false) {
8
+ let chain = Promise.resolve();
9
+ chain = chain.then(() => (0, describe_ref_1.describeRef)({ cwd }, undefined, gitDryRun));
10
+ // wrap each test separately to allow all applicable errors to be reported
11
+ const tests = [
12
+ // prevent duplicate versioning
13
+ chain.then(throwIfReleased),
14
+ // prevent publish of uncommitted changes
15
+ chain.then(mkThrowIfUncommitted({ cwd }, gitDryRun)),
16
+ ];
17
+ // passes through result of describeRef() to aid composability
18
+ return chain.then((result) => Promise.all(tests).then(() => result));
19
+ }
20
+ exports.checkWorkingTree = checkWorkingTree;
21
+ function throwIfReleased({ refCount }) {
22
+ if (refCount === '0') {
23
+ throw new validation_error_1.ValidationError('ERELEASED', 'The current commit has already been released. Please make new commits before continuing.');
24
+ }
25
+ }
26
+ exports.throwIfReleased = throwIfReleased;
27
+ const EUNCOMMIT_MSG = 'Working tree has uncommitted changes, please commit or remove the following changes before continuing:\n';
28
+ function mkThrowIfUncommitted(options = {}, gitDryRun = false) {
29
+ return function ({ isDirty }) {
30
+ if (isDirty) {
31
+ return (0, collect_uncommitted_1.collectUncommitted)(options, gitDryRun).then((uncommitted) => {
32
+ throw new validation_error_1.ValidationError('EUNCOMMIT', `${EUNCOMMIT_MSG}${uncommitted.join('\n')}`);
33
+ });
34
+ }
35
+ };
36
+ }
37
+ exports.mkThrowIfUncommitted = mkThrowIfUncommitted;
38
+ function throwIfUncommitted() {
39
+ mkThrowIfUncommitted();
40
+ }
41
+ exports.throwIfUncommitted = throwIfUncommitted;
42
+ //# sourceMappingURL=check-working-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-working-tree.js","sourceRoot":"","sources":["../../src/utils/check-working-tree.ts"],"names":[],"mappings":";;;AAAA,+DAA2D;AAC3D,iDAA6C;AAC7C,0DAAsD;AAEtD,SAAgB,gBAAgB,CAAC,EAAE,GAAG,KAAK,EAAS,EAAE,SAAS,GAAG,KAAK;IACrE,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAE9B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAW,EAAC,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAErE,0EAA0E;IAC1E,MAAM,KAAK,GAAG;QACZ,+BAA+B;QAC/B,KAAK,CAAC,IAAI,CAAC,eAAsB,CAAC;QAClC,yCAAyC;QACzC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS,CAAQ,CAAC;KAC5D,CAAC;IAEF,8DAA8D;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC;AAfD,4CAeC;AAED,SAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE;IAC1C,IAAI,QAAQ,KAAK,GAAG,EAAE;QACpB,MAAM,IAAI,kCAAe,CACvB,WAAW,EACX,0FAA0F,CAC3F,CAAC;KACH;AACH,CAAC;AAPD,0CAOC;AAED,MAAM,aAAa,GACjB,0GAA0G,CAAC;AAE7G,SAAgB,oBAAoB,CAAC,UAAe,EAAE,EAAE,SAAS,GAAG,KAAK;IACvE,OAAO,UAAU,EAAE,OAAO,EAAE;QAC1B,IAAI,OAAO,EAAE;YACX,OAAO,IAAA,wCAAkB,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBACjE,MAAM,IAAI,kCAAe,CAAC,WAAW,EAAE,GAAG,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC;AACJ,CAAC;AARD,oDAQC;AAED,SAAgB,kBAAkB;IAChC,oBAAoB,EAAE,CAAC;AACzB,CAAC;AAFD,gDAEC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @param {import("execa").ExecaError} err
3
+ * @param {string} className
4
+ */
5
+ export declare function cleanStack(err: any, className: any): any;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cleanStack = void 0;
4
+ /**
5
+ * @param {import("execa").ExecaError} err
6
+ * @param {string} className
7
+ */
8
+ function cleanStack(err, className) {
9
+ const lines = err.stack ? err.stack.split('\n') : String(err).split('\n');
10
+ const cutoff = new RegExp(`^ at ${className}.runCommand .*$`);
11
+ const relevantIndex = lines.findIndex((line) => cutoff.test(line));
12
+ if (relevantIndex) {
13
+ return lines.slice(0, relevantIndex).join('\n');
14
+ }
15
+ // nothing matched, just return original error
16
+ return err;
17
+ }
18
+ exports.cleanStack = cleanStack;
19
+ //# sourceMappingURL=clean-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean-stack.js","sourceRoot":"","sources":["../../src/utils/clean-stack.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,UAAU,CAAC,GAAG,EAAE,SAAS;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,SAAS,iBAAiB,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,IAAI,aAAa,EAAE;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjD;IAED,8CAA8C;IAC9C,OAAO,GAAG,CAAC;AACb,CAAC;AAXD,gCAWC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @callback LocalDependentVisitor
3
+ * @param {import("@lerna/package-graph").PackageGraphNode} dependentNode
4
+ * @param {string} dependentName
5
+ * @param {Map<string, import("@lerna/package-graph").PackageGraphNode>} siblingDependents
6
+ */
7
+ /**
8
+ * Build a set of nodes that are dependents of the input set.
9
+ * @param {Set<import("@lerna/package-graph").PackageGraphNode>} nodes
10
+ */
11
+ export declare function collectDependents(nodes: any): Set<unknown>;