@backstage/cli 0.13.1-next.1 → 0.14.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 +88 -0
- package/config/eslint.backend.js +1 -12
- package/config/eslint.js +6 -17
- package/config/jest.js +4 -3
- package/config/jestSucraseTransform.js +60 -39
- package/dist/cjs/PackageGraph-d7b9d768.cjs.js +143 -0
- package/dist/cjs/backend-7919a693.cjs.js +36 -0
- package/dist/cjs/build-29fe454d.cjs.js +59 -0
- package/dist/cjs/{build-cda9d14b.cjs.js → build-30d6e823.cjs.js} +9 -4
- package/dist/cjs/build-8fe538f0.cjs.js +173 -0
- package/dist/cjs/{build-a0537ac0.cjs.js → build-ef788e26.cjs.js} +9 -4
- package/dist/cjs/buildBackend-1727e26d.cjs.js +84 -0
- package/dist/cjs/buildWorkspace-cdb5a92d.cjs.js +54 -0
- package/dist/cjs/bump-3e73eb63.cjs.js +348 -0
- package/dist/cjs/{build-0e234c9c.cjs.js → bundle-cfe3be2c.cjs.js} +10 -49
- package/dist/cjs/{bundle-82ebca5c.cjs.js → bundle-f5e5afd4.cjs.js} +16 -11
- package/dist/cjs/{clean-2a744d8e.cjs.js → clean-677131a4.cjs.js} +2 -2
- package/dist/cjs/{config-08b1d0e3.cjs.js → config-147bac17.cjs.js} +3 -3
- package/dist/cjs/{create-3c1059f8.cjs.js → create-95febe68.cjs.js} +4 -4
- package/dist/cjs/createDistWorkspace-59a08943.cjs.js +211 -0
- package/dist/cjs/{createPlugin-98d2404a.cjs.js → createPlugin-fd799616.cjs.js} +4 -4
- package/dist/cjs/{dev-35175ac8.cjs.js → dev-70024fd0.cjs.js} +8 -33
- package/dist/cjs/{diff-0f4d8b16.cjs.js → diff-4cf33d7e.cjs.js} +8 -8
- package/dist/cjs/{docs-1df9fa22.cjs.js → docs-1ce5cd6c.cjs.js} +7 -4
- package/dist/cjs/index-1823ab16.cjs.js +94 -0
- package/dist/cjs/{index-db3186f9.cjs.js → index-2b8588e8.cjs.js} +88 -59
- package/dist/cjs/{index-4fd2a731.cjs.js → index-9879526e.cjs.js} +2 -2
- package/dist/cjs/index-ba0436fb.cjs.js +125 -0
- package/dist/cjs/{info-0c58ae61.cjs.js → info-da6c4aef.cjs.js} +3 -3
- package/dist/cjs/{install-8bc1ba18.cjs.js → install-28e7640d.cjs.js} +4 -4
- package/dist/cjs/lint-985567f6.cjs.js +92 -0
- package/dist/cjs/{lint-9da50914.cjs.js → lint-a9e3c169.cjs.js} +3 -3
- package/dist/cjs/lint-ad2a1c74.cjs.js +35 -0
- package/dist/cjs/{build-f89d7092.cjs.js → oldBuild-a88f7903.cjs.js} +11 -6
- package/dist/cjs/{pack-8ef0a3ba.cjs.js → pack-b252bbb6.cjs.js} +2 -2
- package/dist/cjs/packageRole-5f116d95.cjs.js +54 -0
- package/dist/cjs/packageRoles-f375a99e.cjs.js +158 -0
- package/dist/cjs/packageScripts-890cd7af.cjs.js +97 -0
- package/dist/cjs/{packager-89d7686b.cjs.js → packager-8f82846e.cjs.js} +141 -58
- package/dist/cjs/{packages-fd09251d.cjs.js → packages-572642d7.cjs.js} +5 -4
- package/dist/cjs/parallel-d8e5bcbf.cjs.js +171 -0
- package/dist/cjs/{paths-f273ca03.cjs.js → paths-8e0b151d.cjs.js} +20 -19
- package/dist/cjs/{print-bd48d728.cjs.js → print-b7e68297.cjs.js} +7 -4
- package/dist/cjs/{run-448b5912.cjs.js → run-d3528c59.cjs.js} +2 -2
- package/dist/cjs/{schema-c5b2f512.cjs.js → schema-0d43bb71.cjs.js} +7 -4
- package/dist/cjs/{serve-32362ee1.cjs.js → serve-b7ae013f.cjs.js} +8 -8
- package/dist/cjs/{serve-b11d7c66.cjs.js → serve-cd62a6bb.cjs.js} +9 -9
- package/dist/cjs/{server-114c20ca.cjs.js → server-894abd58.cjs.js} +2 -2
- package/dist/cjs/svgrTemplate-b7a4ee52.cjs.js +21 -0
- package/dist/cjs/{tasks-f57f3a8c.cjs.js → tasks-f55f3d7e.cjs.js} +2 -2
- package/dist/cjs/{testCommand-a0ab3b2f.cjs.js → testCommand-f9b311fb.cjs.js} +11 -4
- package/dist/cjs/{validate-dfd64471.cjs.js → validate-cff0ae61.cjs.js} +7 -4
- package/dist/index.cjs.js +1 -1
- package/package.json +31 -22
- package/templates/default-backend-plugin/package.json.hbs +1 -1
- package/templates/default-plugin/package.json.hbs +1 -1
- package/dist/cjs/PackageGraph-7a0d3a83.cjs.js +0 -73
- package/dist/cjs/buildWorkspace-5494b433.cjs.js +0 -35
- package/dist/cjs/bump-ab6e31e7.cjs.js +0 -240
- package/dist/cjs/index-c868bb2d.cjs.js +0 -106
- package/dist/cjs/lint-f037ffc0.cjs.js +0 -29
- package/dist/cjs/parallel-7e32a8d0.cjs.js +0 -25
- package/dist/cjs/svgrTemplate-f19e974c.cjs.js +0 -25
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chalk = require('chalk');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var packager = require('./packager-8f82846e.cjs.js');
|
|
6
|
+
var PackageGraph = require('./PackageGraph-d7b9d768.cjs.js');
|
|
7
|
+
var parallel = require('./parallel-d8e5bcbf.cjs.js');
|
|
8
|
+
var index = require('./index-2b8588e8.cjs.js');
|
|
9
|
+
var packageRoles = require('./packageRoles-f375a99e.cjs.js');
|
|
10
|
+
var buildBackend = require('./buildBackend-1727e26d.cjs.js');
|
|
11
|
+
require('fs-extra');
|
|
12
|
+
require('rollup');
|
|
13
|
+
require('rollup-plugin-peer-deps-external');
|
|
14
|
+
require('@rollup/plugin-commonjs');
|
|
15
|
+
require('@rollup/plugin-node-resolve');
|
|
16
|
+
require('rollup-plugin-postcss');
|
|
17
|
+
require('rollup-plugin-esbuild');
|
|
18
|
+
require('@svgr/rollup');
|
|
19
|
+
require('rollup-plugin-dts');
|
|
20
|
+
require('@rollup/plugin-json');
|
|
21
|
+
require('@rollup/plugin-yaml');
|
|
22
|
+
require('rollup-pluginutils');
|
|
23
|
+
require('./svgrTemplate-b7a4ee52.cjs.js');
|
|
24
|
+
require('@manypkg/get-packages');
|
|
25
|
+
require('@backstage/errors');
|
|
26
|
+
require('child_process');
|
|
27
|
+
require('util');
|
|
28
|
+
require('os');
|
|
29
|
+
require('worker_threads');
|
|
30
|
+
require('commander');
|
|
31
|
+
require('semver');
|
|
32
|
+
require('@backstage/cli-common');
|
|
33
|
+
require('@backstage/config/package.json');
|
|
34
|
+
require('zod');
|
|
35
|
+
require('webpack');
|
|
36
|
+
require('fork-ts-checker-webpack-plugin');
|
|
37
|
+
require('html-webpack-plugin');
|
|
38
|
+
require('react-dev-utils/ModuleScopePlugin');
|
|
39
|
+
require('run-script-webpack-plugin');
|
|
40
|
+
require('webpack-node-externals');
|
|
41
|
+
require('./paths-8e0b151d.cjs.js');
|
|
42
|
+
require('mini-css-extract-plugin');
|
|
43
|
+
require('./run-d3528c59.cjs.js');
|
|
44
|
+
require('eslint-webpack-plugin');
|
|
45
|
+
require('lodash/pickBy');
|
|
46
|
+
require('./bundle-cfe3be2c.cjs.js');
|
|
47
|
+
require('yn');
|
|
48
|
+
require('react-dev-utils/FileSizeReporter');
|
|
49
|
+
require('react-dev-utils/formatWebpackMessages');
|
|
50
|
+
require('webpack-dev-server');
|
|
51
|
+
require('react-dev-utils/openBrowser');
|
|
52
|
+
require('./config-147bac17.cjs.js');
|
|
53
|
+
require('@backstage/config-loader');
|
|
54
|
+
require('@backstage/config');
|
|
55
|
+
require('tar');
|
|
56
|
+
require('./createDistWorkspace-59a08943.cjs.js');
|
|
57
|
+
require('lodash/partition');
|
|
58
|
+
require('npm-packlist');
|
|
59
|
+
|
|
60
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
61
|
+
|
|
62
|
+
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
|
|
63
|
+
|
|
64
|
+
function createScriptOptionsParser(anyCmd, commandPath) {
|
|
65
|
+
let rootCmd = anyCmd;
|
|
66
|
+
while (rootCmd.parent) {
|
|
67
|
+
rootCmd = rootCmd.parent;
|
|
68
|
+
}
|
|
69
|
+
let targetCmd = rootCmd;
|
|
70
|
+
for (const name of commandPath) {
|
|
71
|
+
targetCmd = targetCmd == null ? void 0 : targetCmd.commands.find((c) => c.name() === name);
|
|
72
|
+
}
|
|
73
|
+
if (!targetCmd) {
|
|
74
|
+
throw new Error(`Could not find package command '${commandPath.join(" ")}'`);
|
|
75
|
+
}
|
|
76
|
+
const cmd = targetCmd;
|
|
77
|
+
const expectedScript = `backstage-cli ${commandPath.join(" ")}`;
|
|
78
|
+
return (scriptStr) => {
|
|
79
|
+
if (!scriptStr || !scriptStr.startsWith(expectedScript)) {
|
|
80
|
+
return void 0;
|
|
81
|
+
}
|
|
82
|
+
const argsStr = scriptStr.slice(expectedScript.length).trim();
|
|
83
|
+
const currentOpts = cmd._optionValues;
|
|
84
|
+
const currentStore = cmd._storeOptionsAsProperties;
|
|
85
|
+
const result = {};
|
|
86
|
+
cmd._storeOptionsAsProperties = false;
|
|
87
|
+
cmd._optionValues = result;
|
|
88
|
+
cmd.parseOptions(argsStr.split(" "));
|
|
89
|
+
cmd._storeOptionsAsProperties = currentOpts;
|
|
90
|
+
cmd._optionValues = currentStore;
|
|
91
|
+
return result;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async function command(cmd) {
|
|
95
|
+
const packages = await PackageGraph.PackageGraph.listTargetPackages();
|
|
96
|
+
const apps = new Array();
|
|
97
|
+
const backends = new Array();
|
|
98
|
+
const parseBuildScript = createScriptOptionsParser(cmd, ["package", "build"]);
|
|
99
|
+
const options = packages.flatMap((pkg) => {
|
|
100
|
+
var _a, _b, _c;
|
|
101
|
+
const role = (_b = (_a = pkg.packageJson.backstage) == null ? void 0 : _a.role) != null ? _b : packageRoles.detectRoleFromPackage(pkg.packageJson);
|
|
102
|
+
if (!role) {
|
|
103
|
+
console.warn(`Ignored ${pkg.packageJson.name} because it has no role`);
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
if (role === "frontend") {
|
|
107
|
+
apps.push(pkg);
|
|
108
|
+
return [];
|
|
109
|
+
} else if (role === "backend") {
|
|
110
|
+
backends.push(pkg);
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
const outputs = packager.getOutputsForRole(role);
|
|
114
|
+
if (outputs.size === 0) {
|
|
115
|
+
console.warn(`Ignored ${pkg.packageJson.name} because it has no output`);
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
118
|
+
const buildOptions = parseBuildScript((_c = pkg.packageJson.scripts) == null ? void 0 : _c.build);
|
|
119
|
+
if (!buildOptions) {
|
|
120
|
+
console.warn(`Ignored ${pkg.packageJson.name} because it does not have a matching build script`);
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
targetDir: pkg.dir,
|
|
125
|
+
outputs,
|
|
126
|
+
logPrefix: `${chalk__default["default"].cyan(path.relative(index.paths.targetRoot, pkg.dir))}: `,
|
|
127
|
+
minify: buildOptions.minify,
|
|
128
|
+
useApiExtractor: buildOptions.experimentalTypeBuild
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
console.log("Building packages");
|
|
132
|
+
await packager.buildPackages(options);
|
|
133
|
+
if (cmd.all) {
|
|
134
|
+
console.log("Building apps");
|
|
135
|
+
await parallel.runParallelWorkers({
|
|
136
|
+
items: apps,
|
|
137
|
+
parallelismFactor: 1 / 2,
|
|
138
|
+
worker: async (pkg) => {
|
|
139
|
+
var _a, _b;
|
|
140
|
+
const buildOptions = parseBuildScript((_a = pkg.packageJson.scripts) == null ? void 0 : _a.build);
|
|
141
|
+
if (!buildOptions) {
|
|
142
|
+
console.warn(`Ignored ${pkg.packageJson.name} because it does not have a matching build script`);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
await buildBackend.buildFrontend({
|
|
146
|
+
targetDir: pkg.dir,
|
|
147
|
+
configPaths: (_b = buildOptions.config) != null ? _b : [],
|
|
148
|
+
writeStats: Boolean(buildOptions.stats)
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
console.log("Building backends");
|
|
153
|
+
await parallel.runParallelWorkers({
|
|
154
|
+
items: backends,
|
|
155
|
+
parallelismFactor: 1 / 2,
|
|
156
|
+
worker: async (pkg) => {
|
|
157
|
+
var _a;
|
|
158
|
+
const buildOptions = parseBuildScript((_a = pkg.packageJson.scripts) == null ? void 0 : _a.build);
|
|
159
|
+
if (!buildOptions) {
|
|
160
|
+
console.warn(`Ignored ${pkg.packageJson.name} because it does not have a matching build script`);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
await buildBackend.buildBackend({
|
|
164
|
+
targetDir: pkg.dir,
|
|
165
|
+
skipBuildDependencies: true
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
exports.command = command;
|
|
173
|
+
//# sourceMappingURL=build-8fe538f0.cjs.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var packager = require('./packager-
|
|
3
|
+
var packager = require('./packager-8f82846e.cjs.js');
|
|
4
4
|
require('fs-extra');
|
|
5
5
|
require('rollup');
|
|
6
6
|
require('chalk');
|
|
7
7
|
require('path');
|
|
8
|
-
require('./index-
|
|
8
|
+
require('./index-2b8588e8.cjs.js');
|
|
9
9
|
require('commander');
|
|
10
10
|
require('semver');
|
|
11
11
|
require('@backstage/cli-common');
|
|
@@ -21,7 +21,12 @@ require('rollup-plugin-dts');
|
|
|
21
21
|
require('@rollup/plugin-json');
|
|
22
22
|
require('@rollup/plugin-yaml');
|
|
23
23
|
require('rollup-pluginutils');
|
|
24
|
-
require('./svgrTemplate-
|
|
24
|
+
require('./svgrTemplate-b7a4ee52.cjs.js');
|
|
25
|
+
require('./parallel-d8e5bcbf.cjs.js');
|
|
26
|
+
require('os');
|
|
27
|
+
require('worker_threads');
|
|
28
|
+
require('./packageRoles-f375a99e.cjs.js');
|
|
29
|
+
require('zod');
|
|
25
30
|
|
|
26
31
|
var build = async (cmd) => {
|
|
27
32
|
await packager.buildPackage({
|
|
@@ -32,4 +37,4 @@ var build = async (cmd) => {
|
|
|
32
37
|
};
|
|
33
38
|
|
|
34
39
|
exports["default"] = build;
|
|
35
|
-
//# sourceMappingURL=build-
|
|
40
|
+
//# sourceMappingURL=build-ef788e26.cjs.js.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
require('webpack');
|
|
6
|
+
require('chalk');
|
|
7
|
+
require('fork-ts-checker-webpack-plugin');
|
|
8
|
+
require('html-webpack-plugin');
|
|
9
|
+
require('react-dev-utils/ModuleScopePlugin');
|
|
10
|
+
require('run-script-webpack-plugin');
|
|
11
|
+
require('webpack-node-externals');
|
|
12
|
+
require('@backstage/cli-common');
|
|
13
|
+
require('@manypkg/get-packages');
|
|
14
|
+
require('./paths-8e0b151d.cjs.js');
|
|
15
|
+
require('mini-css-extract-plugin');
|
|
16
|
+
require('./index-2b8588e8.cjs.js');
|
|
17
|
+
require('./run-d3528c59.cjs.js');
|
|
18
|
+
require('eslint-webpack-plugin');
|
|
19
|
+
require('lodash/pickBy');
|
|
20
|
+
var bundle = require('./bundle-cfe3be2c.cjs.js');
|
|
21
|
+
require('webpack-dev-server');
|
|
22
|
+
require('react-dev-utils/openBrowser');
|
|
23
|
+
var parallel = require('./parallel-d8e5bcbf.cjs.js');
|
|
24
|
+
var config = require('./config-147bac17.cjs.js');
|
|
25
|
+
var os = require('os');
|
|
26
|
+
var tar = require('tar');
|
|
27
|
+
var createDistWorkspace = require('./createDistWorkspace-59a08943.cjs.js');
|
|
28
|
+
var packager = require('./packager-8f82846e.cjs.js');
|
|
29
|
+
|
|
30
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
31
|
+
|
|
32
|
+
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
33
|
+
var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
|
|
34
|
+
var tar__default = /*#__PURE__*/_interopDefaultLegacy(tar);
|
|
35
|
+
|
|
36
|
+
async function buildFrontend(options) {
|
|
37
|
+
const { targetDir, writeStats, configPaths } = options;
|
|
38
|
+
const { name } = await fs__default["default"].readJson(path.resolve(targetDir, "package.json"));
|
|
39
|
+
await bundle.buildBundle({
|
|
40
|
+
targetDir,
|
|
41
|
+
entry: "src/index",
|
|
42
|
+
parallelism: parallel.getEnvironmentParallelism(),
|
|
43
|
+
statsJsonEnabled: writeStats,
|
|
44
|
+
...await config.loadCliConfig({
|
|
45
|
+
args: configPaths,
|
|
46
|
+
fromPackage: name
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const BUNDLE_FILE = "bundle.tar.gz";
|
|
52
|
+
const SKELETON_FILE = "skeleton.tar.gz";
|
|
53
|
+
async function buildBackend(options) {
|
|
54
|
+
const { targetDir, skipBuildDependencies } = options;
|
|
55
|
+
const pkg = await fs__default["default"].readJson(path.resolve(targetDir, "package.json"));
|
|
56
|
+
await packager.buildPackage({ outputs: /* @__PURE__ */ new Set([packager.Output.cjs]) });
|
|
57
|
+
const tmpDir = await fs__default["default"].mkdtemp(path.resolve(os__default["default"].tmpdir(), "backstage-bundle"));
|
|
58
|
+
try {
|
|
59
|
+
await createDistWorkspace.createDistWorkspace([pkg.name], {
|
|
60
|
+
targetDir: tmpDir,
|
|
61
|
+
buildDependencies: !skipBuildDependencies,
|
|
62
|
+
buildExcludes: [pkg.name],
|
|
63
|
+
parallelism: parallel.getEnvironmentParallelism(),
|
|
64
|
+
skeleton: SKELETON_FILE
|
|
65
|
+
});
|
|
66
|
+
const distDir = path.resolve(targetDir, "dist");
|
|
67
|
+
await fs__default["default"].remove(distDir);
|
|
68
|
+
await fs__default["default"].mkdir(distDir);
|
|
69
|
+
await fs__default["default"].move(path.resolve(tmpDir, SKELETON_FILE), path.resolve(distDir, SKELETON_FILE));
|
|
70
|
+
await tar__default["default"].create({
|
|
71
|
+
file: path.resolve(distDir, BUNDLE_FILE),
|
|
72
|
+
cwd: tmpDir,
|
|
73
|
+
portable: true,
|
|
74
|
+
noMtime: true,
|
|
75
|
+
gzip: true
|
|
76
|
+
}, [""]);
|
|
77
|
+
} finally {
|
|
78
|
+
await fs__default["default"].remove(tmpDir);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
exports.buildBackend = buildBackend;
|
|
83
|
+
exports.buildFrontend = buildFrontend;
|
|
84
|
+
//# sourceMappingURL=buildBackend-1727e26d.cjs.js.map
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var createDistWorkspace = require('./createDistWorkspace-59a08943.cjs.js');
|
|
5
|
+
require('chalk');
|
|
6
|
+
require('path');
|
|
7
|
+
require('os');
|
|
8
|
+
require('tar');
|
|
9
|
+
require('lodash/partition');
|
|
10
|
+
require('./index-2b8588e8.cjs.js');
|
|
11
|
+
require('commander');
|
|
12
|
+
require('semver');
|
|
13
|
+
require('@backstage/cli-common');
|
|
14
|
+
require('@backstage/config/package.json');
|
|
15
|
+
require('@backstage/errors');
|
|
16
|
+
require('./run-d3528c59.cjs.js');
|
|
17
|
+
require('child_process');
|
|
18
|
+
require('util');
|
|
19
|
+
require('./PackageGraph-d7b9d768.cjs.js');
|
|
20
|
+
require('@manypkg/get-packages');
|
|
21
|
+
require('./packager-8f82846e.cjs.js');
|
|
22
|
+
require('rollup');
|
|
23
|
+
require('rollup-plugin-peer-deps-external');
|
|
24
|
+
require('@rollup/plugin-commonjs');
|
|
25
|
+
require('@rollup/plugin-node-resolve');
|
|
26
|
+
require('rollup-plugin-postcss');
|
|
27
|
+
require('rollup-plugin-esbuild');
|
|
28
|
+
require('@svgr/rollup');
|
|
29
|
+
require('rollup-plugin-dts');
|
|
30
|
+
require('@rollup/plugin-json');
|
|
31
|
+
require('@rollup/plugin-yaml');
|
|
32
|
+
require('rollup-pluginutils');
|
|
33
|
+
require('./svgrTemplate-b7a4ee52.cjs.js');
|
|
34
|
+
require('./parallel-d8e5bcbf.cjs.js');
|
|
35
|
+
require('worker_threads');
|
|
36
|
+
require('./packageRoles-f375a99e.cjs.js');
|
|
37
|
+
require('zod');
|
|
38
|
+
require('npm-packlist');
|
|
39
|
+
|
|
40
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
41
|
+
|
|
42
|
+
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
43
|
+
|
|
44
|
+
var buildWorkspace = async (dir, _cmd, packages) => {
|
|
45
|
+
if (!await fs__default["default"].pathExists(dir)) {
|
|
46
|
+
throw new Error(`Target workspace directory doesn't exist, '${dir}'`);
|
|
47
|
+
}
|
|
48
|
+
await createDistWorkspace.createDistWorkspace(packages, {
|
|
49
|
+
targetDir: dir
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
exports["default"] = buildWorkspace;
|
|
54
|
+
//# sourceMappingURL=buildWorkspace-cdb5a92d.cjs.js.map
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var chalk = require('chalk');
|
|
5
|
+
var ora = require('ora');
|
|
6
|
+
var semver = require('semver');
|
|
7
|
+
var minimatch = require('minimatch');
|
|
8
|
+
var errors = require('@backstage/errors');
|
|
9
|
+
var path = require('path');
|
|
10
|
+
var run = require('./run-d3528c59.cjs.js');
|
|
11
|
+
var index = require('./index-2b8588e8.cjs.js');
|
|
12
|
+
var Lockfile = require('./Lockfile-35661afa.cjs.js');
|
|
13
|
+
var packages = require('./packages-572642d7.cjs.js');
|
|
14
|
+
var lint = require('./lint-a9e3c169.cjs.js');
|
|
15
|
+
var cliCommon = require('@backstage/cli-common');
|
|
16
|
+
var parallel = require('./parallel-d8e5bcbf.cjs.js');
|
|
17
|
+
var releaseManifests = require('@backstage/release-manifests');
|
|
18
|
+
require('child_process');
|
|
19
|
+
require('util');
|
|
20
|
+
require('commander');
|
|
21
|
+
require('@backstage/config/package.json');
|
|
22
|
+
require('@yarnpkg/lockfile');
|
|
23
|
+
require('@manypkg/get-packages');
|
|
24
|
+
require('lodash/partition');
|
|
25
|
+
require('os');
|
|
26
|
+
require('worker_threads');
|
|
27
|
+
|
|
28
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
29
|
+
|
|
30
|
+
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
31
|
+
var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
|
|
32
|
+
var ora__default = /*#__PURE__*/_interopDefaultLegacy(ora);
|
|
33
|
+
var semver__default = /*#__PURE__*/_interopDefaultLegacy(semver);
|
|
34
|
+
var minimatch__default = /*#__PURE__*/_interopDefaultLegacy(minimatch);
|
|
35
|
+
|
|
36
|
+
const DEP_TYPES = [
|
|
37
|
+
"dependencies",
|
|
38
|
+
"devDependencies",
|
|
39
|
+
"peerDependencies",
|
|
40
|
+
"optionalDependencies"
|
|
41
|
+
];
|
|
42
|
+
const DEFAULT_PATTERN_GLOB = "@backstage/*";
|
|
43
|
+
var bump = async (cmd) => {
|
|
44
|
+
var _a;
|
|
45
|
+
const lockfilePath = index.paths.resolveTargetRoot("yarn.lock");
|
|
46
|
+
const lockfile = await Lockfile.Lockfile.load(lockfilePath);
|
|
47
|
+
let pattern = cmd.pattern;
|
|
48
|
+
if (!pattern) {
|
|
49
|
+
console.log(`Using default pattern glob ${DEFAULT_PATTERN_GLOB}`);
|
|
50
|
+
pattern = DEFAULT_PATTERN_GLOB;
|
|
51
|
+
} else {
|
|
52
|
+
console.log(`Using custom pattern glob ${pattern}`);
|
|
53
|
+
}
|
|
54
|
+
let findTargetVersion;
|
|
55
|
+
let releaseManifest;
|
|
56
|
+
if (semver__default["default"].valid(cmd.release)) {
|
|
57
|
+
releaseManifest = await releaseManifests.getManifestByVersion({ version: cmd.release });
|
|
58
|
+
findTargetVersion = createStrictVersionFinder({
|
|
59
|
+
releaseManifest
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
if (cmd.release === "next") {
|
|
63
|
+
const next = await releaseManifests.getManifestByReleaseLine({
|
|
64
|
+
releaseLine: "next"
|
|
65
|
+
});
|
|
66
|
+
const main = await releaseManifests.getManifestByReleaseLine({
|
|
67
|
+
releaseLine: "main"
|
|
68
|
+
});
|
|
69
|
+
releaseManifest = semver__default["default"].gt(next.releaseVersion, main.releaseVersion) ? next : main;
|
|
70
|
+
} else {
|
|
71
|
+
releaseManifest = await releaseManifests.getManifestByReleaseLine({
|
|
72
|
+
releaseLine: cmd.release
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
findTargetVersion = createVersionFinder({
|
|
76
|
+
releaseLine: cmd.releaseLine,
|
|
77
|
+
releaseManifest
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const dependencyMap = await packages.mapDependencies(index.paths.targetDir, pattern);
|
|
81
|
+
const versionBumps = /* @__PURE__ */ new Map();
|
|
82
|
+
const unlocked = Array();
|
|
83
|
+
await parallel.runParallelWorkers({
|
|
84
|
+
parallelismFactor: 4,
|
|
85
|
+
items: dependencyMap.entries(),
|
|
86
|
+
async worker([name, pkgs]) {
|
|
87
|
+
var _a2, _b;
|
|
88
|
+
let target;
|
|
89
|
+
try {
|
|
90
|
+
target = await findTargetVersion(name);
|
|
91
|
+
} catch (error) {
|
|
92
|
+
if (errors.isError(error) && error.name === "NotFoundError") {
|
|
93
|
+
console.log(`Package info not found, ignoring package ${name}`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
for (const pkg of pkgs) {
|
|
99
|
+
if (semver__default["default"].satisfies(target, pkg.range)) {
|
|
100
|
+
if (((_a2 = semver__default["default"].minVersion(pkg.range)) == null ? void 0 : _a2.version) !== target) {
|
|
101
|
+
unlocked.push({ name, range: pkg.range, target });
|
|
102
|
+
}
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
versionBumps.set(pkg.name, ((_b = versionBumps.get(pkg.name)) != null ? _b : []).concat({
|
|
106
|
+
name,
|
|
107
|
+
location: pkg.location,
|
|
108
|
+
range: `^${target}`,
|
|
109
|
+
target
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
const filter = (name) => minimatch__default["default"](name, pattern);
|
|
115
|
+
await parallel.runParallelWorkers({
|
|
116
|
+
parallelismFactor: 4,
|
|
117
|
+
items: lockfile.keys(),
|
|
118
|
+
async worker(name) {
|
|
119
|
+
var _a2;
|
|
120
|
+
if (!filter(name)) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
let target;
|
|
124
|
+
try {
|
|
125
|
+
target = await findTargetVersion(name);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
if (errors.isError(error) && error.name === "NotFoundError") {
|
|
128
|
+
console.log(`Package info not found, ignoring package ${name}`);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
for (const entry of (_a2 = lockfile.get(name)) != null ? _a2 : []) {
|
|
134
|
+
if (!semver__default["default"].satisfies(target, entry.range)) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
unlocked.push({ name, range: entry.range, target });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
console.log();
|
|
142
|
+
if (versionBumps.size === 0 && unlocked.length === 0) {
|
|
143
|
+
console.log(chalk__default["default"].green("All Backstage packages are up to date!"));
|
|
144
|
+
} else {
|
|
145
|
+
console.log(chalk__default["default"].yellow("Some packages are outdated, updating"));
|
|
146
|
+
console.log();
|
|
147
|
+
if (unlocked.length > 0) {
|
|
148
|
+
const removed = /* @__PURE__ */ new Set();
|
|
149
|
+
for (const { name, range, target } of unlocked) {
|
|
150
|
+
const existingEntry = (_a = lockfile.get(name)) == null ? void 0 : _a.find((e) => e.range === range);
|
|
151
|
+
if ((existingEntry == null ? void 0 : existingEntry.version) === target) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
const key = JSON.stringify({ name, range });
|
|
155
|
+
if (!removed.has(key)) {
|
|
156
|
+
removed.add(key);
|
|
157
|
+
console.log(`${chalk__default["default"].magenta("unlocking")} ${name}@${chalk__default["default"].yellow(range)} ~> ${chalk__default["default"].yellow(target)}`);
|
|
158
|
+
lockfile.remove(name, range);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
await lockfile.save();
|
|
162
|
+
}
|
|
163
|
+
const breakingUpdates = /* @__PURE__ */ new Map();
|
|
164
|
+
await parallel.runParallelWorkers({
|
|
165
|
+
parallelismFactor: 4,
|
|
166
|
+
items: versionBumps.entries(),
|
|
167
|
+
async worker([name, deps]) {
|
|
168
|
+
var _a2;
|
|
169
|
+
const pkgPath = path.resolve(deps[0].location, "package.json");
|
|
170
|
+
const pkgJson = await fs__default["default"].readJson(pkgPath);
|
|
171
|
+
for (const dep of deps) {
|
|
172
|
+
console.log(`${chalk__default["default"].cyan("bumping")} ${dep.name} in ${chalk__default["default"].cyan(name)} to ${chalk__default["default"].yellow(dep.range)}`);
|
|
173
|
+
for (const depType of DEP_TYPES) {
|
|
174
|
+
if (depType in pkgJson && dep.name in pkgJson[depType]) {
|
|
175
|
+
const oldRange = pkgJson[depType][dep.name];
|
|
176
|
+
pkgJson[depType][dep.name] = dep.range;
|
|
177
|
+
const lockfileEntry = (_a2 = lockfile.get(dep.name)) == null ? void 0 : _a2.find((entry) => entry.range === oldRange);
|
|
178
|
+
if (lockfileEntry) {
|
|
179
|
+
const from = lockfileEntry.version;
|
|
180
|
+
const to = dep.target;
|
|
181
|
+
if (!semver__default["default"].satisfies(to, `^${from}`)) {
|
|
182
|
+
breakingUpdates.set(dep.name, { from, to });
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
await fs__default["default"].writeJson(pkgPath, pkgJson, { spaces: 2 });
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
console.log();
|
|
192
|
+
if (pattern === DEFAULT_PATTERN_GLOB) {
|
|
193
|
+
await bumpBackstageJsonVersion(releaseManifest.releaseVersion);
|
|
194
|
+
} else {
|
|
195
|
+
console.log(chalk__default["default"].yellow(`Skipping backstage.json update as custom pattern is used`));
|
|
196
|
+
}
|
|
197
|
+
await runYarnInstall();
|
|
198
|
+
if (breakingUpdates.size > 0) {
|
|
199
|
+
console.log();
|
|
200
|
+
console.log(chalk__default["default"].yellow("\u26A0\uFE0F The following packages may have breaking changes:"));
|
|
201
|
+
console.log();
|
|
202
|
+
for (const [name, { from, to }] of Array.from(breakingUpdates.entries()).sort()) {
|
|
203
|
+
console.log(` ${chalk__default["default"].yellow(name)} : ${chalk__default["default"].yellow(from)} ~> ${chalk__default["default"].yellow(to)}`);
|
|
204
|
+
let path;
|
|
205
|
+
if (name.startsWith("@backstage/plugin-")) {
|
|
206
|
+
path = `plugins/${name.replace("@backstage/plugin-", "")}`;
|
|
207
|
+
} else if (name.startsWith("@backstage/")) {
|
|
208
|
+
path = `packages/${name.replace("@backstage/", "")}`;
|
|
209
|
+
}
|
|
210
|
+
if (path) {
|
|
211
|
+
console.log(` https://github.com/backstage/backstage/blob/master/${path}/CHANGELOG.md`);
|
|
212
|
+
}
|
|
213
|
+
console.log();
|
|
214
|
+
}
|
|
215
|
+
} else {
|
|
216
|
+
console.log();
|
|
217
|
+
}
|
|
218
|
+
console.log(chalk__default["default"].green("Version bump complete!"));
|
|
219
|
+
}
|
|
220
|
+
console.log();
|
|
221
|
+
const dedupLockfile = await Lockfile.Lockfile.load(lockfilePath);
|
|
222
|
+
const result = dedupLockfile.analyze({
|
|
223
|
+
filter
|
|
224
|
+
});
|
|
225
|
+
if (result.newVersions.length > 0) {
|
|
226
|
+
throw new Error("Duplicate versions present after package bump");
|
|
227
|
+
}
|
|
228
|
+
const forbiddenNewRanges = result.newRanges.filter(({ name }) => lint.forbiddenDuplicatesFilter(name));
|
|
229
|
+
if (forbiddenNewRanges.length > 0) {
|
|
230
|
+
throw new Error(`Version bump failed for ${forbiddenNewRanges.map((i) => i.name).join(", ")}`);
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
function createStrictVersionFinder(options) {
|
|
234
|
+
const releasePackages = new Map(options.releaseManifest.packages.map((p) => [p.name, p.version]));
|
|
235
|
+
return async function findTargetVersion(name) {
|
|
236
|
+
console.log(`Checking for updates of ${name}`);
|
|
237
|
+
const manifestVersion = releasePackages.get(name);
|
|
238
|
+
if (manifestVersion) {
|
|
239
|
+
return manifestVersion;
|
|
240
|
+
}
|
|
241
|
+
throw new errors.NotFoundError(`Package ${name} not found in release manifest`);
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
function createVersionFinder(options) {
|
|
245
|
+
const {
|
|
246
|
+
releaseLine = "latest",
|
|
247
|
+
packageInfoFetcher = packages.fetchPackageInfo,
|
|
248
|
+
releaseManifest
|
|
249
|
+
} = options;
|
|
250
|
+
const distTag = releaseLine === "main" ? "latest" : releaseLine;
|
|
251
|
+
const found = /* @__PURE__ */ new Map();
|
|
252
|
+
const releasePackages = new Map(releaseManifest == null ? void 0 : releaseManifest.packages.map((p) => [p.name, p.version]));
|
|
253
|
+
return async function findTargetVersion(name) {
|
|
254
|
+
const existing = found.get(name);
|
|
255
|
+
if (existing) {
|
|
256
|
+
return existing;
|
|
257
|
+
}
|
|
258
|
+
console.log(`Checking for updates of ${name}`);
|
|
259
|
+
const manifestVersion = releasePackages.get(name);
|
|
260
|
+
if (manifestVersion) {
|
|
261
|
+
return manifestVersion;
|
|
262
|
+
}
|
|
263
|
+
const info = await packageInfoFetcher(name);
|
|
264
|
+
const latestVersion = info["dist-tags"].latest;
|
|
265
|
+
if (!latestVersion) {
|
|
266
|
+
throw new Error(`No target 'latest' version found for ${name}`);
|
|
267
|
+
}
|
|
268
|
+
const taggedVersion = info["dist-tags"][distTag];
|
|
269
|
+
if (distTag === "latest" || !taggedVersion) {
|
|
270
|
+
found.set(name, latestVersion);
|
|
271
|
+
return latestVersion;
|
|
272
|
+
}
|
|
273
|
+
const latestVersionDateStr = info.time[latestVersion];
|
|
274
|
+
const taggedVersionDateStr = info.time[taggedVersion];
|
|
275
|
+
if (!latestVersionDateStr) {
|
|
276
|
+
throw new Error(`No time available for version '${latestVersion}' of ${name}`);
|
|
277
|
+
}
|
|
278
|
+
if (!taggedVersionDateStr) {
|
|
279
|
+
throw new Error(`No time available for version '${taggedVersion}' of ${name}`);
|
|
280
|
+
}
|
|
281
|
+
const latestVersionRelease = new Date(latestVersionDateStr).getTime();
|
|
282
|
+
const taggedVersionRelease = new Date(taggedVersionDateStr).getTime();
|
|
283
|
+
if (latestVersionRelease > taggedVersionRelease) {
|
|
284
|
+
found.set(name, latestVersion);
|
|
285
|
+
return latestVersion;
|
|
286
|
+
}
|
|
287
|
+
found.set(name, taggedVersion);
|
|
288
|
+
return taggedVersion;
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
async function bumpBackstageJsonVersion(version) {
|
|
292
|
+
const backstageJsonPath = index.paths.resolveTargetRoot(cliCommon.BACKSTAGE_JSON);
|
|
293
|
+
const backstageJson = await fs__default["default"].readJSON(backstageJsonPath).catch((e) => {
|
|
294
|
+
if (e.code === "ENOENT") {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
throw e;
|
|
298
|
+
});
|
|
299
|
+
const prevVersion = backstageJson == null ? void 0 : backstageJson.version;
|
|
300
|
+
if (prevVersion === version) {
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const { yellow, cyan, green } = chalk__default["default"];
|
|
304
|
+
if (prevVersion) {
|
|
305
|
+
const from = encodeURIComponent(prevVersion);
|
|
306
|
+
const to = encodeURIComponent(version);
|
|
307
|
+
const link = `https://backstage.github.io/upgrade-helper/?from=${from}&to=${to}`;
|
|
308
|
+
console.log(yellow(`Upgraded from release ${green(prevVersion)} to ${green(version)}, please review these template changes:`));
|
|
309
|
+
console.log();
|
|
310
|
+
console.log(` ${cyan(link)}`);
|
|
311
|
+
console.log();
|
|
312
|
+
} else {
|
|
313
|
+
console.log(yellow(`Your project is now at version ${version}, which has been written to ${cliCommon.BACKSTAGE_JSON}`));
|
|
314
|
+
}
|
|
315
|
+
await fs__default["default"].writeJson(backstageJsonPath, { ...backstageJson, version }, {
|
|
316
|
+
spaces: 2,
|
|
317
|
+
encoding: "utf8"
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
async function runYarnInstall() {
|
|
321
|
+
const spinner = ora__default["default"]({
|
|
322
|
+
prefixText: `Running ${chalk__default["default"].blue("yarn install")} to install new versions`,
|
|
323
|
+
spinner: "arc",
|
|
324
|
+
color: "green"
|
|
325
|
+
}).start();
|
|
326
|
+
const installOutput = new Array();
|
|
327
|
+
try {
|
|
328
|
+
await run.run("yarn", ["install"], {
|
|
329
|
+
env: {
|
|
330
|
+
FORCE_COLOR: "true",
|
|
331
|
+
...Object.fromEntries(Object.entries(process.env).map(([name, value]) => name.startsWith("npm_") ? [name, void 0] : [name, value]))
|
|
332
|
+
},
|
|
333
|
+
stdoutLogFunc: (data) => installOutput.push(data),
|
|
334
|
+
stderrLogFunc: (data) => installOutput.push(data)
|
|
335
|
+
});
|
|
336
|
+
spinner.succeed();
|
|
337
|
+
} catch (error) {
|
|
338
|
+
spinner.fail();
|
|
339
|
+
process.stdout.write(Buffer.concat(installOutput));
|
|
340
|
+
throw error;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
exports.bumpBackstageJsonVersion = bumpBackstageJsonVersion;
|
|
345
|
+
exports.createStrictVersionFinder = createStrictVersionFinder;
|
|
346
|
+
exports.createVersionFinder = createVersionFinder;
|
|
347
|
+
exports["default"] = bump;
|
|
348
|
+
//# sourceMappingURL=bump-3e73eb63.cjs.js.map
|