@backstage/cli 0.26.11-next.1 → 0.27.0-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 (49) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/config/eslint-factory.js +1 -0
  3. package/dist/cjs/Lockfile-B4mqBkH6.cjs.js +86 -0
  4. package/dist/cjs/{build-fqzNfqa5.cjs.js → build-D5DoFqm6.cjs.js} +9 -13
  5. package/dist/cjs/{buildBackend-CrQ_GwBs.cjs.js → buildBackend-UK6nC6VL.cjs.js} +41 -38
  6. package/dist/cjs/{buildWorkspace-Bv-xt2y-.cjs.js → buildWorkspace-Z-hpJt9g.cjs.js} +4 -4
  7. package/dist/cjs/{bump-DG3jcOMS.cjs.js → bump-Qc4jNLOA.cjs.js} +7 -84
  8. package/dist/cjs/{clean-BGNU8ShE.cjs.js → clean-CB6dTqaG.cjs.js} +2 -2
  9. package/dist/cjs/{clean-83xjoKEJ.cjs.js → clean-DlsJGDLw.cjs.js} +2 -2
  10. package/dist/cjs/{codeowners-B-nGMoIG.cjs.js → codeowners-0MT7UP_S.cjs.js} +2 -2
  11. package/dist/cjs/{config-eLDUbNFK.cjs.js → config-B1bkp-HP.cjs.js} +43 -35
  12. package/dist/cjs/{createDistWorkspace-vhWGDizr.cjs.js → createDistWorkspace-0v54ePDJ.cjs.js} +3 -3
  13. package/dist/cjs/{createPlugin-B1qnN0IC.cjs.js → createPlugin-CUOGhq6P.cjs.js} +6 -6
  14. package/dist/cjs/{diff-BU6vhJMf.cjs.js → diff-BaiaASdN.cjs.js} +2 -2
  15. package/dist/cjs/{docs-GJmQNVkJ.cjs.js → docs-D8vejOxE.cjs.js} +3 -3
  16. package/dist/cjs/{fix-BhwlcHp_.cjs.js → fix-C7T4cvOB.cjs.js} +2 -2
  17. package/dist/cjs/{index-CTTm1_x6.cjs.js → index-1VtfY6wb.cjs.js} +4 -4
  18. package/dist/cjs/{index-CYI5nGsH.cjs.js → index-B8Ebu0mP.cjs.js} +38 -16
  19. package/dist/cjs/{index-DX-m2Ed0.cjs.js → index-BAcLy7dK.cjs.js} +48 -47
  20. package/dist/cjs/{index-pTrNn6sL.cjs.js → index-Bu7Vqly9.cjs.js} +50 -63
  21. package/dist/cjs/{index-D8nglRxA.cjs.js → index-F8W-9gIc.cjs.js} +2 -2
  22. package/dist/cjs/{info-CSiHnHqF.cjs.js → info-D_IhL0i0.cjs.js} +4 -4
  23. package/dist/cjs/{install-C6PA5oT4.cjs.js → install-DGaf_UuL.cjs.js} +5 -5
  24. package/dist/cjs/{lint-yikicfA4.cjs.js → lint-CRqMLZJ5.cjs.js} +2 -2
  25. package/dist/cjs/lint-Dkx_fBkS.cjs.js +10 -0
  26. package/dist/cjs/{lint-D0v-Gi6H.cjs.js → lint-EJvdRB7_.cjs.js} +2 -2
  27. package/dist/cjs/{list-deprecations-Coko6Rsb.cjs.js → list-deprecations-COfvNjrB.cjs.js} +2 -2
  28. package/dist/cjs/{packageDetection-B6lJYBh9.cjs.js → moduleFederation-CQZbFAit.cjs.js} +179 -38
  29. package/dist/cjs/{new-Da1kvXDQ.cjs.js → new-DB_oe66E.cjs.js} +6 -6
  30. package/dist/cjs/{pack-D8b4JM6B.cjs.js → pack-BcxxlYor.cjs.js} +2 -2
  31. package/dist/cjs/{packageExports-DDff9ia4.cjs.js → packageExports-FpoAU1Be.cjs.js} +3 -3
  32. package/dist/cjs/{packageLintConfigs-Bfvzg--7.cjs.js → packageLintConfigs-D7LMvTow.cjs.js} +3 -3
  33. package/dist/cjs/{packageRole-CXerjPpL.cjs.js → packageRole-BeuvccV9.cjs.js} +2 -2
  34. package/dist/cjs/{packages-BgyW9VKx.cjs.js → packages-DPPEGYIi.cjs.js} +3 -3
  35. package/dist/cjs/{print-C5tbwB1-.cjs.js → print-DuJqsJ2y.cjs.js} +3 -3
  36. package/dist/cjs/{role-BjmWpqH5.cjs.js → role-DAaP4LE5.cjs.js} +2 -2
  37. package/dist/cjs/{run-ClbD5HPt.cjs.js → run-CPcG7YxR.cjs.js} +2 -2
  38. package/dist/cjs/{schema-DbqftE60.cjs.js → schema-CR794PHv.cjs.js} +3 -3
  39. package/dist/cjs/{tasks-XfFuuYgf.cjs.js → tasks-4L8FqWEM.cjs.js} +2 -2
  40. package/dist/cjs/{test-BYKGLz-_.cjs.js → test-303IpaqN.cjs.js} +3 -3
  41. package/dist/cjs/{test-BEyXOT0e.cjs.js → test-y8AV0JOP.cjs.js} +3 -3
  42. package/dist/cjs/{validate-D4vVgxsi.cjs.js → validate-DZJIL6CK.cjs.js} +3 -3
  43. package/dist/index.cjs.js +1 -1
  44. package/package.json +12 -11
  45. package/templates/default-backend-plugin/package.json.hbs +0 -1
  46. package/templates/default-backend-plugin/src/service/router.ts +2 -3
  47. package/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs +2 -2
  48. package/dist/cjs/Lockfile-BndFvzHc.cjs.js +0 -221
  49. package/dist/cjs/lint-DqMGmvsS.cjs.js +0 -112
package/CHANGELOG.md CHANGED
@@ -1,5 +1,68 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.27.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 32a38e1: **BREAKING**: The lockfile (`yarn.lock`) dependency analysis and mutations have been removed from several commands.
8
+
9
+ The `versions:bump` command will no longer attempt to bump and deduplicate dependencies by modifying the lockfile, it will only update `package.json` files.
10
+
11
+ The `versions:check` command has been removed, since its only purpose was verification and mutation of the lockfile. We recommend using the `yarn dedupe` command instead, or the `yarn-deduplicate` package if you're using Yarn classic.
12
+
13
+ The check that was built into the `package start` command has been removed, it will no longer warn about lockfile mismatches.
14
+
15
+ The packages in the Backstage ecosystem handle package duplications much better now than when these CLI features were first introduced, so the need for these features has diminished. By removing them, we drastically reduce the integration between the Backstage CLI and Yarn, making it much easier to add support for other package managers in the future.
16
+
17
+ ### Patch Changes
18
+
19
+ - 7eb08a6: Add frontend-dynamic-container role to eslint config factory
20
+ - fbc7819: Use ES2022 in CLI bundler
21
+ - e53074f: Updated default backend plugin to use `RootConfigService` instead of `Config`. This also removes the dependency on `@backstage/config` as it's no longer used.
22
+ - ee2b0e5: The experimental module federation build now has the ability to force the use of development versions of `react` and `react-dom` by setting the `FORCE_REACT_DEVELOPMENT` flag.
23
+ - 239dffc: Remove usage of deprecated functionality from @backstage/config-loader
24
+ - 0eedec3: Add support for dynamic plugins via the EXPERIMENTAL_MODULE_FEDERATION environment variable when running `yarn start`.
25
+ - dc4fb4f: Fix for `repo build --all` not properly detecting the experimental public entry point.
26
+ - Updated dependencies
27
+ - @backstage/integration@1.14.0-next.0
28
+ - @backstage/config-loader@1.8.2-next.0
29
+ - @backstage/catalog-model@1.5.0
30
+ - @backstage/cli-common@0.1.14
31
+ - @backstage/cli-node@0.2.7
32
+ - @backstage/config@1.2.0
33
+ - @backstage/errors@1.2.4
34
+ - @backstage/eslint-plugin@0.1.8
35
+ - @backstage/release-manifests@0.0.11
36
+ - @backstage/types@1.1.1
37
+
38
+ ## 0.26.11
39
+
40
+ ### Patch Changes
41
+
42
+ - 133464c: Added experimental support for dynamic frontend plugin builds, enabled via setting `EXPERIMENTAL_MODULE_FEDERATION` for the app build, and using the `frontend-dynamic-container` package role to create a container. Both of these are experimental and will change in the future.
43
+ - e2e320c: - remove unused dependencies `winston` and `yn` from the template of backend plugins;
44
+ - update `msw` to version `2.3.1` in the template of backend plugins;
45
+ starting with v1 and switching later to v2 is tedious and not straight forward; it's easier to start with v2;
46
+ - 0540c5a: Updated the scaffolding output message for `plugin-common` in `backstage-cli`. Now, when executing `backstage-cli new` to create a new `plugin-common` package, the output message accurately reflects the action by displaying `Creating common plugin package...` instead of the previous, less accurate `Creating backend plugin...`.
47
+ - 7652db4: Only bootstrap global-agent if it's actually being used
48
+ - f0c0039: Fix issue with CLI that was preventing upgrading from 1.28
49
+ - d228862: Update default backend plugin created by the cli to use non-deprecated error handling middleware
50
+ - da90cce: Updated dependency `esbuild` to `^0.21.0`.
51
+ - a60d73b: Fix a few minor issues with the backend template that were causing failing linting checks in the main repo.
52
+ - 0510d98: Subpath export `package.json` should be of a unique name to avoid typescript resolution issues
53
+ - 4baac0c: The `backendPlugin` and `backendModule` factory now includes a step for automatically adding the new backend plugin/module to the `index.ts` file of the backend.
54
+ - Updated dependencies
55
+ - @backstage/cli-node@0.2.7
56
+ - @backstage/integration@1.13.0
57
+ - @backstage/config-loader@1.8.1
58
+ - @backstage/catalog-model@1.5.0
59
+ - @backstage/cli-common@0.1.14
60
+ - @backstage/config@1.2.0
61
+ - @backstage/errors@1.2.4
62
+ - @backstage/eslint-plugin@0.1.8
63
+ - @backstage/release-manifests@0.0.11
64
+ - @backstage/types@1.1.1
65
+
3
66
  ## 0.26.11-next.1
4
67
 
5
68
  ### Patch Changes
@@ -201,6 +201,7 @@ function createConfigForRole(dir, role, extraConfig = {}) {
201
201
  case 'frontend':
202
202
  case 'frontend-plugin':
203
203
  case 'frontend-plugin-module':
204
+ case 'frontend-dynamic-container':
204
205
  return createConfig(dir, {
205
206
  ...extraConfig,
206
207
  extends: [
@@ -0,0 +1,86 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs-extra');
4
+ var parsers = require('@yarnpkg/parsers');
5
+ var lockfile = require('@yarnpkg/lockfile');
6
+
7
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
+
9
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
10
+
11
+ const ENTRY_PATTERN = /^((?:@[^/]+\/)?[^@/]+)@(.+)$/;
12
+ const NEW_HEADER = `${[
13
+ `# This file is generated by running "yarn install" inside your project.
14
+ `,
15
+ `# Manual changes might be lost - proceed with caution!
16
+ `
17
+ ].join(``)}
18
+ `;
19
+ const LEGACY_REGEX = /^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;
20
+ const SPECIAL_OBJECT_KEYS = [
21
+ `__metadata`,
22
+ `version`,
23
+ `resolution`,
24
+ `dependencies`,
25
+ `peerDependencies`,
26
+ `dependenciesMeta`,
27
+ `peerDependenciesMeta`,
28
+ `binaries`
29
+ ];
30
+ class Lockfile {
31
+ constructor(packages, data, legacy = false) {
32
+ this.packages = packages;
33
+ this.data = data;
34
+ this.legacy = legacy;
35
+ }
36
+ static async load(path) {
37
+ const lockfileContents = await fs__default.default.readFile(path, "utf8");
38
+ return Lockfile.parse(lockfileContents);
39
+ }
40
+ static parse(content) {
41
+ const legacy = LEGACY_REGEX.test(content);
42
+ let data;
43
+ try {
44
+ data = parsers.parseSyml(content);
45
+ } catch (err) {
46
+ throw new Error(`Failed yarn.lock parse, ${err}`);
47
+ }
48
+ const packages = /* @__PURE__ */ new Map();
49
+ for (const [key, value] of Object.entries(data)) {
50
+ if (SPECIAL_OBJECT_KEYS.includes(key)) continue;
51
+ const [, name, ranges] = ENTRY_PATTERN.exec(key) ?? [];
52
+ if (!name) {
53
+ throw new Error(`Failed to parse yarn.lock entry '${key}'`);
54
+ }
55
+ let queries = packages.get(name);
56
+ if (!queries) {
57
+ queries = [];
58
+ packages.set(name, queries);
59
+ }
60
+ for (let range of ranges.split(/\s*,\s*/)) {
61
+ if (range.startsWith(`${name}@`)) {
62
+ range = range.slice(`${name}@`.length);
63
+ }
64
+ if (range.startsWith("npm:")) {
65
+ range = range.slice("npm:".length);
66
+ }
67
+ queries.push({ range, version: value.version, dataKey: key });
68
+ }
69
+ }
70
+ return new Lockfile(packages, data, legacy);
71
+ }
72
+ /** Get the entries for a single package in the lockfile */
73
+ get(name) {
74
+ return this.packages.get(name);
75
+ }
76
+ /** Returns the name of all packages available in the lockfile */
77
+ keys() {
78
+ return this.packages.keys();
79
+ }
80
+ toString() {
81
+ return this.legacy ? lockfile.stringify(this.data) : NEW_HEADER + parsers.stringifySyml(this.data);
82
+ }
83
+ }
84
+
85
+ exports.Lockfile = Lockfile;
86
+ //# sourceMappingURL=Lockfile-B4mqBkH6.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-vhWGDizr.cjs.js');
6
- var index = require('./index-DX-m2Ed0.cjs.js');
5
+ var createDistWorkspace = require('./createDistWorkspace-0v54ePDJ.cjs.js');
6
+ var index = require('./index-BAcLy7dK.cjs.js');
7
7
  var cliNode = require('@backstage/cli-node');
8
8
  var parallel = require('./parallel-BszNaKyc.cjs.js');
9
- var buildBackend = require('./buildBackend-CrQ_GwBs.cjs.js');
9
+ var buildBackend = require('./buildBackend-UK6nC6VL.cjs.js');
10
10
  require('fs-extra');
11
11
  require('p-limit');
12
12
  require('os');
13
13
  require('tar');
14
14
  require('lodash/partition');
15
- require('./run-ClbD5HPt.cjs.js');
15
+ require('./run-CPcG7YxR.cjs.js');
16
16
  require('child_process');
17
17
  require('util');
18
18
  require('@backstage/errors');
@@ -38,28 +38,24 @@ require('webpack');
38
38
  require('eslint-webpack-plugin');
39
39
  require('fork-ts-checker-webpack-plugin');
40
40
  require('html-webpack-plugin');
41
+ require('@module-federation/enhanced/webpack');
41
42
  require('react-dev-utils/ModuleScopePlugin');
42
43
  require('run-script-webpack-plugin');
44
+ require('@pmmmwh/react-refresh-webpack-plugin');
43
45
  require('@manypkg/get-packages');
44
46
  require('webpack-node-externals');
45
- require('./packageDetection-B6lJYBh9.cjs.js');
47
+ require('./moduleFederation-CQZbFAit.cjs.js');
46
48
  require('lodash/pickBy');
47
49
  require('mini-css-extract-plugin');
48
- require('@pmmmwh/react-refresh-webpack-plugin');
49
50
  require('yn');
50
51
  require('@backstage/config');
51
52
  require('chokidar');
52
53
  require('p-queue');
53
54
  require('react-dev-utils/FileSizeReporter');
54
55
  require('react-dev-utils/formatWebpackMessages');
55
- require('lodash/uniq');
56
56
  require('react-dev-utils/openBrowser');
57
57
  require('webpack-dev-server');
58
- require('@yarnpkg/parsers');
59
- require('@yarnpkg/lockfile');
60
- require('minimatch');
61
- require('./yarn-Ukl9MOS0.cjs.js');
62
- require('./config-eLDUbNFK.cjs.js');
58
+ require('./config-B1bkp-HP.cjs.js');
63
59
  require('@backstage/config-loader');
64
60
 
65
61
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -193,4 +189,4 @@ async function command(opts, cmd) {
193
189
  }
194
190
 
195
191
  exports.command = command;
196
- //# sourceMappingURL=build-fqzNfqa5.cjs.js.map
192
+ //# sourceMappingURL=build-D5DoFqm6.cjs.js.map
@@ -3,47 +3,40 @@
3
3
  var fs = require('fs-extra');
4
4
  var path = require('path');
5
5
  var webpack = require('webpack');
6
+ var chalk = require('chalk');
6
7
  require('eslint-webpack-plugin');
7
8
  require('fork-ts-checker-webpack-plugin');
8
9
  require('html-webpack-plugin');
10
+ require('@module-federation/enhanced/webpack');
9
11
  require('@backstage/cli-common');
10
12
  require('react-dev-utils/ModuleScopePlugin');
11
13
  require('run-script-webpack-plugin');
12
- require('./index-DX-m2Ed0.cjs.js');
14
+ require('@pmmmwh/react-refresh-webpack-plugin');
15
+ require('./index-BAcLy7dK.cjs.js');
13
16
  require('@manypkg/get-packages');
14
17
  require('webpack-node-externals');
15
- var packageDetection = require('./packageDetection-B6lJYBh9.cjs.js');
18
+ var moduleFederation = require('./moduleFederation-CQZbFAit.cjs.js');
16
19
  require('lodash/pickBy');
17
- require('./run-ClbD5HPt.cjs.js');
20
+ require('./run-CPcG7YxR.cjs.js');
18
21
  require('mini-css-extract-plugin');
19
- require('@pmmmwh/react-refresh-webpack-plugin');
20
22
  var yn = require('yn');
21
23
  var FileSizeReporter = require('react-dev-utils/FileSizeReporter');
22
24
  var formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
23
- var chalk = require('chalk');
24
- require('@backstage/cli-node');
25
- require('lodash/uniq');
26
25
  require('react-dev-utils/openBrowser');
27
26
  require('webpack-dev-server');
28
- require('semver');
29
- require('@yarnpkg/parsers');
30
- require('@yarnpkg/lockfile');
31
- require('minimatch');
32
- require('./yarn-Ukl9MOS0.cjs.js');
33
- require('lodash/partition');
34
- var config = require('./config-eLDUbNFK.cjs.js');
27
+ var config = require('./config-B1bkp-HP.cjs.js');
35
28
  var parallel = require('./parallel-BszNaKyc.cjs.js');
36
29
  var os = require('os');
37
30
  var tar = require('tar');
38
- var createDistWorkspace = require('./createDistWorkspace-vhWGDizr.cjs.js');
31
+ var createDistWorkspace = require('./createDistWorkspace-0v54ePDJ.cjs.js');
39
32
 
40
33
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
41
34
 
42
35
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
43
36
  var webpack__default = /*#__PURE__*/_interopDefaultCompat(webpack);
37
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
44
38
  var yn__default = /*#__PURE__*/_interopDefaultCompat(yn);
45
39
  var formatWebpackMessages__default = /*#__PURE__*/_interopDefaultCompat(formatWebpackMessages);
46
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
47
40
  var os__default = /*#__PURE__*/_interopDefaultCompat(os);
48
41
  var tar__default = /*#__PURE__*/_interopDefaultCompat(tar);
49
42
 
@@ -55,40 +48,46 @@ function applyContextToError(error, moduleName) {
55
48
  }
56
49
  async function buildBundle(options) {
57
50
  const { statsJsonEnabled, schema: configSchema } = options;
58
- const paths = packageDetection.resolveBundlingPaths(options);
59
- const publicPaths = await packageDetection.resolveOptionalBundlingPaths({
51
+ const paths = moduleFederation.resolveBundlingPaths(options);
52
+ const publicPaths = await moduleFederation.resolveOptionalBundlingPaths({
53
+ targetDir: options.targetDir,
60
54
  entry: "src/index-public-experimental",
61
55
  dist: "dist/public"
62
56
  });
63
- const detectedModulesEntryPoint = await packageDetection.createDetectedModulesEntryPoint({
64
- config: options.fullConfig,
65
- targetPath: paths.targetPath
66
- });
67
57
  const commonConfigOptions = {
68
58
  ...options,
69
59
  checksEnabled: false,
70
60
  isDev: false,
71
61
  getFrontendAppConfigs: () => options.frontendAppConfigs
72
62
  };
73
- const configs = [
74
- await packageDetection.createConfig(paths, {
75
- ...commonConfigOptions,
76
- additionalEntryPoints: detectedModulesEntryPoint,
77
- appMode: publicPaths ? "protected" : "public"
78
- })
79
- ];
80
- if (publicPaths) {
81
- console.log(
82
- chalk__default.default.yellow(
83
- `\u26A0\uFE0F WARNING: The app /public entry point is an experimental feature that may receive immediate breaking changes.`
84
- )
85
- );
63
+ const configs = [];
64
+ if (options.moduleFederation?.mode === "remote") {
65
+ configs.push(await moduleFederation.createConfig(paths, commonConfigOptions));
66
+ } else {
67
+ const detectedModulesEntryPoint = await moduleFederation.createDetectedModulesEntryPoint({
68
+ config: options.fullConfig,
69
+ targetPath: paths.targetPath
70
+ });
86
71
  configs.push(
87
- await packageDetection.createConfig(publicPaths, {
72
+ await moduleFederation.createConfig(paths, {
88
73
  ...commonConfigOptions,
89
- appMode: "public"
74
+ additionalEntryPoints: detectedModulesEntryPoint,
75
+ appMode: publicPaths ? "protected" : "public"
90
76
  })
91
77
  );
78
+ if (publicPaths) {
79
+ console.log(
80
+ chalk__default.default.yellow(
81
+ `\u26A0\uFE0F WARNING: The app /public entry point is an experimental feature that may receive immediate breaking changes.`
82
+ )
83
+ );
84
+ configs.push(
85
+ await moduleFederation.createConfig(publicPaths, {
86
+ ...commonConfigOptions,
87
+ appMode: "public"
88
+ })
89
+ );
90
+ }
92
91
  }
93
92
  const isCi = yn__default.default(process.env.CI, { default: false });
94
93
  const previousFileSizes = await FileSizeReporter.measureFileSizesBeforeBuild(paths.targetDist);
@@ -207,6 +206,10 @@ async function buildFrontend(options) {
207
206
  entry: "src/index",
208
207
  parallelism: parallel.getEnvironmentParallelism(),
209
208
  statsJsonEnabled: writeStats,
209
+ moduleFederation: moduleFederation.getModuleFederationOptions(
210
+ name,
211
+ options.isModuleFederationRemote
212
+ ),
210
213
  ...await config.loadCliConfig({
211
214
  args: configPaths,
212
215
  fromPackage: name
@@ -260,4 +263,4 @@ async function buildBackend(options) {
260
263
 
261
264
  exports.buildBackend = buildBackend;
262
265
  exports.buildFrontend = buildFrontend;
263
- //# sourceMappingURL=buildBackend-CrQ_GwBs.cjs.js.map
266
+ //# sourceMappingURL=buildBackend-UK6nC6VL.cjs.js.map
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var createDistWorkspace = require('./createDistWorkspace-vhWGDizr.cjs.js');
4
+ var createDistWorkspace = require('./createDistWorkspace-0v54ePDJ.cjs.js');
5
5
  require('chalk');
6
6
  require('path');
7
7
  require('p-limit');
8
8
  require('os');
9
9
  require('tar');
10
10
  require('lodash/partition');
11
- require('./index-DX-m2Ed0.cjs.js');
11
+ require('./index-BAcLy7dK.cjs.js');
12
12
  require('commander');
13
13
  require('semver');
14
14
  require('@backstage/cli-common');
15
15
  require('@backstage/errors');
16
- require('./run-ClbD5HPt.cjs.js');
16
+ require('./run-CPcG7YxR.cjs.js');
17
17
  require('child_process');
18
18
  require('util');
19
19
  require('rollup');
@@ -49,4 +49,4 @@ var buildWorkspace = async (dir, packages, options) => {
49
49
  };
50
50
 
51
51
  exports.default = buildWorkspace;
52
- //# sourceMappingURL=buildWorkspace-Bv-xt2y-.cjs.js.map
52
+ //# sourceMappingURL=buildWorkspace-Z-hpJt9g.cjs.js.map
@@ -5,18 +5,17 @@ var fs = require('fs-extra');
5
5
  var chalk = require('chalk');
6
6
  var ora = require('ora');
7
7
  var semver = require('semver');
8
- var minimatch = require('minimatch');
9
8
  var errors = require('@backstage/errors');
10
9
  var path = require('path');
11
- var run = require('./run-ClbD5HPt.cjs.js');
12
- var index = require('./index-DX-m2Ed0.cjs.js');
13
- var Lockfile = require('./Lockfile-BndFvzHc.cjs.js');
14
- var packages = require('./packages-BgyW9VKx.cjs.js');
15
- var lint = require('./lint-DqMGmvsS.cjs.js');
10
+ var run = require('./run-CPcG7YxR.cjs.js');
11
+ var index = require('./index-BAcLy7dK.cjs.js');
12
+ var Lockfile = require('./Lockfile-B4mqBkH6.cjs.js');
13
+ var packages = require('./packages-DPPEGYIi.cjs.js');
16
14
  var cliCommon = require('@backstage/cli-common');
17
15
  var parallel = require('./parallel-BszNaKyc.cjs.js');
18
16
  var releaseManifests = require('@backstage/release-manifests');
19
17
  var cliNode = require('@backstage/cli-node');
18
+ var minimatch = require('minimatch');
20
19
  var replace = require('replace-in-file');
21
20
 
22
21
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -180,7 +179,6 @@ var bump = async (opts) => {
180
179
  }
181
180
  const dependencyMap = await packages.mapDependencies(index.paths.targetDir, pattern);
182
181
  const versionBumps = /* @__PURE__ */ new Map();
183
- const unlocked = Array();
184
182
  await parallel.runParallelWorkers({
185
183
  parallelismFactor: 4,
186
184
  items: dependencyMap.entries(),
@@ -209,58 +207,11 @@ var bump = async (opts) => {
209
207
  }
210
208
  }
211
209
  });
212
- const filter = (name) => minimatch.minimatch(name, pattern);
213
- await parallel.runParallelWorkers({
214
- parallelismFactor: 4,
215
- items: lockfile.keys(),
216
- async worker(name) {
217
- if (!filter(name)) {
218
- return;
219
- }
220
- let target;
221
- try {
222
- target = await findTargetVersion(name);
223
- } catch (error) {
224
- if (errors.isError(error) && error.name === "NotFoundError") {
225
- console.log(`Package info not found, ignoring package ${name}`);
226
- return;
227
- }
228
- throw error;
229
- }
230
- for (const entry of lockfile.get(name) ?? []) {
231
- if (!semver__default.default.satisfies(target, entry.range)) {
232
- continue;
233
- }
234
- unlocked.push({ name, range: entry.range, target });
235
- }
236
- }
237
- });
238
- console.log();
239
- if (versionBumps.size === 0 && unlocked.length === 0) {
210
+ if (versionBumps.size === 0) {
240
211
  console.log(chalk__default.default.green("All Backstage packages are up to date!"));
241
212
  } else {
242
213
  console.log(chalk__default.default.yellow("Some packages are outdated, updating"));
243
214
  console.log();
244
- if (unlocked.length > 0) {
245
- const removed = /* @__PURE__ */ new Set();
246
- for (const { name, range, target } of unlocked) {
247
- const existingEntry = lockfile.get(name)?.find((e) => e.range === range);
248
- if (existingEntry?.version === target) {
249
- continue;
250
- }
251
- const key = JSON.stringify({ name, range });
252
- if (!removed.has(key)) {
253
- removed.add(key);
254
- console.log(
255
- `${chalk__default.default.magenta("unlocking")} ${name}@${chalk__default.default.yellow(
256
- range
257
- )} ~> ${chalk__default.default.yellow(target)}`
258
- );
259
- lockfile.remove(name, range);
260
- }
261
- }
262
- await lockfile.save(lockfilePath);
263
- }
264
215
  const breakingUpdates = /* @__PURE__ */ new Map();
265
216
  await parallel.runParallelWorkers({
266
217
  parallelismFactor: 4,
@@ -350,34 +301,6 @@ var bump = async (opts) => {
350
301
  console.log(chalk__default.default.green("Version bump complete!"));
351
302
  }
352
303
  console.log();
353
- const dedupLockfile = await Lockfile.Lockfile.load(lockfilePath);
354
- const result = dedupLockfile.analyze({
355
- filter,
356
- localPackages: cliNode.PackageGraph.fromPackages(
357
- await cliNode.PackageGraph.listTargetPackages()
358
- )
359
- });
360
- const forbiddenNewRanges = result.newRanges.filter(
361
- ({ name }) => lint.forbiddenDuplicatesFilter(name)
362
- );
363
- if (forbiddenNewRanges.length > 0) {
364
- console.log(chalk__default.default.yellow(" \u26A0\uFE0F Warning! \u26A0\uFE0F"));
365
- console.log();
366
- console.log(
367
- chalk__default.default.yellow(
368
- " The below package(s) have incompatible duplicate installations, likely due to a bad dependency in a plugin."
369
- )
370
- );
371
- console.log(
372
- chalk__default.default.yellow(
373
- " You can investigate this by running `yarn why <package-name>`, and report the issue to the plugin maintainers."
374
- )
375
- );
376
- console.log();
377
- for (const { name } of forbiddenNewRanges) {
378
- console.log(chalk__default.default.yellow(` ${name}`));
379
- }
380
- }
381
304
  };
382
305
  function createStrictVersionFinder(options) {
383
306
  const releasePackages = new Map(
@@ -530,4 +453,4 @@ var bump$1 = /*#__PURE__*/Object.freeze({
530
453
 
531
454
  exports.bump = bump$1;
532
455
  exports.migrate = migrate$1;
533
- //# sourceMappingURL=bump-DG3jcOMS.cjs.js.map
456
+ //# sourceMappingURL=bump-Qc4jNLOA.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-DX-m2Ed0.cjs.js');
4
+ var index = require('./index-BAcLy7dK.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-BGNU8ShE.cjs.js.map
22
+ //# sourceMappingURL=clean-CB6dTqaG.cjs.js.map
@@ -5,7 +5,7 @@ var fs = require('fs-extra');
5
5
  var path = require('path');
6
6
  var util = require('util');
7
7
  var cliNode = require('@backstage/cli-node');
8
- var index = require('./index-DX-m2Ed0.cjs.js');
8
+ var index = require('./index-BAcLy7dK.cjs.js');
9
9
  require('commander');
10
10
  require('chalk');
11
11
  require('semver');
@@ -45,4 +45,4 @@ async function command() {
45
45
  }
46
46
 
47
47
  exports.command = command;
48
- //# sourceMappingURL=clean-83xjoKEJ.cjs.js.map
48
+ //# sourceMappingURL=clean-DlsJGDLw.cjs.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  var fs = require('fs-extra');
4
4
  var path = require('path');
5
- var index = require('./index-DX-m2Ed0.cjs.js');
5
+ var index = require('./index-BAcLy7dK.cjs.js');
6
6
 
7
7
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
8
 
@@ -88,4 +88,4 @@ async function addCodeownersEntry(ownedPath, ownerStr, codeownersFilePath) {
88
88
  exports.addCodeownersEntry = addCodeownersEntry;
89
89
  exports.getCodeownersFilePath = getCodeownersFilePath;
90
90
  exports.parseOwnerIds = parseOwnerIds;
91
- //# sourceMappingURL=codeowners-B-nGMoIG.cjs.js.map
91
+ //# sourceMappingURL=codeowners-0MT7UP_S.cjs.js.map