@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.
- package/CHANGELOG.md +95 -0
- package/config/jest.js +49 -25
- package/config/jestRejectNetworkRequests.js +59 -0
- package/config/nodeTransform.cjs +33 -0
- package/dist/commands/build/buildFrontend.cjs.js +11 -13
- package/dist/commands/build/command.cjs.js +5 -2
- package/dist/commands/buildWorkspace.cjs.js +1 -1
- package/dist/commands/index.cjs.js +9 -3
- package/dist/commands/repo/lint.cjs.js +23 -33
- package/dist/commands/repo/test.cjs.js +13 -32
- package/dist/commands/start/command.cjs.js +1 -0
- package/dist/commands/start/startBackend.cjs.js +23 -92
- package/dist/commands/start/startFrontend.cjs.js +6 -8
- package/dist/commands/versions/bump.cjs.js +9 -3
- package/dist/lib/bundler/bundle.cjs.js +5 -4
- package/dist/lib/bundler/config.cjs.js +75 -171
- package/dist/lib/bundler/hasReactDomClient.cjs.js +5 -1
- package/dist/lib/bundler/linkWorkspaces.cjs.js +31 -0
- package/dist/lib/bundler/optimization.cjs.js +10 -6
- package/dist/lib/bundler/server.cjs.js +47 -7
- package/dist/lib/bundler/transforms.cjs.js +7 -6
- package/dist/lib/cache/SuccessCache.cjs.js +70 -0
- package/dist/lib/packager/createDistWorkspace.cjs.js +3 -3
- package/dist/lib/{experimental/startBackendExperimental.cjs.js → runner/runBackend.cjs.js} +6 -5
- package/dist/lib/version.cjs.js +30 -22
- package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
- package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
- package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
- package/dist/packages/catalog-client/package.json.cjs.js +6 -0
- package/dist/packages/cli/package.json.cjs.js +15 -5
- package/dist/packages/core-app-api/package.json.cjs.js +1 -1
- package/dist/packages/core-components/package.json.cjs.js +1 -1
- package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
- package/dist/packages/dev-utils/package.json.cjs.js +1 -1
- package/dist/packages/errors/package.json.cjs.js +6 -0
- package/dist/packages/test-utils/package.json.cjs.js +1 -1
- package/dist/packages/theme/package.json.cjs.js +1 -1
- package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
- package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
- package/dist/plugins/catalog-node/package.json.cjs.js +6 -0
- package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
- package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +6 -0
- package/package.json +45 -19
- package/templates/default-backend-plugin/README.md.hbs +22 -8
- package/templates/default-backend-plugin/dev/index.ts.hbs +60 -0
- package/templates/default-backend-plugin/package.json.hbs +5 -5
- package/templates/default-backend-plugin/src/index.ts.hbs +0 -1
- package/templates/default-backend-plugin/src/plugin.test.ts.hbs +85 -0
- package/templates/default-backend-plugin/src/plugin.ts.hbs +16 -14
- package/templates/default-backend-plugin/src/router.test.ts +67 -0
- package/templates/default-backend-plugin/src/router.ts +51 -0
- package/templates/default-backend-plugin/src/services/TodoListService/createTodoListService.ts +100 -0
- package/templates/default-backend-plugin/src/services/TodoListService/index.ts +1 -0
- package/templates/default-backend-plugin/src/services/TodoListService/types.ts +27 -0
- package/templates/scaffolder-module/package.json.hbs +3 -1
- package/templates/scaffolder-module/src/actions/example.test.ts +24 -0
- package/templates/scaffolder-module/src/actions/{example/example.ts → example.ts} +7 -3
- package/templates/scaffolder-module/src/index.ts.hbs +1 -1
- package/templates/scaffolder-module/src/{actions/example/module.ts → module.ts} +3 -3
- package/dist/lib/bundler/LinkedPackageResolvePlugin.cjs.js +0 -47
- package/dist/lib/bundler/backend.cjs.js +0 -36
- package/templates/default-backend-plugin/dev/index.ts +0 -9
- package/templates/default-backend-plugin/src/service/router.test.ts +0 -30
- package/templates/default-backend-plugin/src/service/router.ts +0 -28
- package/templates/scaffolder-module/src/actions/example/example.test.ts +0 -32
- package/templates/scaffolder-module/src/actions/example/index.ts +0 -7
- package/templates/scaffolder-module/src/actions/index.ts +0 -1
- /package/dist/lib/{experimental → ipc}/IpcServer.cjs.js +0 -0
- /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.
|
|
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,
|
|
153
|
+
async function moveToDistWorkspace(workspaceDir, localPackages, alwaysPack, enableFeatureDetection) {
|
|
154
154
|
const [fastPackPackages, slowPackPackages] = partition__default.default(
|
|
155
155
|
localPackages,
|
|
156
|
-
(pkg) => !
|
|
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('
|
|
6
|
-
var ServerDataStore = require('
|
|
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
|
|
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.
|
|
128
|
-
//# sourceMappingURL=
|
|
128
|
+
exports.runBackend = runBackend;
|
|
129
|
+
//# sourceMappingURL=runBackend.cjs.js.map
|
package/dist/lib/version.cjs.js
CHANGED
|
@@ -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/
|
|
9
|
-
var _package$4 = require('../packages/
|
|
10
|
-
var _package$5 = require('../packages/
|
|
11
|
-
var _package$6 = require('../packages/core-
|
|
12
|
-
var _package$7 = require('../packages/core-
|
|
13
|
-
var _package$8 = require('../packages/
|
|
14
|
-
var _package$9 = require('../packages/
|
|
15
|
-
var _package$
|
|
16
|
-
var _package$
|
|
17
|
-
var _package$d = require('../plugins/
|
|
18
|
-
var _package$
|
|
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/
|
|
31
|
-
"@backstage/
|
|
32
|
-
"@backstage/
|
|
33
|
-
"@backstage/core-
|
|
34
|
-
"@backstage/core-
|
|
35
|
-
"@backstage/
|
|
36
|
-
"@backstage/
|
|
37
|
-
"@backstage/
|
|
38
|
-
"@backstage/
|
|
39
|
-
"@backstage/
|
|
40
|
-
"@backstage/plugin-
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/cli",
|
|
3
|
-
"version": "0.
|
|
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
|
|
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
|
|
52
|
-
"@backstage/integration": "1.15.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.
|
|
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.
|
|
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.
|
|
164
|
-
"@backstage/backend-test-utils": "1.0.
|
|
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
|
|
167
|
-
"@backstage/core-components": "0.
|
|
168
|
-
"@backstage/core-plugin-api": "1.10.0
|
|
169
|
-
"@backstage/dev-utils": "1.1.
|
|
170
|
-
"@backstage/
|
|
171
|
-
"@backstage/
|
|
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
|
-
"@
|
|
197
|
-
"
|
|
198
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
This plugin is installed via the `{{name}}` package. To install it to your backend package, run the following command:
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
```bash
|
|
10
|
+
# From your root directory
|
|
11
|
+
yarn --cwd packages/backend add {{name}}
|
|
12
|
+
```
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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();
|