@backstage/cli 0.35.0-next.2 → 0.35.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 (30) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/config/getJestEnvironment.js +49 -0
  3. package/config/jest-environment-jsdom/index.js +61 -0
  4. package/config/jest.js +9 -2
  5. package/config/jestCachingModuleLoader.js +2 -0
  6. package/config/jestRejectNetworkRequests.js +14 -3
  7. package/config/tsconfig.json +1 -1
  8. package/dist/modules/build/lib/runner/runBackend.cjs.js +3 -0
  9. package/dist/modules/test/commands/package/test.cjs.js +16 -0
  10. package/dist/modules/test/commands/repo/test.cjs.js +3 -0
  11. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  12. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  13. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  14. package/dist/packages/cli/package.json.cjs.js +5 -6
  15. package/dist/packages/core-app-api/package.json.cjs.js +1 -1
  16. package/dist/packages/core-components/package.json.cjs.js +1 -1
  17. package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
  18. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  19. package/dist/packages/frontend-defaults/package.json.cjs.js +1 -1
  20. package/dist/packages/frontend-plugin-api/package.json.cjs.js +1 -1
  21. package/dist/packages/frontend-test-utils/package.json.cjs.js +1 -1
  22. package/dist/packages/test-utils/package.json.cjs.js +1 -1
  23. package/dist/packages/theme/package.json.cjs.js +1 -1
  24. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  25. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  26. package/dist/plugins/catalog-node/package.json.cjs.js +1 -1
  27. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  28. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +1 -1
  29. package/package.json +44 -32
  30. package/templates/frontend-plugin/package.json.hbs +6 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,60 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.35.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f6f22a9: Provide `--no-node-snapshot` by default when running the `package start` or `package test`. You can disable this behavior by providing `NODE_OPTIONS='--node-snapshot'`.
8
+ - f8dff94: Switched the default module resolution to `bundler` and the `module` setting to `ES2020`.
9
+
10
+ You may need to bump some dependencies as part of this change and fix imports in code. The most common source of this is that type checking will now consider the `exports` field in `package.json` when resolving imports. This in turn can break older versions of packages that had incompatible `exports` fields. Generally these issues will have already been fixed in the upstream packages.
11
+
12
+ You might be tempted to use `--skipLibCheck` to hide issues due to this change, but it will weaken the type safety of your project. If you run into a large number of issues and want to keep the old behavior, you can reset the `moduleResolution` and `module` settings your own `tsconfig.json` file to `node` and `ESNext` respectively. But keep in mind that the `node` option will be removed in future versions of TypeScript.
13
+
14
+ A future version of Backstage will make these new settings mandatory, as we move to rely on the `exports` field for type resolution in packages, rather than the `typesVersions` field.
15
+
16
+ - cd0b8a1: **BREAKING**: `jest` is now a peer dependency. If you run tests using Backstage CLI, you must add Jest and its environment dependencies as `devDependencies` in your project.
17
+
18
+ You can choose to install either Jest 29 or Jest 30. The built-in Jest version before this change was Jest 29, however, we recommend that you switch to Jest 30. Upgrading will solve the `Could not parse CSS stylesheet` errors, allow you to use MSW v2 in web packages, and ensure that you remain compatible with future versions of the Backstage CLI. Support for Jest 29 is temporary, with the purpose of allowing you to upgrade at your own pace, but it will eventually be removed.
19
+
20
+ - **Jest 29**: Install `jest@^29` and `jest-environment-jsdom@^29`. No migration needed, but you may see `Could not parse CSS stylesheet` warnings/errors when testing components from `@backstage/ui` or other packages using CSS `@layer` declarations.
21
+ - **Jest 30**: Install `jest@^30`, `@jest/environment-jsdom-abstract@^30`, and `jsdom@^27`. Fixes the stylesheet parsing warnings/errors, but requires migration steps.
22
+
23
+ See the [Jest 30 migration guide](https://backstage.io/docs/tutorials/jest30-migration) for detailed migration instructions.
24
+
25
+ ### Patch Changes
26
+
27
+ - de96a60: chore(deps): bump `express` from 4.21.2 to 4.22.0
28
+ - e7db290: Add missing peer/dev dependencies to the frontend plugin template.
29
+
30
+ `react-dom` was not declared as a peer dependency, causing module resolution
31
+ errors when generating plugins outside a Backstage monorepo. This adds
32
+ `react-dom` to `peerDependencies` (for consuming apps) and `devDependencies`
33
+ (for local development). `react-router-dom` is also added to `peerDependencies` (for consuming apps) and `devDependencies`
34
+ to support routing during plugin development.
35
+
36
+ Fixes:
37
+
38
+ - Module not found: Can't resolve 'react-dom'
39
+ - Module not found: Can't resolve 'react-router-dom'
40
+
41
+ - 1226647: Updated dependency `esbuild` to `^0.27.0`.
42
+ - f89a074: Updated dependency `@pmmmwh/react-refresh-webpack-plugin` to `^0.6.0`.
43
+ - 2b81751: Updated dependency `webpack` to `~5.103.0`.
44
+ - fafd9e1: Fixed internal usage of `yargs`.
45
+ - c8c2329: Add proxy configuration from env-vars to create-app tasks
46
+ - 2bae83a: Switched compilation target to ES2022 in order to match the new set of supported Node.js versions, which are 22 and 24.
47
+
48
+ The TypeScript compilation target has been set to ES2022, because setting it to a higher target will break projects on older TypeScript versions. If you use a newer TypeScript version in your own project, you can bump `compilerOptions.target` to ES2023 or ES2024 in your own `tsconfig.json` file.
49
+
50
+ - 7fbac5c: Updated to use new utilities from `@backstage/cli-common`.
51
+ - 2bae83a: Bumped dev dependencies `@types/node`
52
+ - Updated dependencies
53
+ - @backstage/cli-node@0.2.16
54
+ - @backstage/integration@1.19.0
55
+ - @backstage/cli-common@0.1.16
56
+ - @backstage/config-loader@1.10.7
57
+
3
58
  ## 0.35.0-next.2
4
59
 
5
60
  ### Minor Changes
@@ -0,0 +1,49 @@
1
+ /*
2
+ * Copyright 2025 The Backstage Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ function getJestMajorVersion() {
18
+ const jestVersion = require('jest/package.json').version;
19
+ const majorVersion = parseInt(jestVersion.split('.')[0], 10);
20
+ return majorVersion;
21
+ }
22
+
23
+ function getJestEnvironment() {
24
+ const majorVersion = getJestMajorVersion();
25
+
26
+ if (majorVersion >= 30) {
27
+ try {
28
+ require.resolve('@jest/environment-jsdom-abstract');
29
+ require.resolve('jsdom');
30
+ } catch {
31
+ throw new Error(
32
+ 'Jest 30+ requires @jest/environment-jsdom-abstract and jsdom. ' +
33
+ 'Please install them as dev dependencies.',
34
+ );
35
+ }
36
+ return require.resolve('./jest-environment-jsdom');
37
+ }
38
+ try {
39
+ require.resolve('jest-environment-jsdom');
40
+ } catch {
41
+ throw new Error(
42
+ 'Jest 29 requires jest-environment-jsdom. ' +
43
+ 'Please install it as a dev dependency.',
44
+ );
45
+ }
46
+ return require.resolve('jest-environment-jsdom');
47
+ }
48
+
49
+ module.exports = { getJestMajorVersion, getJestEnvironment };
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Copyright 2025 The Backstage Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ const JSDOMEnvironment = require('@jest/environment-jsdom-abstract').default;
18
+ const jsdom = require('jsdom');
19
+
20
+ /**
21
+ * A custom JSDOM environment that extends the abstract base and applies
22
+ * fixes for Web API globals that are missing or incorrectly implemented
23
+ * in JSDOM.
24
+ *
25
+ * Based on https://github.com/mswjs/jest-fixed-jsdom
26
+ */
27
+ class FixedJSDOMEnvironment extends JSDOMEnvironment {
28
+ constructor(config, context) {
29
+ super(config, context, jsdom);
30
+
31
+ // Fix Web API globals that JSDOM doesn't properly expose
32
+ this.global.TextDecoder = TextDecoder;
33
+ this.global.TextEncoder = TextEncoder;
34
+ this.global.TextDecoderStream = TextDecoderStream;
35
+ this.global.TextEncoderStream = TextEncoderStream;
36
+ this.global.ReadableStream = ReadableStream;
37
+
38
+ this.global.Blob = Blob;
39
+ this.global.Headers = Headers;
40
+ this.global.FormData = FormData;
41
+ this.global.Request = Request;
42
+ this.global.Response = Response;
43
+ this.global.fetch = fetch;
44
+ this.global.AbortController = AbortController;
45
+ this.global.AbortSignal = AbortSignal;
46
+ this.global.structuredClone = structuredClone;
47
+ this.global.URL = URL;
48
+ this.global.URLSearchParams = URLSearchParams;
49
+
50
+ this.global.BroadcastChannel = BroadcastChannel;
51
+ this.global.TransformStream = TransformStream;
52
+ this.global.WritableStream = WritableStream;
53
+
54
+ // Needed to ensure `e instanceof Error` works as expected with errors thrown from
55
+ // any of the native APIs above. Without this, the JSDOM `Error` is what the test
56
+ // code will use for comparison with `e`, which fails the instanceof check.
57
+ this.global.Error = Error;
58
+ }
59
+ }
60
+
61
+ module.exports = FixedJSDOMEnvironment;
package/config/jest.js CHANGED
@@ -20,6 +20,10 @@ const crypto = require('crypto');
20
20
  const glob = require('util').promisify(require('glob'));
21
21
  const { version } = require('../package.json');
22
22
  const paths = require('@backstage/cli-common').findPaths(process.cwd());
23
+ const {
24
+ getJestEnvironment,
25
+ getJestMajorVersion,
26
+ } = require('./getJestEnvironment');
23
27
 
24
28
  const SRC_EXTS = ['ts', 'js', 'tsx', 'jsx', 'mts', 'cts', 'mjs', 'cjs'];
25
29
 
@@ -211,7 +215,7 @@ function getRoleConfig(role, pkgJson) {
211
215
  };
212
216
  if (FRONTEND_ROLES.includes(role)) {
213
217
  return {
214
- testEnvironment: require.resolve('jest-environment-jsdom'),
218
+ testEnvironment: getJestEnvironment(),
215
219
  // The caching module loader is only used to speed up frontend tests,
216
220
  // as it breaks real dynamic imports of ESM modules.
217
221
  runtime: envOptions.oldTests
@@ -279,7 +283,10 @@ async function getProjectConfig(targetPath, extraConfig, extraOptions) {
279
283
  );
280
284
  }
281
285
 
282
- if (options.testEnvironment === require.resolve('jest-environment-jsdom')) {
286
+ if (
287
+ options.testEnvironment === getJestEnvironment() &&
288
+ getJestMajorVersion() < 30 // Only needed when not running the custom env for Jest 30+
289
+ ) {
283
290
  // FIXME https://github.com/jsdom/jsdom/issues/1724
284
291
  options.setupFilesAfterEnv.unshift(require.resolve('cross-fetch/polyfill'));
285
292
  }
@@ -14,6 +14,8 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ // 'jest-runtime' is included with jest and should be kept in sync with the installed jest version
18
+ // eslint-disable-next-line @backstage/no-undeclared-imports
17
19
  const { default: JestRuntime } = require('jest-runtime');
18
20
 
19
21
  module.exports = class CachingJestRuntime extends JestRuntime {
@@ -22,7 +22,7 @@ const errorMessage = 'Network requests are not allowed in tests';
22
22
  const origHttpAgent = http.globalAgent;
23
23
  const origHttpsAgent = https.globalAgent;
24
24
  const origFetch = global.fetch;
25
- const origXMLHttpRequest = global.fetch;
25
+ const origXMLHttpRequest = global.XMLHttpRequest;
26
26
 
27
27
  http.globalAgent = new http.Agent({
28
28
  lookup() {
@@ -36,10 +36,21 @@ https.globalAgent = new https.Agent({
36
36
  },
37
37
  });
38
38
 
39
+ const BLOCKING_FETCH_SYMBOL = Symbol.for(
40
+ 'backstage.jestRejectNetworkRequests.blockingFetch',
41
+ );
42
+
39
43
  if (global.fetch) {
40
- global.fetch = async () => {
41
- throw new Error(errorMessage);
44
+ const blockingFetch = async (input, init) => {
45
+ // If global.fetch still has our marker, block the request
46
+ if (global.fetch[BLOCKING_FETCH_SYMBOL]) {
47
+ throw new Error(errorMessage);
48
+ }
49
+ // MSW (or something else) wrapped us - pass through
50
+ return origFetch(input, init);
42
51
  };
52
+ blockingFetch[BLOCKING_FETCH_SYMBOL] = true;
53
+ global.fetch = blockingFetch;
43
54
  }
44
55
 
45
56
  if (global.XMLHttpRequest) {
@@ -33,7 +33,7 @@
33
33
  "strictNullChecks": true,
34
34
  "strictPropertyInitialization": true,
35
35
  "stripInternal": true,
36
- "target": "ES2023",
36
+ "target": "ES2022",
37
37
  "types": ["node", "jest", "webpack-env"],
38
38
  "useDefineForClassFields": true
39
39
  }
@@ -72,6 +72,9 @@ async function runBackend(options) {
72
72
  optionArgs.push(`--require=${r}`);
73
73
  }
74
74
  }
75
+ if (!envEnv.NODE_OPTIONS?.includes("--node-snapshot")) {
76
+ optionArgs.push("--no-node-snapshot");
77
+ }
75
78
  const userArgs = process.argv.slice(["node", "backstage-cli", "package", "start"].length).filter((arg) => !optionArgs.includes(arg));
76
79
  child = spawn__default.default(
77
80
  process.execPath,
@@ -43,9 +43,25 @@ var test = async (_opts, cmd) => {
43
43
  if (!process.env.TZ) {
44
44
  process.env.TZ = "UTC";
45
45
  }
46
+ if (!process.env.NODE_OPTIONS?.includes("--node-snapshot")) {
47
+ process.env.NODE_OPTIONS = `${process.env.NODE_OPTIONS ? `${process.env.NODE_OPTIONS} ` : ""}--no-node-snapshot`;
48
+ }
46
49
  if (args.includes("--help")) {
47
50
  process.stdout._handle.setBlocking(true);
48
51
  }
52
+ try {
53
+ require.resolve("jest");
54
+ } catch {
55
+ console.error(
56
+ [
57
+ "No Jest installation found in this project.",
58
+ "",
59
+ "To support opt-in migration to Jest v30, the Backstage CLI now expects Jest to be installed as a devDependency.",
60
+ "See the migration guide in the changelog for version options and their consequences."
61
+ ].join("\n")
62
+ );
63
+ process.exit(1);
64
+ }
49
65
  await require("jest").run(args);
50
66
  };
51
67
 
@@ -179,6 +179,9 @@ async function command(opts, cmd) {
179
179
  if (!process.env.TZ) {
180
180
  process.env.TZ = "UTC";
181
181
  }
182
+ if (!process.env.NODE_OPTIONS?.includes("--node-snapshot")) {
183
+ process.env.NODE_OPTIONS = `${process.env.NODE_OPTIONS ? `${process.env.NODE_OPTIONS} ` : ""}--no-node-snapshot`;
184
+ }
182
185
  if (args.includes("--jest-help")) {
183
186
  removeOptionArg(args, "--jest-help");
184
187
  args.push("--help");
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.14.0-next.1";
3
+ var version = "0.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 = "1.6.0-next.1";
3
+ var version = "1.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 = "1.10.2-next.1";
3
+ var version = "1.10.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.35.0-next.2";
3
+ var version = "0.35.0";
4
4
  var dependencies = {
5
5
  "@backstage/catalog-model": "workspace:^",
6
6
  "@backstage/cli-common": "workspace:^",
@@ -28,7 +28,6 @@ var dependencies = {
28
28
  "@swc/core": "^1.3.46",
29
29
  "@swc/helpers": "^0.5.0",
30
30
  "@swc/jest": "^0.2.22",
31
- "@types/jest": "^29.5.11",
32
31
  "@types/webpack-env": "^1.15.2",
33
32
  "@typescript-eslint/eslint-plugin": "^8.17.0",
34
33
  "@typescript-eslint/parser": "^8.16.0",
@@ -64,11 +63,7 @@ var dependencies = {
64
63
  handlebars: "^4.7.3",
65
64
  "html-webpack-plugin": "^5.6.3",
66
65
  inquirer: "^8.2.0",
67
- jest: "^29.7.0",
68
- "jest-cli": "^29.7.0",
69
66
  "jest-css-modules": "^2.1.0",
70
- "jest-environment-jsdom": "^29.0.2",
71
- "jest-runtime": "^29.0.2",
72
67
  "json-schema": "^0.4.0",
73
68
  lodash: "^4.17.21",
74
69
  minimatch: "^9.0.0",
@@ -122,6 +117,7 @@ var devDependencies = {
122
117
  "@backstage/plugin-scaffolder-node-test-utils": "workspace:^",
123
118
  "@backstage/test-utils": "workspace:^",
124
119
  "@backstage/theme": "workspace:^",
120
+ "@jest/environment-jsdom-abstract": "^30.0.0",
125
121
  "@pmmmwh/react-refresh-webpack-plugin": "^0.6.0",
126
122
  "@types/cross-spawn": "^6.0.2",
127
123
  "@types/ejs": "^3.1.3",
@@ -129,6 +125,7 @@ var devDependencies = {
129
125
  "@types/fs-extra": "^11.0.0",
130
126
  "@types/http-proxy": "^1.17.4",
131
127
  "@types/inquirer": "^8.1.3",
128
+ "@types/jest": "^30.0.0",
132
129
  "@types/node": "^22.13.14",
133
130
  "@types/npm-packlist": "^3.0.0",
134
131
  "@types/recursive-readdir": "^2.2.0",
@@ -143,6 +140,8 @@ var devDependencies = {
143
140
  "esbuild-loader": "^4.0.0",
144
141
  "eslint-webpack-plugin": "^4.2.0",
145
142
  "fork-ts-checker-webpack-plugin": "^9.0.0",
143
+ jest: "^30.2.0",
144
+ jsdom: "^27.1.0",
146
145
  "mini-css-extract-plugin": "^2.4.2",
147
146
  msw: "^1.0.0",
148
147
  nodemon: "^3.0.1",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.19.3-next.1";
3
+ var version = "1.19.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 = "0.18.4-next.2";
3
+ var version = "0.18.4";
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.12.1-next.0";
3
+ var version = "1.12.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.18-next.1";
3
+ var version = "1.1.18";
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.3.4-next.0";
3
+ var version = "0.3.4";
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.13.2-next.1";
3
+ var version = "0.13.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.4.2-next.0";
3
+ var version = "0.4.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.7.14-next.0";
3
+ var version = "1.7.14";
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.7.1-next.0";
3
+ var version = "0.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.25.7-next.1";
3
+ var version = "0.25.7";
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.15-next.1";
3
+ var version = "0.2.15";
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.20.1-next.1";
3
+ var version = "1.20.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.12.2-next.1";
3
+ var version = "0.12.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.3.6-next.1";
3
+ var version = "0.3.6";
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.35.0-next.2",
3
+ "version": "0.35.0",
4
4
  "description": "CLI for developing Backstage plugins and apps",
5
5
  "backstage": {
6
6
  "role": "cli"
@@ -47,16 +47,16 @@
47
47
  ]
48
48
  },
49
49
  "dependencies": {
50
- "@backstage/catalog-model": "1.7.6",
51
- "@backstage/cli-common": "0.1.16-next.2",
52
- "@backstage/cli-node": "0.2.16-next.1",
53
- "@backstage/config": "1.3.6",
54
- "@backstage/config-loader": "1.10.7-next.1",
55
- "@backstage/errors": "1.2.7",
56
- "@backstage/eslint-plugin": "0.2.0",
57
- "@backstage/integration": "1.18.3-next.1",
58
- "@backstage/release-manifests": "0.0.13",
59
- "@backstage/types": "1.2.2",
50
+ "@backstage/catalog-model": "^1.7.6",
51
+ "@backstage/cli-common": "^0.1.16",
52
+ "@backstage/cli-node": "^0.2.16",
53
+ "@backstage/config": "^1.3.6",
54
+ "@backstage/config-loader": "^1.10.7",
55
+ "@backstage/errors": "^1.2.7",
56
+ "@backstage/eslint-plugin": "^0.2.0",
57
+ "@backstage/integration": "^1.19.0",
58
+ "@backstage/release-manifests": "^0.0.13",
59
+ "@backstage/types": "^1.2.2",
60
60
  "@manypkg/get-packages": "^1.1.3",
61
61
  "@module-federation/enhanced": "^0.9.0",
62
62
  "@octokit/request": "^8.0.0",
@@ -73,7 +73,6 @@
73
73
  "@swc/core": "^1.3.46",
74
74
  "@swc/helpers": "^0.5.0",
75
75
  "@swc/jest": "^0.2.22",
76
- "@types/jest": "^29.5.11",
77
76
  "@types/webpack-env": "^1.15.2",
78
77
  "@typescript-eslint/eslint-plugin": "^8.17.0",
79
78
  "@typescript-eslint/parser": "^8.16.0",
@@ -109,11 +108,7 @@
109
108
  "handlebars": "^4.7.3",
110
109
  "html-webpack-plugin": "^5.6.3",
111
110
  "inquirer": "^8.2.0",
112
- "jest": "^29.7.0",
113
- "jest-cli": "^29.7.0",
114
111
  "jest-css-modules": "^2.1.0",
115
- "jest-environment-jsdom": "^29.0.2",
116
- "jest-runtime": "^29.0.2",
117
112
  "json-schema": "^0.4.0",
118
113
  "lodash": "^4.17.21",
119
114
  "minimatch": "^9.0.0",
@@ -151,22 +146,23 @@
151
146
  "zod-validation-error": "^3.4.0"
152
147
  },
153
148
  "devDependencies": {
154
- "@backstage/backend-plugin-api": "1.6.0-next.1",
155
- "@backstage/backend-test-utils": "1.10.2-next.1",
156
- "@backstage/catalog-client": "1.12.1",
157
- "@backstage/config": "1.3.6",
158
- "@backstage/core-app-api": "1.19.3-next.1",
159
- "@backstage/core-components": "0.18.4-next.2",
160
- "@backstage/core-plugin-api": "1.12.1-next.0",
161
- "@backstage/dev-utils": "1.1.18-next.1",
162
- "@backstage/errors": "1.2.7",
163
- "@backstage/plugin-auth-backend": "0.25.7-next.1",
164
- "@backstage/plugin-auth-backend-module-guest-provider": "0.2.15-next.1",
165
- "@backstage/plugin-catalog-node": "1.20.1-next.1",
166
- "@backstage/plugin-scaffolder-node": "0.12.2-next.1",
167
- "@backstage/plugin-scaffolder-node-test-utils": "0.3.6-next.1",
168
- "@backstage/test-utils": "1.7.14-next.0",
169
- "@backstage/theme": "0.7.1-next.0",
149
+ "@backstage/backend-plugin-api": "^1.6.0",
150
+ "@backstage/backend-test-utils": "^1.10.2",
151
+ "@backstage/catalog-client": "^1.12.1",
152
+ "@backstage/config": "^1.3.6",
153
+ "@backstage/core-app-api": "^1.19.3",
154
+ "@backstage/core-components": "^0.18.4",
155
+ "@backstage/core-plugin-api": "^1.12.1",
156
+ "@backstage/dev-utils": "^1.1.18",
157
+ "@backstage/errors": "^1.2.7",
158
+ "@backstage/plugin-auth-backend": "^0.25.7",
159
+ "@backstage/plugin-auth-backend-module-guest-provider": "^0.2.15",
160
+ "@backstage/plugin-catalog-node": "^1.20.1",
161
+ "@backstage/plugin-scaffolder-node": "^0.12.2",
162
+ "@backstage/plugin-scaffolder-node-test-utils": "^0.3.6",
163
+ "@backstage/test-utils": "^1.7.14",
164
+ "@backstage/theme": "^0.7.1",
165
+ "@jest/environment-jsdom-abstract": "^30.0.0",
170
166
  "@pmmmwh/react-refresh-webpack-plugin": "^0.6.0",
171
167
  "@types/cross-spawn": "^6.0.2",
172
168
  "@types/ejs": "^3.1.3",
@@ -174,6 +170,7 @@
174
170
  "@types/fs-extra": "^11.0.0",
175
171
  "@types/http-proxy": "^1.17.4",
176
172
  "@types/inquirer": "^8.1.3",
173
+ "@types/jest": "^30.0.0",
177
174
  "@types/node": "^22.13.14",
178
175
  "@types/npm-packlist": "^3.0.0",
179
176
  "@types/recursive-readdir": "^2.2.0",
@@ -188,6 +185,8 @@
188
185
  "esbuild-loader": "^4.0.0",
189
186
  "eslint-webpack-plugin": "^4.2.0",
190
187
  "fork-ts-checker-webpack-plugin": "^9.0.0",
188
+ "jest": "^30.2.0",
189
+ "jsdom": "^27.1.0",
191
190
  "mini-css-extract-plugin": "^2.4.2",
192
191
  "msw": "^1.0.0",
193
192
  "nodemon": "^3.0.1",
@@ -196,17 +195,24 @@
196
195
  "webpack-dev-server": "^5.0.0"
197
196
  },
198
197
  "peerDependencies": {
198
+ "@jest/environment-jsdom-abstract": "^30.0.0",
199
199
  "@module-federation/enhanced": "^0.9.0",
200
200
  "@pmmmwh/react-refresh-webpack-plugin": "^0.6.0",
201
201
  "esbuild-loader": "^4.0.0",
202
202
  "eslint-webpack-plugin": "^4.2.0",
203
203
  "fork-ts-checker-webpack-plugin": "^9.0.0",
204
+ "jest": "^29.0.0 || ^30.0.0",
205
+ "jest-environment-jsdom": "*",
206
+ "jsdom": "^27.1.0",
204
207
  "mini-css-extract-plugin": "^2.4.2",
205
208
  "terser-webpack-plugin": "^5.1.3",
206
209
  "webpack": "~5.103.0",
207
210
  "webpack-dev-server": "^5.0.0"
208
211
  },
209
212
  "peerDependenciesMeta": {
213
+ "@jest/environment-jsdom-abstract": {
214
+ "optional": true
215
+ },
210
216
  "@module-federation/enhanced": {
211
217
  "optional": true
212
218
  },
@@ -222,6 +228,12 @@
222
228
  "fork-ts-checker-webpack-plugin": {
223
229
  "optional": true
224
230
  },
231
+ "jest-environment-jsdom": {
232
+ "optional": true
233
+ },
234
+ "jsdom": {
235
+ "optional": true
236
+ },
225
237
  "mini-css-extract-plugin": {
226
238
  "optional": true
227
239
  },
@@ -31,7 +31,9 @@
31
31
  "react-use": "{{versionQuery 'react-use' '17.2.4'}}"
32
32
  },
33
33
  "peerDependencies": {
34
- "react": "{{versionQuery 'react' '^16.13.1 || ^17.0.0 || ^18.0.0'}}"
34
+ "react": "{{versionQuery 'react' '^16.13.1 || ^17.0.0 || ^18.0.0'}}",
35
+ "react-dom": "{{versionQuery 'react-dom' '^16.13.1 || ^17.0.0 || ^18.0.0'}}",
36
+ "react-router-dom": "{{versionQuery 'react-router-dom' '^6.0.0'}}"
35
37
  },
36
38
  "devDependencies": {
37
39
  "@backstage/cli": "{{versionQuery '@backstage/cli'}}",
@@ -42,7 +44,9 @@
42
44
  "@testing-library/react": "{{versionQuery '@testing-library/react' '14.0.0'}}",
43
45
  "@testing-library/user-event": "{{versionQuery '@testing-library/user-event' '14.0.0'}}",
44
46
  "msw": "{{versionQuery 'msw' '1.0.0'}}",
45
- "react": "{{versionQuery 'react' '^16.13.1 || ^17.0.0 || ^18.0.0'}}"
47
+ "react": "{{versionQuery 'react' '^16.13.1 || ^17.0.0 || ^18.0.0'}}",
48
+ "react-dom": "{{versionQuery 'react-dom' '^16.13.1 || ^17.0.0 || ^18.0.0'}}",
49
+ "react-router-dom": "{{versionQuery 'react-router-dom' '^6.0.0'}}"
46
50
  },
47
51
  "files": [
48
52
  "dist"