@backstage/cli 0.22.0-next.4 → 0.22.1-next.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 (43) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/cjs/{Lockfile-6785964d.cjs.js → Lockfile-938c566f.cjs.js} +103 -39
  3. package/dist/cjs/{PackageGraph-d4c67930.cjs.js → PackageGraph-27139b51.cjs.js} +75 -2
  4. package/dist/cjs/{build-efbe1772.cjs.js → build-f35ba9d4.cjs.js} +17 -11
  5. package/dist/cjs/{buildBackend-90e626c1.cjs.js → buildBackend-92288964.cjs.js} +6 -6
  6. package/dist/cjs/{buildWorkspace-049f7fce.cjs.js → buildWorkspace-90af4c50.cjs.js} +11 -6
  7. package/dist/cjs/{bump-48e145c6.cjs.js → bump-60e77b71.cjs.js} +18 -9
  8. package/dist/cjs/{clean-9bb1954c.cjs.js → clean-554e75b3.cjs.js} +11 -5
  9. package/dist/cjs/{clean-40990127.cjs.js → clean-98730a79.cjs.js} +2 -2
  10. package/dist/cjs/{config-99f059ba.cjs.js → config-9cbaba35.cjs.js} +3 -3
  11. package/dist/cjs/{createDistWorkspace-10410f74.cjs.js → createDistWorkspace-aba632c5.cjs.js} +5 -5
  12. package/dist/cjs/{createPlugin-4b43ad5f.cjs.js → createPlugin-7c210502.cjs.js} +5 -5
  13. package/dist/cjs/{diff-4ec2d8ef.cjs.js → diff-4f99d904.cjs.js} +2 -2
  14. package/dist/cjs/{docs-c50cd458.cjs.js → docs-17d299dc.cjs.js} +10 -4
  15. package/dist/cjs/{fix-56559632.cjs.js → fix-7d71aac2.cjs.js} +9 -3
  16. package/dist/cjs/{index-e8a8c257.cjs.js → index-173db28b.cjs.js} +15 -10
  17. package/dist/cjs/{index-d1bee1f1.cjs.js → index-a9c742dd.cjs.js} +14 -13
  18. package/dist/cjs/{index-a0b21e65.cjs.js → index-f37153bc.cjs.js} +43 -43
  19. package/dist/cjs/{index-c8276bf4.cjs.js → index-ff90d0b7.cjs.js} +3 -3
  20. package/dist/cjs/{info-a7caf225.cjs.js → info-3d85d4eb.cjs.js} +4 -4
  21. package/dist/cjs/{install-7a7a3e53.cjs.js → install-f9de4688.cjs.js} +4 -4
  22. package/dist/cjs/{lint-c52d6cb4.cjs.js → lint-524d2657.cjs.js} +2 -2
  23. package/dist/cjs/{lint-7871c545.cjs.js → lint-72ed986c.cjs.js} +13 -7
  24. package/dist/cjs/{lint-da5f8c60.cjs.js → lint-90c3b7a2.cjs.js} +15 -6
  25. package/dist/cjs/{list-deprecations-0a896a9f.cjs.js → list-deprecations-3f44175a.cjs.js} +9 -3
  26. package/dist/cjs/{new-9d4c99dd.cjs.js → new-812b42ff.cjs.js} +5 -5
  27. package/dist/cjs/{pack-84a5ba86.cjs.js → pack-7bc68e27.cjs.js} +2 -2
  28. package/dist/cjs/{packageLintConfigs-60db4c07.cjs.js → packageLintConfigs-ebf303c2.cjs.js} +9 -4
  29. package/dist/cjs/{packageRole-821a1d7f.cjs.js → packageRole-f29a3482.cjs.js} +3 -3
  30. package/dist/cjs/{packageRoles-be35985d.cjs.js → packageRoles-0c615b3b.cjs.js} +2 -2
  31. package/dist/cjs/{packageScripts-18d40047.cjs.js → packageScripts-042a9698.cjs.js} +10 -4
  32. package/dist/cjs/{packages-447d0e04.cjs.js → packages-ba696901.cjs.js} +3 -3
  33. package/dist/cjs/{paths-968963da.cjs.js → paths-517ec1e5.cjs.js} +3 -3
  34. package/dist/cjs/{print-219b2654.cjs.js → print-24588f54.cjs.js} +10 -4
  35. package/dist/cjs/{reactRouterDeps-c15e1980.cjs.js → reactRouterDeps-4f6b592f.cjs.js} +10 -4
  36. package/dist/cjs/{run-14c728f1.cjs.js → run-2ece670f.cjs.js} +2 -2
  37. package/dist/cjs/{schema-26c033dd.cjs.js → schema-9ac4b8ed.cjs.js} +10 -4
  38. package/dist/cjs/{tasks-379fe7f5.cjs.js → tasks-78bc530a.cjs.js} +2 -2
  39. package/dist/cjs/{test-830686ec.cjs.js → test-c2d0ed2f.cjs.js} +13 -7
  40. package/dist/cjs/{test-fb2d4d19.cjs.js → test-f35bf2af.cjs.js} +3 -3
  41. package/dist/cjs/{validate-34e8b5a0.cjs.js → validate-0f4fd4fc.cjs.js} +10 -4
  42. package/dist/index.cjs.js +1 -1
  43. package/package.json +14 -14
package/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.22.1-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 47c10706df: Fixed an issue where the CLI would fail to function when there was a mix of workspace and non-workspace versions of the same package in `yarn.lock` when using Yarn 3.
8
+ - a62a1f9dca: The frontend serve task now filters out allowed package duplicates during its package check, just like `versions:bump` and `versions:check`.
9
+ - 7c8a974515: The `repo test`, `repo lint`, and `repo build` commands will now analyze `yarn.lock` for dependency changes when searching for changed packages. This allows you to use the `--since <ref>` flag even if you have `yarn.lock` changes.
10
+ - e1b71e142e: Workspace ranges are no longer considered invalid by version commands.
11
+ - Updated dependencies
12
+ - @backstage/cli-common@0.1.11
13
+ - @backstage/config@1.0.5
14
+ - @backstage/config-loader@1.1.7
15
+ - @backstage/errors@1.1.4
16
+ - @backstage/release-manifests@0.0.8
17
+ - @backstage/types@1.0.2
18
+
19
+ ## 0.22.0
20
+
21
+ ### Minor Changes
22
+
23
+ - 736f893f72: The Jest configuration that was previously enabled with `BACKSTAGE_NEXT_TESTS` is now enabled by default. To revert to the old configuration you can now instead set `BACKSTAGE_OLD_TESTS`.
24
+
25
+ This new configuration uses the `babel` coverage provider rather than `v8`. It used to be that `v8` worked better when using Sucrase for transpilation, but now that we have switched to SWC, `babel` seems to work better. In addition, the new configuration also enables source maps by default, as they no longer have a negative impact on code coverage accuracy, and it also enables a modified Jest runtime with additional caching of script objects.
26
+
27
+ ### Patch Changes
28
+
29
+ - 91d050c140: changed tests created by create-plugin to follow eslint-rules best practices particularly testing-library/prefer-screen-queries and testing-library/render-result-naming-convention
30
+ - 43b2b9c791: Removed the unused dependency on `@sucrase/jest-plugin`.
31
+ - dd721148b5: Updated Jest coverage configuration to only apply either in the root project or package configuration, depending on whether repo or package tests are run.
32
+ - 5850ef9b84: Fix webpack dev server issue where it wasn't serving `index.html` from correct endpoint on subsequent requests.
33
+ - b05dcd5530: Move the `zod` dependency to a version that does not collide with other libraries
34
+ - 459a3457e1: Bump `msw` version in default plugin/app templates
35
+ - c27eabef6b: Adds new web-library package option when generating a new plugin
36
+ - 8fffe42708: JSX and React Fast Refresh transforms are no longer enabled when bundling backend code.
37
+ - 309f2daca4: Updated dependency `esbuild` to `^0.16.0`.
38
+ - ee14bab716: Updated dependency `minimatch` to `5.1.1` and switch version range to `^`.
39
+ - 3280711113: Updated dependency `msw` to `^0.49.0`.
40
+ - ed0cf59c59: Updated dependency `@rollup/plugin-commonjs` to `^23.0.0`.
41
+ - 16b7c2fccd: Updated dependency `@rollup/plugin-yaml` to `^4.0.0`.
42
+ - 086c0bbb45: Updated dependency `@rollup/plugin-json` to `^5.0.0`.
43
+ - 8015ff1258: Tweaked wording to use inclusive terminology
44
+ - d9d9a7a134: Removed all copyright notices from package templates.
45
+ - 8e0358e18d: Added `--skip-install` parameter to `backstage-cli versions:bump`
46
+ - Updated dependencies
47
+ - @backstage/errors@1.1.4
48
+ - @backstage/config-loader@1.1.7
49
+ - @backstage/release-manifests@0.0.8
50
+ - @backstage/types@1.0.2
51
+ - @backstage/cli-common@0.1.11
52
+ - @backstage/config@1.0.5
53
+
3
54
  ## 0.22.0-next.4
4
55
 
5
56
  ### Minor Changes
@@ -11,19 +11,6 @@ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
11
11
  var semver__default = /*#__PURE__*/_interopDefaultLegacy(semver);
12
12
 
13
13
  const ENTRY_PATTERN = /^((?:@[^/]+\/)?[^@/]+)@(.+)$/;
14
- function parseLockfile(lockfileContents) {
15
- try {
16
- return {
17
- object: parsers.parseSyml(lockfileContents),
18
- type: "success"
19
- };
20
- } catch (err) {
21
- return {
22
- object: null,
23
- type: err
24
- };
25
- }
26
- }
27
14
  const NEW_HEADER = `${[
28
15
  `# This file is generated by running "yarn install" inside your project.
29
16
  `,
@@ -31,9 +18,6 @@ const NEW_HEADER = `${[
31
18
  `
32
19
  ].join(``)}
33
20
  `;
34
- function stringifyLockfile(data, legacy) {
35
- return legacy ? lockfile.stringify(data) : NEW_HEADER + parsers.stringifySyml(data);
36
- }
37
21
  const LEGACY_REGEX = /^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;
38
22
  const SPECIAL_OBJECT_KEYS = [
39
23
  `__metadata`,
@@ -46,21 +30,24 @@ const SPECIAL_OBJECT_KEYS = [
46
30
  `binaries`
47
31
  ];
48
32
  class Lockfile {
49
- constructor(path, packages, data, legacy = false) {
50
- this.path = path;
33
+ constructor(packages, data, legacy = false) {
51
34
  this.packages = packages;
52
35
  this.data = data;
53
36
  this.legacy = legacy;
54
37
  }
55
38
  static async load(path) {
56
- var _a;
57
39
  const lockfileContents = await fs__default["default"].readFile(path, "utf8");
58
- const legacy = LEGACY_REGEX.test(lockfileContents);
59
- const lockfile = parseLockfile(lockfileContents);
60
- if (lockfile.type !== "success") {
61
- throw new Error(`Failed yarn.lock parse with ${lockfile.type}`);
40
+ return Lockfile.parse(lockfileContents);
41
+ }
42
+ static parse(content) {
43
+ var _a;
44
+ const legacy = LEGACY_REGEX.test(content);
45
+ let data;
46
+ try {
47
+ data = parsers.parseSyml(content);
48
+ } catch (err) {
49
+ throw new Error(`Failed yarn.lock parse, ${err}`);
62
50
  }
63
- const data = lockfile.object;
64
51
  const packages = /* @__PURE__ */ new Map();
65
52
  for (const [key, value] of Object.entries(data)) {
66
53
  if (SPECIAL_OBJECT_KEYS.includes(key))
@@ -81,10 +68,10 @@ class Lockfile {
81
68
  if (range.startsWith("npm:")) {
82
69
  range = range.slice("npm:".length);
83
70
  }
84
- queries.push({ range, version: value.version });
71
+ queries.push({ range, version: value.version, dataKey: key });
85
72
  }
86
73
  }
87
- return new Lockfile(path, packages, data, legacy);
74
+ return new Lockfile(packages, data, legacy);
88
75
  }
89
76
  get(name) {
90
77
  return this.packages.get(name);
@@ -94,7 +81,7 @@ class Lockfile {
94
81
  }
95
82
  analyze(options) {
96
83
  var _a;
97
- const { filter } = options != null ? options : {};
84
+ const { filter, localPackages } = options;
98
85
  const result = {
99
86
  invalidRanges: [],
100
87
  newVersions: [],
@@ -104,7 +91,9 @@ class Lockfile {
104
91
  if (filter && !filter(name)) {
105
92
  continue;
106
93
  }
107
- const invalid = allEntries.filter((e) => !semver__default["default"].validRange(e.range));
94
+ const invalid = allEntries.filter(
95
+ (e) => !semver__default["default"].validRange(e.range) && !e.range.startsWith("workspace:")
96
+ );
108
97
  result.invalidRanges.push(
109
98
  ...invalid.map(({ range }) => ({ name, range }))
110
99
  );
@@ -112,29 +101,44 @@ class Lockfile {
112
101
  if (entries.length < 2) {
113
102
  continue;
114
103
  }
115
- const versions = Array.from(new Set(entries.map((e) => e.version))).sort(
116
- (v1, v2) => semver__default["default"].rcompare(v1, v2)
117
- );
104
+ const versions = Array.from(new Set(entries.map((e) => e.version))).map((v) => {
105
+ if (v === "0.0.0-use.local") {
106
+ const local = localPackages.get(name);
107
+ if (!local) {
108
+ throw new Error(`No local package found for ${name}`);
109
+ }
110
+ if (!local.packageJson.version) {
111
+ throw new Error(`No version found for local package ${name}`);
112
+ }
113
+ return {
114
+ entryVersion: v,
115
+ actualVersion: local.packageJson.version
116
+ };
117
+ }
118
+ return { entryVersion: v, actualVersion: v };
119
+ }).sort((v1, v2) => semver__default["default"].rcompare(v1.actualVersion, v2.actualVersion));
118
120
  if (versions.length < 2) {
119
121
  continue;
120
122
  }
121
123
  const acceptedVersions = /* @__PURE__ */ new Set();
122
124
  for (const { version, range } of entries) {
123
- const acceptedVersion = versions.find((v) => semver__default["default"].satisfies(v, range));
125
+ const acceptedVersion = versions.find(
126
+ (v) => semver__default["default"].satisfies(v.actualVersion, range)
127
+ );
124
128
  if (!acceptedVersion) {
125
129
  throw new Error(
126
130
  `No existing version was accepted for range ${range}, searching through ${versions}, for package ${name}`
127
131
  );
128
132
  }
129
- if (acceptedVersion !== version) {
133
+ if (acceptedVersion.entryVersion !== version) {
130
134
  result.newVersions.push({
131
135
  name,
132
136
  range,
133
- newVersion: acceptedVersion,
137
+ newVersion: acceptedVersion.entryVersion,
134
138
  oldVersion: version
135
139
  });
136
140
  }
137
- acceptedVersions.add(acceptedVersion);
141
+ acceptedVersions.add(acceptedVersion.actualVersion);
138
142
  }
139
143
  if (acceptedVersions.size === 1) {
140
144
  continue;
@@ -206,13 +210,73 @@ class Lockfile {
206
210
  entry.version = newVersion;
207
211
  }
208
212
  }
209
- async save() {
210
- await fs__default["default"].writeFile(this.path, this.toString(), "utf8");
213
+ createSimplifiedDependencyGraph() {
214
+ const graph = /* @__PURE__ */ new Map();
215
+ for (const [name, entries] of this.packages) {
216
+ const dependencies = new Set(
217
+ entries.flatMap((e) => {
218
+ var _a, _b;
219
+ const data = this.data[e.dataKey];
220
+ return [
221
+ ...Object.keys((_a = data == null ? void 0 : data.dependencies) != null ? _a : {}),
222
+ ...Object.keys((_b = data == null ? void 0 : data.peerDependencies) != null ? _b : {})
223
+ ];
224
+ })
225
+ );
226
+ graph.set(name, dependencies);
227
+ }
228
+ return graph;
229
+ }
230
+ diff(otherLockfile) {
231
+ var _a;
232
+ const diff = {
233
+ added: new Array(),
234
+ changed: new Array(),
235
+ removed: new Array()
236
+ };
237
+ const remainingOldNames = new Set(this.packages.keys());
238
+ for (const [name, otherQueries] of otherLockfile.packages) {
239
+ remainingOldNames.delete(name);
240
+ const thisQueries = this.packages.get(name);
241
+ if (!thisQueries) {
242
+ diff.removed.push(...otherQueries.map((q) => ({ name, range: q.range })));
243
+ continue;
244
+ }
245
+ const remainingOldRanges = new Set(thisQueries.map((q) => q.range));
246
+ for (const otherQuery of otherQueries) {
247
+ remainingOldRanges.delete(otherQuery.range);
248
+ const thisQuery = thisQueries.find((q) => q.range === otherQuery.range);
249
+ if (!thisQuery) {
250
+ diff.removed.push({ name, range: otherQuery.range });
251
+ continue;
252
+ }
253
+ const otherPkg = otherLockfile.data[otherQuery.dataKey];
254
+ const thisPkg = this.data[thisQuery.dataKey];
255
+ if (otherPkg && thisPkg) {
256
+ const thisCheck = thisPkg.integrity || thisPkg.checksum;
257
+ const otherCheck = otherPkg.integrity || otherPkg.checksum;
258
+ if (thisCheck !== otherCheck) {
259
+ diff.changed.push({ name, range: otherQuery.range });
260
+ }
261
+ }
262
+ }
263
+ for (const thisRange of remainingOldRanges) {
264
+ diff.added.push({ name, range: thisRange });
265
+ }
266
+ }
267
+ for (const name of remainingOldNames) {
268
+ const queries = (_a = this.packages.get(name)) != null ? _a : [];
269
+ diff.added.push(...queries.map((q) => ({ name, range: q.range })));
270
+ }
271
+ return diff;
272
+ }
273
+ async save(path) {
274
+ await fs__default["default"].writeFile(path, this.toString(), "utf8");
211
275
  }
212
276
  toString() {
213
- return stringifyLockfile(this.data, this.legacy);
277
+ return this.legacy ? lockfile.stringify(this.data) : NEW_HEADER + parsers.stringifySyml(this.data);
214
278
  }
215
279
  }
216
280
 
217
281
  exports.Lockfile = Lockfile;
218
- //# sourceMappingURL=Lockfile-6785964d.cjs.js.map
282
+ //# sourceMappingURL=Lockfile-938c566f.cjs.js.map
@@ -2,10 +2,15 @@
2
2
 
3
3
  var path = require('path');
4
4
  var getPackages = require('@manypkg/get-packages');
5
- var index = require('./index-a0b21e65.cjs.js');
5
+ var index = require('./index-f37153bc.cjs.js');
6
6
  var errors = require('@backstage/errors');
7
7
  var child_process = require('child_process');
8
8
  var util = require('util');
9
+ var Lockfile = require('./Lockfile-938c566f.cjs.js');
10
+ require('minimatch');
11
+ require('chalk');
12
+ require('./yarn-6cd89e16.cjs.js');
13
+ require('./run-2ece670f.cjs.js');
9
14
 
10
15
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
16
 
@@ -44,6 +49,20 @@ async function listChangedFiles(ref) {
44
49
  const untracked = await runGit("ls-files", "--others", "--exclude-standard");
45
50
  return Array.from(/* @__PURE__ */ new Set([...tracked, ...untracked]));
46
51
  }
52
+ async function readFileAtRef(path, ref) {
53
+ let showRef = ref;
54
+ try {
55
+ const [base] = await runGit("merge-base", "HEAD", ref);
56
+ showRef = base;
57
+ } catch {
58
+ }
59
+ const { stdout } = await execFile("git", ["show", `${showRef}:${path}`], {
60
+ shell: true,
61
+ cwd: index.paths.targetRoot,
62
+ maxBuffer: 1024 * 1024 * 50
63
+ });
64
+ return stdout;
65
+ }
47
66
 
48
67
  class PackageGraph extends Map {
49
68
  static async listTargetPackages() {
@@ -161,9 +180,63 @@ class PackageGraph extends Map {
161
180
  }
162
181
  }
163
182
  }
183
+ if (changedFiles.includes("yarn.lock") && options.analyzeLockfile) {
184
+ let thisLockfile;
185
+ let otherLockfile;
186
+ try {
187
+ thisLockfile = await Lockfile.Lockfile.load(
188
+ index.paths.resolveTargetRoot("yarn.lock")
189
+ );
190
+ otherLockfile = Lockfile.Lockfile.parse(
191
+ await readFileAtRef("yarn.lock", options.ref)
192
+ );
193
+ } catch (error) {
194
+ console.warn(
195
+ `Failed to read lockfiles, assuming all packages have changed, ${error}`
196
+ );
197
+ return Array.from(this.values());
198
+ }
199
+ const diff = thisLockfile.diff(otherLockfile);
200
+ const graph = thisLockfile.createSimplifiedDependencyGraph();
201
+ {
202
+ const otherGraph = thisLockfile.createSimplifiedDependencyGraph();
203
+ for (const [name, dependencies] of otherGraph) {
204
+ const node = graph.get(name);
205
+ if (node) {
206
+ dependencies.forEach((d) => node.add(d));
207
+ } else {
208
+ graph.set(name, dependencies);
209
+ }
210
+ }
211
+ }
212
+ const changedPackages = new Set(
213
+ [...diff.added, ...diff.changed, ...diff.removed].map((e) => e.name)
214
+ );
215
+ let changed = false;
216
+ do {
217
+ changed = false;
218
+ for (const [name, dependencies] of graph) {
219
+ if (changedPackages.has(name)) {
220
+ continue;
221
+ }
222
+ for (const dep of dependencies) {
223
+ if (changedPackages.has(dep)) {
224
+ changed = true;
225
+ changedPackages.add(name);
226
+ break;
227
+ }
228
+ }
229
+ }
230
+ } while (changed);
231
+ for (const node of this.values()) {
232
+ if (changedPackages.has(node.name) && !result.includes(node)) {
233
+ result.push(node);
234
+ }
235
+ }
236
+ }
164
237
  return result;
165
238
  }
166
239
  }
167
240
 
168
241
  exports.PackageGraph = PackageGraph;
169
- //# sourceMappingURL=PackageGraph-d4c67930.cjs.js.map
242
+ //# sourceMappingURL=PackageGraph-27139b51.cjs.js.map
@@ -2,17 +2,17 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var path = require('path');
5
- var createDistWorkspace = require('./createDistWorkspace-10410f74.cjs.js');
6
- var PackageGraph = require('./PackageGraph-d4c67930.cjs.js');
5
+ var createDistWorkspace = require('./createDistWorkspace-aba632c5.cjs.js');
6
+ var PackageGraph = require('./PackageGraph-27139b51.cjs.js');
7
7
  var parallel = require('./parallel-a8f6219c.cjs.js');
8
- var index = require('./index-a0b21e65.cjs.js');
9
- var packageRoles = require('./packageRoles-be35985d.cjs.js');
10
- var buildBackend = require('./buildBackend-90e626c1.cjs.js');
8
+ var index = require('./index-f37153bc.cjs.js');
9
+ var packageRoles = require('./packageRoles-0c615b3b.cjs.js');
10
+ var buildBackend = require('./buildBackend-92288964.cjs.js');
11
11
  require('fs-extra');
12
12
  require('os');
13
13
  require('tar');
14
14
  require('lodash/partition');
15
- require('./run-14c728f1.cjs.js');
15
+ require('./run-2ece670f.cjs.js');
16
16
  require('child_process');
17
17
  require('util');
18
18
  require('@backstage/errors');
@@ -29,9 +29,14 @@ require('rollup-pluginutils');
29
29
  require('./svgrTemplate-550efce6.cjs.js');
30
30
  require('npm-packlist');
31
31
  require('@manypkg/get-packages');
32
+ require('./Lockfile-938c566f.cjs.js');
33
+ require('semver');
34
+ require('@yarnpkg/parsers');
35
+ require('@yarnpkg/lockfile');
36
+ require('minimatch');
37
+ require('./yarn-6cd89e16.cjs.js');
32
38
  require('worker_threads');
33
39
  require('commander');
34
- require('semver');
35
40
  require('@backstage/cli-common');
36
41
  require('zod');
37
42
  require('webpack');
@@ -40,7 +45,7 @@ require('html-webpack-plugin');
40
45
  require('react-dev-utils/ModuleScopePlugin');
41
46
  require('run-script-webpack-plugin');
42
47
  require('webpack-node-externals');
43
- require('./paths-968963da.cjs.js');
48
+ require('./paths-517ec1e5.cjs.js');
44
49
  require('mini-css-extract-plugin');
45
50
  require('@pmmmwh/react-refresh-webpack-plugin');
46
51
  require('eslint-webpack-plugin');
@@ -50,7 +55,7 @@ require('react-dev-utils/FileSizeReporter');
50
55
  require('react-dev-utils/formatWebpackMessages');
51
56
  require('webpack-dev-server');
52
57
  require('react-dev-utils/openBrowser');
53
- require('./config-99f059ba.cjs.js');
58
+ require('./config-9cbaba35.cjs.js');
54
59
  require('@backstage/config-loader');
55
60
  require('@backstage/config');
56
61
 
@@ -95,7 +100,8 @@ async function command(opts, cmd) {
95
100
  if (opts.since) {
96
101
  const graph = PackageGraph.PackageGraph.fromPackages(packages);
97
102
  const changedPackages = await graph.listChangedPackages({
98
- ref: opts.since
103
+ ref: opts.since,
104
+ analyzeLockfile: true
99
105
  });
100
106
  const withDevDependents = graph.collectPackageNames(
101
107
  changedPackages.map((pkg) => pkg.name),
@@ -186,4 +192,4 @@ async function command(opts, cmd) {
186
192
  }
187
193
 
188
194
  exports.command = command;
189
- //# sourceMappingURL=build-efbe1772.cjs.js.map
195
+ //# sourceMappingURL=build-f35ba9d4.cjs.js.map
@@ -10,11 +10,11 @@ require('run-script-webpack-plugin');
10
10
  require('webpack-node-externals');
11
11
  require('@backstage/cli-common');
12
12
  require('@manypkg/get-packages');
13
- var paths = require('./paths-968963da.cjs.js');
13
+ var paths = require('./paths-517ec1e5.cjs.js');
14
14
  require('mini-css-extract-plugin');
15
15
  require('@pmmmwh/react-refresh-webpack-plugin');
16
- require('./index-a0b21e65.cjs.js');
17
- require('./run-14c728f1.cjs.js');
16
+ require('./index-f37153bc.cjs.js');
17
+ require('./run-2ece670f.cjs.js');
18
18
  require('eslint-webpack-plugin');
19
19
  require('lodash/pickBy');
20
20
  var yn = require('yn');
@@ -24,10 +24,10 @@ var chalk = require('chalk');
24
24
  require('webpack-dev-server');
25
25
  require('react-dev-utils/openBrowser');
26
26
  var parallel = require('./parallel-a8f6219c.cjs.js');
27
- var config = require('./config-99f059ba.cjs.js');
27
+ var config = require('./config-9cbaba35.cjs.js');
28
28
  var os = require('os');
29
29
  var tar = require('tar');
30
- var createDistWorkspace = require('./createDistWorkspace-10410f74.cjs.js');
30
+ var createDistWorkspace = require('./createDistWorkspace-aba632c5.cjs.js');
31
31
 
32
32
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
33
33
 
@@ -195,4 +195,4 @@ async function buildBackend(options) {
195
195
 
196
196
  exports.buildBackend = buildBackend;
197
197
  exports.buildFrontend = buildFrontend;
198
- //# sourceMappingURL=buildBackend-90e626c1.cjs.js.map
198
+ //# sourceMappingURL=buildBackend-92288964.cjs.js.map
@@ -1,22 +1,27 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var createDistWorkspace = require('./createDistWorkspace-10410f74.cjs.js');
4
+ var createDistWorkspace = require('./createDistWorkspace-aba632c5.cjs.js');
5
5
  require('chalk');
6
6
  require('path');
7
7
  require('os');
8
8
  require('tar');
9
9
  require('lodash/partition');
10
- require('./index-a0b21e65.cjs.js');
10
+ require('./index-f37153bc.cjs.js');
11
11
  require('commander');
12
12
  require('semver');
13
13
  require('@backstage/cli-common');
14
14
  require('@backstage/errors');
15
- require('./run-14c728f1.cjs.js');
15
+ require('./run-2ece670f.cjs.js');
16
16
  require('child_process');
17
17
  require('util');
18
- require('./PackageGraph-d4c67930.cjs.js');
18
+ require('./PackageGraph-27139b51.cjs.js');
19
19
  require('@manypkg/get-packages');
20
+ require('./Lockfile-938c566f.cjs.js');
21
+ require('@yarnpkg/parsers');
22
+ require('@yarnpkg/lockfile');
23
+ require('minimatch');
24
+ require('./yarn-6cd89e16.cjs.js');
20
25
  require('rollup');
21
26
  require('@rollup/plugin-commonjs');
22
27
  require('@rollup/plugin-node-resolve');
@@ -30,7 +35,7 @@ require('rollup-pluginutils');
30
35
  require('./svgrTemplate-550efce6.cjs.js');
31
36
  require('./parallel-a8f6219c.cjs.js');
32
37
  require('worker_threads');
33
- require('./packageRoles-be35985d.cjs.js');
38
+ require('./packageRoles-0c615b3b.cjs.js');
34
39
  require('zod');
35
40
  require('npm-packlist');
36
41
 
@@ -48,4 +53,4 @@ var buildWorkspace = async (dir, packages) => {
48
53
  };
49
54
 
50
55
  exports["default"] = buildWorkspace;
51
- //# sourceMappingURL=buildWorkspace-049f7fce.cjs.js.map
56
+ //# sourceMappingURL=buildWorkspace-90af4c50.cjs.js.map
@@ -7,15 +7,16 @@ var semver = require('semver');
7
7
  var minimatch = require('minimatch');
8
8
  var errors = require('@backstage/errors');
9
9
  var path = require('path');
10
- var run = require('./run-14c728f1.cjs.js');
11
- var index = require('./index-a0b21e65.cjs.js');
12
- var Lockfile = require('./Lockfile-6785964d.cjs.js');
13
- var packages = require('./packages-447d0e04.cjs.js');
14
- var lint = require('./lint-7871c545.cjs.js');
10
+ var run = require('./run-2ece670f.cjs.js');
11
+ var index = require('./index-f37153bc.cjs.js');
12
+ var Lockfile = require('./Lockfile-938c566f.cjs.js');
13
+ var packages = require('./packages-ba696901.cjs.js');
14
+ var lint = require('./lint-72ed986c.cjs.js');
15
15
  var cliCommon = require('@backstage/cli-common');
16
16
  var parallel = require('./parallel-a8f6219c.cjs.js');
17
17
  var releaseManifests = require('@backstage/release-manifests');
18
18
  require('global-agent/bootstrap');
19
+ var PackageGraph = require('./PackageGraph-27139b51.cjs.js');
19
20
  require('child_process');
20
21
  require('util');
21
22
  require('commander');
@@ -161,7 +162,7 @@ var bump = async (opts) => {
161
162
  lockfile.remove(name, range);
162
163
  }
163
164
  }
164
- await lockfile.save();
165
+ await lockfile.save(lockfilePath);
165
166
  }
166
167
  const breakingUpdates = /* @__PURE__ */ new Map();
167
168
  await parallel.runParallelWorkers({
@@ -205,7 +206,12 @@ var bump = async (opts) => {
205
206
  )
206
207
  );
207
208
  }
208
- await runYarnInstall();
209
+ if (!opts.skipInstall) {
210
+ await runYarnInstall();
211
+ } else {
212
+ console.log();
213
+ console.log(chalk__default["default"].yellow(`Skipping yarn install`));
214
+ }
209
215
  if (breakingUpdates.size > 0) {
210
216
  console.log();
211
217
  console.log(
@@ -241,7 +247,10 @@ var bump = async (opts) => {
241
247
  console.log();
242
248
  const dedupLockfile = await Lockfile.Lockfile.load(lockfilePath);
243
249
  const result = dedupLockfile.analyze({
244
- filter
250
+ filter,
251
+ localPackages: PackageGraph.PackageGraph.fromPackages(
252
+ await PackageGraph.PackageGraph.listTargetPackages()
253
+ )
245
254
  });
246
255
  if (result.newVersions.length > 0) {
247
256
  throw new Error("Duplicate versions present after package bump");
@@ -396,4 +405,4 @@ exports.bumpBackstageJsonVersion = bumpBackstageJsonVersion;
396
405
  exports.createStrictVersionFinder = createStrictVersionFinder;
397
406
  exports.createVersionFinder = createVersionFinder;
398
407
  exports["default"] = bump;
399
- //# sourceMappingURL=bump-48e145c6.cjs.js.map
408
+ //# sourceMappingURL=bump-60e77b71.cjs.js.map
@@ -4,13 +4,19 @@ var child_process = require('child_process');
4
4
  var fs = require('fs-extra');
5
5
  var path = require('path');
6
6
  var util = require('util');
7
- var PackageGraph = require('./PackageGraph-d4c67930.cjs.js');
8
- var index = require('./index-a0b21e65.cjs.js');
7
+ var PackageGraph = require('./PackageGraph-27139b51.cjs.js');
8
+ var index = require('./index-f37153bc.cjs.js');
9
9
  require('@manypkg/get-packages');
10
10
  require('@backstage/errors');
11
- require('commander');
12
- require('chalk');
11
+ require('./Lockfile-938c566f.cjs.js');
13
12
  require('semver');
13
+ require('@yarnpkg/parsers');
14
+ require('@yarnpkg/lockfile');
15
+ require('minimatch');
16
+ require('chalk');
17
+ require('./yarn-6cd89e16.cjs.js');
18
+ require('./run-2ece670f.cjs.js');
19
+ require('commander');
14
20
  require('@backstage/cli-common');
15
21
 
16
22
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -47,4 +53,4 @@ async function command() {
47
53
  }
48
54
 
49
55
  exports.command = command;
50
- //# sourceMappingURL=clean-9bb1954c.cjs.js.map
56
+ //# sourceMappingURL=clean-554e75b3.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-a0b21e65.cjs.js');
4
+ var index = require('./index-f37153bc.cjs.js');
5
5
  require('commander');
6
6
  require('chalk');
7
7
  require('semver');
@@ -19,4 +19,4 @@ async function clean() {
19
19
  }
20
20
 
21
21
  exports["default"] = clean;
22
- //# sourceMappingURL=clean-40990127.cjs.js.map
22
+ //# sourceMappingURL=clean-98730a79.cjs.js.map
@@ -2,9 +2,9 @@
2
2
 
3
3
  var configLoader = require('@backstage/config-loader');
4
4
  var config = require('@backstage/config');
5
- var index = require('./index-a0b21e65.cjs.js');
5
+ var index = require('./index-f37153bc.cjs.js');
6
6
  var getPackages = require('@manypkg/get-packages');
7
- var PackageGraph = require('./PackageGraph-d4c67930.cjs.js');
7
+ var PackageGraph = require('./PackageGraph-27139b51.cjs.js');
8
8
 
9
9
  function isValidUrl(url) {
10
10
  try {
@@ -82,4 +82,4 @@ async function loadCliConfig(options) {
82
82
  }
83
83
 
84
84
  exports.loadCliConfig = loadCliConfig;
85
- //# sourceMappingURL=config-99f059ba.cjs.js.map
85
+ //# sourceMappingURL=config-9cbaba35.cjs.js.map