@backstage/cli 0.26.11 → 0.27.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/config/eslint-factory.js +1 -0
  3. package/dist/cjs/Lockfile-B4mqBkH6.cjs.js +86 -0
  4. package/dist/cjs/{build-DwlXzIpR.cjs.js → build-CKbg8vDy.cjs.js} +8 -13
  5. package/dist/cjs/{buildBackend-CrncxAY5.cjs.js → buildBackend-CKvZxnhd.cjs.js} +17 -41
  6. package/dist/cjs/{buildWorkspace-D95Cv1QN.cjs.js → buildWorkspace-Bgal1pOb.cjs.js} +4 -4
  7. package/dist/cjs/{bump-b90k9Vrg.cjs.js → bump-CiNV2fUk.cjs.js} +7 -84
  8. package/dist/cjs/{clean-Bev614vS.cjs.js → clean-DWLquyLr.cjs.js} +2 -2
  9. package/dist/cjs/{clean-Cn9pRgoI.cjs.js → clean-zL7jVsU5.cjs.js} +2 -2
  10. package/dist/cjs/{codeowners-C_BzEYI6.cjs.js → codeowners-BrkuyJ8l.cjs.js} +2 -2
  11. package/dist/cjs/{config-EizsMYjy.cjs.js → config-OxHvAWIF.cjs.js} +43 -35
  12. package/dist/cjs/{createDistWorkspace-CqCdLqOV.cjs.js → createDistWorkspace-DwyDvZfi.cjs.js} +3 -3
  13. package/dist/cjs/{createPlugin-Dp_zJ1vU.cjs.js → createPlugin-Ck9TOlnh.cjs.js} +6 -6
  14. package/dist/cjs/{diff-SflPPir6.cjs.js → diff-Dm8uwN3O.cjs.js} +2 -2
  15. package/dist/cjs/{docs-B0MlNQaZ.cjs.js → docs-DiVm3Jyl.cjs.js} +3 -3
  16. package/dist/cjs/{fix-BoMIpogO.cjs.js → fix-D7YmpV2S.cjs.js} +2 -2
  17. package/dist/cjs/{index-D6bTzT6C.cjs.js → index-0ipl86K1.cjs.js} +19 -15
  18. package/dist/cjs/{index-Do6EL2Yb.cjs.js → index-Bv4-PI5M.cjs.js} +4 -4
  19. package/dist/cjs/{index-JoytU5ZM.cjs.js → index-D18yXEOi.cjs.js} +2 -2
  20. package/dist/cjs/{index-nl4fBJN1.cjs.js → index-LFa1qFkm.cjs.js} +49 -63
  21. package/dist/cjs/{index-7vT98W4X.cjs.js → index-bOEMttRt.cjs.js} +47 -47
  22. package/dist/cjs/{info-BRPLyhql.cjs.js → info-D2kXSViM.cjs.js} +4 -4
  23. package/dist/cjs/{install-DBTY3GMv.cjs.js → install-Bps4yUpK.cjs.js} +5 -5
  24. package/dist/cjs/lint-Dkx_fBkS.cjs.js +10 -0
  25. package/dist/cjs/{lint-6Ua9puez.cjs.js → lint-lreWPKDb.cjs.js} +2 -2
  26. package/dist/cjs/{lint-DmKqylEy.cjs.js → lint-sP18LtkH.cjs.js} +2 -2
  27. package/dist/cjs/{list-deprecations-DNYfBnHZ.cjs.js → list-deprecations-DarYxnzb.cjs.js} +2 -2
  28. package/dist/cjs/{packageDetection-DlDcN5Ll.cjs.js → moduleFederation-Ds12A1ny.cjs.js} +94 -25
  29. package/dist/cjs/{new-WebKpNSz.cjs.js → new-D72AQ8YF.cjs.js} +6 -6
  30. package/dist/cjs/{pack-5if7U6_6.cjs.js → pack-BFAsZEaP.cjs.js} +2 -2
  31. package/dist/cjs/{packageExports-Ddqkury2.cjs.js → packageExports-CKvYT5Dd.cjs.js} +3 -3
  32. package/dist/cjs/{packageLintConfigs-CrhcoEVX.cjs.js → packageLintConfigs-BJUnt71U.cjs.js} +3 -3
  33. package/dist/cjs/{packageRole-CBF_rIK0.cjs.js → packageRole-BCFLf-ng.cjs.js} +2 -2
  34. package/dist/cjs/{packages-RRALGdRj.cjs.js → packages-tE0j2nFD.cjs.js} +3 -3
  35. package/dist/cjs/{print-Caq1MMDY.cjs.js → print-CE1QTUoS.cjs.js} +3 -3
  36. package/dist/cjs/{role-DNHddFRX.cjs.js → role-5g8jmQmw.cjs.js} +2 -2
  37. package/dist/cjs/{run-Dyr28990.cjs.js → run-D3KP0xX6.cjs.js} +2 -2
  38. package/dist/cjs/{schema-CXKpYRvf.cjs.js → schema-DhYVPVv8.cjs.js} +3 -3
  39. package/dist/cjs/{tasks-CMO3PrbZ.cjs.js → tasks-CFmZJX_z.cjs.js} +2 -2
  40. package/dist/cjs/{test-CyF0ge7_.cjs.js → test-BqJnIwQq.cjs.js} +3 -3
  41. package/dist/cjs/{test-CTXtMelk.cjs.js → test-CBw6il53.cjs.js} +3 -3
  42. package/dist/cjs/{validate-CPunUthn.cjs.js → validate-CebIxFrQ.cjs.js} +3 -3
  43. package/dist/index.cjs.js +1 -1
  44. package/package.json +10 -10
  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/dist/cjs/Lockfile-BndFvzHc.cjs.js +0 -221
  48. package/dist/cjs/lint-CCzUmZcU.cjs.js +0 -112
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.27.0-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - e6e7d86: Switched the target from `'ES2022'` to `'es2022'` for better compatibility with older versions of `swc`.
8
+ - Updated dependencies
9
+ - @backstage/config-loader@1.9.0-next.1
10
+ - @backstage/integration@1.14.0-next.0
11
+ - @backstage/catalog-model@1.5.0
12
+ - @backstage/cli-common@0.1.14
13
+ - @backstage/cli-node@0.2.7
14
+ - @backstage/config@1.2.0
15
+ - @backstage/errors@1.2.4
16
+ - @backstage/eslint-plugin@0.1.8
17
+ - @backstage/release-manifests@0.0.11
18
+ - @backstage/types@1.1.1
19
+
20
+ ## 0.27.0-next.0
21
+
22
+ ### Minor Changes
23
+
24
+ - 32a38e1: **BREAKING**: The lockfile (`yarn.lock`) dependency analysis and mutations have been removed from several commands.
25
+
26
+ The `versions:bump` command will no longer attempt to bump and deduplicate dependencies by modifying the lockfile, it will only update `package.json` files.
27
+
28
+ 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.
29
+
30
+ The check that was built into the `package start` command has been removed, it will no longer warn about lockfile mismatches.
31
+
32
+ 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.
33
+
34
+ ### Patch Changes
35
+
36
+ - 7eb08a6: Add frontend-dynamic-container role to eslint config factory
37
+ - fbc7819: Use ES2022 in CLI bundler
38
+ - 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.
39
+ - 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.
40
+ - 239dffc: Remove usage of deprecated functionality from @backstage/config-loader
41
+ - 0eedec3: Add support for dynamic plugins via the EXPERIMENTAL_MODULE_FEDERATION environment variable when running `yarn start`.
42
+ - dc4fb4f: Fix for `repo build --all` not properly detecting the experimental public entry point.
43
+ - Updated dependencies
44
+ - @backstage/integration@1.14.0-next.0
45
+ - @backstage/config-loader@1.8.2-next.0
46
+ - @backstage/catalog-model@1.5.0
47
+ - @backstage/cli-common@0.1.14
48
+ - @backstage/cli-node@0.2.7
49
+ - @backstage/config@1.2.0
50
+ - @backstage/errors@1.2.4
51
+ - @backstage/eslint-plugin@0.1.8
52
+ - @backstage/release-manifests@0.0.11
53
+ - @backstage/types@1.1.1
54
+
3
55
  ## 0.26.11
4
56
 
5
57
  ### 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-CqCdLqOV.cjs.js');
6
- var index = require('./index-7vT98W4X.cjs.js');
5
+ var createDistWorkspace = require('./createDistWorkspace-DwyDvZfi.cjs.js');
6
+ var index = require('./index-bOEMttRt.cjs.js');
7
7
  var cliNode = require('@backstage/cli-node');
8
8
  var parallel = require('./parallel-BszNaKyc.cjs.js');
9
- var buildBackend = require('./buildBackend-CrncxAY5.cjs.js');
9
+ var buildBackend = require('./buildBackend-CKvZxnhd.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-Dyr28990.cjs.js');
15
+ require('./run-D3KP0xX6.cjs.js');
16
16
  require('child_process');
17
17
  require('util');
18
18
  require('@backstage/errors');
@@ -41,26 +41,21 @@ require('html-webpack-plugin');
41
41
  require('@module-federation/enhanced/webpack');
42
42
  require('react-dev-utils/ModuleScopePlugin');
43
43
  require('run-script-webpack-plugin');
44
+ require('@pmmmwh/react-refresh-webpack-plugin');
44
45
  require('@manypkg/get-packages');
45
46
  require('webpack-node-externals');
46
- require('./packageDetection-DlDcN5Ll.cjs.js');
47
+ require('./moduleFederation-Ds12A1ny.cjs.js');
47
48
  require('lodash/pickBy');
48
49
  require('mini-css-extract-plugin');
49
- require('@pmmmwh/react-refresh-webpack-plugin');
50
50
  require('yn');
51
51
  require('@backstage/config');
52
52
  require('chokidar');
53
53
  require('p-queue');
54
54
  require('react-dev-utils/FileSizeReporter');
55
55
  require('react-dev-utils/formatWebpackMessages');
56
- require('lodash/uniq');
57
56
  require('react-dev-utils/openBrowser');
58
57
  require('webpack-dev-server');
59
- require('@yarnpkg/parsers');
60
- require('@yarnpkg/lockfile');
61
- require('minimatch');
62
- require('./yarn-Ukl9MOS0.cjs.js');
63
- require('./config-EizsMYjy.cjs.js');
58
+ require('./config-OxHvAWIF.cjs.js');
64
59
  require('@backstage/config-loader');
65
60
 
66
61
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -194,4 +189,4 @@ async function command(opts, cmd) {
194
189
  }
195
190
 
196
191
  exports.command = command;
197
- //# sourceMappingURL=build-DwlXzIpR.cjs.js.map
192
+ //# sourceMappingURL=build-CKbg8vDy.cjs.js.map
@@ -3,6 +3,7 @@
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,41 +11,32 @@ require('@module-federation/enhanced/webpack');
10
11
  require('@backstage/cli-common');
11
12
  require('react-dev-utils/ModuleScopePlugin');
12
13
  require('run-script-webpack-plugin');
13
- require('./index-7vT98W4X.cjs.js');
14
+ require('@pmmmwh/react-refresh-webpack-plugin');
15
+ require('./index-bOEMttRt.cjs.js');
14
16
  require('@manypkg/get-packages');
15
17
  require('webpack-node-externals');
16
- var packageDetection = require('./packageDetection-DlDcN5Ll.cjs.js');
18
+ var moduleFederation = require('./moduleFederation-Ds12A1ny.cjs.js');
17
19
  require('lodash/pickBy');
18
- require('./run-Dyr28990.cjs.js');
20
+ require('./run-D3KP0xX6.cjs.js');
19
21
  require('mini-css-extract-plugin');
20
- require('@pmmmwh/react-refresh-webpack-plugin');
21
22
  var yn = require('yn');
22
23
  var FileSizeReporter = require('react-dev-utils/FileSizeReporter');
23
24
  var formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
24
- var chalk = require('chalk');
25
- require('@backstage/cli-node');
26
- require('lodash/uniq');
27
25
  require('react-dev-utils/openBrowser');
28
26
  require('webpack-dev-server');
29
- require('semver');
30
- require('@yarnpkg/parsers');
31
- require('@yarnpkg/lockfile');
32
- require('minimatch');
33
- require('./yarn-Ukl9MOS0.cjs.js');
34
- require('lodash/partition');
35
- var config = require('./config-EizsMYjy.cjs.js');
27
+ var config = require('./config-OxHvAWIF.cjs.js');
36
28
  var parallel = require('./parallel-BszNaKyc.cjs.js');
37
29
  var os = require('os');
38
30
  var tar = require('tar');
39
- var createDistWorkspace = require('./createDistWorkspace-CqCdLqOV.cjs.js');
31
+ var createDistWorkspace = require('./createDistWorkspace-DwyDvZfi.cjs.js');
40
32
 
41
33
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
42
34
 
43
35
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
44
36
  var webpack__default = /*#__PURE__*/_interopDefaultCompat(webpack);
37
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
45
38
  var yn__default = /*#__PURE__*/_interopDefaultCompat(yn);
46
39
  var formatWebpackMessages__default = /*#__PURE__*/_interopDefaultCompat(formatWebpackMessages);
47
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
48
40
  var os__default = /*#__PURE__*/_interopDefaultCompat(os);
49
41
  var tar__default = /*#__PURE__*/_interopDefaultCompat(tar);
50
42
 
@@ -56,8 +48,9 @@ function applyContextToError(error, moduleName) {
56
48
  }
57
49
  async function buildBundle(options) {
58
50
  const { statsJsonEnabled, schema: configSchema } = options;
59
- const paths = packageDetection.resolveBundlingPaths(options);
60
- const publicPaths = await packageDetection.resolveOptionalBundlingPaths({
51
+ const paths = moduleFederation.resolveBundlingPaths(options);
52
+ const publicPaths = await moduleFederation.resolveOptionalBundlingPaths({
53
+ targetDir: options.targetDir,
61
54
  entry: "src/index-public-experimental",
62
55
  dist: "dist/public"
63
56
  });
@@ -69,14 +62,14 @@ async function buildBundle(options) {
69
62
  };
70
63
  const configs = [];
71
64
  if (options.moduleFederation?.mode === "remote") {
72
- configs.push(await packageDetection.createConfig(paths, commonConfigOptions));
65
+ configs.push(await moduleFederation.createConfig(paths, commonConfigOptions));
73
66
  } else {
74
- const detectedModulesEntryPoint = await packageDetection.createDetectedModulesEntryPoint({
67
+ const detectedModulesEntryPoint = await moduleFederation.createDetectedModulesEntryPoint({
75
68
  config: options.fullConfig,
76
69
  targetPath: paths.targetPath
77
70
  });
78
71
  configs.push(
79
- await packageDetection.createConfig(paths, {
72
+ await moduleFederation.createConfig(paths, {
80
73
  ...commonConfigOptions,
81
74
  additionalEntryPoints: detectedModulesEntryPoint,
82
75
  appMode: publicPaths ? "protected" : "public"
@@ -89,7 +82,7 @@ async function buildBundle(options) {
89
82
  )
90
83
  );
91
84
  configs.push(
92
- await packageDetection.createConfig(publicPaths, {
85
+ await moduleFederation.createConfig(publicPaths, {
93
86
  ...commonConfigOptions,
94
87
  appMode: "public"
95
88
  })
@@ -205,23 +198,6 @@ async function build(configs, isCi) {
205
198
  return { stats };
206
199
  }
207
200
 
208
- function getModuleFederationOptions(name, isRemote) {
209
- if (!isRemote && !process.env.EXPERIMENTAL_MODULE_FEDERATION) {
210
- return void 0;
211
- }
212
- console.log(
213
- chalk__default.default.yellow(
214
- `\u26A0\uFE0F WARNING: Module federation is experimental and will receive immediate breaking changes in the future.`
215
- )
216
- );
217
- return {
218
- mode: isRemote ? "remote" : "host",
219
- // The default output mode requires the name to be a usable as a code
220
- // symbol, there might be better options here but for now we need to
221
- // sanitize the name.
222
- name: name.replaceAll("@", "").replaceAll("/", "__").replaceAll("-", "_")
223
- };
224
- }
225
201
  async function buildFrontend(options) {
226
202
  const { targetDir, writeStats, configPaths } = options;
227
203
  const { name } = await fs__default.default.readJson(path.resolve(targetDir, "package.json"));
@@ -230,7 +206,7 @@ async function buildFrontend(options) {
230
206
  entry: "src/index",
231
207
  parallelism: parallel.getEnvironmentParallelism(),
232
208
  statsJsonEnabled: writeStats,
233
- moduleFederation: getModuleFederationOptions(
209
+ moduleFederation: moduleFederation.getModuleFederationOptions(
234
210
  name,
235
211
  options.isModuleFederationRemote
236
212
  ),
@@ -287,4 +263,4 @@ async function buildBackend(options) {
287
263
 
288
264
  exports.buildBackend = buildBackend;
289
265
  exports.buildFrontend = buildFrontend;
290
- //# sourceMappingURL=buildBackend-CrncxAY5.cjs.js.map
266
+ //# sourceMappingURL=buildBackend-CKvZxnhd.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-CqCdLqOV.cjs.js');
4
+ var createDistWorkspace = require('./createDistWorkspace-DwyDvZfi.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-7vT98W4X.cjs.js');
11
+ require('./index-bOEMttRt.cjs.js');
12
12
  require('commander');
13
13
  require('semver');
14
14
  require('@backstage/cli-common');
15
15
  require('@backstage/errors');
16
- require('./run-Dyr28990.cjs.js');
16
+ require('./run-D3KP0xX6.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-D95Cv1QN.cjs.js.map
52
+ //# sourceMappingURL=buildWorkspace-Bgal1pOb.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-Dyr28990.cjs.js');
12
- var index = require('./index-7vT98W4X.cjs.js');
13
- var Lockfile = require('./Lockfile-BndFvzHc.cjs.js');
14
- var packages = require('./packages-RRALGdRj.cjs.js');
15
- var lint = require('./lint-CCzUmZcU.cjs.js');
10
+ var run = require('./run-D3KP0xX6.cjs.js');
11
+ var index = require('./index-bOEMttRt.cjs.js');
12
+ var Lockfile = require('./Lockfile-B4mqBkH6.cjs.js');
13
+ var packages = require('./packages-tE0j2nFD.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-b90k9Vrg.cjs.js.map
456
+ //# sourceMappingURL=bump-CiNV2fUk.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-7vT98W4X.cjs.js');
4
+ var index = require('./index-bOEMttRt.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-Bev614vS.cjs.js.map
22
+ //# sourceMappingURL=clean-DWLquyLr.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-7vT98W4X.cjs.js');
8
+ var index = require('./index-bOEMttRt.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-Cn9pRgoI.cjs.js.map
48
+ //# sourceMappingURL=clean-zL7jVsU5.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-7vT98W4X.cjs.js');
5
+ var index = require('./index-bOEMttRt.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-C_BzEYI6.cjs.js.map
91
+ //# sourceMappingURL=codeowners-BrkuyJ8l.cjs.js.map
@@ -2,26 +2,11 @@
2
2
 
3
3
  var configLoader = require('@backstage/config-loader');
4
4
  var config = require('@backstage/config');
5
- var index = require('./index-7vT98W4X.cjs.js');
5
+ var index = require('./index-bOEMttRt.cjs.js');
6
6
  var getPackages = require('@manypkg/get-packages');
7
7
  var cliNode = require('@backstage/cli-node');
8
8
 
9
- function isValidUrl(url) {
10
- try {
11
- new URL(url);
12
- return true;
13
- } catch {
14
- return false;
15
- }
16
- }
17
-
18
9
  async function loadCliConfig(options) {
19
- const configTargets = [];
20
- options.args.forEach((arg) => {
21
- if (!isValidUrl(arg)) {
22
- configTargets.push({ path: index.paths.resolveTarget(arg) });
23
- }
24
- });
25
10
  const { packages } = await getPackages.getPackages(index.paths.targetDir);
26
11
  let localPackageNames;
27
12
  if (options.fromPackage) {
@@ -47,26 +32,50 @@ async function loadCliConfig(options) {
47
32
  packagePaths: [index.paths.resolveTargetRoot("package.json")],
48
33
  noUndeclaredProperties: options.strict
49
34
  });
50
- const { appConfigs } = await configLoader.loadConfig({
51
- experimentalEnvFunc: options.mockEnv ? async (name) => process.env[name] || "x" : void 0,
52
- configRoot: index.paths.targetRoot,
53
- configTargets,
54
- watch: options.watch && {
55
- onChange(newAppConfigs) {
56
- const newFrontendAppConfigs = schema.process(newAppConfigs, {
57
- visibility: options.fullVisibility ? ["frontend", "backend", "secret"] : ["frontend"],
58
- withFilteredKeys: options.withFilteredKeys,
59
- withDeprecatedKeys: options.withDeprecatedKeys,
60
- ignoreSchemaErrors: !options.strict
61
- });
62
- options.watch?.(newFrontendAppConfigs);
35
+ const source = configLoader.ConfigSources.default({
36
+ allowMissingDefaultConfig: true,
37
+ substitutionFunc: options.mockEnv ? async (name) => process.env[name] || "x" : void 0,
38
+ watch: Boolean(options.watch),
39
+ rootDir: index.paths.targetRoot,
40
+ argv: options.args
41
+ });
42
+ const appConfigs = await new Promise((resolve, reject) => {
43
+ async function loadConfigReaderLoop() {
44
+ let loaded = false;
45
+ try {
46
+ const abortController = new AbortController();
47
+ for await (const { configs } of source.readConfigData({
48
+ signal: abortController.signal
49
+ })) {
50
+ if (loaded) {
51
+ const newFrontendAppConfigs = schema.process(configs, {
52
+ visibility: options.fullVisibility ? ["frontend", "backend", "secret"] : ["frontend"],
53
+ withFilteredKeys: options.withFilteredKeys,
54
+ withDeprecatedKeys: options.withDeprecatedKeys,
55
+ ignoreSchemaErrors: !options.strict
56
+ });
57
+ options.watch?.(newFrontendAppConfigs);
58
+ } else {
59
+ resolve(configs);
60
+ loaded = true;
61
+ if (!options.watch) {
62
+ abortController.abort();
63
+ }
64
+ }
65
+ }
66
+ } catch (error) {
67
+ if (loaded) {
68
+ console.error(`Failed to reload configuration, ${error}`);
69
+ } else {
70
+ reject(error);
71
+ }
63
72
  }
64
73
  }
74
+ loadConfigReaderLoop();
65
75
  });
66
- process.stderr.write(
67
- `Loaded config from ${appConfigs.map((c) => c.context).join(", ")}
68
- `
69
- );
76
+ const configurationLoadedMessage = appConfigs.length ? `Loaded config from ${appConfigs.map((c) => c.context).join(", ")}` : `No configuration files found, running without config`;
77
+ process.stderr.write(`${configurationLoadedMessage}
78
+ `);
70
79
  try {
71
80
  const frontendAppConfigs = schema.process(appConfigs, {
72
81
  visibility: options.fullVisibility ? ["frontend", "backend", "secret"] : ["frontend"],
@@ -95,6 +104,5 @@ async function loadCliConfig(options) {
95
104
  }
96
105
  }
97
106
 
98
- exports.isValidUrl = isValidUrl;
99
107
  exports.loadCliConfig = loadCliConfig;
100
- //# sourceMappingURL=config-EizsMYjy.cjs.js.map
108
+ //# sourceMappingURL=config-OxHvAWIF.cjs.js.map
@@ -7,8 +7,8 @@ var pLimit = require('p-limit');
7
7
  var os = require('os');
8
8
  var tar = require('tar');
9
9
  var partition = require('lodash/partition');
10
- var index = require('./index-7vT98W4X.cjs.js');
11
- var run = require('./run-Dyr28990.cjs.js');
10
+ var index = require('./index-bOEMttRt.cjs.js');
11
+ var run = require('./run-D3KP0xX6.cjs.js');
12
12
  var rollup = require('rollup');
13
13
  var commonjs = require('@rollup/plugin-commonjs');
14
14
  var resolve = require('@rollup/plugin-node-resolve');
@@ -560,4 +560,4 @@ exports.buildPackage = buildPackage;
560
560
  exports.buildPackages = buildPackages;
561
561
  exports.createDistWorkspace = createDistWorkspace;
562
562
  exports.getOutputsForRole = getOutputsForRole;
563
- //# sourceMappingURL=createDistWorkspace-CqCdLqOV.cjs.js.map
563
+ //# sourceMappingURL=createDistWorkspace-DwyDvZfi.cjs.js.map