@backstage/cli 0.29.0-next.2 → 0.29.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 (33) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/dist/commands/index.cjs.js +1 -1
  3. package/dist/commands/lint.cjs.js +2 -1
  4. package/dist/commands/pack.cjs.js +0 -1
  5. package/dist/commands/repo/lint.cjs.js +2 -1
  6. package/dist/commands/versions/bump.cjs.js +3 -36
  7. package/dist/commands/versions/migrate.cjs.js +2 -2
  8. package/dist/commands/versions/utils.cjs.js +44 -0
  9. package/dist/lib/builder/config.cjs.js +3 -2
  10. package/dist/lib/bundler/ConfigInjectingHtmlWebpackPlugin.cjs.js +43 -0
  11. package/dist/lib/bundler/config.cjs.js +27 -22
  12. package/dist/lib/bundler/server.cjs.js +16 -4
  13. package/dist/lib/packager/productionPack.cjs.js +13 -37
  14. package/dist/lib/version.cjs.js +36 -36
  15. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  16. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  17. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  18. package/dist/packages/catalog-client/package.json.cjs.js +1 -1
  19. package/dist/packages/cli/package.json.cjs.js +4 -5
  20. package/dist/packages/config/package.json.cjs.js +1 -1
  21. package/dist/packages/core-app-api/package.json.cjs.js +1 -1
  22. package/dist/packages/core-components/package.json.cjs.js +1 -1
  23. package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
  24. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  25. package/dist/packages/errors/package.json.cjs.js +1 -1
  26. package/dist/packages/test-utils/package.json.cjs.js +1 -1
  27. package/dist/packages/theme/package.json.cjs.js +1 -1
  28. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  29. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  30. package/dist/plugins/catalog-node/package.json.cjs.js +1 -1
  31. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  32. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +1 -1
  33. package/package.json +31 -32
package/CHANGELOG.md CHANGED
@@ -1,5 +1,103 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.29.0
4
+
5
+ ### Minor Changes
6
+
7
+ - bc47b17: **BREAKING**: Updates ESLint config to ignore all generated source code under `src/**/generated/**/*.ts`.
8
+ - 6819f8c: Added a new optimization to the `repo test` command that will filter out unused packages in watch mode if all provide filters are paths that point from the repo root. This significantly speeds up running individual tests from the repo root in a large workspace, for example:
9
+
10
+ ```sh
11
+ yarn test packages/app/src/App.test.tsx
12
+ ```
13
+
14
+ - d849865: The package packing now populates `typesVersions` for additional entry points rather than using additional `package.json` files for type resolution. This improves auto completion of separate entry points when consuming published packages.
15
+ - bc71665: **BREAKING**: The `LEGACY_BACKEND_START` flag has been removed, along with support for `src/run.ts` as the development entry point.
16
+
17
+ ### Patch Changes
18
+
19
+ - 4046d53: Fixed an issue where the `--successCache` option for the `repo test` and `repo lint` commands would be include the workspace path in generated cache keys. This previously broke caching in environments where the workspace path varies across builds.
20
+ - 4a378d3: Fix dev server reloads of plugin discovery for new frontend system.
21
+ - 28b60ad: The check for `react-dom/client` in the Jest configuration will now properly always run from the target directory.
22
+ - 6b2888c: Fixed an issue with the `--successCache` flag for `repo test` where the tree hash for the wrong package directory would sometimes be used to generate the cache key.
23
+ - e30b65d: Added `--alwaysPack` as a replacement for the now hidden `--alwaysYarnPack` flag for the `build-workspace` command.
24
+ - be0278e: Removed circular import
25
+ - a7f97e4: Added a new `"rejectFrontendNetworkRequests"` configuration flag that can be set in the `"jest"` field in the root `package.json`:
26
+
27
+ ```json
28
+ {
29
+ "jest": {
30
+ "rejectFrontendNetworkRequests": true
31
+ }
32
+ }
33
+ ```
34
+
35
+ This flag causes rejection of any form of network requests that are attempted to be made in frontend or common package tests. This flag can only be set in the root `package.json` and can not be overridden in individual package configurations.
36
+
37
+ - 6c48ebd: Add `--max-warnings -1` support to `backstage-cli package lint`
38
+ - 04297a0: The `--successCache` option for the `repo test` and `repo lint` commands now use an additive store that keeps old entries around for a week before they are cleaned up automatically.
39
+ - a2f0559: When using the experimental Rspack flag the app build and dev server now injects configuration via a `<script type="backstage.io/config">...</script>` tag in `index.html` rather than the `process.env.APP_CONFIG` definition, which will now be defined as an empty array instead.
40
+
41
+ This requires the app to be using the config loader from the 1.31 release of Backstage. Make sure your app is using at least that version if you are upgrading to this version of the CLI.
42
+
43
+ If you have copied the implementation of the `defaultConfigLoader`, make sure to update it to the new implementation. In particular the config loader needs to be able to read configuration from `script` tags with the type `backstage.io/config`.
44
+
45
+ - b4627f2: Fixed an issue where the `raw-loader` for loading HTML templates was not resolved from the context of the CLI package.
46
+ - cd1ef2b: Updated dependency `vite` to `^5.0.0`.
47
+ - 23f1da2: Updated dependency `ts-morph` to `^24.0.0`.
48
+ - b533056: Updated dependency `css-loader` to `^7.0.0`.
49
+ - be008c3: Updated dependency `@module-federation/enhanced` to `^0.7.0`.
50
+ - 6266ed3: Updated dependency `del` to `^8.0.0`.
51
+ - 4046d53: Fixed an issue with the `repo lint` command where the cache key for the `--successCache` option would not properly ignore files that should be ignored according to `.eslintignore`s.
52
+ - e19c53c: Fix for the `--link` flag for `package start` to deduplicate `react-router` and `react-router-dom`.
53
+ - 17850a5: Update upgrade-helper link in `versions:bump` command to include `yarnPlugin` parameter when the yarn plugin is installed
54
+ - 09ea093: Fixed an issue where `.css` style injection would fail for published packages.
55
+ - 702f41d: Bumped dev dependencies `@types/node`
56
+ - 5d74716: Remove unused backend-common dependency
57
+ - b084f5a: Bump the Webpack dependency range to `^5.94.0`, as our current configuration is not compatible with some older versions.
58
+ - e565f73: Added support for `.webp` files in the frontend tooling.
59
+ - 946fa34: Added a new `--link <workspace-path>` option for frontend builds that allow you to override module resolution to link in an external workspace at runtime.
60
+
61
+ As part of this change the Webpack linked workspace resolution plugin for frontend builds has been removed. It was in place to support the old workspace linking where it was done by Yarn, which is no longer a working option.
62
+
63
+ - Updated dependencies
64
+ - @backstage/config@1.3.0
65
+ - @backstage/types@1.2.0
66
+ - @backstage/config-loader@1.9.2
67
+ - @backstage/cli-common@0.1.15
68
+ - @backstage/catalog-model@1.7.1
69
+ - @backstage/cli-node@0.2.10
70
+ - @backstage/errors@1.2.5
71
+ - @backstage/eslint-plugin@0.1.10
72
+ - @backstage/integration@1.15.2
73
+ - @backstage/release-manifests@0.0.11
74
+
75
+ ## 0.29.0-next.3
76
+
77
+ ### Minor Changes
78
+
79
+ - d849865: The package packing now populates `typesVersions` for additional entry points rather than using additional `package.json` files for type resolution. This improves auto completion of separate entry points when consuming published packages.
80
+
81
+ ### Patch Changes
82
+
83
+ - 4a378d3: Fix dev server reloads of plugin discovery for new frontend system.
84
+ - 6c48ebd: Add `--max-warnings -1` support to `backstage-cli package lint`
85
+ - 23f1da2: Updated dependency `ts-morph` to `^24.0.0`.
86
+ - b533056: Updated dependency `css-loader` to `^7.0.0`.
87
+ - be008c3: Updated dependency `@module-federation/enhanced` to `^0.7.0`.
88
+ - 09ea093: Fixed an issue where `.css` style injection would fail for published packages.
89
+ - Updated dependencies
90
+ - @backstage/catalog-model@1.7.0
91
+ - @backstage/cli-common@0.1.15-next.0
92
+ - @backstage/cli-node@0.2.10-next.0
93
+ - @backstage/config@1.2.0
94
+ - @backstage/config-loader@1.9.2-next.0
95
+ - @backstage/errors@1.2.4
96
+ - @backstage/eslint-plugin@0.1.10
97
+ - @backstage/integration@1.15.1
98
+ - @backstage/release-manifests@0.0.11
99
+ - @backstage/types@1.1.1
100
+
3
101
  ## 0.29.0-next.2
4
102
 
5
103
  ### Minor Changes
@@ -90,7 +90,7 @@ function registerScriptCommand(program) {
90
90
  "eslint-formatter-friendly"
91
91
  ).option("--fix", "Attempt to automatically fix violations").option(
92
92
  "--max-warnings <number>",
93
- "Fail if more than this number of warnings (default: 0)"
93
+ "Fail if more than this number of warnings. -1 allows warnings. (default: 0)"
94
94
  ).description("Lint a package").action(lazy(() => Promise.resolve().then(function () { return require('./lint.cjs.js'); }).then((m) => m.default)));
95
95
  command.command("test").allowUnknownOption(true).helpOption(", --backstage-cli-help").description("Run tests, forwarding args to Jest, defaulting to watch mode").action(lazy(() => Promise.resolve().then(function () { return require('./test.cjs.js'); }).then((m) => m.default)));
96
96
  command.command("clean").description("Delete cache directories").action(lazy(() => Promise.resolve().then(function () { return require('./clean/clean.cjs.js'); }).then((m) => m.default)));
@@ -15,7 +15,8 @@ var lint = async (directories, opts) => {
15
15
  directories.length ? directories : ["."]
16
16
  );
17
17
  const maxWarnings = opts.maxWarnings ?? 0;
18
- const failed = results.some((r) => r.errorCount > 0) || results.reduce((current, next) => current + next.warningCount, 0) > maxWarnings;
18
+ const ignoreWarnings = +maxWarnings === -1;
19
+ const failed = results.some((r) => r.errorCount > 0) || !ignoreWarnings && results.reduce((current, next) => current + next.warningCount, 0) > maxWarnings;
19
20
  if (opts.fix) {
20
21
  await eslint.ESLint.outputFixes(results);
21
22
  }
@@ -12,7 +12,6 @@ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
12
12
 
13
13
  const pre = async () => {
14
14
  publishing.publishPreflightCheck({
15
- dir: paths.paths.targetDir,
16
15
  packageJson: await fs__default.default.readJson(paths.paths.resolveTarget("package.json"))
17
16
  });
18
17
  await productionPack.productionPack({
@@ -145,8 +145,9 @@ async function command(opts, cmd) {
145
145
  await ESLint.outputFixes(results);
146
146
  }
147
147
  const maxWarnings = lintOptions?.maxWarnings ?? 0;
148
+ const ignoreWarnings = +maxWarnings === -1;
148
149
  const resultText = formatter.format(results);
149
- const failed2 = results.some((r) => r.errorCount > 0) || results.reduce((current, next) => current + next.warningCount, 0) > maxWarnings;
150
+ const failed2 = results.some((r) => r.errorCount > 0) || !ignoreWarnings && results.reduce((current, next) => current + next.warningCount, 0) > maxWarnings;
150
151
  return {
151
152
  relativeDir,
152
153
  resultText,
@@ -5,13 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var globalAgent = require('global-agent');
6
6
  var fs = require('fs-extra');
7
7
  var chalk = require('chalk');
8
- var ora = require('ora');
9
8
  var semver = require('semver');
10
9
  var yaml = require('yaml');
11
10
  var z = require('zod');
12
11
  var errors = require('@backstage/errors');
13
12
  var path = require('path');
14
- var run = require('../../lib/run.cjs.js');
15
13
  var paths = require('../../lib/paths.cjs.js');
16
14
  var Lockfile = require('../../lib/versioning/Lockfile.cjs.js');
17
15
  var packages = require('../../lib/versioning/packages.cjs.js');
@@ -19,12 +17,12 @@ var cliCommon = require('@backstage/cli-common');
19
17
  var parallel = require('../../lib/parallel.cjs.js');
20
18
  var releaseManifests = require('@backstage/release-manifests');
21
19
  var migrate = require('./migrate.cjs.js');
20
+ var utils = require('./utils.cjs.js');
22
21
 
23
22
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
24
23
 
25
24
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
26
25
  var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
27
- var ora__default = /*#__PURE__*/_interopDefaultCompat(ora);
28
26
  var semver__default = /*#__PURE__*/_interopDefaultCompat(semver);
29
27
  var yaml__default = /*#__PURE__*/_interopDefaultCompat(yaml);
30
28
  var z__default = /*#__PURE__*/_interopDefaultCompat(z);
@@ -172,7 +170,7 @@ var bump = async (opts) => {
172
170
  );
173
171
  }
174
172
  if (!opts.skipInstall) {
175
- await runYarnInstall();
173
+ await utils.runYarnInstall();
176
174
  } else {
177
175
  console.log();
178
176
  console.log(chalk__default.default.yellow(`Skipping yarn install`));
@@ -183,7 +181,7 @@ var bump = async (opts) => {
183
181
  pattern: opts.pattern
184
182
  });
185
183
  if (changed && !opts.skipInstall) {
186
- await runYarnInstall();
184
+ await utils.runYarnInstall();
187
185
  }
188
186
  }
189
187
  if (breakingUpdates.size > 0) {
@@ -384,40 +382,9 @@ async function getHasYarnPlugin() {
384
382
  (plugin) => plugin.path === ".yarn/plugins/@yarnpkg/plugin-backstage.cjs"
385
383
  );
386
384
  }
387
- async function runYarnInstall() {
388
- const spinner = ora__default.default({
389
- prefixText: `Running ${chalk__default.default.blue("yarn install")} to install new versions`,
390
- spinner: "arc",
391
- color: "green"
392
- }).start();
393
- const installOutput = new Array();
394
- try {
395
- await run.run("yarn", ["install"], {
396
- env: {
397
- FORCE_COLOR: "true",
398
- // We filter out all of the npm_* environment variables that are added when
399
- // executing through yarn. This works around an issue where these variables
400
- // incorrectly override local yarn or npm config in the project directory.
401
- ...Object.fromEntries(
402
- Object.entries(process.env).map(
403
- ([name, value]) => name.startsWith("npm_") ? [name, void 0] : [name, value]
404
- )
405
- )
406
- },
407
- stdoutLogFunc: (data) => installOutput.push(data),
408
- stderrLogFunc: (data) => installOutput.push(data)
409
- });
410
- spinner.succeed();
411
- } catch (error) {
412
- spinner.fail();
413
- process.stdout.write(Buffer.concat(installOutput));
414
- throw error;
415
- }
416
- }
417
385
 
418
386
  exports.bumpBackstageJsonVersion = bumpBackstageJsonVersion;
419
387
  exports.createStrictVersionFinder = createStrictVersionFinder;
420
388
  exports.createVersionFinder = createVersionFinder;
421
389
  exports.default = bump;
422
- exports.runYarnInstall = runYarnInstall;
423
390
  //# sourceMappingURL=bump.cjs.js.map
@@ -7,7 +7,7 @@ var chalk = require('chalk');
7
7
  var path = require('path');
8
8
  var fs = require('fs-extra');
9
9
  var minimatch = require('minimatch');
10
- var bump = require('./bump.cjs.js');
10
+ var utils = require('./utils.cjs.js');
11
11
  var replace = require('replace-in-file');
12
12
 
13
13
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -21,7 +21,7 @@ var migrate = async (options) => {
21
21
  skipCodeChanges: options.skipCodeChanges
22
22
  });
23
23
  if (changed) {
24
- await bump.runYarnInstall();
24
+ await utils.runYarnInstall();
25
25
  }
26
26
  };
27
27
  async function migrateMovedPackages(options) {
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var ora = require('ora');
4
+ var chalk = require('chalk');
5
+ var run = require('../../lib/run.cjs.js');
6
+
7
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
+
9
+ var ora__default = /*#__PURE__*/_interopDefaultCompat(ora);
10
+ var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
11
+
12
+ async function runYarnInstall() {
13
+ const spinner = ora__default.default({
14
+ prefixText: `Running ${chalk__default.default.blue("yarn install")} to install new versions`,
15
+ spinner: "arc",
16
+ color: "green"
17
+ }).start();
18
+ const installOutput = new Array();
19
+ try {
20
+ await run.run("yarn", ["install"], {
21
+ env: {
22
+ FORCE_COLOR: "true",
23
+ // We filter out all of the npm_* environment variables that are added when
24
+ // executing through yarn. This works around an issue where these variables
25
+ // incorrectly override local yarn or npm config in the project directory.
26
+ ...Object.fromEntries(
27
+ Object.entries(process.env).map(
28
+ ([name, value]) => name.startsWith("npm_") ? [name, void 0] : [name, value]
29
+ )
30
+ )
31
+ },
32
+ stdoutLogFunc: (data) => installOutput.push(data),
33
+ stderrLogFunc: (data) => installOutput.push(data)
34
+ });
35
+ spinner.succeed();
36
+ } catch (error) {
37
+ spinner.fail();
38
+ process.stdout.write(Buffer.concat(installOutput));
39
+ throw error;
40
+ }
41
+ }
42
+
43
+ exports.runYarnInstall = runYarnInstall;
44
+ //# sourceMappingURL=utils.cjs.js.map
@@ -87,10 +87,11 @@ async function makeRollupConfigs(options) {
87
87
  if (options.outputs.has(types.Output.cjs) || options.outputs.has(types.Output.esm)) {
88
88
  const output = new Array();
89
89
  const mainFields = ["module", "main"];
90
+ const rewriteNodeModules = (name) => name.replaceAll("node_modules", "node_modules_dist");
90
91
  if (options.outputs.has(types.Output.cjs)) {
91
92
  output.push({
92
93
  dir: distDir,
93
- entryFileNames: `[name].cjs.js`,
94
+ entryFileNames: (chunkInfo) => `${rewriteNodeModules(chunkInfo.name)}.cjs.js`,
94
95
  chunkFileNames: `cjs/[name]-[hash].cjs.js`,
95
96
  format: "commonjs",
96
97
  interop: "compat",
@@ -103,7 +104,7 @@ async function makeRollupConfigs(options) {
103
104
  if (options.outputs.has(types.Output.esm)) {
104
105
  output.push({
105
106
  dir: distDir,
106
- entryFileNames: `[name].esm.js`,
107
+ entryFileNames: (chunkInfo) => `${rewriteNodeModules(chunkInfo.name)}.esm.js`,
107
108
  chunkFileNames: `esm/[name]-[hash].esm.js`,
108
109
  format: "module",
109
110
  sourcemap: true,
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var HtmlWebpackPlugin = require('html-webpack-plugin');
4
+
5
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
6
+
7
+ var HtmlWebpackPlugin__default = /*#__PURE__*/_interopDefaultCompat(HtmlWebpackPlugin);
8
+
9
+ class ConfigInjectingHtmlWebpackPlugin extends HtmlWebpackPlugin__default.default {
10
+ name = "ConfigInjectingHtmlWebpackPlugin";
11
+ #getFrontendAppConfigs;
12
+ constructor(options, getFrontendAppConfigs) {
13
+ super(options);
14
+ this.#getFrontendAppConfigs = getFrontendAppConfigs;
15
+ }
16
+ apply = (compiler) => {
17
+ super.apply(compiler);
18
+ compiler.hooks.compilation.tap(this.name, (compilation) => {
19
+ const hooks = HtmlWebpackPlugin__default.default.getCompilationHooks(compilation);
20
+ hooks.alterAssetTagGroups.tap(this.name, (ctx) => {
21
+ if (ctx.plugin !== this) {
22
+ return ctx;
23
+ }
24
+ return {
25
+ ...ctx,
26
+ headTags: [
27
+ ...ctx.headTags,
28
+ HtmlWebpackPlugin__default.default.createHtmlTagObject(
29
+ "script",
30
+ { type: "backstage.io/config" },
31
+ `
32
+ ${JSON.stringify(this.#getFrontendAppConfigs(), null, 2)}
33
+ `
34
+ )
35
+ ]
36
+ };
37
+ });
38
+ });
39
+ };
40
+ }
41
+
42
+ exports.ConfigInjectingHtmlWebpackPlugin = ConfigInjectingHtmlWebpackPlugin;
43
+ //# sourceMappingURL=ConfigInjectingHtmlWebpackPlugin.cjs.js.map
@@ -2,11 +2,11 @@
2
2
 
3
3
  var path = require('path');
4
4
  var chalk = require('chalk');
5
- var webpack$1 = require('webpack');
5
+ var webpack = require('webpack');
6
6
  var ESLintPlugin = require('eslint-webpack-plugin');
7
7
  var ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
8
8
  var HtmlWebpackPlugin = require('html-webpack-plugin');
9
- var webpack = require('@module-federation/enhanced/webpack');
9
+ var webpack$1 = require('@module-federation/enhanced/webpack');
10
10
  var ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');
11
11
  var ReactRefreshPlugin = require('@pmmmwh/react-refresh-webpack-plugin');
12
12
  var paths = require('../paths.cjs.js');
@@ -19,11 +19,12 @@ var version = require('../version.cjs.js');
19
19
  var yn = require('yn');
20
20
  var hasReactDomClient = require('./hasReactDomClient.cjs.js');
21
21
  var linkWorkspaces = require('./linkWorkspaces.cjs.js');
22
+ var ConfigInjectingHtmlWebpackPlugin = require('./ConfigInjectingHtmlWebpackPlugin.cjs.js');
22
23
 
23
24
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
24
25
 
25
26
  var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
26
- var webpack__default = /*#__PURE__*/_interopDefaultCompat(webpack$1);
27
+ var webpack__default = /*#__PURE__*/_interopDefaultCompat(webpack);
27
28
  var ESLintPlugin__default = /*#__PURE__*/_interopDefaultCompat(ESLintPlugin);
28
29
  var ForkTsCheckerWebpackPlugin__default = /*#__PURE__*/_interopDefaultCompat(ForkTsCheckerWebpackPlugin);
29
30
  var HtmlWebpackPlugin__default = /*#__PURE__*/_interopDefaultCompat(HtmlWebpackPlugin);
@@ -132,19 +133,26 @@ async function createConfig(paths, options) {
132
133
  })
133
134
  );
134
135
  if (options.moduleFederation?.mode !== "remote") {
135
- plugins.push(
136
- // `rspack.HtmlRspackPlugin` does not support object type `templateParameters` value, `frontendConfig` in this case
137
- new HtmlWebpackPlugin__default.default({
138
- meta: {
139
- "backstage-app-mode": options?.appMode ?? "public"
140
- },
141
- template: paths.targetHtml,
142
- templateParameters: {
143
- publicPath,
144
- config: frontendConfig
145
- }
146
- })
147
- );
136
+ const templateOptions = {
137
+ meta: {
138
+ "backstage-app-mode": options?.appMode ?? "public"
139
+ },
140
+ template: paths.targetHtml,
141
+ templateParameters: {
142
+ publicPath,
143
+ config: frontendConfig
144
+ }
145
+ };
146
+ if (rspack) {
147
+ plugins.push(
148
+ new ConfigInjectingHtmlWebpackPlugin.ConfigInjectingHtmlWebpackPlugin(
149
+ templateOptions,
150
+ options.getFrontendAppConfigs
151
+ )
152
+ );
153
+ } else {
154
+ plugins.push(new HtmlWebpackPlugin__default.default(templateOptions));
155
+ }
148
156
  plugins.push(
149
157
  new HtmlWebpackPlugin__default.default({
150
158
  meta: {
@@ -161,7 +169,7 @@ async function createConfig(paths, options) {
161
169
  }
162
170
  if (options.moduleFederation) {
163
171
  const isRemote = options.moduleFederation?.mode === "remote";
164
- const AdaptedModuleFederationPlugin = rspack ? rspack.container.ModuleFederationPlugin : webpack.ModuleFederationPlugin;
172
+ const AdaptedModuleFederationPlugin = rspack ? rspack.container.ModuleFederationPlugin : webpack$1.ModuleFederationPlugin;
165
173
  plugins.push(
166
174
  new AdaptedModuleFederationPlugin({
167
175
  ...isRemote && {
@@ -225,10 +233,7 @@ async function createConfig(paths, options) {
225
233
  plugins.push(
226
234
  new bundler.DefinePlugin({
227
235
  "process.env.BUILD_INFO": JSON.stringify(buildInfo),
228
- "process.env.APP_CONFIG": rspack ? (
229
- // FIXME: see also https://github.com/web-infra-dev/rspack/issues/5606
230
- JSON.stringify(options.getFrontendAppConfigs())
231
- ) : bundler.DefinePlugin.runtimeValue(
236
+ "process.env.APP_CONFIG": rspack ? JSON.stringify([]) : bundler.DefinePlugin.runtimeValue(
232
237
  () => JSON.stringify(options.getFrontendAppConfigs()),
233
238
  true
234
239
  ),
@@ -287,7 +292,7 @@ async function createConfig(paths, options) {
287
292
  profile: false,
288
293
  ...isDev ? {
289
294
  watchOptions: {
290
- ignored: /node_modules/
295
+ ignored: /node_modules\/(?!__backstage-autodetected-plugins__)/
291
296
  }
292
297
  } : {},
293
298
  optimization: optimization$1,
@@ -39,14 +39,27 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
39
39
  let webpackServer = void 0;
40
40
  let viteServer = void 0;
41
41
  let latestFrontendAppConfigs = [];
42
+ const triggerReload = () => {
43
+ if (viteServer) {
44
+ viteServer.restart();
45
+ }
46
+ if (webpackServer) {
47
+ webpackServer.invalidate();
48
+ if (process.env.EXPERIMENTAL_RSPACK) {
49
+ webpackServer.sendMessage(
50
+ webpackServer.webSocketServer?.clients ?? [],
51
+ "static-changed"
52
+ );
53
+ }
54
+ }
55
+ };
42
56
  const cliConfig = await config.loadCliConfig({
43
57
  args: options.configPaths,
44
58
  fromPackage: name,
45
59
  withFilteredKeys: true,
46
60
  watch(appConfigs) {
47
61
  latestFrontendAppConfigs = appConfigs;
48
- webpackServer?.invalidate();
49
- viteServer?.restart();
62
+ triggerReload();
50
63
  }
51
64
  });
52
65
  latestFrontendAppConfigs = cliConfig.frontendAppConfigs;
@@ -77,8 +90,7 @@ DEPRECATION WARNING: React Router Beta is deprecated and support for it will be
77
90
  config: fullConfig,
78
91
  targetPath: paths$2.targetPath,
79
92
  watch() {
80
- webpackServer?.invalidate();
81
- viteServer?.restart();
93
+ triggerReload();
82
94
  }
83
95
  });
84
96
  const rspack = process.env.EXPERIMENTAL_RSPACK ? require("@rspack/core") : void 0;
@@ -23,18 +23,13 @@ async function productionPack(options) {
23
23
  if (!targetDir) {
24
24
  await fs__default.default.writeFile(PKG_BACKUP_PATH, pkgContent);
25
25
  }
26
- const writeCompatibilityEntryPoints = await prepareExportsEntryPoints(
27
- pkg,
28
- packageDir,
29
- options.featureDetectionProject
30
- );
26
+ await rewriteEntryPoints(pkg, packageDir, options.featureDetectionProject);
31
27
  const publishConfig = pkg.publishConfig ?? {};
32
28
  for (const key of Object.keys(publishConfig)) {
33
29
  if (!SKIPPED_KEYS.includes(key)) {
34
30
  pkg[key] = publishConfig[key];
35
31
  }
36
32
  }
37
- delete pkg.typesVersions;
38
33
  if (pkg.bundled) {
39
34
  delete pkg.dependencies;
40
35
  delete pkg.devDependencies;
@@ -62,9 +57,6 @@ async function productionPack(options) {
62
57
  } else {
63
58
  await fs__default.default.writeJson(pkgPath, pkg, { encoding: "utf8", spaces: 2 });
64
59
  }
65
- if (writeCompatibilityEntryPoints) {
66
- await writeCompatibilityEntryPoints(targetDir ?? packageDir);
67
- }
68
60
  }
69
61
  async function revertProductionPack(packageDir) {
70
62
  try {
@@ -87,15 +79,17 @@ const EXPORT_MAP = {
87
79
  require: ".cjs.js",
88
80
  types: ".d.ts"
89
81
  };
90
- async function prepareExportsEntryPoints(pkg, packageDir, featureDetectionProject) {
82
+ async function rewriteEntryPoints(pkg, packageDir, featureDetectionProject) {
91
83
  const distPath = path.resolve(packageDir, "dist");
92
84
  if (!await fs__default.default.pathExists(distPath)) {
93
85
  return void 0;
94
86
  }
95
87
  const distFiles = await fs__default.default.readdir(distPath);
96
88
  const outputExports = {};
97
- const compatibilityWriters = new Array();
98
89
  const entryPoints$1 = entryPoints.readEntryPoints(pkg);
90
+ if (pkg.typesVersions) {
91
+ pkg.typesVersions = { "*": {} };
92
+ }
99
93
  for (const entryPoint of entryPoints$1) {
100
94
  if (!SCRIPT_EXTS.includes(entryPoint.ext)) {
101
95
  outputExports[entryPoint.mount] = entryPoint.path;
@@ -108,6 +102,14 @@ async function prepareExportsEntryPoints(pkg, packageDir, featureDetectionProjec
108
102
  exp[key] = `./${path.posix.join(`dist`, name)}`;
109
103
  }
110
104
  }
105
+ if (exp.types) {
106
+ if (!pkg.typesVersions) {
107
+ pkg.typesVersions = { "*": {} };
108
+ }
109
+ pkg.typesVersions["*"][entryPoint.name] = [
110
+ `dist/${entryPoint.name}.d.ts`
111
+ ];
112
+ }
111
113
  exp.default = exp.require ?? exp.import;
112
114
  if (exp.types && featureDetectionProject) {
113
115
  const defaultFeatureType = pkg.backstage?.role && typeDistProject.getEntryPointDefaultFeatureType(
@@ -130,27 +132,6 @@ async function prepareExportsEntryPoints(pkg, packageDir, featureDetectionProjec
130
132
  if (exp.types) {
131
133
  pkg.types = exp.types;
132
134
  }
133
- } else {
134
- compatibilityWriters.push(async (targetDir) => {
135
- const entryPointDir = path.resolve(targetDir, entryPoint.name);
136
- await fs__default.default.ensureDir(entryPointDir);
137
- await fs__default.default.writeJson(
138
- path.resolve(entryPointDir, PKG_PATH),
139
- {
140
- // Need a temporary name, as sharing the same name causes some typescript issues with caching of packages names
141
- // And their defined `types` field.
142
- name: `${pkg.name}__${entryPoint.name.toLocaleLowerCase("en-US")}`,
143
- version: pkg.version,
144
- ...exp.default ? { main: path.posix.join("..", exp.default) } : {},
145
- ...exp.import ? { module: path.posix.join("..", exp.import) } : {},
146
- ...exp.types ? { types: path.posix.join("..", exp.types) } : {}
147
- },
148
- { encoding: "utf8", spaces: 2 }
149
- );
150
- });
151
- if (Array.isArray(pkg.files) && !pkg.files.includes(entryPoint.name)) {
152
- pkg.files.push(entryPoint.name);
153
- }
154
135
  }
155
136
  if (Object.keys(exp).length > 0) {
156
137
  outputExports[entryPoint.mount] = exp;
@@ -160,11 +141,6 @@ async function prepareExportsEntryPoints(pkg, packageDir, featureDetectionProjec
160
141
  pkg.exports = outputExports;
161
142
  pkg.exports["./package.json"] = "./package.json";
162
143
  }
163
- if (compatibilityWriters.length > 0) {
164
- return async (targetDir) => {
165
- await Promise.all(compatibilityWriters.map((writer) => writer(targetDir)));
166
- };
167
- }
168
144
  return void 0;
169
145
  }
170
146
 
@@ -3,24 +3,24 @@
3
3
  var fs = require('fs-extra');
4
4
  var semver = require('semver');
5
5
  var paths = require('./paths.cjs.js');
6
- var _package$1 = require('../packages/backend-plugin-api/package.json.cjs.js');
7
- var _package$2 = require('../packages/backend-test-utils/package.json.cjs.js');
8
- var _package$3 = require('../packages/catalog-client/package.json.cjs.js');
9
- var _package$4 = require('../packages/cli/package.json.cjs.js');
10
- var _package$5 = require('../packages/config/package.json.cjs.js');
11
- var _package$6 = require('../packages/core-app-api/package.json.cjs.js');
12
- var _package$7 = require('../packages/core-components/package.json.cjs.js');
13
- var _package$8 = require('../packages/core-plugin-api/package.json.cjs.js');
14
- var _package$9 = require('../packages/dev-utils/package.json.cjs.js');
15
- var _package$a = require('../packages/errors/package.json.cjs.js');
16
- var _package$b = require('../packages/test-utils/package.json.cjs.js');
17
- var _package$d = require('../plugins/scaffolder-node/package.json.cjs.js');
18
- var _package$e = require('../plugins/scaffolder-node-test-utils/package.json.cjs.js');
19
- var _package$f = require('../plugins/auth-backend/package.json.cjs.js');
20
- var _package$g = require('../plugins/auth-backend-module-guest-provider/package.json.cjs.js');
21
- var _package$h = require('../plugins/catalog-node/package.json.cjs.js');
22
- var _package$c = require('../packages/theme/package.json.cjs.js');
23
- var _package = require('../packages/backend-defaults/package.json.cjs.js');
6
+ var _package$g = require('../packages/backend-plugin-api/package.json.cjs.js');
7
+ var _package$f = require('../packages/backend-test-utils/package.json.cjs.js');
8
+ var _package$e = require('../packages/catalog-client/package.json.cjs.js');
9
+ var _package$d = require('../packages/cli/package.json.cjs.js');
10
+ var _package$c = require('../packages/config/package.json.cjs.js');
11
+ var _package$b = require('../packages/core-app-api/package.json.cjs.js');
12
+ var _package$a = require('../packages/core-components/package.json.cjs.js');
13
+ var _package$9 = require('../packages/core-plugin-api/package.json.cjs.js');
14
+ var _package$8 = require('../packages/dev-utils/package.json.cjs.js');
15
+ var _package$7 = require('../packages/errors/package.json.cjs.js');
16
+ var _package$6 = require('../packages/test-utils/package.json.cjs.js');
17
+ var _package$4 = require('../plugins/scaffolder-node/package.json.cjs.js');
18
+ var _package$3 = require('../plugins/scaffolder-node-test-utils/package.json.cjs.js');
19
+ var _package$2 = require('../plugins/auth-backend/package.json.cjs.js');
20
+ var _package$1 = require('../plugins/auth-backend-module-guest-provider/package.json.cjs.js');
21
+ var _package = require('../plugins/catalog-node/package.json.cjs.js');
22
+ var _package$5 = require('../packages/theme/package.json.cjs.js');
23
+ var _package$h = require('../packages/backend-defaults/package.json.cjs.js');
24
24
 
25
25
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
26
26
 
@@ -28,24 +28,24 @@ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
28
28
  var semver__default = /*#__PURE__*/_interopDefaultCompat(semver);
29
29
 
30
30
  const packageVersions = {
31
- "@backstage/backend-defaults": _package.version,
32
- "@backstage/backend-plugin-api": _package$1.version,
33
- "@backstage/backend-test-utils": _package$2.version,
34
- "@backstage/catalog-client": _package$3.version,
35
- "@backstage/cli": _package$4.version,
36
- "@backstage/config": _package$5.version,
37
- "@backstage/core-app-api": _package$6.version,
38
- "@backstage/core-components": _package$7.version,
39
- "@backstage/core-plugin-api": _package$8.version,
40
- "@backstage/dev-utils": _package$9.version,
41
- "@backstage/errors": _package$a.version,
42
- "@backstage/test-utils": _package$b.version,
43
- "@backstage/theme": _package$c.version,
44
- "@backstage/plugin-scaffolder-node": _package$d.version,
45
- "@backstage/plugin-scaffolder-node-test-utils": _package$e.version,
46
- "@backstage/plugin-auth-backend": _package$f.version,
47
- "@backstage/plugin-auth-backend-module-guest-provider": _package$g.version,
48
- "@backstage/plugin-catalog-node": _package$h.version
31
+ "@backstage/backend-defaults": _package$h.version,
32
+ "@backstage/backend-plugin-api": _package$g.version,
33
+ "@backstage/backend-test-utils": _package$f.version,
34
+ "@backstage/catalog-client": _package$e.version,
35
+ "@backstage/cli": _package$d.version,
36
+ "@backstage/config": _package$c.version,
37
+ "@backstage/core-app-api": _package$b.version,
38
+ "@backstage/core-components": _package$a.version,
39
+ "@backstage/core-plugin-api": _package$9.version,
40
+ "@backstage/dev-utils": _package$8.version,
41
+ "@backstage/errors": _package$7.version,
42
+ "@backstage/test-utils": _package$6.version,
43
+ "@backstage/theme": _package$5.version,
44
+ "@backstage/plugin-scaffolder-node": _package$4.version,
45
+ "@backstage/plugin-scaffolder-node-test-utils": _package$3.version,
46
+ "@backstage/plugin-auth-backend": _package$2.version,
47
+ "@backstage/plugin-auth-backend-module-guest-provider": _package$1.version,
48
+ "@backstage/plugin-catalog-node": _package.version
49
49
  };
50
50
  function findVersion() {
51
51
  const pkgContent = fs__default.default.readFileSync(paths.paths.resolveOwn("package.json"), "utf8");
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.3-next.2";
3
+ var version = "0.5.3";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.0.2-next.2";
3
+ var version = "1.0.2";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.1.0-next.2";
3
+ var version = "1.1.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.8.0-next.1";
3
+ var version = "1.8.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.29.0-next.2";
3
+ var version = "0.29.0";
4
4
  var dependencies = {
5
5
  "@backstage/catalog-model": "workspace:^",
6
6
  "@backstage/cli-common": "workspace:^",
@@ -13,7 +13,7 @@ var dependencies = {
13
13
  "@backstage/release-manifests": "workspace:^",
14
14
  "@backstage/types": "workspace:^",
15
15
  "@manypkg/get-packages": "^1.1.3",
16
- "@module-federation/enhanced": "^0.6.0",
16
+ "@module-federation/enhanced": "^0.7.0",
17
17
  "@octokit/graphql": "^5.0.0",
18
18
  "@octokit/graphql-schema": "^13.7.0",
19
19
  "@octokit/oauth-app": "^4.2.0",
@@ -48,7 +48,7 @@ var dependencies = {
48
48
  commander: "^12.0.0",
49
49
  "cross-fetch": "^4.0.0",
50
50
  "cross-spawn": "^7.0.3",
51
- "css-loader": "^6.5.1",
51
+ "css-loader": "^7.0.0",
52
52
  "ctrlc-windows": "^2.1.0",
53
53
  esbuild: "^0.24.0",
54
54
  "esbuild-loader": "^4.0.0",
@@ -107,7 +107,7 @@ var dependencies = {
107
107
  "swc-loader": "^0.2.3",
108
108
  tar: "^6.1.12",
109
109
  "terser-webpack-plugin": "^5.1.3",
110
- "ts-morph": "^23.0.0",
110
+ "ts-morph": "^24.0.0",
111
111
  util: "^0.12.3",
112
112
  webpack: "^5.94.0",
113
113
  "webpack-dev-server": "^5.0.0",
@@ -118,7 +118,6 @@ var dependencies = {
118
118
  zod: "^3.22.4"
119
119
  };
120
120
  var devDependencies = {
121
- "@backstage/backend-common": "^0.25.0",
122
121
  "@backstage/backend-plugin-api": "workspace:^",
123
122
  "@backstage/backend-test-utils": "workspace:^",
124
123
  "@backstage/catalog-client": "workspace:^",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.2.0";
3
+ var version = "1.3.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.15.1";
3
+ var version = "1.15.2";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.16.0-next.1";
3
+ var version = "0.16.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.10.0";
3
+ var version = "1.10.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.1.3-next.2";
3
+ var version = "1.1.3";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.2.4";
3
+ var version = "1.2.5";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.7.1-next.0";
3
+ var version = "1.7.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.6.1-next.0";
3
+ var version = "0.6.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.24.0-next.2";
3
+ var version = "0.24.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.2.2-next.2";
3
+ var version = "0.2.2";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.14.0-next.2";
3
+ var version = "1.14.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.1-next.2";
3
+ var version = "0.6.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.1.15-next.2";
3
+ var version = "0.1.15";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/cli",
3
- "version": "0.29.0-next.2",
3
+ "version": "0.29.0",
4
4
  "description": "CLI for developing Backstage plugins and apps",
5
5
  "backstage": {
6
6
  "role": "cli"
@@ -42,18 +42,18 @@
42
42
  "watch": "./src"
43
43
  },
44
44
  "dependencies": {
45
- "@backstage/catalog-model": "1.7.0",
46
- "@backstage/cli-common": "0.1.15-next.0",
47
- "@backstage/cli-node": "0.2.10-next.0",
48
- "@backstage/config": "1.2.0",
49
- "@backstage/config-loader": "1.9.2-next.0",
50
- "@backstage/errors": "1.2.4",
51
- "@backstage/eslint-plugin": "0.1.10",
52
- "@backstage/integration": "1.15.1",
53
- "@backstage/release-manifests": "0.0.11",
54
- "@backstage/types": "1.1.1",
45
+ "@backstage/catalog-model": "^1.7.1",
46
+ "@backstage/cli-common": "^0.1.15",
47
+ "@backstage/cli-node": "^0.2.10",
48
+ "@backstage/config": "^1.3.0",
49
+ "@backstage/config-loader": "^1.9.2",
50
+ "@backstage/errors": "^1.2.5",
51
+ "@backstage/eslint-plugin": "^0.1.10",
52
+ "@backstage/integration": "^1.15.2",
53
+ "@backstage/release-manifests": "^0.0.11",
54
+ "@backstage/types": "^1.2.0",
55
55
  "@manypkg/get-packages": "^1.1.3",
56
- "@module-federation/enhanced": "^0.6.0",
56
+ "@module-federation/enhanced": "^0.7.0",
57
57
  "@octokit/graphql": "^5.0.0",
58
58
  "@octokit/graphql-schema": "^13.7.0",
59
59
  "@octokit/oauth-app": "^4.2.0",
@@ -88,7 +88,7 @@
88
88
  "commander": "^12.0.0",
89
89
  "cross-fetch": "^4.0.0",
90
90
  "cross-spawn": "^7.0.3",
91
- "css-loader": "^6.5.1",
91
+ "css-loader": "^7.0.0",
92
92
  "ctrlc-windows": "^2.1.0",
93
93
  "esbuild": "^0.24.0",
94
94
  "esbuild-loader": "^4.0.0",
@@ -147,7 +147,7 @@
147
147
  "swc-loader": "^0.2.3",
148
148
  "tar": "^6.1.12",
149
149
  "terser-webpack-plugin": "^5.1.3",
150
- "ts-morph": "^23.0.0",
150
+ "ts-morph": "^24.0.0",
151
151
  "util": "^0.12.3",
152
152
  "webpack": "^5.94.0",
153
153
  "webpack-dev-server": "^5.0.0",
@@ -158,23 +158,22 @@
158
158
  "zod": "^3.22.4"
159
159
  },
160
160
  "devDependencies": {
161
- "@backstage/backend-common": "^0.25.0",
162
- "@backstage/backend-plugin-api": "1.0.2-next.2",
163
- "@backstage/backend-test-utils": "1.1.0-next.2",
164
- "@backstage/catalog-client": "1.8.0-next.1",
165
- "@backstage/config": "1.2.0",
166
- "@backstage/core-app-api": "1.15.1",
167
- "@backstage/core-components": "0.16.0-next.1",
168
- "@backstage/core-plugin-api": "1.10.0",
169
- "@backstage/dev-utils": "1.1.3-next.2",
170
- "@backstage/errors": "1.2.4",
171
- "@backstage/plugin-auth-backend": "0.24.0-next.2",
172
- "@backstage/plugin-auth-backend-module-guest-provider": "0.2.2-next.2",
173
- "@backstage/plugin-catalog-node": "1.14.0-next.2",
174
- "@backstage/plugin-scaffolder-node": "0.5.1-next.2",
175
- "@backstage/plugin-scaffolder-node-test-utils": "0.1.15-next.2",
176
- "@backstage/test-utils": "1.7.1-next.0",
177
- "@backstage/theme": "0.6.1-next.0",
161
+ "@backstage/backend-plugin-api": "^1.0.2",
162
+ "@backstage/backend-test-utils": "^1.1.0",
163
+ "@backstage/catalog-client": "^1.8.0",
164
+ "@backstage/config": "^1.3.0",
165
+ "@backstage/core-app-api": "^1.15.2",
166
+ "@backstage/core-components": "^0.16.0",
167
+ "@backstage/core-plugin-api": "^1.10.1",
168
+ "@backstage/dev-utils": "^1.1.3",
169
+ "@backstage/errors": "^1.2.5",
170
+ "@backstage/plugin-auth-backend": "^0.24.0",
171
+ "@backstage/plugin-auth-backend-module-guest-provider": "^0.2.2",
172
+ "@backstage/plugin-catalog-node": "^1.14.0",
173
+ "@backstage/plugin-scaffolder-node": "^0.6.0",
174
+ "@backstage/plugin-scaffolder-node-test-utils": "^0.1.15",
175
+ "@backstage/test-utils": "^1.7.1",
176
+ "@backstage/theme": "^0.6.1",
178
177
  "@rspack/core": "^1.0.10",
179
178
  "@rspack/dev-server": "^1.0.9",
180
179
  "@rspack/plugin-react-refresh": "^1.0.0",
@@ -208,7 +207,7 @@
208
207
  "@rspack/dev-server": "^1.0.9",
209
208
  "@rspack/plugin-react-refresh": "^1.0.0",
210
209
  "@vitejs/plugin-react": "^4.0.4",
211
- "vite": "^4.4.9",
210
+ "vite": "^5.0.0",
212
211
  "vite-plugin-html": "^3.2.0",
213
212
  "vite-plugin-node-polyfills": "^0.22.0"
214
213
  },