@backstage/cli 0.13.0 → 0.13.2-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 (54) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/config/eslint.backend.js +1 -12
  3. package/config/eslint.js +6 -17
  4. package/dist/cjs/{PackageGraph-7a0d3a83.cjs.js → PackageGraph-96b2e6ef.cjs.js} +8 -1
  5. package/dist/cjs/backend-fb6d6170.cjs.js +36 -0
  6. package/dist/cjs/{build-c7b2ea88.cjs.js → build-8fd28a6d.cjs.js} +7 -3
  7. package/dist/cjs/{build-959e2ffa.cjs.js → build-93f627fc.cjs.js} +7 -3
  8. package/dist/cjs/build-9db9aaaf.cjs.js +173 -0
  9. package/dist/cjs/build-b3c69eff.cjs.js +57 -0
  10. package/dist/cjs/buildBackend-08cefb3c.cjs.js +83 -0
  11. package/dist/cjs/buildWorkspace-1323bee2.cjs.js +54 -0
  12. package/dist/cjs/{bump-d7017b61.cjs.js → bump-a85eb7bb.cjs.js} +74 -73
  13. package/dist/cjs/{build-b4301c17.cjs.js → bundle-4ce79bce.cjs.js} +10 -49
  14. package/dist/cjs/{bundle-a12319b7.cjs.js → bundle-b3d9e5ab.cjs.js} +15 -10
  15. package/dist/cjs/{clean-5638771f.cjs.js → clean-c50d4782.cjs.js} +2 -2
  16. package/dist/cjs/{config-199a492f.cjs.js → config-f2365900.cjs.js} +3 -3
  17. package/dist/cjs/{create-db02de74.cjs.js → create-7ad905e4.cjs.js} +4 -4
  18. package/dist/cjs/createDistWorkspace-f4c0276b.cjs.js +205 -0
  19. package/dist/cjs/{createPlugin-10786f3f.cjs.js → createPlugin-ba8c6df0.cjs.js} +4 -4
  20. package/dist/cjs/{dev-76979eca.cjs.js → dev-e8f4294f.cjs.js} +7 -32
  21. package/dist/cjs/{diff-49413933.cjs.js → diff-7c3a6378.cjs.js} +4 -8
  22. package/dist/cjs/{docs-701e1b43.cjs.js → docs-f72a2ec8.cjs.js} +4 -4
  23. package/dist/cjs/index-526e4dc9.cjs.js +94 -0
  24. package/dist/cjs/{index-34d6a6a3.cjs.js → index-8b03e1f7.cjs.js} +72 -47
  25. package/dist/cjs/{index-d5e2da99.cjs.js → index-c953b562.cjs.js} +2 -2
  26. package/dist/cjs/index-d7ee78c4.cjs.js +125 -0
  27. package/dist/cjs/{info-82d6df9a.cjs.js → info-92d051f2.cjs.js} +3 -3
  28. package/dist/cjs/{install-c1cc1699.cjs.js → install-1f10c477.cjs.js} +4 -4
  29. package/dist/cjs/lint-a49b0261.cjs.js +35 -0
  30. package/dist/cjs/{lint-90b05512.cjs.js → lint-cc10c98e.cjs.js} +3 -3
  31. package/dist/cjs/{build-411cb39c.cjs.js → oldBuild-e0886590.cjs.js} +9 -5
  32. package/dist/cjs/{pack-6d555709.cjs.js → pack-7da7f03b.cjs.js} +2 -2
  33. package/dist/cjs/packageRole-7bb8a760.cjs.js +54 -0
  34. package/dist/cjs/packageRoles-f4b169a7.cjs.js +158 -0
  35. package/dist/cjs/packageScripts-23016b48.cjs.js +61 -0
  36. package/dist/cjs/{packager-b384ddb4.cjs.js → packager-3bddd88f.cjs.js} +181 -74
  37. package/dist/cjs/{packages-deee570e.cjs.js → packages-08c02af1.cjs.js} +3 -3
  38. package/dist/cjs/parallel-e73a4058.cjs.js +48 -0
  39. package/dist/cjs/{paths-2c7f6dab.cjs.js → paths-f6ca70df.cjs.js} +19 -18
  40. package/dist/cjs/{print-e49ed821.cjs.js → print-43232f19.cjs.js} +4 -4
  41. package/dist/cjs/{run-596a22b2.cjs.js → run-8da8f918.cjs.js} +2 -2
  42. package/dist/cjs/{schema-cd5d09d2.cjs.js → schema-2c7e9598.cjs.js} +4 -4
  43. package/dist/cjs/{serve-948b0129.cjs.js → serve-01190cc4.cjs.js} +37 -20
  44. package/dist/cjs/{serve-a81d4924.cjs.js → serve-9c68f54d.cjs.js} +7 -7
  45. package/dist/cjs/{server-11842d16.cjs.js → server-937c32b4.cjs.js} +2 -2
  46. package/dist/cjs/{tasks-47ef8136.cjs.js → tasks-3a7eba1b.cjs.js} +2 -2
  47. package/dist/cjs/{testCommand-c91c3e8a.cjs.js → testCommand-5cdbf69c.cjs.js} +3 -3
  48. package/dist/cjs/{validate-ee0ea71a.cjs.js → validate-697fd284.cjs.js} +4 -4
  49. package/dist/index.cjs.js +1 -1
  50. package/package.json +12 -9
  51. package/dist/cjs/buildWorkspace-df8a4418.cjs.js +0 -35
  52. package/dist/cjs/index-de296eda.cjs.js +0 -106
  53. package/dist/cjs/lint-3a07e770.cjs.js +0 -29
  54. package/dist/cjs/parallel-7e32a8d0.cjs.js +0 -25
@@ -6,12 +6,13 @@ var semver = require('semver');
6
6
  var minimatch = require('minimatch');
7
7
  var errors = require('@backstage/errors');
8
8
  var path = require('path');
9
- var run = require('./run-596a22b2.cjs.js');
10
- var index = require('./index-34d6a6a3.cjs.js');
9
+ var run = require('./run-8da8f918.cjs.js');
10
+ var index = require('./index-8b03e1f7.cjs.js');
11
11
  var Lockfile = require('./Lockfile-35661afa.cjs.js');
12
- var packages = require('./packages-deee570e.cjs.js');
13
- var lint = require('./lint-90b05512.cjs.js');
12
+ var packages = require('./packages-08c02af1.cjs.js');
13
+ var lint = require('./lint-cc10c98e.cjs.js');
14
14
  var cliCommon = require('@backstage/cli-common');
15
+ var parallel = require('./parallel-e73a4058.cjs.js');
15
16
  require('child_process');
16
17
  require('util');
17
18
  require('commander');
@@ -49,54 +50,62 @@ var bump = async (cmd) => {
49
50
  const dependencyMap = await packages.mapDependencies(index.paths.targetDir, pattern);
50
51
  const versionBumps = /* @__PURE__ */ new Map();
51
52
  const unlocked = Array();
52
- await workerThreads(16, dependencyMap.entries(), async ([name, pkgs]) => {
53
- var _a2, _b;
54
- let target;
55
- try {
56
- target = await findTargetVersion(name);
57
- } catch (error) {
58
- if (errors.isError(error) && error.name === "NotFoundError") {
59
- console.log(`Package info not found, ignoring package ${name}`);
60
- return;
53
+ await parallel.runParallelWorkers({
54
+ parallelismFactor: 4,
55
+ items: dependencyMap.entries(),
56
+ async worker([name, pkgs]) {
57
+ var _a2, _b;
58
+ let target;
59
+ try {
60
+ target = await findTargetVersion(name);
61
+ } catch (error) {
62
+ if (errors.isError(error) && error.name === "NotFoundError") {
63
+ console.log(`Package info not found, ignoring package ${name}`);
64
+ return;
65
+ }
66
+ throw error;
61
67
  }
62
- throw error;
63
- }
64
- for (const pkg of pkgs) {
65
- if (semver__default["default"].satisfies(target, pkg.range)) {
66
- if (((_a2 = semver__default["default"].minVersion(pkg.range)) == null ? void 0 : _a2.version) !== target) {
67
- unlocked.push({ name, range: pkg.range, target });
68
+ for (const pkg of pkgs) {
69
+ if (semver__default["default"].satisfies(target, pkg.range)) {
70
+ if (((_a2 = semver__default["default"].minVersion(pkg.range)) == null ? void 0 : _a2.version) !== target) {
71
+ unlocked.push({ name, range: pkg.range, target });
72
+ }
73
+ continue;
68
74
  }
69
- continue;
75
+ versionBumps.set(pkg.name, ((_b = versionBumps.get(pkg.name)) != null ? _b : []).concat({
76
+ name,
77
+ location: pkg.location,
78
+ range: `^${target}`,
79
+ target
80
+ }));
70
81
  }
71
- versionBumps.set(pkg.name, ((_b = versionBumps.get(pkg.name)) != null ? _b : []).concat({
72
- name,
73
- location: pkg.location,
74
- range: `^${target}`,
75
- target
76
- }));
77
82
  }
78
83
  });
79
84
  const filter = (name) => minimatch__default["default"](name, pattern);
80
- await workerThreads(16, lockfile.keys(), async (name) => {
81
- var _a2;
82
- if (!filter(name)) {
83
- return;
84
- }
85
- let target;
86
- try {
87
- target = await findTargetVersion(name);
88
- } catch (error) {
89
- if (errors.isError(error) && error.name === "NotFoundError") {
90
- console.log(`Package info not found, ignoring package ${name}`);
85
+ await parallel.runParallelWorkers({
86
+ parallelismFactor: 4,
87
+ items: lockfile.keys(),
88
+ async worker(name) {
89
+ var _a2;
90
+ if (!filter(name)) {
91
91
  return;
92
92
  }
93
- throw error;
94
- }
95
- for (const entry of (_a2 = lockfile.get(name)) != null ? _a2 : []) {
96
- if (!semver__default["default"].satisfies(target, entry.range)) {
97
- continue;
93
+ let target;
94
+ try {
95
+ target = await findTargetVersion(name);
96
+ } catch (error) {
97
+ if (errors.isError(error) && error.name === "NotFoundError") {
98
+ console.log(`Package info not found, ignoring package ${name}`);
99
+ return;
100
+ }
101
+ throw error;
102
+ }
103
+ for (const entry of (_a2 = lockfile.get(name)) != null ? _a2 : []) {
104
+ if (!semver__default["default"].satisfies(target, entry.range)) {
105
+ continue;
106
+ }
107
+ unlocked.push({ name, range: entry.range, target });
98
108
  }
99
- unlocked.push({ name, range: entry.range, target });
100
109
  }
101
110
  });
102
111
  console.log();
@@ -122,28 +131,32 @@ var bump = async (cmd) => {
122
131
  await lockfile.save();
123
132
  }
124
133
  const breakingUpdates = /* @__PURE__ */ new Map();
125
- await workerThreads(16, versionBumps.entries(), async ([name, deps]) => {
126
- var _a2;
127
- const pkgPath = path.resolve(deps[0].location, "package.json");
128
- const pkgJson = await fs__default["default"].readJson(pkgPath);
129
- for (const dep of deps) {
130
- console.log(`${chalk__default["default"].cyan("bumping")} ${dep.name} in ${chalk__default["default"].cyan(name)} to ${chalk__default["default"].yellow(dep.range)}`);
131
- for (const depType of DEP_TYPES) {
132
- if (depType in pkgJson && dep.name in pkgJson[depType]) {
133
- const oldRange = pkgJson[depType][dep.name];
134
- pkgJson[depType][dep.name] = dep.range;
135
- const lockfileEntry = (_a2 = lockfile.get(dep.name)) == null ? void 0 : _a2.find((entry) => entry.range === oldRange);
136
- if (lockfileEntry) {
137
- const from = lockfileEntry.version;
138
- const to = dep.target;
139
- if (!semver__default["default"].satisfies(to, `^${from}`)) {
140
- breakingUpdates.set(dep.name, { from, to });
134
+ await parallel.runParallelWorkers({
135
+ parallelismFactor: 4,
136
+ items: versionBumps.entries(),
137
+ async worker([name, deps]) {
138
+ var _a2;
139
+ const pkgPath = path.resolve(deps[0].location, "package.json");
140
+ const pkgJson = await fs__default["default"].readJson(pkgPath);
141
+ for (const dep of deps) {
142
+ console.log(`${chalk__default["default"].cyan("bumping")} ${dep.name} in ${chalk__default["default"].cyan(name)} to ${chalk__default["default"].yellow(dep.range)}`);
143
+ for (const depType of DEP_TYPES) {
144
+ if (depType in pkgJson && dep.name in pkgJson[depType]) {
145
+ const oldRange = pkgJson[depType][dep.name];
146
+ pkgJson[depType][dep.name] = dep.range;
147
+ const lockfileEntry = (_a2 = lockfile.get(dep.name)) == null ? void 0 : _a2.find((entry) => entry.range === oldRange);
148
+ if (lockfileEntry) {
149
+ const from = lockfileEntry.version;
150
+ const to = dep.target;
151
+ if (!semver__default["default"].satisfies(to, `^${from}`)) {
152
+ breakingUpdates.set(dep.name, { from, to });
153
+ }
141
154
  }
142
155
  }
143
156
  }
144
157
  }
158
+ await fs__default["default"].writeJson(pkgPath, pkgJson, { spaces: 2 });
145
159
  }
146
- await fs__default["default"].writeJson(pkgPath, pkgJson, { spaces: 2 });
147
160
  });
148
161
  console.log();
149
162
  await bumpBackstageJsonVersion();
@@ -222,19 +235,7 @@ async function bumpBackstageJsonVersion() {
222
235
  encoding: "utf8"
223
236
  });
224
237
  }
225
- async function workerThreads(count, items, fn) {
226
- const queue = Array.from(items);
227
- async function pop() {
228
- const item = queue.pop();
229
- if (!item) {
230
- return;
231
- }
232
- await fn(item);
233
- await pop();
234
- }
235
- return Promise.all(Array(count).fill(0).map(() => pop()));
236
- }
237
238
 
238
239
  exports.bumpBackstageJsonVersion = bumpBackstageJsonVersion;
239
240
  exports["default"] = bump;
240
- //# sourceMappingURL=bump-d7017b61.cjs.js.map
241
+ //# sourceMappingURL=bump-a85eb7bb.cjs.js.map
@@ -1,47 +1,21 @@
1
1
  'use strict';
2
2
 
3
+ var yn = require('yn');
3
4
  var fs = require('fs-extra');
4
- var webpack = require('webpack');
5
- var chalk = require('chalk');
6
5
  var path = require('path');
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
- var paths = require('./paths-2c7f6dab.cjs.js');
15
- require('mini-css-extract-plugin');
16
- var index = require('./index-34d6a6a3.cjs.js');
17
- require('./run-596a22b2.cjs.js');
18
- require('eslint-webpack-plugin');
19
- require('lodash/pickBy');
20
- var yn = require('yn');
6
+ var webpack = require('webpack');
21
7
  var FileSizeReporter = require('react-dev-utils/FileSizeReporter');
22
8
  var formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
23
- require('webpack-dev-server');
24
- require('react-dev-utils/openBrowser');
25
- var parallel = require('./parallel-7e32a8d0.cjs.js');
26
- var config = require('./config-199a492f.cjs.js');
27
- require('./svgrTemplate-f19e974c.cjs.js');
28
- require('commander');
29
- require('semver');
30
- require('@backstage/config/package.json');
31
- require('@backstage/errors');
32
- require('child_process');
33
- require('util');
34
- require('@backstage/config-loader');
35
- require('@backstage/config');
36
- require('./PackageGraph-7a0d3a83.cjs.js');
9
+ var paths = require('./paths-f6ca70df.cjs.js');
10
+ var chalk = require('chalk');
37
11
 
38
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
39
13
 
14
+ var yn__default = /*#__PURE__*/_interopDefaultLegacy(yn);
40
15
  var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
41
16
  var webpack__default = /*#__PURE__*/_interopDefaultLegacy(webpack);
42
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
43
- var yn__default = /*#__PURE__*/_interopDefaultLegacy(yn);
44
17
  var formatWebpackMessages__default = /*#__PURE__*/_interopDefaultLegacy(formatWebpackMessages);
18
+ var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
45
19
 
46
20
  const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
47
21
  const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
@@ -67,7 +41,7 @@ async function buildBundle(options) {
67
41
  if (configSchema) {
68
42
  await fs__default["default"].writeJson(path.resolve(paths$1.targetDist, ".config-schema.json"), configSchema.serialize(), { spaces: 2 });
69
43
  }
70
- const { stats } = await build$1(compiler, isCi).catch((error) => {
44
+ const { stats } = await build(compiler, isCi).catch((error) => {
71
45
  console.log(chalk__default["default"].red("Failed to compile.\n"));
72
46
  throw new Error(`Failed to compile.
73
47
  ${error.message || error}`);
@@ -80,7 +54,7 @@ ${error.message || error}`);
80
54
  }
81
55
  FileSizeReporter.printFileSizesAfterBuild(stats, previousFileSizes, paths$1.targetDist, WARN_AFTER_BUNDLE_GZIP_SIZE, WARN_AFTER_CHUNK_GZIP_SIZE);
82
56
  }
83
- async function build$1(compiler, isCi) {
57
+ async function build(compiler, isCi) {
84
58
  var _a, _b;
85
59
  const stats = await new Promise((resolve, reject) => {
86
60
  compiler.run((err, buildStats) => {
@@ -123,18 +97,5 @@ async function build$1(compiler, isCi) {
123
97
  return { stats };
124
98
  }
125
99
 
126
- var build = async (cmd) => {
127
- const { name } = await fs__default["default"].readJson(index.paths.resolveTarget("package.json"));
128
- await buildBundle({
129
- entry: "src/index",
130
- parallel: parallel.parseParallel(process.env[parallel.PARALLEL_ENV_VAR]),
131
- statsJsonEnabled: cmd.stats,
132
- ...await config.loadCliConfig({
133
- args: cmd.config,
134
- fromPackage: name
135
- })
136
- });
137
- };
138
-
139
- exports["default"] = build;
140
- //# sourceMappingURL=build-b4301c17.cjs.js.map
100
+ exports.buildBundle = buildBundle;
101
+ //# sourceMappingURL=bundle-4ce79bce.cjs.js.map
@@ -4,18 +4,20 @@ var os = require('os');
4
4
  var fs = require('fs-extra');
5
5
  var path = require('path');
6
6
  var tar = require('tar');
7
- var index$1 = require('./index-de296eda.cjs.js');
8
- var index = require('./index-34d6a6a3.cjs.js');
9
- var parallel = require('./parallel-7e32a8d0.cjs.js');
10
- var packager = require('./packager-b384ddb4.cjs.js');
11
- require('./run-596a22b2.cjs.js');
7
+ var createDistWorkspace = require('./createDistWorkspace-f4c0276b.cjs.js');
8
+ var index = require('./index-8b03e1f7.cjs.js');
9
+ var parallel = require('./parallel-e73a4058.cjs.js');
10
+ var packager = require('./packager-3bddd88f.cjs.js');
11
+ require('chalk');
12
+ require('lodash/partition');
13
+ require('./run-8da8f918.cjs.js');
12
14
  require('child_process');
13
15
  require('util');
14
16
  require('@backstage/errors');
17
+ require('./PackageGraph-96b2e6ef.cjs.js');
15
18
  require('@manypkg/get-packages');
16
- require('./PackageGraph-7a0d3a83.cjs.js');
19
+ require('npm-packlist');
17
20
  require('commander');
18
- require('chalk');
19
21
  require('semver');
20
22
  require('@backstage/cli-common');
21
23
  require('@backstage/config/package.json');
@@ -31,6 +33,9 @@ require('@rollup/plugin-json');
31
33
  require('@rollup/plugin-yaml');
32
34
  require('rollup-pluginutils');
33
35
  require('./svgrTemplate-f19e974c.cjs.js');
36
+ require('worker_threads');
37
+ require('./packageRoles-f4b169a7.cjs.js');
38
+ require('zod');
34
39
 
35
40
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
36
41
 
@@ -46,11 +51,11 @@ var bundle = async (cmd) => {
46
51
  await packager.buildPackage({ outputs: /* @__PURE__ */ new Set([packager.Output.cjs]) });
47
52
  const tmpDir = await fs__default["default"].mkdtemp(path.resolve(os__default["default"].tmpdir(), "backstage-bundle"));
48
53
  try {
49
- await index$1.createDistWorkspace([pkg.name], {
54
+ await createDistWorkspace.createDistWorkspace([pkg.name], {
50
55
  targetDir: tmpDir,
51
56
  buildDependencies: Boolean(cmd.buildDependencies),
52
57
  buildExcludes: [pkg.name],
53
- parallel: parallel.parseParallel(process.env[parallel.PARALLEL_ENV_VAR]),
58
+ parallelism: parallel.getEnvironmentParallelism(),
54
59
  skeleton: SKELETON_FILE
55
60
  });
56
61
  await fs__default["default"].remove(targetDir);
@@ -69,4 +74,4 @@ var bundle = async (cmd) => {
69
74
  };
70
75
 
71
76
  exports["default"] = bundle;
72
- //# sourceMappingURL=bundle-a12319b7.cjs.js.map
77
+ //# sourceMappingURL=bundle-b3d9e5ab.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-34d6a6a3.cjs.js');
4
+ var index = require('./index-8b03e1f7.cjs.js');
5
5
  require('commander');
6
6
  require('chalk');
7
7
  require('semver');
@@ -20,4 +20,4 @@ async function clean() {
20
20
  }
21
21
 
22
22
  exports["default"] = clean;
23
- //# sourceMappingURL=clean-5638771f.cjs.js.map
23
+ //# sourceMappingURL=clean-c50d4782.cjs.js.map
@@ -2,9 +2,9 @@
2
2
 
3
3
  var configLoader = require('@backstage/config-loader');
4
4
  var config = require('@backstage/config');
5
- var index = require('./index-34d6a6a3.cjs.js');
5
+ var index = require('./index-8b03e1f7.cjs.js');
6
6
  var getPackages = require('@manypkg/get-packages');
7
- var PackageGraph = require('./PackageGraph-7a0d3a83.cjs.js');
7
+ var PackageGraph = require('./PackageGraph-96b2e6ef.cjs.js');
8
8
 
9
9
  function isValidUrl(url) {
10
10
  try {
@@ -76,4 +76,4 @@ async function loadCliConfig(options) {
76
76
  }
77
77
 
78
78
  exports.loadCliConfig = loadCliConfig;
79
- //# sourceMappingURL=config-199a492f.cjs.js.map
79
+ //# sourceMappingURL=config-f2365900.cjs.js.map
@@ -7,12 +7,12 @@ var chalk = require('chalk');
7
7
  var inquirer = require('inquirer');
8
8
  var camelCase = require('lodash/camelCase');
9
9
  var upperFirst = require('lodash/upperFirst');
10
- var index = require('./index-34d6a6a3.cjs.js');
11
- var tasks = require('./tasks-47ef8136.cjs.js');
10
+ var index = require('./index-8b03e1f7.cjs.js');
11
+ var tasks = require('./tasks-3a7eba1b.cjs.js');
12
12
  var Lockfile = require('./Lockfile-35661afa.cjs.js');
13
13
  require('minimatch');
14
14
  require('@manypkg/get-packages');
15
- require('./run-596a22b2.cjs.js');
15
+ require('./run-8da8f918.cjs.js');
16
16
  var partition = require('lodash/partition');
17
17
  var errors = require('@backstage/errors');
18
18
  require('commander');
@@ -482,4 +482,4 @@ var create = async (cmd) => {
482
482
  };
483
483
 
484
484
  exports["default"] = create;
485
- //# sourceMappingURL=create-db02de74.cjs.js.map
485
+ //# sourceMappingURL=create-7ad905e4.cjs.js.map
@@ -0,0 +1,205 @@
1
+ 'use strict';
2
+
3
+ var chalk = require('chalk');
4
+ var fs = require('fs-extra');
5
+ var path = require('path');
6
+ var os = require('os');
7
+ var tar = require('tar');
8
+ var partition = require('lodash/partition');
9
+ var index = require('./index-8b03e1f7.cjs.js');
10
+ var run = require('./run-8da8f918.cjs.js');
11
+ var PackageGraph = require('./PackageGraph-96b2e6ef.cjs.js');
12
+ var packager = require('./packager-3bddd88f.cjs.js');
13
+ var npmPackList = require('npm-packlist');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
18
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
19
+ var tar__default = /*#__PURE__*/_interopDefaultLegacy(tar);
20
+ var partition__default = /*#__PURE__*/_interopDefaultLegacy(partition);
21
+ var npmPackList__default = /*#__PURE__*/_interopDefaultLegacy(npmPackList);
22
+
23
+ const SKIPPED_KEYS = ["access", "registry", "tag", "alphaTypes", "betaTypes"];
24
+ async function writeReleaseStageEntrypoint(pkg, stage, targetDir) {
25
+ await fs__default["default"].ensureDir(path.resolve(targetDir, stage));
26
+ await fs__default["default"].writeJson(path.resolve(targetDir, stage, "package.json"), {
27
+ name: pkg.name,
28
+ version: pkg.version,
29
+ main: (pkg.publishConfig.main || pkg.main) && "..",
30
+ module: (pkg.publishConfig.module || pkg.module) && "..",
31
+ browser: (pkg.publishConfig.browser || pkg.browser) && "..",
32
+ types: path.join("..", pkg.publishConfig[`${stage}Types`])
33
+ }, { encoding: "utf8", spaces: 2 });
34
+ }
35
+ async function copyPackageDist(packageDir, targetDir) {
36
+ var _a;
37
+ const pkgPath = path.resolve(packageDir, "package.json");
38
+ const pkgContent = await fs__default["default"].readFile(pkgPath, "utf8");
39
+ const pkg = JSON.parse(pkgContent);
40
+ const publishConfig = (_a = pkg.publishConfig) != null ? _a : {};
41
+ for (const key of Object.keys(publishConfig)) {
42
+ if (!SKIPPED_KEYS.includes(key)) {
43
+ pkg[key] = publishConfig[key];
44
+ }
45
+ }
46
+ if (pkg.bundled) {
47
+ delete pkg.dependencies;
48
+ delete pkg.devDependencies;
49
+ delete pkg.peerDependencies;
50
+ delete pkg.optionalDependencies;
51
+ }
52
+ await fs__default["default"].writeJson(pkgPath, pkg, { encoding: "utf8", spaces: 2 });
53
+ const filePaths = await npmPackList__default["default"]({ path: packageDir });
54
+ await fs__default["default"].ensureDir(targetDir);
55
+ for (const filePath of filePaths.sort()) {
56
+ await fs__default["default"].copy(path.resolve(packageDir, filePath), path.resolve(targetDir, filePath));
57
+ }
58
+ if (publishConfig.alphaTypes) {
59
+ await writeReleaseStageEntrypoint(pkg, "alpha", targetDir);
60
+ }
61
+ if (publishConfig.betaTypes) {
62
+ await writeReleaseStageEntrypoint(pkg, "beta", targetDir);
63
+ }
64
+ await fs__default["default"].writeFile(pkgPath, pkgContent, "utf8");
65
+ }
66
+
67
+ const UNSAFE_PACKAGES = [
68
+ ...Object.keys(index.dependencies),
69
+ ...Object.keys(index.devDependencies)
70
+ ];
71
+ async function createDistWorkspace(packageNames, options = {}) {
72
+ var _a, _b, _c, _d, _e;
73
+ const targetDir = (_a = options.targetDir) != null ? _a : await fs__default["default"].mkdtemp(path.resolve(os.tmpdir(), "dist-workspace"));
74
+ const packages = await PackageGraph.PackageGraph.listTargetPackages();
75
+ const packageGraph = PackageGraph.PackageGraph.fromPackages(packages);
76
+ const targetNames = packageGraph.collectPackageNames(packageNames, (node) => {
77
+ if (node.packageJson.bundled) {
78
+ return void 0;
79
+ }
80
+ return node.publishedLocalDependencies.keys();
81
+ });
82
+ const targets = Array.from(targetNames).map((name) => packageGraph.get(name));
83
+ if (options.buildDependencies) {
84
+ const exclude = (_b = options.buildExcludes) != null ? _b : [];
85
+ const toBuild = new Set(targets.map((_) => _.name).filter((name) => !exclude.includes(name)));
86
+ const standardBuilds = new Array();
87
+ const customBuild = new Array();
88
+ for (const pkg of packages) {
89
+ if (!toBuild.has(pkg.packageJson.name)) {
90
+ continue;
91
+ }
92
+ const role = (_c = pkg.packageJson.backstage) == null ? void 0 : _c.role;
93
+ if (!role) {
94
+ console.warn(`Ignored ${pkg.packageJson.name} because it has no role`);
95
+ customBuild.push(pkg.packageJson.name);
96
+ continue;
97
+ }
98
+ const buildScript = (_d = pkg.packageJson.scripts) == null ? void 0 : _d.build;
99
+ if (!buildScript) {
100
+ customBuild.push(pkg.packageJson.name);
101
+ continue;
102
+ }
103
+ if (!buildScript.startsWith("backstage-cli script build")) {
104
+ console.warn(`Ignored ${pkg.packageJson.name} because it has a custom build script, '${buildScript}'`);
105
+ customBuild.push(pkg.packageJson.name);
106
+ continue;
107
+ }
108
+ const outputs = packager.getOutputsForRole(role);
109
+ outputs.delete(packager.Output.types);
110
+ if (outputs.size > 0) {
111
+ standardBuilds.push({
112
+ targetDir: pkg.dir,
113
+ outputs,
114
+ logPrefix: `${chalk__default["default"].cyan(path.relative(index.paths.targetRoot, pkg.dir))}: `,
115
+ minify: false,
116
+ useApiExtractor: false
117
+ });
118
+ }
119
+ }
120
+ await packager.buildPackages(standardBuilds);
121
+ if (customBuild.length > 0) {
122
+ const scopeArgs = customBuild.flatMap((name) => ["--scope", name]);
123
+ const lernaArgs = options.parallelism && Number.isInteger(options.parallelism) ? ["--concurrency", options.parallelism.toString()] : [];
124
+ await run.run("yarn", ["lerna", ...lernaArgs, "run", ...scopeArgs, "build"], {
125
+ cwd: index.paths.targetRoot
126
+ });
127
+ }
128
+ }
129
+ await moveToDistWorkspace(targetDir, targets);
130
+ const files = (_e = options.files) != null ? _e : ["yarn.lock", "package.json"];
131
+ for (const file of files) {
132
+ const src = typeof file === "string" ? file : file.src;
133
+ const dest = typeof file === "string" ? file : file.dest;
134
+ await fs__default["default"].copy(index.paths.resolveTargetRoot(src), path.resolve(targetDir, dest));
135
+ }
136
+ if (options.skeleton) {
137
+ const skeletonFiles = targets.map((target) => {
138
+ const dir = path.relative(index.paths.targetRoot, target.dir);
139
+ return path.join(dir, "package.json");
140
+ });
141
+ await tar__default["default"].create({
142
+ file: path.resolve(targetDir, options.skeleton),
143
+ cwd: targetDir,
144
+ portable: true,
145
+ noMtime: true,
146
+ gzip: options.skeleton.endsWith(".gz")
147
+ }, skeletonFiles);
148
+ }
149
+ return targetDir;
150
+ }
151
+ const FAST_PACK_SCRIPTS = [
152
+ void 0,
153
+ "backstage-cli prepack",
154
+ "backstage-cli script prepack"
155
+ ];
156
+ async function moveToDistWorkspace(workspaceDir, localPackages) {
157
+ const [fastPackPackages, slowPackPackages] = partition__default["default"](localPackages, (pkg) => {
158
+ var _a;
159
+ return FAST_PACK_SCRIPTS.includes((_a = pkg.packageJson.scripts) == null ? void 0 : _a.prepack);
160
+ });
161
+ await Promise.all(fastPackPackages.map(async (target) => {
162
+ console.log(`Moving ${target.name} into dist workspace`);
163
+ const outputDir = path.relative(index.paths.targetRoot, target.dir);
164
+ const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
165
+ await copyPackageDist(target.dir, absoluteOutputPath);
166
+ }));
167
+ async function pack(target, archive) {
168
+ var _a, _b;
169
+ console.log(`Repacking ${target.name} into dist workspace`);
170
+ const archivePath = path.resolve(workspaceDir, archive);
171
+ await run.run("yarn", ["pack", "--filename", archivePath], {
172
+ cwd: target.dir
173
+ });
174
+ if ((_b = (_a = target.packageJson) == null ? void 0 : _a.scripts) == null ? void 0 : _b.postpack) {
175
+ await run.run("yarn", ["postpack"], { cwd: target.dir });
176
+ }
177
+ const outputDir = path.relative(index.paths.targetRoot, target.dir);
178
+ const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
179
+ await fs__default["default"].ensureDir(absoluteOutputPath);
180
+ await tar__default["default"].extract({
181
+ file: archivePath,
182
+ cwd: absoluteOutputPath,
183
+ strip: 1
184
+ });
185
+ await fs__default["default"].remove(archivePath);
186
+ if (target.packageJson.bundled) {
187
+ const pkgJson = await fs__default["default"].readJson(path.resolve(absoluteOutputPath, "package.json"));
188
+ delete pkgJson.dependencies;
189
+ delete pkgJson.devDependencies;
190
+ delete pkgJson.peerDependencies;
191
+ delete pkgJson.optionalDependencies;
192
+ await fs__default["default"].writeJson(path.resolve(absoluteOutputPath, "package.json"), pkgJson, {
193
+ spaces: 2
194
+ });
195
+ }
196
+ }
197
+ const [unsafePackages, safePackages] = partition__default["default"](slowPackPackages, (p) => UNSAFE_PACKAGES.includes(p.name));
198
+ for (const target of unsafePackages) {
199
+ await pack(target, `temp-package.tgz`);
200
+ }
201
+ await Promise.all(safePackages.map(async (target, index) => pack(target, `temp-package-${index}.tgz`)));
202
+ }
203
+
204
+ exports.createDistWorkspace = createDistWorkspace;
205
+ //# sourceMappingURL=createDistWorkspace-f4c0276b.cjs.js.map
@@ -10,12 +10,12 @@ var camelCase = require('lodash/camelCase');
10
10
  var upperFirst = require('lodash/upperFirst');
11
11
  var os = require('os');
12
12
  var errors = require('@backstage/errors');
13
- var tasks = require('./tasks-47ef8136.cjs.js');
14
- var index = require('./index-34d6a6a3.cjs.js');
13
+ var tasks = require('./tasks-3a7eba1b.cjs.js');
14
+ var index = require('./index-8b03e1f7.cjs.js');
15
15
  var Lockfile = require('./Lockfile-35661afa.cjs.js');
16
16
  require('minimatch');
17
17
  require('@manypkg/get-packages');
18
- require('./run-596a22b2.cjs.js');
18
+ require('./run-8da8f918.cjs.js');
19
19
  require('handlebars');
20
20
  require('ora');
21
21
  require('recursive-readdir');
@@ -234,4 +234,4 @@ exports.addPluginExtensionToApp = addPluginExtensionToApp;
234
234
  exports.capitalize = capitalize;
235
235
  exports["default"] = createPlugin;
236
236
  exports.movePlugin = movePlugin;
237
- //# sourceMappingURL=createPlugin-10786f3f.cjs.js.map
237
+ //# sourceMappingURL=createPlugin-ba8c6df0.cjs.js.map