@backstage/cli 0.8.2 → 0.10.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 (62) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/config/jest.js +1 -0
  3. package/config/jestSucraseTransform.js +5 -1
  4. package/dist/cjs/{Lockfile-80f0eec4.cjs.js → Lockfile-35661afa.cjs.js} +18 -18
  5. package/dist/cjs/{build-bae5a019.cjs.js → build-4c85e374.cjs.js} +9 -9
  6. package/dist/cjs/{build-1cbb9e7d.cjs.js → build-574ad84f.cjs.js} +23 -20
  7. package/dist/cjs/{build-70dd213a.cjs.js → build-c587cc8c.cjs.js} +8 -7
  8. package/dist/cjs/{build-b25b29ed.cjs.js → build-dc2484e7.cjs.js} +8 -7
  9. package/dist/cjs/{buildWorkspace-424d4929.cjs.js → buildWorkspace-29b42a0b.cjs.js} +6 -6
  10. package/dist/cjs/{bump-bce7f9c2.cjs.js → bump-24057de2.cjs.js} +55 -33
  11. package/dist/cjs/{bundle-cc6870fb.cjs.js → bundle-854deefb.cjs.js} +15 -15
  12. package/dist/cjs/{clean-7a981ea7.cjs.js → clean-ecf90e6b.cjs.js} +6 -6
  13. package/dist/cjs/{config-24fce3c1.cjs.js → config-91083c1e.cjs.js} +7 -7
  14. package/dist/cjs/create-89dd36f0.cjs.js +483 -0
  15. package/dist/cjs/{createPlugin-2c2b30fc.cjs.js → createPlugin-a8527ca3.cjs.js} +35 -36
  16. package/dist/cjs/{dev-efe399b8.cjs.js → dev-3713f802.cjs.js} +8 -8
  17. package/dist/cjs/{diff-e3661054.cjs.js → diff-79e33159.cjs.js} +39 -32
  18. package/dist/cjs/{docs-ceb404a3.cjs.js → docs-a8506fde.cjs.js} +6 -6
  19. package/dist/cjs/{index-26bec8ac.cjs.js → index-33d9cbba.cjs.js} +23 -20
  20. package/dist/cjs/{index-fbff7b78.cjs.js → index-9cf6e421.cjs.js} +14 -14
  21. package/dist/cjs/{index-6fee1c9a.cjs.js → index-b2152549.cjs.js} +81 -79
  22. package/dist/cjs/{info-5e7c2679.cjs.js → info-d8ce894c.cjs.js} +6 -6
  23. package/dist/cjs/{install-5920b5df.cjs.js → install-9e5b8576.cjs.js} +23 -23
  24. package/dist/cjs/{lint-306bb8fe.cjs.js → lint-955bc62d.cjs.js} +4 -4
  25. package/dist/cjs/{lint-6175d471.cjs.js → lint-a78b8bb6.cjs.js} +7 -7
  26. package/dist/cjs/{pack-32228ad6.cjs.js → pack-f474f79b.cjs.js} +6 -6
  27. package/dist/cjs/{packager-1ad7272f.cjs.js → packager-6c80f203.cjs.js} +37 -35
  28. package/dist/cjs/{packages-a5b6a3df.cjs.js → packages-bcde9079.cjs.js} +5 -5
  29. package/dist/cjs/{paths-09202a46.cjs.js → paths-f9c22b94.cjs.js} +51 -36
  30. package/dist/cjs/{print-806676fe.cjs.js → print-5e70799c.cjs.js} +5 -5
  31. package/dist/cjs/{removePlugin-f82ac16a.cjs.js → removePlugin-891ec166.cjs.js} +32 -29
  32. package/dist/cjs/{run-59c4395e.cjs.js → run-8388d249.cjs.js} +5 -5
  33. package/dist/cjs/{schema-398d8593.cjs.js → schema-80516b43.cjs.js} +5 -5
  34. package/dist/cjs/{serve-708fbf98.cjs.js → serve-1b0ace54.cjs.js} +15 -15
  35. package/dist/cjs/{serve-f4bb3cb0.cjs.js → serve-6c335165.cjs.js} +9 -9
  36. package/dist/cjs/{server-107d9cc0.cjs.js → server-b2f87b69.cjs.js} +6 -6
  37. package/dist/cjs/{svgrTemplate-2d0d15cf.cjs.js → svgrTemplate-f19e974c.cjs.js} +3 -3
  38. package/dist/cjs/{tasks-9bd3e946.cjs.js → tasks-f12b95ba.cjs.js} +96 -30
  39. package/dist/cjs/{testCommand-e32fbd45.cjs.js → testCommand-1c515cf7.cjs.js} +4 -4
  40. package/dist/cjs/{validate-9523a11e.cjs.js → validate-9907afbb.cjs.js} +4 -4
  41. package/dist/index.cjs.js +1 -1
  42. package/package.json +22 -23
  43. package/templates/default-backend-plugin/package.json.hbs +39 -37
  44. package/templates/default-backend-plugin/src/run.ts.hbs +1 -1
  45. package/templates/default-common-plugin-package/.eslintrc.js +3 -0
  46. package/templates/default-common-plugin-package/README.md.hbs +5 -0
  47. package/templates/default-common-plugin-package/package.json.hbs +34 -0
  48. package/templates/default-common-plugin-package/src/index.ts.hbs +19 -0
  49. package/templates/default-common-plugin-package/src/setupTests.ts +1 -0
  50. package/templates/default-common-plugin-package/tsconfig.json +9 -0
  51. package/templates/default-plugin/package.json.hbs +7 -4
  52. package/templates/default-plugin/src/routes.ts.hbs +1 -1
  53. package/templates/scaffolder-module/.eslintrc.js +3 -0
  54. package/templates/scaffolder-module/README.md.hbs +5 -0
  55. package/templates/scaffolder-module/package.json.hbs +37 -0
  56. package/templates/scaffolder-module/src/actions/example/example.test.ts +50 -0
  57. package/templates/scaffolder-module/src/actions/example/example.ts +57 -0
  58. package/templates/scaffolder-module/src/actions/example/index.ts +1 -0
  59. package/templates/scaffolder-module/src/actions/index.ts +1 -0
  60. package/templates/scaffolder-module/src/index.ts.hbs +8 -0
  61. package/templates/scaffolder-module/tsconfig.json +9 -0
  62. package/dist/cjs/buildImage-6b35526c.cjs.js +0 -77
package/CHANGELOG.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.10.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 0ebb05eee2: Add cli option to minify the generated code of a plugin or backend package
8
+
9
+ ```
10
+ backstage-cli plugin:build --minify
11
+ backstage-cli backend:build --minify
12
+ ```
13
+
14
+ - cd450844f6: Updated the frontend plugin template to put React dependencies in `peerDependencies` by default, as well as allowing both React v16 and v17. This change can be applied to existing plugins by running `yarn backstage-cli plugin:diff` within the plugin package directory.
15
+
16
+ ## 0.10.0
17
+
18
+ ### Minor Changes
19
+
20
+ - ea99ef5198: Remove the `backend:build-image` command from the CLI and added more deprecation warnings to other deprecated fields like `--lax` and `remove-plugin`
21
+
22
+ ### Patch Changes
23
+
24
+ - e7230ef814: Bump react-dev-utils to v12
25
+ - 416b68675d: build(dependencies): bump `style-loader` from 1.2.1 to 3.3.1
26
+ - Updated dependencies
27
+ - @backstage/config-loader@0.8.1
28
+
29
+ ## 0.9.1
30
+
31
+ ### Patch Changes
32
+
33
+ - dde216acf4: Switch the default test coverage provider from the jest default one to `'v8'`, which provides much better coverage information when using the default Backstage test setup. This is considered a bug fix as the current coverage information is often very inaccurate.
34
+ - 719cc87d2f: Disable ES transforms in tests transformed by the `jestSucraseTransform.js`. This is not considered a breaking change since all code is already transpiled this way in the development setup.
35
+ - bab752e2b3: Change default port of backend from 7000 to 7007.
36
+
37
+ This is due to the AirPlay Receiver process occupying port 7000 and preventing local Backstage instances on MacOS to start.
38
+
39
+ You can change the port back to 7000 or any other value by providing an `app-config.yaml` with the following values:
40
+
41
+ ```
42
+ backend:
43
+ listen: 0.0.0.0:7123
44
+ baseUrl: http://localhost:7123
45
+ ```
46
+
47
+ More information can be found here: https://backstage.io/docs/conf/writing
48
+
49
+ - ee055cf6db: Update the default routes to use id instead of title
50
+ - Updated dependencies
51
+ - @backstage/errors@0.1.5
52
+
53
+ ## 0.9.0
54
+
55
+ ### Minor Changes
56
+
57
+ - 25f637f39f: Tweaked style insertion logic to make sure that JSS stylesheets always receive the highest priority.
58
+
59
+ ### Patch Changes
60
+
61
+ - 677bfc2dd0: Keep backstage.json in sync
62
+
63
+ The `versions:bump` script now takes care about updating the `version` property inside `backstage.json` file. The file is created if is not present.
64
+
65
+ - 8809b6c0dd: Update the json-schema dependency version.
66
+ - fdfd2f8a62: remove double config dep
67
+ - 1e99c73c75: Update internal usage of `configLoader.loadConfig` that now returns an object instead of an array of configs.
68
+ - 6dcfe227a2: Added a scaffolder backend module template for the `create` command.
69
+ - 4ca3542fdd: Fixed a bug where calling `backstage-cli backend:bundle --build-dependencies` with no dependencies to be built would cause all monorepo packages to be built instead.
70
+ - 867ea81d15: bump `@rollup/plugin-commonjs` from 17.1.0 to 21.0.1
71
+ - 16d06f6ac3: Introduces new `backstage-cli create` command to replace `create-plugin` and make space for creating a wider array of things. The create command also adds a new template for creating isomorphic common plugin packages.
72
+ - Updated dependencies
73
+ - @backstage/config-loader@0.8.0
74
+ - @backstage/cli-common@0.1.6
75
+
3
76
  ## 0.8.2
4
77
 
5
78
  ### Patch Changes
package/config/jest.js CHANGED
@@ -95,6 +95,7 @@ async function getProjectConfig(targetPath, displayName) {
95
95
  ...(displayName && { displayName }),
96
96
  rootDir: path.resolve(targetPath, 'src'),
97
97
  coverageDirectory: path.resolve(targetPath, 'coverage'),
98
+ coverageProvider: 'v8',
98
99
  collectCoverageFrom: ['**/*.{js,jsx,ts,tsx}', '!**/*.d.ts'],
99
100
  moduleNameMapper: {
100
101
  '\\.(css|less|scss|sss|styl)$': require.resolve('jest-css-modules'),
@@ -46,7 +46,11 @@ function process(source, filePath) {
46
46
  }
47
47
 
48
48
  if (transforms) {
49
- return transform(source, { transforms, filePath }).code;
49
+ return transform(source, {
50
+ transforms,
51
+ filePath,
52
+ disableESTransforms: true,
53
+ }).code;
50
54
  }
51
55
 
52
56
  return source;
@@ -18,13 +18,13 @@ class Lockfile {
18
18
  }
19
19
  static async load(path) {
20
20
  var _a;
21
- const lockfileContents = await fs__default['default'].readFile(path, "utf8");
21
+ const lockfileContents = await fs__default["default"].readFile(path, "utf8");
22
22
  const lockfile$1 = lockfile.parse(lockfileContents);
23
23
  if (lockfile$1.type !== "success") {
24
24
  throw new Error(`Failed yarn.lock parse with ${lockfile$1.type}`);
25
25
  }
26
26
  const data = lockfile$1.object;
27
- const packages = new Map();
27
+ const packages = /* @__PURE__ */ new Map();
28
28
  for (const [key, value] of Object.entries(data)) {
29
29
  const [, name, range] = (_a = ENTRY_PATTERN.exec(key)) != null ? _a : [];
30
30
  if (!name) {
@@ -35,7 +35,7 @@ class Lockfile {
35
35
  queries = [];
36
36
  packages.set(name, queries);
37
37
  }
38
- queries.push({range, version: value.version});
38
+ queries.push({ range, version: value.version });
39
39
  }
40
40
  return new Lockfile(path, packages, data);
41
41
  }
@@ -47,7 +47,7 @@ class Lockfile {
47
47
  }
48
48
  analyze(options) {
49
49
  var _a;
50
- const {filter} = options != null ? options : {};
50
+ const { filter } = options != null ? options : {};
51
51
  const result = {
52
52
  invalidRanges: [],
53
53
  newVersions: [],
@@ -57,19 +57,19 @@ class Lockfile {
57
57
  if (filter && !filter(name)) {
58
58
  continue;
59
59
  }
60
- const invalid = allEntries.filter((e) => !semver__default['default'].validRange(e.range));
61
- result.invalidRanges.push(...invalid.map(({range}) => ({name, range})));
62
- const entries = allEntries.filter((e) => semver__default['default'].validRange(e.range));
60
+ const invalid = allEntries.filter((e) => !semver__default["default"].validRange(e.range));
61
+ result.invalidRanges.push(...invalid.map(({ range }) => ({ name, range })));
62
+ const entries = allEntries.filter((e) => semver__default["default"].validRange(e.range));
63
63
  if (entries.length < 2) {
64
64
  continue;
65
65
  }
66
- const versions = Array.from(new Set(entries.map((e) => e.version))).sort((v1, v2) => semver__default['default'].rcompare(v1, v2));
66
+ const versions = Array.from(new Set(entries.map((e) => e.version))).sort((v1, v2) => semver__default["default"].rcompare(v1, v2));
67
67
  if (versions.length < 2) {
68
68
  continue;
69
69
  }
70
- const acceptedVersions = new Set();
71
- for (const {version, range} of entries) {
72
- const acceptedVersion = versions.find((v) => semver__default['default'].satisfies(v, range));
70
+ const acceptedVersions = /* @__PURE__ */ new Set();
71
+ for (const { version, range } of entries) {
72
+ const acceptedVersion = versions.find((v) => semver__default["default"].satisfies(v, range));
73
73
  if (!acceptedVersion) {
74
74
  throw new Error(`No existing version was accepted for range ${range}, searching through ${versions}, for package ${name}`);
75
75
  }
@@ -86,13 +86,13 @@ class Lockfile {
86
86
  if (acceptedVersions.size === 1) {
87
87
  continue;
88
88
  }
89
- const maxVersion = Array.from(acceptedVersions).sort(semver__default['default'].rcompare)[0];
90
- const maxEntry = (_a = entries.filter((e) => semver__default['default'].satisfies(maxVersion, e.range)).map((e) => ({e, min: semver__default['default'].minVersion(e.range)})).filter((p) => p.min).sort((a, b) => semver__default['default'].rcompare(a.min, b.min))[0]) == null ? void 0 : _a.e;
89
+ const maxVersion = Array.from(acceptedVersions).sort(semver__default["default"].rcompare)[0];
90
+ const maxEntry = (_a = entries.filter((e) => semver__default["default"].satisfies(maxVersion, e.range)).map((e) => ({ e, min: semver__default["default"].minVersion(e.range) })).filter((p) => p.min).sort((a, b) => semver__default["default"].rcompare(a.min, b.min))[0]) == null ? void 0 : _a.e;
91
91
  if (!maxEntry) {
92
92
  throw new Error(`No entry found that satisfies max version '${maxVersion}'`);
93
93
  }
94
- for (const {version, range} of entries) {
95
- if (semver__default['default'].satisfies(maxVersion, range)) {
94
+ for (const { version, range } of entries) {
95
+ if (semver__default["default"].satisfies(maxVersion, range)) {
96
96
  continue;
97
97
  }
98
98
  result.newRanges.push({
@@ -119,7 +119,7 @@ class Lockfile {
119
119
  }
120
120
  replaceVersions(results) {
121
121
  var _a;
122
- for (const {name, range, oldVersion, newVersion} of results) {
122
+ for (const { name, range, oldVersion, newVersion } of results) {
123
123
  const query = `${name}@${range}`;
124
124
  const entryData = this.data[query];
125
125
  if (!entryData) {
@@ -144,7 +144,7 @@ class Lockfile {
144
144
  }
145
145
  }
146
146
  async save() {
147
- await fs__default['default'].writeFile(this.path, this.toString(), "utf8");
147
+ await fs__default["default"].writeFile(this.path, this.toString(), "utf8");
148
148
  }
149
149
  toString() {
150
150
  return lockfile.stringify(this.data);
@@ -152,4 +152,4 @@ class Lockfile {
152
152
  }
153
153
 
154
154
  exports.Lockfile = Lockfile;
155
- //# sourceMappingURL=Lockfile-80f0eec4.cjs.js.map
155
+ //# sourceMappingURL=Lockfile-35661afa.cjs.js.map
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var packager = require('./packager-1ad7272f.cjs.js');
3
+ var packager = require('./packager-6c80f203.cjs.js');
4
4
  require('fs-extra');
5
5
  require('rollup');
6
6
  require('chalk');
7
7
  require('path');
8
- require('./index-6fee1c9a.cjs.js');
8
+ require('./index-b2152549.cjs.js');
9
9
  require('commander');
10
10
  require('semver');
11
11
  require('@backstage/cli-common');
@@ -21,11 +21,11 @@ require('rollup-plugin-dts');
21
21
  require('@rollup/plugin-json');
22
22
  require('@rollup/plugin-yaml');
23
23
  require('rollup-pluginutils');
24
- require('./svgrTemplate-2d0d15cf.cjs.js');
24
+ require('./svgrTemplate-f19e974c.cjs.js');
25
25
 
26
26
  var build = async (cmd) => {
27
- let outputs = new Set();
28
- const {outputs: outputsStr} = cmd;
27
+ let outputs = /* @__PURE__ */ new Set();
28
+ const { outputs: outputsStr } = cmd;
29
29
  if (outputsStr) {
30
30
  for (const output of outputsStr.split(",")) {
31
31
  if (output in packager.Output) {
@@ -35,10 +35,10 @@ var build = async (cmd) => {
35
35
  }
36
36
  }
37
37
  } else {
38
- outputs = new Set([packager.Output.types, packager.Output.esm, packager.Output.cjs]);
38
+ outputs = /* @__PURE__ */ new Set([packager.Output.types, packager.Output.esm, packager.Output.cjs]);
39
39
  }
40
- await packager.buildPackage({outputs});
40
+ await packager.buildPackage({ outputs });
41
41
  };
42
42
 
43
- exports.default = build;
44
- //# sourceMappingURL=build-bae5a019.cjs.js.map
43
+ exports["default"] = build;
44
+ //# sourceMappingURL=build-4c85e374.cjs.js.map
@@ -12,24 +12,24 @@ require('@backstage/cli-common');
12
12
  require('terser-webpack-plugin');
13
13
  var parallel = require('./parallel-a4714c72.cjs.js');
14
14
  require('mini-css-extract-plugin');
15
- var index = require('./index-6fee1c9a.cjs.js');
16
- require('./run-59c4395e.cjs.js');
15
+ var index = require('./index-b2152549.cjs.js');
16
+ require('./run-8388d249.cjs.js');
17
17
  require('lodash/pickBy');
18
18
  var yn = require('yn');
19
19
  var FileSizeReporter = require('react-dev-utils/FileSizeReporter');
20
20
  var formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
21
- var paths = require('./paths-09202a46.cjs.js');
21
+ var paths = require('./paths-f9c22b94.cjs.js');
22
22
  var chalk = require('chalk');
23
23
  require('webpack-dev-server');
24
24
  require('react-dev-utils/openBrowser');
25
- var config = require('./config-24fce3c1.cjs.js');
25
+ var config = require('./config-91083c1e.cjs.js');
26
26
  require('commander');
27
27
  require('semver');
28
28
  require('@backstage/config/package.json');
29
29
  require('@backstage/errors');
30
30
  require('child_process');
31
31
  require('util');
32
- require('./svgrTemplate-2d0d15cf.cjs.js');
32
+ require('./svgrTemplate-f19e974c.cjs.js');
33
33
  require('@backstage/config-loader');
34
34
  require('@backstage/config');
35
35
 
@@ -44,7 +44,7 @@ var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
44
44
  const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
45
45
  const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
46
46
  async function buildBundle(options) {
47
- const {statsJsonEnabled, schema: configSchema} = options;
47
+ const { statsJsonEnabled, schema: configSchema } = options;
48
48
  const paths$1 = paths.resolveBundlingPaths(options);
49
49
  const config = await paths.createConfig(paths$1, {
50
50
  ...options,
@@ -52,21 +52,21 @@ async function buildBundle(options) {
52
52
  isDev: false,
53
53
  baseUrl: paths.resolveBaseUrl(options.frontendConfig)
54
54
  });
55
- const compiler = webpack__default['default'](config);
56
- const isCi = yn__default['default'](process.env.CI, {default: false});
55
+ const compiler = webpack__default["default"](config);
56
+ const isCi = yn__default["default"](process.env.CI, { default: false });
57
57
  const previousFileSizes = await FileSizeReporter.measureFileSizesBeforeBuild(paths$1.targetDist);
58
- await fs__default['default'].emptyDir(paths$1.targetDist);
58
+ await fs__default["default"].emptyDir(paths$1.targetDist);
59
59
  if (paths$1.targetPublic) {
60
- await fs__default['default'].copy(paths$1.targetPublic, paths$1.targetDist, {
60
+ await fs__default["default"].copy(paths$1.targetPublic, paths$1.targetDist, {
61
61
  dereference: true,
62
62
  filter: (file) => file !== paths$1.targetHtml
63
63
  });
64
64
  }
65
65
  if (configSchema) {
66
- await fs__default['default'].writeJson(path.resolve(paths$1.targetDist, ".config-schema.json"), configSchema.serialize(), {spaces: 2});
66
+ await fs__default["default"].writeJson(path.resolve(paths$1.targetDist, ".config-schema.json"), configSchema.serialize(), { spaces: 2 });
67
67
  }
68
- const {stats} = await build$1(compiler, isCi).catch((error) => {
69
- console.log(chalk__default['default'].red("Failed to compile.\n"));
68
+ const { stats } = await build$1(compiler, isCi).catch((error) => {
69
+ console.log(chalk__default["default"].red("Failed to compile.\n"));
70
70
  throw new Error(`Failed to compile.
71
71
  ${error.message || error}`);
72
72
  });
@@ -84,7 +84,7 @@ async function build$1(compiler, isCi) {
84
84
  compiler.run((err, buildStats) => {
85
85
  if (err) {
86
86
  if (err.message) {
87
- const {errors: errors2} = formatWebpackMessages__default['default']({
87
+ const { errors: errors2 } = formatWebpackMessages__default["default"]({
88
88
  errors: [err.message],
89
89
  warnings: new Array(),
90
90
  _showErrors: true,
@@ -107,7 +107,7 @@ async function build$1(compiler, isCi) {
107
107
  warnings: true,
108
108
  errors: true
109
109
  });
110
- const {errors, warnings} = formatWebpackMessages__default['default']({
110
+ const { errors, warnings } = formatWebpackMessages__default["default"]({
111
111
  errors: (_a = serializedStats.errors) == null ? void 0 : _a.map((e) => e.message ? e.message : e),
112
112
  warnings: (_b = serializedStats.warnings) == null ? void 0 : _b.map((e) => e.message ? e.message : e)
113
113
  });
@@ -115,14 +115,17 @@ async function build$1(compiler, isCi) {
115
115
  throw new Error(errors[0]);
116
116
  }
117
117
  if (isCi && warnings.length) {
118
- console.log(chalk__default['default'].yellow("\nTreating warnings as errors because process.env.CI = true.\n"));
118
+ console.log(chalk__default["default"].yellow("\nTreating warnings as errors because process.env.CI = true.\n"));
119
119
  throw new Error(warnings.join("\n\n"));
120
120
  }
121
- return {stats};
121
+ return { stats };
122
122
  }
123
123
 
124
124
  var build = async (cmd) => {
125
- const {name} = await fs__default['default'].readJson(index.paths.resolveTarget("package.json"));
125
+ if (cmd.lax) {
126
+ console.warn(chalk__default["default"].yellow(`[DEPRECATED] - The --lax option is deprecated and will be removed in the future. Please open an issue towards https://github.com/backstage/backstage that describes your use-case if you need the flag to stay around.`));
127
+ }
128
+ const { name } = await fs__default["default"].readJson(index.paths.resolveTarget("package.json"));
126
129
  await buildBundle({
127
130
  entry: "src/index",
128
131
  parallel: parallel.parseParallel(process.env[parallel.PARALLEL_ENV_VAR]),
@@ -135,5 +138,5 @@ var build = async (cmd) => {
135
138
  });
136
139
  };
137
140
 
138
- exports.default = build;
139
- //# sourceMappingURL=build-1cbb9e7d.cjs.js.map
141
+ exports["default"] = build;
142
+ //# sourceMappingURL=build-574ad84f.cjs.js.map
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var packager = require('./packager-1ad7272f.cjs.js');
3
+ var packager = require('./packager-6c80f203.cjs.js');
4
4
  require('fs-extra');
5
5
  require('rollup');
6
6
  require('chalk');
7
7
  require('path');
8
- require('./index-6fee1c9a.cjs.js');
8
+ require('./index-b2152549.cjs.js');
9
9
  require('commander');
10
10
  require('semver');
11
11
  require('@backstage/cli-common');
@@ -21,13 +21,14 @@ require('rollup-plugin-dts');
21
21
  require('@rollup/plugin-json');
22
22
  require('@rollup/plugin-yaml');
23
23
  require('rollup-pluginutils');
24
- require('./svgrTemplate-2d0d15cf.cjs.js');
24
+ require('./svgrTemplate-f19e974c.cjs.js');
25
25
 
26
- var build = async () => {
26
+ var build = async (cmd) => {
27
27
  await packager.buildPackage({
28
- outputs: new Set([packager.Output.esm, packager.Output.types])
28
+ outputs: /* @__PURE__ */ new Set([packager.Output.cjs, packager.Output.types]),
29
+ minify: cmd.minify
29
30
  });
30
31
  };
31
32
 
32
- exports.default = build;
33
- //# sourceMappingURL=build-70dd213a.cjs.js.map
33
+ exports["default"] = build;
34
+ //# sourceMappingURL=build-c587cc8c.cjs.js.map
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var packager = require('./packager-1ad7272f.cjs.js');
3
+ var packager = require('./packager-6c80f203.cjs.js');
4
4
  require('fs-extra');
5
5
  require('rollup');
6
6
  require('chalk');
7
7
  require('path');
8
- require('./index-6fee1c9a.cjs.js');
8
+ require('./index-b2152549.cjs.js');
9
9
  require('commander');
10
10
  require('semver');
11
11
  require('@backstage/cli-common');
@@ -21,13 +21,14 @@ require('rollup-plugin-dts');
21
21
  require('@rollup/plugin-json');
22
22
  require('@rollup/plugin-yaml');
23
23
  require('rollup-pluginutils');
24
- require('./svgrTemplate-2d0d15cf.cjs.js');
24
+ require('./svgrTemplate-f19e974c.cjs.js');
25
25
 
26
- var build = async () => {
26
+ var build = async (cmd) => {
27
27
  await packager.buildPackage({
28
- outputs: new Set([packager.Output.cjs, packager.Output.types])
28
+ outputs: /* @__PURE__ */ new Set([packager.Output.esm, packager.Output.types]),
29
+ minify: cmd.minify
29
30
  });
30
31
  };
31
32
 
32
- exports.default = build;
33
- //# sourceMappingURL=build-b25b29ed.cjs.js.map
33
+ exports["default"] = build;
34
+ //# sourceMappingURL=build-dc2484e7.cjs.js.map
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-26bec8ac.cjs.js');
4
+ var index = require('./index-33d9cbba.cjs.js');
5
5
  require('path');
6
6
  require('os');
7
7
  require('tar');
8
- require('./index-6fee1c9a.cjs.js');
8
+ require('./index-b2152549.cjs.js');
9
9
  require('commander');
10
10
  require('chalk');
11
11
  require('semver');
12
12
  require('@backstage/cli-common');
13
13
  require('@backstage/config/package.json');
14
14
  require('@backstage/errors');
15
- require('./run-59c4395e.cjs.js');
15
+ require('./run-8388d249.cjs.js');
16
16
  require('child_process');
17
17
  require('util');
18
18
 
@@ -21,7 +21,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
21
21
  var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
22
22
 
23
23
  var buildWorkspace = async (dir, _cmd, packages) => {
24
- if (!await fs__default['default'].pathExists(dir)) {
24
+ if (!await fs__default["default"].pathExists(dir)) {
25
25
  throw new Error(`Target workspace directory doesn't exist, '${dir}'`);
26
26
  }
27
27
  await index.createDistWorkspace(packages, {
@@ -29,5 +29,5 @@ var buildWorkspace = async (dir, _cmd, packages) => {
29
29
  });
30
30
  };
31
31
 
32
- exports.default = buildWorkspace;
33
- //# sourceMappingURL=buildWorkspace-424d4929.cjs.js.map
32
+ exports["default"] = buildWorkspace;
33
+ //# sourceMappingURL=buildWorkspace-29b42a0b.cjs.js.map
@@ -5,15 +5,15 @@ var chalk = require('chalk');
5
5
  var semver = require('semver');
6
6
  var errors = require('@backstage/errors');
7
7
  var path = require('path');
8
- var run = require('./run-59c4395e.cjs.js');
9
- var index = require('./index-6fee1c9a.cjs.js');
10
- var Lockfile = require('./Lockfile-80f0eec4.cjs.js');
11
- var packages = require('./packages-a5b6a3df.cjs.js');
12
- var lint = require('./lint-6175d471.cjs.js');
8
+ var run = require('./run-8388d249.cjs.js');
9
+ var index = require('./index-b2152549.cjs.js');
10
+ var Lockfile = require('./Lockfile-35661afa.cjs.js');
11
+ var packages = require('./packages-bcde9079.cjs.js');
12
+ var lint = require('./lint-a78b8bb6.cjs.js');
13
+ var cliCommon = require('@backstage/cli-common');
13
14
  require('child_process');
14
15
  require('util');
15
16
  require('commander');
16
- require('@backstage/cli-common');
17
17
  require('@backstage/config/package.json');
18
18
  require('@yarnpkg/lockfile');
19
19
  require('lodash/partition');
@@ -36,7 +36,7 @@ var bump = async () => {
36
36
  const lockfile = await Lockfile.Lockfile.load(lockfilePath);
37
37
  const findTargetVersion = createVersionFinder();
38
38
  const dependencyMap = await packages.mapDependencies(index.paths.targetDir);
39
- const versionBumps = new Map();
39
+ const versionBumps = /* @__PURE__ */ new Map();
40
40
  const unlocked = Array();
41
41
  await workerThreads(16, dependencyMap.entries(), async ([name, pkgs]) => {
42
42
  var _a2, _b;
@@ -51,9 +51,9 @@ var bump = async () => {
51
51
  throw error;
52
52
  }
53
53
  for (const pkg of pkgs) {
54
- if (semver__default['default'].satisfies(target, pkg.range)) {
55
- if (((_a2 = semver__default['default'].minVersion(pkg.range)) == null ? void 0 : _a2.version) !== target) {
56
- unlocked.push({name, range: pkg.range, target});
54
+ if (semver__default["default"].satisfies(target, pkg.range)) {
55
+ if (((_a2 = semver__default["default"].minVersion(pkg.range)) == null ? void 0 : _a2.version) !== target) {
56
+ unlocked.push({ name, range: pkg.range, target });
57
57
  }
58
58
  continue;
59
59
  }
@@ -81,41 +81,41 @@ var bump = async () => {
81
81
  throw error;
82
82
  }
83
83
  for (const entry of (_a2 = lockfile.get(name)) != null ? _a2 : []) {
84
- if (!semver__default['default'].satisfies(target, entry.range)) {
84
+ if (!semver__default["default"].satisfies(target, entry.range)) {
85
85
  continue;
86
86
  }
87
- unlocked.push({name, range: entry.range, target});
87
+ unlocked.push({ name, range: entry.range, target });
88
88
  }
89
89
  });
90
90
  console.log();
91
91
  if (versionBumps.size === 0 && unlocked.length === 0) {
92
- console.log(chalk__default['default'].green("All Backstage packages are up to date!"));
92
+ console.log(chalk__default["default"].green("All Backstage packages are up to date!"));
93
93
  } else {
94
- console.log(chalk__default['default'].yellow("Some packages are outdated, updating"));
94
+ console.log(chalk__default["default"].yellow("Some packages are outdated, updating"));
95
95
  console.log();
96
96
  if (unlocked.length > 0) {
97
- const removed = new Set();
98
- for (const {name, range, target} of unlocked) {
97
+ const removed = /* @__PURE__ */ new Set();
98
+ for (const { name, range, target } of unlocked) {
99
99
  const existingEntry = (_a = lockfile.get(name)) == null ? void 0 : _a.find((e) => e.range === range);
100
100
  if ((existingEntry == null ? void 0 : existingEntry.version) === target) {
101
101
  continue;
102
102
  }
103
- const key = JSON.stringify({name, range});
103
+ const key = JSON.stringify({ name, range });
104
104
  if (!removed.has(key)) {
105
105
  removed.add(key);
106
- console.log(`${chalk__default['default'].magenta("unlocking")} ${name}@${chalk__default['default'].yellow(range)} ~> ${chalk__default['default'].yellow(target)}`);
106
+ console.log(`${chalk__default["default"].magenta("unlocking")} ${name}@${chalk__default["default"].yellow(range)} ~> ${chalk__default["default"].yellow(target)}`);
107
107
  lockfile.remove(name, range);
108
108
  }
109
109
  }
110
110
  await lockfile.save();
111
111
  }
112
- const breakingUpdates = new Map();
112
+ const breakingUpdates = /* @__PURE__ */ new Map();
113
113
  await workerThreads(16, versionBumps.entries(), async ([name, deps]) => {
114
114
  var _a2;
115
115
  const pkgPath = path.resolve(deps[0].location, "package.json");
116
- const pkgJson = await fs__default['default'].readJson(pkgPath);
116
+ const pkgJson = await fs__default["default"].readJson(pkgPath);
117
117
  for (const dep of deps) {
118
- console.log(`${chalk__default['default'].cyan("bumping")} ${dep.name} in ${chalk__default['default'].cyan(name)} to ${chalk__default['default'].yellow(dep.range)}`);
118
+ console.log(`${chalk__default["default"].cyan("bumping")} ${dep.name} in ${chalk__default["default"].cyan(name)} to ${chalk__default["default"].yellow(dep.range)}`);
119
119
  for (const depType of DEP_TYPES) {
120
120
  if (depType in pkgJson && dep.name in pkgJson[depType]) {
121
121
  const oldRange = pkgJson[depType][dep.name];
@@ -124,25 +124,27 @@ var bump = async () => {
124
124
  if (lockfileEntry) {
125
125
  const from = lockfileEntry.version;
126
126
  const to = dep.target;
127
- if (!semver__default['default'].satisfies(to, `^${from}`)) {
128
- breakingUpdates.set(dep.name, {from, to});
127
+ if (!semver__default["default"].satisfies(to, `^${from}`)) {
128
+ breakingUpdates.set(dep.name, { from, to });
129
129
  }
130
130
  }
131
131
  }
132
132
  }
133
133
  }
134
- await fs__default['default'].writeJson(pkgPath, pkgJson, {spaces: 2});
134
+ await fs__default["default"].writeJson(pkgPath, pkgJson, { spaces: 2 });
135
135
  });
136
136
  console.log();
137
- console.log(`Running ${chalk__default['default'].blue("yarn install")} to install new versions`);
137
+ await bumpBackstageJsonVersion();
138
+ console.log();
139
+ console.log(`Running ${chalk__default["default"].blue("yarn install")} to install new versions`);
138
140
  console.log();
139
141
  await run.run("yarn", ["install"]);
140
142
  if (breakingUpdates.size > 0) {
141
143
  console.log();
142
- console.log(chalk__default['default'].yellow("\u26A0\uFE0F The following packages may have breaking changes:"));
144
+ console.log(chalk__default["default"].yellow("\u26A0\uFE0F The following packages may have breaking changes:"));
143
145
  console.log();
144
- for (const [name, {from, to}] of Array.from(breakingUpdates.entries()).sort()) {
145
- console.log(` ${chalk__default['default'].yellow(name)} : ${chalk__default['default'].yellow(from)} ~> ${chalk__default['default'].yellow(to)}`);
146
+ for (const [name, { from, to }] of Array.from(breakingUpdates.entries()).sort()) {
147
+ console.log(` ${chalk__default["default"].yellow(name)} : ${chalk__default["default"].yellow(from)} ~> ${chalk__default["default"].yellow(to)}`);
146
148
  let path;
147
149
  if (name.startsWith("@backstage/plugin-")) {
148
150
  path = `plugins/${name.replace("@backstage/plugin-", "")}`;
@@ -157,7 +159,7 @@ var bump = async () => {
157
159
  } else {
158
160
  console.log();
159
161
  }
160
- console.log(chalk__default['default'].green("Version bump complete!"));
162
+ console.log(chalk__default["default"].green("Version bump complete!"));
161
163
  }
162
164
  console.log();
163
165
  const dedupLockfile = await Lockfile.Lockfile.load(lockfilePath);
@@ -167,13 +169,13 @@ var bump = async () => {
167
169
  if (result.newVersions.length > 0) {
168
170
  throw new Error("Duplicate versions present after package bump");
169
171
  }
170
- const forbiddenNewRanges = result.newRanges.filter(({name}) => lint.forbiddenDuplicatesFilter(name));
172
+ const forbiddenNewRanges = result.newRanges.filter(({ name }) => lint.forbiddenDuplicatesFilter(name));
171
173
  if (forbiddenNewRanges.length > 0) {
172
174
  throw new Error(`Version bump failed for ${forbiddenNewRanges.map((i) => i.name).join(", ")}`);
173
175
  }
174
176
  };
175
177
  function createVersionFinder() {
176
- const found = new Map();
178
+ const found = /* @__PURE__ */ new Map();
177
179
  return async function findTargetVersion(name) {
178
180
  const existing = found.get(name);
179
181
  if (existing) {
@@ -189,6 +191,25 @@ function createVersionFinder() {
189
191
  return latest;
190
192
  };
191
193
  }
194
+ async function bumpBackstageJsonVersion() {
195
+ const backstageJsonPath = index.paths.resolveTargetRoot(cliCommon.BACKSTAGE_JSON);
196
+ const backstageJson = await fs__default["default"].readJSON(backstageJsonPath).catch((e) => {
197
+ if (e.code === "ENOENT") {
198
+ return;
199
+ }
200
+ throw e;
201
+ });
202
+ const info = await packages.fetchPackageInfo("@backstage/create-app");
203
+ const { latest } = info["dist-tags"];
204
+ if ((backstageJson == null ? void 0 : backstageJson.version) === latest) {
205
+ return;
206
+ }
207
+ console.log(chalk__default["default"].yellow(typeof backstageJson === "undefined" ? `Creating ${cliCommon.BACKSTAGE_JSON}` : `Bumping version in ${cliCommon.BACKSTAGE_JSON}`));
208
+ await fs__default["default"].writeJson(backstageJsonPath, { ...backstageJson, version: latest }, {
209
+ spaces: 2,
210
+ encoding: "utf8"
211
+ });
212
+ }
192
213
  async function workerThreads(count, items, fn) {
193
214
  const queue = Array.from(items);
194
215
  async function pop() {
@@ -202,5 +223,6 @@ async function workerThreads(count, items, fn) {
202
223
  return Promise.all(Array(count).fill(0).map(() => pop()));
203
224
  }
204
225
 
205
- exports.default = bump;
206
- //# sourceMappingURL=bump-bce7f9c2.cjs.js.map
226
+ exports.bumpBackstageJsonVersion = bumpBackstageJsonVersion;
227
+ exports["default"] = bump;
228
+ //# sourceMappingURL=bump-24057de2.cjs.js.map