@backstage/cli 0.28.0-next.2 → 0.29.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/config/jest.js +49 -25
  3. package/config/jestRejectNetworkRequests.js +59 -0
  4. package/config/nodeTransform.cjs +33 -0
  5. package/dist/commands/build/buildFrontend.cjs.js +11 -13
  6. package/dist/commands/build/command.cjs.js +5 -2
  7. package/dist/commands/buildWorkspace.cjs.js +1 -1
  8. package/dist/commands/index.cjs.js +9 -3
  9. package/dist/commands/repo/lint.cjs.js +23 -33
  10. package/dist/commands/repo/test.cjs.js +13 -32
  11. package/dist/commands/start/command.cjs.js +1 -0
  12. package/dist/commands/start/startBackend.cjs.js +23 -92
  13. package/dist/commands/start/startFrontend.cjs.js +6 -8
  14. package/dist/commands/versions/bump.cjs.js +9 -3
  15. package/dist/lib/bundler/bundle.cjs.js +5 -4
  16. package/dist/lib/bundler/config.cjs.js +75 -171
  17. package/dist/lib/bundler/hasReactDomClient.cjs.js +5 -1
  18. package/dist/lib/bundler/linkWorkspaces.cjs.js +31 -0
  19. package/dist/lib/bundler/optimization.cjs.js +10 -6
  20. package/dist/lib/bundler/server.cjs.js +47 -7
  21. package/dist/lib/bundler/transforms.cjs.js +7 -6
  22. package/dist/lib/cache/SuccessCache.cjs.js +70 -0
  23. package/dist/lib/packager/createDistWorkspace.cjs.js +3 -3
  24. package/dist/lib/{experimental/startBackendExperimental.cjs.js → runner/runBackend.cjs.js} +6 -5
  25. package/dist/lib/version.cjs.js +30 -22
  26. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  27. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  28. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  29. package/dist/packages/catalog-client/package.json.cjs.js +6 -0
  30. package/dist/packages/cli/package.json.cjs.js +15 -5
  31. package/dist/packages/core-app-api/package.json.cjs.js +1 -1
  32. package/dist/packages/core-components/package.json.cjs.js +1 -1
  33. package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
  34. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  35. package/dist/packages/errors/package.json.cjs.js +6 -0
  36. package/dist/packages/test-utils/package.json.cjs.js +1 -1
  37. package/dist/packages/theme/package.json.cjs.js +1 -1
  38. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  39. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  40. package/dist/plugins/catalog-node/package.json.cjs.js +6 -0
  41. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  42. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +6 -0
  43. package/package.json +45 -19
  44. package/templates/default-backend-plugin/README.md.hbs +22 -8
  45. package/templates/default-backend-plugin/dev/index.ts.hbs +60 -0
  46. package/templates/default-backend-plugin/package.json.hbs +5 -5
  47. package/templates/default-backend-plugin/src/index.ts.hbs +0 -1
  48. package/templates/default-backend-plugin/src/plugin.test.ts.hbs +85 -0
  49. package/templates/default-backend-plugin/src/plugin.ts.hbs +16 -14
  50. package/templates/default-backend-plugin/src/router.test.ts +67 -0
  51. package/templates/default-backend-plugin/src/router.ts +51 -0
  52. package/templates/default-backend-plugin/src/services/TodoListService/createTodoListService.ts +100 -0
  53. package/templates/default-backend-plugin/src/services/TodoListService/index.ts +1 -0
  54. package/templates/default-backend-plugin/src/services/TodoListService/types.ts +27 -0
  55. package/templates/scaffolder-module/package.json.hbs +3 -1
  56. package/templates/scaffolder-module/src/actions/example.test.ts +24 -0
  57. package/templates/scaffolder-module/src/actions/{example/example.ts → example.ts} +7 -3
  58. package/templates/scaffolder-module/src/index.ts.hbs +1 -1
  59. package/templates/scaffolder-module/src/{actions/example/module.ts → module.ts} +3 -3
  60. package/dist/lib/bundler/LinkedPackageResolvePlugin.cjs.js +0 -47
  61. package/dist/lib/bundler/backend.cjs.js +0 -36
  62. package/templates/default-backend-plugin/dev/index.ts +0 -9
  63. package/templates/default-backend-plugin/src/service/router.test.ts +0 -30
  64. package/templates/default-backend-plugin/src/service/router.ts +0 -28
  65. package/templates/scaffolder-module/src/actions/example/example.test.ts +0 -32
  66. package/templates/scaffolder-module/src/actions/example/index.ts +0 -7
  67. package/templates/scaffolder-module/src/actions/index.ts +0 -1
  68. /package/dist/lib/{experimental → ipc}/IpcServer.cjs.js +0 -0
  69. /package/dist/lib/{experimental → ipc}/ServerDataStore.cjs.js +0 -0
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs-extra');
4
+ var node_path = require('node:path');
5
+
6
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
7
+
8
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
9
+
10
+ const DEFAULT_CACHE_BASE_PATH = "node_modules/.cache/backstage-cli";
11
+ const CACHE_MAX_AGE_MS = 7 * 24 * 36e5;
12
+ class SuccessCache {
13
+ #path;
14
+ constructor(name, basePath) {
15
+ this.#path = node_path.resolve(basePath ?? DEFAULT_CACHE_BASE_PATH, name);
16
+ }
17
+ async read() {
18
+ try {
19
+ const stat = await fs__default.default.stat(this.#path);
20
+ if (!stat.isDirectory()) {
21
+ await fs__default.default.rm(this.#path);
22
+ return /* @__PURE__ */ new Set();
23
+ }
24
+ } catch (error) {
25
+ if (error.code === "ENOENT") {
26
+ return /* @__PURE__ */ new Set();
27
+ }
28
+ throw error;
29
+ }
30
+ const items = await fs__default.default.readdir(this.#path);
31
+ const returned = /* @__PURE__ */ new Set();
32
+ const removed = /* @__PURE__ */ new Set();
33
+ const now = Date.now();
34
+ for (const item of items) {
35
+ const split = item.split("_");
36
+ if (split.length !== 2) {
37
+ removed.add(item);
38
+ continue;
39
+ }
40
+ const createdAt = parseInt(split[0], 10);
41
+ if (Number.isNaN(createdAt) || now - createdAt > CACHE_MAX_AGE_MS) {
42
+ removed.add(item);
43
+ } else {
44
+ returned.add(split[1]);
45
+ }
46
+ }
47
+ for (const item of removed) {
48
+ await fs__default.default.unlink(node_path.resolve(this.#path, item));
49
+ }
50
+ return returned;
51
+ }
52
+ async write(newEntries) {
53
+ const now = Date.now();
54
+ await fs__default.default.ensureDir(this.#path);
55
+ const existingItems = await fs__default.default.readdir(this.#path);
56
+ const empty = Buffer.alloc(0);
57
+ for (const key of newEntries) {
58
+ const trimmedItems = existingItems.filter(
59
+ (item) => item.endsWith(`_${key}`)
60
+ );
61
+ for (const trimmedItem of trimmedItems) {
62
+ await fs__default.default.unlink(node_path.resolve(this.#path, trimmedItem));
63
+ }
64
+ await fs__default.default.writeFile(node_path.resolve(this.#path, `${now}_${key}`), empty);
65
+ }
66
+ }
67
+ }
68
+
69
+ exports.SuccessCache = SuccessCache;
70
+ //# sourceMappingURL=SuccessCache.cjs.js.map
@@ -118,7 +118,7 @@ async function createDistWorkspace(packageNames, options = {}) {
118
118
  await moveToDistWorkspace(
119
119
  targetDir,
120
120
  targets,
121
- Boolean(options.alwaysYarnPack),
121
+ Boolean(options.alwaysPack),
122
122
  Boolean(options.enableFeatureDetection)
123
123
  );
124
124
  const files = options.files ?? ["yarn.lock", "package.json"];
@@ -150,10 +150,10 @@ const FAST_PACK_SCRIPTS = [
150
150
  "backstage-cli prepack",
151
151
  "backstage-cli package prepack"
152
152
  ];
153
- async function moveToDistWorkspace(workspaceDir, localPackages, alwaysYarnPack, enableFeatureDetection) {
153
+ async function moveToDistWorkspace(workspaceDir, localPackages, alwaysPack, enableFeatureDetection) {
154
154
  const [fastPackPackages, slowPackPackages] = partition__default.default(
155
155
  localPackages,
156
- (pkg) => !alwaysYarnPack && FAST_PACK_SCRIPTS.includes(pkg.packageJson.scripts?.prepack)
156
+ (pkg) => !alwaysPack && FAST_PACK_SCRIPTS.includes(pkg.packageJson.scripts?.prepack)
157
157
  );
158
158
  const featureDetectionProject = fastPackPackages.length > 0 && enableFeatureDetection ? await typeDistProject.createTypeDistProject() : void 0;
159
159
  await Promise.all(
@@ -2,8 +2,8 @@
2
2
 
3
3
  var chokidar = require('chokidar');
4
4
  var ctrlcWindows = require('ctrlc-windows');
5
- var IpcServer = require('./IpcServer.cjs.js');
6
- var ServerDataStore = require('./ServerDataStore.cjs.js');
5
+ var IpcServer = require('../ipc/IpcServer.cjs.js');
6
+ var ServerDataStore = require('../ipc/ServerDataStore.cjs.js');
7
7
  var debounce = require('lodash/debounce');
8
8
  var url = require('url');
9
9
  var path = require('path');
@@ -21,7 +21,7 @@ const loaderArgs = [
21
21
  require.resolve("@backstage/cli/config/nodeTransform.cjs")
22
22
  // TODO: Support modules, although there's currently no way to load them since import() is transpiled tp require()
23
23
  ];
24
- async function startBackendExperimental(options) {
24
+ async function runBackend(options) {
25
25
  const envEnv = process.env;
26
26
  if (!envEnv.NODE_ENV) {
27
27
  envEnv.NODE_ENV = "development";
@@ -77,6 +77,7 @@ async function startBackendExperimental(options) {
77
77
  stdio: ["ignore", "inherit", "inherit", "ipc"],
78
78
  env: {
79
79
  ...process.env,
80
+ BACKSTAGE_CLI_LINKED_WORKSPACE: options.linkedWorkspace,
80
81
  BACKSTAGE_CLI_CHANNEL: "1",
81
82
  ESBK_TSCONFIG_PATH: paths.paths.resolveTargetRoot("tsconfig.json")
82
83
  },
@@ -124,5 +125,5 @@ async function startBackendExperimental(options) {
124
125
  return () => exitPromise;
125
126
  }
126
127
 
127
- exports.startBackendExperimental = startBackendExperimental;
128
- //# sourceMappingURL=startBackendExperimental.cjs.js.map
128
+ exports.runBackend = runBackend;
129
+ //# sourceMappingURL=runBackend.cjs.js.map
@@ -5,17 +5,21 @@ var semver = require('semver');
5
5
  var paths = require('./paths.cjs.js');
6
6
  var _package$1 = require('../packages/backend-plugin-api/package.json.cjs.js');
7
7
  var _package$2 = require('../packages/backend-test-utils/package.json.cjs.js');
8
- var _package$3 = require('../packages/cli/package.json.cjs.js');
9
- var _package$4 = require('../packages/config/package.json.cjs.js');
10
- var _package$5 = require('../packages/core-app-api/package.json.cjs.js');
11
- var _package$6 = require('../packages/core-components/package.json.cjs.js');
12
- var _package$7 = require('../packages/core-plugin-api/package.json.cjs.js');
13
- var _package$8 = require('../packages/dev-utils/package.json.cjs.js');
14
- var _package$9 = require('../packages/test-utils/package.json.cjs.js');
15
- var _package$b = require('../plugins/scaffolder-node/package.json.cjs.js');
16
- var _package$c = require('../plugins/auth-backend/package.json.cjs.js');
17
- var _package$d = require('../plugins/auth-backend-module-guest-provider/package.json.cjs.js');
18
- var _package$a = require('../packages/theme/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');
19
23
  var _package = require('../packages/backend-defaults/package.json.cjs.js');
20
24
 
21
25
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -27,17 +31,21 @@ const packageVersions = {
27
31
  "@backstage/backend-defaults": _package.version,
28
32
  "@backstage/backend-plugin-api": _package$1.version,
29
33
  "@backstage/backend-test-utils": _package$2.version,
30
- "@backstage/cli": _package$3.version,
31
- "@backstage/config": _package$4.version,
32
- "@backstage/core-app-api": _package$5.version,
33
- "@backstage/core-components": _package$6.version,
34
- "@backstage/core-plugin-api": _package$7.version,
35
- "@backstage/dev-utils": _package$8.version,
36
- "@backstage/test-utils": _package$9.version,
37
- "@backstage/theme": _package$a.version,
38
- "@backstage/plugin-scaffolder-node": _package$b.version,
39
- "@backstage/plugin-auth-backend": _package$c.version,
40
- "@backstage/plugin-auth-backend-module-guest-provider": _package$d.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
41
49
  };
42
50
  function findVersion() {
43
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.1-next.2";
3
+ var version = "0.5.3-next.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.0.1-next.1";
3
+ var version = "1.0.2-next.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.0.1-next.2";
3
+ var version = "1.0.3-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var version = "1.8.0-next.0";
4
+
5
+ exports.version = version;
6
+ //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.28.0-next.2";
3
+ var version = "0.29.0-next.0";
4
4
  var dependencies = {
5
5
  "@backstage/catalog-model": "workspace:^",
6
6
  "@backstage/cli-common": "workspace:^",
@@ -50,7 +50,7 @@ var dependencies = {
50
50
  "cross-spawn": "^7.0.3",
51
51
  "css-loader": "^6.5.1",
52
52
  "ctrlc-windows": "^2.1.0",
53
- esbuild: "^0.23.0",
53
+ esbuild: "^0.24.0",
54
54
  "esbuild-loader": "^4.0.0",
55
55
  eslint: "^8.6.0",
56
56
  "eslint-config-prettier": "^9.0.0",
@@ -69,6 +69,7 @@ var dependencies = {
69
69
  "git-url-parse": "^15.0.0",
70
70
  glob: "^7.1.7",
71
71
  "global-agent": "^3.0.0",
72
+ globby: "^11.1.0",
72
73
  handlebars: "^4.7.3",
73
74
  "html-webpack-plugin": "^5.3.1",
74
75
  inquirer: "^8.2.0",
@@ -100,7 +101,6 @@ var dependencies = {
100
101
  "rollup-plugin-esbuild": "^6.1.1",
101
102
  "rollup-plugin-postcss": "^4.0.0",
102
103
  "rollup-pluginutils": "^2.8.2",
103
- "run-script-webpack-plugin": "^0.2.0",
104
104
  semver: "^7.5.3",
105
105
  "style-loader": "^3.3.1",
106
106
  sucrase: "^3.20.2",
@@ -109,9 +109,8 @@ var dependencies = {
109
109
  "terser-webpack-plugin": "^5.1.3",
110
110
  "ts-morph": "^23.0.0",
111
111
  util: "^0.12.3",
112
- webpack: "^5.70.0",
112
+ webpack: "^5.94.0",
113
113
  "webpack-dev-server": "^5.0.0",
114
- "webpack-node-externals": "^3.0.0",
115
114
  yaml: "^2.0.0",
116
115
  yargs: "^16.2.0",
117
116
  "yml-loader": "^2.1.0",
@@ -122,13 +121,23 @@ var devDependencies = {
122
121
  "@backstage/backend-common": "^0.25.0",
123
122
  "@backstage/backend-plugin-api": "workspace:^",
124
123
  "@backstage/backend-test-utils": "workspace:^",
124
+ "@backstage/catalog-client": "workspace:^",
125
125
  "@backstage/config": "workspace:^",
126
126
  "@backstage/core-app-api": "workspace:^",
127
127
  "@backstage/core-components": "workspace:^",
128
128
  "@backstage/core-plugin-api": "workspace:^",
129
129
  "@backstage/dev-utils": "workspace:^",
130
+ "@backstage/errors": "workspace:^",
131
+ "@backstage/plugin-auth-backend": "workspace:^",
132
+ "@backstage/plugin-auth-backend-module-guest-provider": "workspace:^",
133
+ "@backstage/plugin-catalog-node": "workspace:^",
134
+ "@backstage/plugin-scaffolder-node": "workspace:^",
135
+ "@backstage/plugin-scaffolder-node-test-utils": "workspace:^",
130
136
  "@backstage/test-utils": "workspace:^",
131
137
  "@backstage/theme": "workspace:^",
138
+ "@rspack/core": "^1.0.10",
139
+ "@rspack/dev-server": "^1.0.9",
140
+ "@rspack/plugin-react-refresh": "^1.0.0",
132
141
  "@types/cross-spawn": "^6.0.2",
133
142
  "@types/ejs": "^3.1.3",
134
143
  "@types/express": "^4.17.6",
@@ -143,6 +152,7 @@ var devDependencies = {
143
152
  "@types/svgo": "^2.6.2",
144
153
  "@types/tar": "^6.1.1",
145
154
  "@types/terser-webpack-plugin": "^5.0.4",
155
+ "@types/webpack-sources": "^3.2.3",
146
156
  "@types/yarnpkg__lockfile": "^1.1.4",
147
157
  "@vitejs/plugin-react": "^4.3.1",
148
158
  del: "^7.0.0",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.15.1-next.1";
3
+ var version = "1.15.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.15.1-next.2";
3
+ var version = "0.16.0-next.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-next.1";
3
+ var version = "1.10.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.1.2-next.2";
3
+ var version = "1.1.3-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var version = "1.2.4";
4
+
5
+ exports.version = version;
6
+ //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.6.1-next.2";
3
+ var version = "1.7.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.6.0-next.1";
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.23.1-next.1";
3
+ var version = "0.24.0-next.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.1-next.1";
3
+ var version = "0.2.2-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var version = "1.14.0-next.0";
4
+
5
+ exports.version = version;
6
+ //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.5.0-next.2";
3
+ var version = "0.5.1-next.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var version = "0.1.15-next.0";
4
+
5
+ exports.version = version;
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.28.0-next.2",
3
+ "version": "0.29.0-next.0",
4
4
  "description": "CLI for developing Backstage plugins and apps",
5
5
  "backstage": {
6
6
  "role": "cli"
@@ -44,12 +44,12 @@
44
44
  "dependencies": {
45
45
  "@backstage/catalog-model": "1.7.0",
46
46
  "@backstage/cli-common": "0.1.14",
47
- "@backstage/cli-node": "0.2.9-next.0",
47
+ "@backstage/cli-node": "0.2.9",
48
48
  "@backstage/config": "1.2.0",
49
49
  "@backstage/config-loader": "1.9.1",
50
50
  "@backstage/errors": "1.2.4",
51
- "@backstage/eslint-plugin": "0.1.10-next.1",
52
- "@backstage/integration": "1.15.1-next.1",
51
+ "@backstage/eslint-plugin": "0.1.10",
52
+ "@backstage/integration": "1.15.1",
53
53
  "@backstage/release-manifests": "0.0.11",
54
54
  "@backstage/types": "1.1.1",
55
55
  "@manypkg/get-packages": "^1.1.3",
@@ -90,7 +90,7 @@
90
90
  "cross-spawn": "^7.0.3",
91
91
  "css-loader": "^6.5.1",
92
92
  "ctrlc-windows": "^2.1.0",
93
- "esbuild": "^0.23.0",
93
+ "esbuild": "^0.24.0",
94
94
  "esbuild-loader": "^4.0.0",
95
95
  "eslint": "^8.6.0",
96
96
  "eslint-config-prettier": "^9.0.0",
@@ -109,6 +109,7 @@
109
109
  "git-url-parse": "^15.0.0",
110
110
  "glob": "^7.1.7",
111
111
  "global-agent": "^3.0.0",
112
+ "globby": "^11.1.0",
112
113
  "handlebars": "^4.7.3",
113
114
  "html-webpack-plugin": "^5.3.1",
114
115
  "inquirer": "^8.2.0",
@@ -140,7 +141,6 @@
140
141
  "rollup-plugin-esbuild": "^6.1.1",
141
142
  "rollup-plugin-postcss": "^4.0.0",
142
143
  "rollup-pluginutils": "^2.8.2",
143
- "run-script-webpack-plugin": "^0.2.0",
144
144
  "semver": "^7.5.3",
145
145
  "style-loader": "^3.3.1",
146
146
  "sucrase": "^3.20.2",
@@ -149,9 +149,8 @@
149
149
  "terser-webpack-plugin": "^5.1.3",
150
150
  "ts-morph": "^23.0.0",
151
151
  "util": "^0.12.3",
152
- "webpack": "^5.70.0",
152
+ "webpack": "^5.94.0",
153
153
  "webpack-dev-server": "^5.0.0",
154
- "webpack-node-externals": "^3.0.0",
155
154
  "yaml": "^2.0.0",
156
155
  "yargs": "^16.2.0",
157
156
  "yml-loader": "^2.1.0",
@@ -160,15 +159,25 @@
160
159
  },
161
160
  "devDependencies": {
162
161
  "@backstage/backend-common": "^0.25.0",
163
- "@backstage/backend-plugin-api": "1.0.1-next.1",
164
- "@backstage/backend-test-utils": "1.0.1-next.2",
162
+ "@backstage/backend-plugin-api": "1.0.2-next.0",
163
+ "@backstage/backend-test-utils": "1.0.3-next.0",
164
+ "@backstage/catalog-client": "1.8.0-next.0",
165
165
  "@backstage/config": "1.2.0",
166
- "@backstage/core-app-api": "1.15.1-next.1",
167
- "@backstage/core-components": "0.15.1-next.2",
168
- "@backstage/core-plugin-api": "1.10.0-next.1",
169
- "@backstage/dev-utils": "1.1.2-next.2",
170
- "@backstage/test-utils": "1.6.1-next.2",
171
- "@backstage/theme": "0.6.0-next.1",
166
+ "@backstage/core-app-api": "1.15.1",
167
+ "@backstage/core-components": "0.16.0-next.0",
168
+ "@backstage/core-plugin-api": "1.10.0",
169
+ "@backstage/dev-utils": "1.1.3-next.0",
170
+ "@backstage/errors": "1.2.4",
171
+ "@backstage/plugin-auth-backend": "0.24.0-next.0",
172
+ "@backstage/plugin-auth-backend-module-guest-provider": "0.2.2-next.0",
173
+ "@backstage/plugin-catalog-node": "1.14.0-next.0",
174
+ "@backstage/plugin-scaffolder-node": "0.5.1-next.0",
175
+ "@backstage/plugin-scaffolder-node-test-utils": "0.1.15-next.0",
176
+ "@backstage/test-utils": "1.7.0",
177
+ "@backstage/theme": "0.6.0",
178
+ "@rspack/core": "^1.0.10",
179
+ "@rspack/dev-server": "^1.0.9",
180
+ "@rspack/plugin-react-refresh": "^1.0.0",
172
181
  "@types/cross-spawn": "^6.0.2",
173
182
  "@types/ejs": "^3.1.3",
174
183
  "@types/express": "^4.17.6",
@@ -183,6 +192,7 @@
183
192
  "@types/svgo": "^2.6.2",
184
193
  "@types/tar": "^6.1.1",
185
194
  "@types/terser-webpack-plugin": "^5.0.4",
195
+ "@types/webpack-sources": "^3.2.3",
186
196
  "@types/yarnpkg__lockfile": "^1.1.4",
187
197
  "@vitejs/plugin-react": "^4.3.1",
188
198
  "del": "^7.0.0",
@@ -193,12 +203,28 @@
193
203
  "vite-plugin-node-polyfills": "^0.22.0"
194
204
  },
195
205
  "peerDependencies": {
196
- "@vitejs/plugin-react": "^4.3.1",
197
- "vite": "^5.0.0",
198
- "vite-plugin-html": "^3.2.2",
206
+ "@modyfi/vite-plugin-yaml": "^1.1.0",
207
+ "@rspack/core": "^1.0.10",
208
+ "@rspack/dev-server": "^1.0.9",
209
+ "@rspack/plugin-react-refresh": "^1.0.0",
210
+ "@vitejs/plugin-react": "^4.0.4",
211
+ "vite": "^4.4.9",
212
+ "vite-plugin-html": "^3.2.0",
199
213
  "vite-plugin-node-polyfills": "^0.22.0"
200
214
  },
201
215
  "peerDependenciesMeta": {
216
+ "@modyfi/vite-plugin-yaml": {
217
+ "optional": true
218
+ },
219
+ "@rspack/core": {
220
+ "optional": true
221
+ },
222
+ "@rspack/dev-server": {
223
+ "optional": true
224
+ },
225
+ "@rspack/plugin-react-refresh": {
226
+ "optional": true
227
+ },
202
228
  "@vitejs/plugin-react": {
203
229
  "optional": true
204
230
  },
@@ -1,14 +1,28 @@
1
1
  # {{id}}
2
2
 
3
- Welcome to the {{id}} backend plugin!
3
+ This plugin backend was templated using the Backstage CLI. You should replace this text with a description of your plugin backend.
4
4
 
5
- _This plugin was created through the Backstage CLI_
5
+ ## Installation
6
6
 
7
- ## Getting started
7
+ This plugin is installed via the `{{name}}` package. To install it to your backend package, run the following command:
8
8
 
9
- Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn
10
- start` in the root directory, and then navigating to [/{{id}}/health](http://localhost:7007/api/{{id}}/health).
9
+ ```bash
10
+ # From your root directory
11
+ yarn --cwd packages/backend add {{name}}
12
+ ```
11
13
 
12
- You can also serve the plugin in isolation by running `yarn start` in the plugin directory.
13
- This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads.
14
- It is only meant for local development, and the setup for it can be found inside the [/dev](./dev) directory.
14
+ Then add the plugin to your backend in `packages/backend/src/index.ts`:
15
+
16
+ ```ts
17
+ const backend = createBackend();
18
+ // ...
19
+ backend.add(import('{{name}}'));
20
+ ```
21
+
22
+ ## Development
23
+
24
+ This plugin backend can be started in a standalone mode from directly in this
25
+ package with `yarn start`. It is a limited setup that is most convenient when
26
+ developing the plugin backend itself.
27
+
28
+ If you want to run the entire project, including the frontend, run `yarn dev` from the root directory.
@@ -0,0 +1,60 @@
1
+ import { createBackend } from '@backstage/backend-defaults';
2
+ import { mockServices } from '@backstage/backend-test-utils';
3
+ import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils';
4
+
5
+ // TEMPLATE NOTE:
6
+ // This is the development setup for your plugin that wires up a
7
+ // minimal backend that can use both real and mocked plugins and services.
8
+ //
9
+ // Start up the backend by running `yarn start` in the package directory.
10
+ // Once it's up and running, try out the following requests:
11
+ //
12
+ // Create a new todo item, standalone or for the sample component:
13
+ //
14
+ // curl http://localhost:7007/api/{{id}}/todos -H 'Content-Type: application/json' -d '{"title": "My Todo"}'
15
+ // curl http://localhost:7007/api/{{id}}/todos -H 'Content-Type: application/json' -d '{"title": "My Todo", "entityRef": "component:default/sample"}'
16
+ //
17
+ // List TODOs:
18
+ //
19
+ // curl http://localhost:7007/api/{{id}}/todos
20
+ //
21
+ // Explicitly make an unauthenticated request, or with service auth:
22
+ //
23
+ // curl http://localhost:7007/api/{{id}}/todos -H 'Authorization: Bearer mock-none-token'
24
+ // curl http://localhost:7007/api/{{id}}/todos -H 'Authorization: Bearer mock-service-token'
25
+
26
+ const backend = createBackend();
27
+
28
+ // TEMPLATE NOTE:
29
+ // Mocking the auth and httpAuth service allows you to call your plugin API without
30
+ // having to authenticate.
31
+ //
32
+ // If you want to use real auth, you can install the following instead:
33
+ // backend.add(import('@backstage/plugin-auth-backend'));
34
+ // backend.add(import('@backstage/plugin-auth-backend-module-guest-provider'));
35
+ backend.add(mockServices.auth.factory());
36
+ backend.add(mockServices.httpAuth.factory());
37
+
38
+ // TEMPLATE NOTE:
39
+ // Rather than using a real catalog you can use a mock with a fixed set of entities.
40
+ backend.add(
41
+ catalogServiceMock.factory({
42
+ entities: [
43
+ {
44
+ apiVersion: 'backstage.io/v1alpha1',
45
+ kind: 'Component',
46
+ metadata: {
47
+ name: 'sample',
48
+ title: 'Sample Component',
49
+ },
50
+ spec: {
51
+ type: 'service',
52
+ },
53
+ },
54
+ ],
55
+ }),
56
+ );
57
+
58
+ backend.add(import('../src'));
59
+
60
+ backend.start();