@backstage/cli 0.13.2 → 0.15.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 (58) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/config/eslint.js +2 -2
  3. package/config/jest.js +8 -4
  4. package/config/jestSucraseTransform.js +60 -39
  5. package/dist/cjs/{PackageGraph-f7218931.cjs.js → PackageGraph-b00df225.cjs.js} +65 -2
  6. package/dist/cjs/{backend-93c17f0a.cjs.js → backend-1b05daee.cjs.js} +2 -2
  7. package/dist/cjs/{build-8188b3a4.cjs.js → build-83d881ea.cjs.js} +22 -22
  8. package/dist/cjs/{build-36589e8a.cjs.js → build-87df0d6b.cjs.js} +7 -6
  9. package/dist/cjs/{build-009e73a3.cjs.js → build-d4f2e2e8.cjs.js} +7 -6
  10. package/dist/cjs/{build-ba38de45.cjs.js → build-ff4f8608.cjs.js} +12 -10
  11. package/dist/cjs/{buildBackend-85df229c.cjs.js → buildBackend-aa0d412b.cjs.js} +20 -17
  12. package/dist/cjs/{buildWorkspace-44672ad9.cjs.js → buildWorkspace-e4801c14.cjs.js} +9 -9
  13. package/dist/cjs/{bump-9aca460c.cjs.js → bump-3800b988.cjs.js} +61 -15
  14. package/dist/cjs/{bundle-c676710a.cjs.js → bundle-09e400db.cjs.js} +11 -11
  15. package/dist/cjs/{bundle-c36a33a5.cjs.js → bundle-79d52b4b.cjs.js} +2 -2
  16. package/dist/cjs/{clean-fb5eabab.cjs.js → clean-a06b7d65.cjs.js} +2 -2
  17. package/dist/cjs/{config-2045332a.cjs.js → config-421162a7.cjs.js} +3 -3
  18. package/dist/cjs/{create-d576afd6.cjs.js → create-aa1a9a17.cjs.js} +4 -4
  19. package/dist/cjs/{createDistWorkspace-1949b495.cjs.js → createDistWorkspace-bb483aff.cjs.js} +15 -9
  20. package/dist/cjs/{createPlugin-6b9a37d7.cjs.js → createPlugin-f2839d53.cjs.js} +4 -4
  21. package/dist/cjs/{dev-a43bf6c5.cjs.js → dev-110686a9.cjs.js} +6 -6
  22. package/dist/cjs/{diff-8090cb39.cjs.js → diff-250bb472.cjs.js} +6 -2
  23. package/dist/cjs/{docs-8134e3d2.cjs.js → docs-6b34ee96.cjs.js} +7 -4
  24. package/dist/cjs/{index-0c3a82e2.cjs.js → index-5a2e8d49.cjs.js} +18 -18
  25. package/dist/cjs/{index-4605496f.cjs.js → index-87dfd82d.cjs.js} +69 -66
  26. package/dist/cjs/{index-603a246b.cjs.js → index-964b90f7.cjs.js} +17 -17
  27. package/dist/cjs/{index-a932d832.cjs.js → index-af637b8d.cjs.js} +2 -2
  28. package/dist/cjs/{info-9187be16.cjs.js → info-2072351a.cjs.js} +3 -3
  29. package/dist/cjs/{install-30028f72.cjs.js → install-5cc80412.cjs.js} +4 -4
  30. package/dist/cjs/{lint-d863cb88.cjs.js → lint-50ee052a.cjs.js} +2 -2
  31. package/dist/cjs/lint-dc4e7e6b.cjs.js +92 -0
  32. package/dist/cjs/{lint-753ca24f.cjs.js → lint-e407f973.cjs.js} +3 -3
  33. package/dist/cjs/{oldBuild-f1abef0d.cjs.js → oldBuild-638ec06b.cjs.js} +7 -6
  34. package/dist/cjs/{pack-a51c7cf8.cjs.js → pack-d77912d3.cjs.js} +2 -2
  35. package/dist/cjs/{packageRole-6f48a89c.cjs.js → packageRole-7767f94e.cjs.js} +3 -3
  36. package/dist/cjs/{packageRoles-a2eecabc.cjs.js → packageRoles-88676cde.cjs.js} +12 -12
  37. package/dist/cjs/packageScripts-7bf31577.cjs.js +97 -0
  38. package/dist/cjs/{packager-57263112.cjs.js → packager-60ad68c9.cjs.js} +34 -58
  39. package/dist/cjs/{packages-ef539958.cjs.js → packages-a5011251.cjs.js} +5 -4
  40. package/dist/cjs/parallel-d8e5bcbf.cjs.js +171 -0
  41. package/dist/cjs/{paths-2db88422.cjs.js → paths-6bb65aa4.cjs.js} +7 -31
  42. package/dist/cjs/{print-0be864a4.cjs.js → print-1ff6b34f.cjs.js} +7 -4
  43. package/dist/cjs/{run-43a2e0bb.cjs.js → run-5fdca9d5.cjs.js} +2 -2
  44. package/dist/cjs/{schema-899242a2.cjs.js → schema-2cd77098.cjs.js} +7 -4
  45. package/dist/cjs/{serve-b5a89a22.cjs.js → serve-8736e644.cjs.js} +9 -9
  46. package/dist/cjs/{serve-b69389e9.cjs.js → serve-f5d41d88.cjs.js} +9 -9
  47. package/dist/cjs/{server-d8c1f8fd.cjs.js → server-b7b23a16.cjs.js} +2 -2
  48. package/dist/cjs/svgrTemplate-b7a4ee52.cjs.js +21 -0
  49. package/dist/cjs/{tasks-096c80eb.cjs.js → tasks-eadc7947.cjs.js} +2 -2
  50. package/dist/cjs/{testCommand-1bd885b0.cjs.js → testCommand-e79b231e.cjs.js} +11 -4
  51. package/dist/cjs/{validate-e670ef09.cjs.js → validate-fc5936ef.cjs.js} +7 -4
  52. package/dist/index.cjs.js +1 -1
  53. package/package.json +30 -25
  54. package/templates/default-backend-plugin/package.json.hbs +1 -1
  55. package/templates/default-plugin/package.json.hbs +1 -1
  56. package/dist/cjs/packageScripts-69fbc72e.cjs.js +0 -61
  57. package/dist/cjs/parallel-e73a4058.cjs.js +0 -48
  58. package/dist/cjs/svgrTemplate-f19e974c.cjs.js +0 -25
@@ -2,7 +2,7 @@
2
2
 
3
3
  var zod = require('zod');
4
4
  var fs = require('fs-extra');
5
- var index = require('./index-4605496f.cjs.js');
5
+ var index = require('./index-87dfd82d.cjs.js');
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -10,7 +10,7 @@ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
10
10
 
11
11
  const packageRoleInfos = [
12
12
  {
13
- role: "app",
13
+ role: "frontend",
14
14
  platform: "web",
15
15
  output: ["bundle"]
16
16
  },
@@ -40,22 +40,22 @@ const packageRoleInfos = [
40
40
  output: ["types", "esm", "cjs"]
41
41
  },
42
42
  {
43
- role: "plugin-frontend",
43
+ role: "frontend-plugin",
44
44
  platform: "web",
45
45
  output: ["types", "esm"]
46
46
  },
47
47
  {
48
- role: "plugin-frontend-module",
48
+ role: "frontend-plugin-module",
49
49
  platform: "web",
50
50
  output: ["types", "esm"]
51
51
  },
52
52
  {
53
- role: "plugin-backend",
53
+ role: "backend-plugin",
54
54
  platform: "node",
55
55
  output: ["types", "cjs"]
56
56
  },
57
57
  {
58
- role: "plugin-backend-module",
58
+ role: "backend-plugin-module",
59
59
  platform: "node",
60
60
  output: ["types", "cjs"]
61
61
  }
@@ -115,22 +115,22 @@ function detectRoleFromPackage(pkgJson) {
115
115
  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
116
116
  const pkg = detectionSchema.parse(pkgJson);
117
117
  if ((_b = (_a = pkg.scripts) == null ? void 0 : _a.start) == null ? void 0 : _b.includes("app:serve")) {
118
- return "app";
118
+ return "frontend";
119
119
  }
120
120
  if ((_d = (_c = pkg.scripts) == null ? void 0 : _c.build) == null ? void 0 : _d.includes("backend:bundle")) {
121
121
  return "backend";
122
122
  }
123
123
  if (((_e = pkg.name) == null ? void 0 : _e.includes("plugin-")) && ((_f = pkg.name) == null ? void 0 : _f.includes("-backend-module-"))) {
124
- return "plugin-backend-module";
124
+ return "backend-plugin-module";
125
125
  }
126
126
  if (((_g = pkg.name) == null ? void 0 : _g.includes("plugin-")) && ((_h = pkg.name) == null ? void 0 : _h.includes("-module-"))) {
127
- return "plugin-frontend-module";
127
+ return "frontend-plugin-module";
128
128
  }
129
129
  if ((_j = (_i = pkg.scripts) == null ? void 0 : _i.start) == null ? void 0 : _j.includes("plugin:serve")) {
130
- return "plugin-frontend";
130
+ return "frontend-plugin";
131
131
  }
132
132
  if ((_l = (_k = pkg.scripts) == null ? void 0 : _k.start) == null ? void 0 : _l.includes("backend:dev")) {
133
- return "plugin-backend";
133
+ return "backend-plugin";
134
134
  }
135
135
  const mainEntry = ((_m = pkg.publishConfig) == null ? void 0 : _m.main) || pkg.main;
136
136
  const moduleEntry = ((_n = pkg.publishConfig) == null ? void 0 : _n.module) || pkg.module;
@@ -155,4 +155,4 @@ exports.detectRoleFromPackage = detectRoleFromPackage;
155
155
  exports.findRoleFromCommand = findRoleFromCommand;
156
156
  exports.getRoleFromPackage = getRoleFromPackage;
157
157
  exports.getRoleInfo = getRoleInfo;
158
- //# sourceMappingURL=packageRoles-a2eecabc.cjs.js.map
158
+ //# sourceMappingURL=packageRoles-88676cde.cjs.js.map
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs-extra');
4
+ var path = require('path');
5
+ var PackageGraph = require('./PackageGraph-b00df225.cjs.js');
6
+ var packageRoles = require('./packageRoles-88676cde.cjs.js');
7
+ require('@manypkg/get-packages');
8
+ require('./index-87dfd82d.cjs.js');
9
+ require('commander');
10
+ require('chalk');
11
+ require('semver');
12
+ require('@backstage/cli-common');
13
+ require('@backstage/config/package.json');
14
+ require('@backstage/errors');
15
+ require('child_process');
16
+ require('util');
17
+ require('zod');
18
+
19
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
+
21
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
22
+
23
+ const configArgPattern = /--config[=\s][^\s$]+/;
24
+ const noStartRoles = ["cli", "common-library"];
25
+ async function command() {
26
+ const packages = await PackageGraph.PackageGraph.listTargetPackages();
27
+ await Promise.all(packages.map(async ({ dir, packageJson }) => {
28
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
29
+ const role = packageRoles.getRoleFromPackage(packageJson);
30
+ if (!role) {
31
+ return;
32
+ }
33
+ const roleInfo = packageRoles.getRoleInfo(role);
34
+ const hasStart = !noStartRoles.includes(role);
35
+ const needsPack = !(roleInfo.output.includes("bundle") || role === "cli");
36
+ const scripts = (_a = packageJson.scripts) != null ? _a : {};
37
+ const startCmd = ["start"];
38
+ if ((_b = scripts.start) == null ? void 0 : _b.includes("--check")) {
39
+ startCmd.push("--check");
40
+ }
41
+ if ((_c = scripts.start) == null ? void 0 : _c.includes("--config")) {
42
+ startCmd.push(...(_d = scripts.start.match(configArgPattern)) != null ? _d : []);
43
+ }
44
+ const buildCmd = ["build"];
45
+ if ((_e = scripts.build) == null ? void 0 : _e.includes("--minify")) {
46
+ buildCmd.push("--minify");
47
+ }
48
+ if ((_f = scripts.build) == null ? void 0 : _f.includes("--experimental-type-build")) {
49
+ buildCmd.push("--experimental-type-build");
50
+ }
51
+ if ((_g = scripts.build) == null ? void 0 : _g.includes("--config")) {
52
+ buildCmd.push(...(_h = scripts.build.match(configArgPattern)) != null ? _h : []);
53
+ }
54
+ const testCmd = ["test"];
55
+ if ((_i = scripts.test) == null ? void 0 : _i.startsWith("backstage-cli test")) {
56
+ const args = scripts.test.slice("backstage-cli test".length).split(" ").filter(Boolean);
57
+ if (args.includes("--passWithNoTests")) {
58
+ args.splice(args.indexOf("--passWithNoTests"), 1);
59
+ }
60
+ testCmd.push(...args);
61
+ }
62
+ const expectedScripts = {
63
+ ...hasStart && {
64
+ start: `backstage-cli package ${startCmd.join(" ")}`
65
+ },
66
+ build: `backstage-cli package ${buildCmd.join(" ")}`,
67
+ lint: "backstage-cli package lint",
68
+ test: `backstage-cli package ${testCmd.join(" ")}`,
69
+ clean: "backstage-cli package clean",
70
+ ...needsPack && {
71
+ postpack: "backstage-cli package postpack",
72
+ prepack: "backstage-cli package prepack"
73
+ }
74
+ };
75
+ let changed = false;
76
+ const currentScripts = packageJson.scripts = packageJson.scripts || {};
77
+ for (const [name, value] of Object.entries(expectedScripts)) {
78
+ const currentScript = currentScripts[name];
79
+ const isMissing = !currentScript;
80
+ const isDifferent = currentScript !== value;
81
+ const isBackstageScript = currentScript == null ? void 0 : currentScript.includes("backstage-cli");
82
+ if (isMissing || isDifferent && isBackstageScript) {
83
+ changed = true;
84
+ currentScripts[name] = value;
85
+ }
86
+ }
87
+ if (changed) {
88
+ console.log(`Updating scripts for ${packageJson.name}`);
89
+ await fs__default["default"].writeJson(path.resolve(dir, "package.json"), packageJson, {
90
+ spaces: 2
91
+ });
92
+ }
93
+ }));
94
+ }
95
+
96
+ exports.command = command;
97
+ //# sourceMappingURL=packageScripts-7bf31577.cjs.js.map
@@ -4,7 +4,7 @@ var fs = require('fs-extra');
4
4
  var rollup = require('rollup');
5
5
  var chalk = require('chalk');
6
6
  var path = require('path');
7
- var index = require('./index-4605496f.cjs.js');
7
+ var index = require('./index-87dfd82d.cjs.js');
8
8
  var peerDepsExternal = require('rollup-plugin-peer-deps-external');
9
9
  var commonjs = require('@rollup/plugin-commonjs');
10
10
  var resolve = require('@rollup/plugin-node-resolve');
@@ -15,10 +15,9 @@ var dts = require('rollup-plugin-dts');
15
15
  var json = require('@rollup/plugin-json');
16
16
  var yaml = require('@rollup/plugin-yaml');
17
17
  var rollupPluginutils = require('rollup-pluginutils');
18
- var svgrTemplate = require('./svgrTemplate-f19e974c.cjs.js');
19
- var worker_threads = require('worker_threads');
20
- var packageRoles = require('./packageRoles-a2eecabc.cjs.js');
21
- var parallel = require('./parallel-e73a4058.cjs.js');
18
+ var svgrTemplate = require('./svgrTemplate-b7a4ee52.cjs.js');
19
+ var parallel = require('./parallel-d8e5bcbf.cjs.js');
20
+ var packageRoles = require('./packageRoles-88676cde.cjs.js');
22
21
 
23
22
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
23
 
@@ -199,14 +198,13 @@ async function makeRollupConfigs(options) {
199
198
  return configs;
200
199
  }
201
200
 
202
- function buildTypeDefinitionsWorker() {
201
+ async function buildTypeDefinitionsWorker(workerData, sendMessage) {
203
202
  try {
204
203
  require("@microsoft/api-extractor");
205
204
  } catch (error) {
206
205
  throw new Error("Failed to resolve @microsoft/api-extractor, it must best installed as a dependency of your project in order to use experimental type builds");
207
206
  }
208
207
  const { dirname } = require("path");
209
- const { workerData, parentPort } = require("worker_threads");
210
208
  const { entryPoints, workerConfigs, typescriptCompilerFolder } = workerData;
211
209
  const apiExtractor = require("@microsoft/api-extractor");
212
210
  const { Extractor, ExtractorConfig, CompilerState } = apiExtractor;
@@ -220,7 +218,6 @@ function buildTypeDefinitionsWorker() {
220
218
  }
221
219
  return old.call(this, path);
222
220
  };
223
- let success = true;
224
221
  let compilerState;
225
222
  for (const { extractorOptions, targetTypesDir } of workerConfigs) {
226
223
  const extractorConfig = ExtractorConfig.prepare(extractorOptions);
@@ -237,21 +234,13 @@ function buildTypeDefinitionsWorker() {
237
234
  showDiagnostics: false,
238
235
  messageCallback: (message) => {
239
236
  message.handled = true;
240
- parentPort.postMessage({ type: "message", message, targetTypesDir });
237
+ sendMessage({ message, targetTypesDir });
241
238
  }
242
239
  });
243
240
  if (!extractorResult.succeeded) {
244
- parentPort.postMessage({
245
- type: "done",
246
- error: new Error(`Type definition build completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`)
247
- });
248
- success = false;
249
- break;
241
+ throw new Error(`Type definition build completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`);
250
242
  }
251
243
  }
252
- if (success) {
253
- parentPort.postMessage({ type: "done" });
254
- }
255
244
  }
256
245
 
257
246
  const ignoredMessages = /* @__PURE__ */ new Set(["tsdoc-undefined-tag", "ae-forgotten-export"]);
@@ -293,53 +282,40 @@ async function buildTypeDefinitions(targetDirs = [index.paths.targetDir]) {
293
282
  const typescriptDir = index.paths.resolveTargetRoot("node_modules/typescript");
294
283
  const hasTypescript = await fs__default["default"].pathExists(typescriptDir);
295
284
  const typescriptCompilerFolder = hasTypescript ? typescriptDir : void 0;
296
- const worker = new worker_threads.Worker(`(${buildTypeDefinitionsWorker})()`, {
297
- eval: true,
285
+ await parallel.runWorkerThreads({
286
+ threadCount: 1,
298
287
  workerData: {
299
288
  entryPoints,
300
289
  workerConfigs,
301
290
  typescriptCompilerFolder
302
- }
303
- });
304
- await new Promise((resolve, reject) => {
305
- worker.once("error", reject);
306
- worker.once("exit", (code) => {
307
- if (code) {
308
- reject(new Error(`Worker exited with code ${code}`));
291
+ },
292
+ worker: buildTypeDefinitionsWorker,
293
+ onMessage: ({
294
+ message,
295
+ targetTypesDir
296
+ }) => {
297
+ if (ignoredMessages.has(message.messageId)) {
298
+ return;
309
299
  }
310
- });
311
- worker.on("message", (data) => {
312
- if (data.type === "done") {
313
- if (data.error) {
314
- reject(data.error);
315
- } else {
316
- resolve();
317
- }
318
- } else if (data.type === "message") {
319
- const { message, targetTypesDir } = data;
320
- if (ignoredMessages.has(message.messageId)) {
321
- return;
322
- }
323
- let text = `${message.text} (${message.messageId})`;
324
- if (message.sourceFilePath) {
325
- text += " at ";
326
- text += path.relative(targetTypesDir, message.sourceFilePath);
327
- if (message.sourceFileLine) {
328
- text += `:${message.sourceFileLine}`;
329
- if (message.sourceFileColumn) {
330
- text += `:${message.sourceFileColumn}`;
331
- }
300
+ let text = `${message.text} (${message.messageId})`;
301
+ if (message.sourceFilePath) {
302
+ text += " at ";
303
+ text += path.relative(targetTypesDir, message.sourceFilePath);
304
+ if (message.sourceFileLine) {
305
+ text += `:${message.sourceFileLine}`;
306
+ if (message.sourceFileColumn) {
307
+ text += `:${message.sourceFileColumn}`;
332
308
  }
333
309
  }
334
- if (message.logLevel === "error") {
335
- console.error(chalk__default["default"].red(`Error: ${text}`));
336
- } else if (message.logLevel === "warning" || message.category === "Extractor") {
337
- console.warn(`Warning: ${text}`);
338
- } else {
339
- console.log(text);
340
- }
341
310
  }
342
- });
311
+ if (message.logLevel === "error") {
312
+ console.error(chalk__default["default"].red(`Error: ${text}`));
313
+ } else if (message.logLevel === "warning" || message.category === "Extractor") {
314
+ console.warn(`Warning: ${text}`);
315
+ } else {
316
+ console.log(text);
317
+ }
318
+ }
343
319
  });
344
320
  }
345
321
 
@@ -456,4 +432,4 @@ exports.Output = Output;
456
432
  exports.buildPackage = buildPackage;
457
433
  exports.buildPackages = buildPackages;
458
434
  exports.getOutputsForRole = getOutputsForRole;
459
- //# sourceMappingURL=packager-57263112.cjs.js.map
435
+ //# sourceMappingURL=packager-60ad68c9.cjs.js.map
@@ -2,8 +2,8 @@
2
2
 
3
3
  var minimatch = require('minimatch');
4
4
  var getPackages = require('@manypkg/get-packages');
5
- var run = require('./run-43a2e0bb.cjs.js');
6
- var index = require('./index-4605496f.cjs.js');
5
+ var run = require('./run-5fdca9d5.cjs.js');
6
+ var index = require('./index-87dfd82d.cjs.js');
7
7
 
8
8
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
9
 
@@ -28,7 +28,8 @@ async function fetchPackageInfo(name) {
28
28
  }
29
29
  async function mapDependencies(targetDir, pattern) {
30
30
  var _a;
31
- const { packages } = await getPackages.getPackages(targetDir);
31
+ const { packages, root } = await getPackages.getPackages(targetDir);
32
+ packages.push(root);
32
33
  const dependencyMap = /* @__PURE__ */ new Map();
33
34
  for (const pkg of packages) {
34
35
  const deps = DEP_TYPES.flatMap((t) => {
@@ -50,4 +51,4 @@ async function mapDependencies(targetDir, pattern) {
50
51
 
51
52
  exports.fetchPackageInfo = fetchPackageInfo;
52
53
  exports.mapDependencies = mapDependencies;
53
- //# sourceMappingURL=packages-ef539958.cjs.js.map
54
+ //# sourceMappingURL=packages-a5011251.cjs.js.map
@@ -0,0 +1,171 @@
1
+ 'use strict';
2
+
3
+ var os = require('os');
4
+ var worker_threads = require('worker_threads');
5
+
6
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
+
8
+ var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
9
+
10
+ const defaultParallelism = Math.ceil(os__default["default"].cpus().length / 2);
11
+ const PARALLEL_ENV_VAR = "BACKSTAGE_CLI_BUILD_PARALLEL";
12
+ function parseParallelismOption(parallel) {
13
+ if (parallel === void 0 || parallel === null) {
14
+ return defaultParallelism;
15
+ } else if (typeof parallel === "boolean") {
16
+ return parallel ? defaultParallelism : 1;
17
+ } else if (typeof parallel === "number" && Number.isInteger(parallel)) {
18
+ if (parallel < 1) {
19
+ return 1;
20
+ }
21
+ return parallel;
22
+ } else if (typeof parallel === "string") {
23
+ if (parallel === "true") {
24
+ return parseParallelismOption(true);
25
+ } else if (parallel === "false") {
26
+ return parseParallelismOption(false);
27
+ }
28
+ const parsed = Number(parallel);
29
+ if (Number.isInteger(parsed)) {
30
+ return parseParallelismOption(parsed);
31
+ }
32
+ }
33
+ throw Error(`Parallel option value '${parallel}' is not a boolean or integer`);
34
+ }
35
+ function getEnvironmentParallelism() {
36
+ return parseParallelismOption(process.env[PARALLEL_ENV_VAR]);
37
+ }
38
+ async function runParallelWorkers(options) {
39
+ const { parallelismFactor = 1, parallelismSetting, items, worker } = options;
40
+ const parallelism = parallelismSetting ? parseParallelismOption(parallelismSetting) : getEnvironmentParallelism();
41
+ const sharedIterator = items[Symbol.iterator]();
42
+ const sharedIterable = {
43
+ [Symbol.iterator]: () => sharedIterator
44
+ };
45
+ const workerCount = Math.max(Math.floor(parallelismFactor * parallelism), 1);
46
+ return Promise.all(Array(workerCount).fill(0).map(async () => {
47
+ for (const value of sharedIterable) {
48
+ await worker(value);
49
+ }
50
+ }));
51
+ }
52
+ async function runWorkerQueueThreads(options) {
53
+ const items = Array.from(options.items);
54
+ const {
55
+ workerFactory,
56
+ workerData,
57
+ threadCount = Math.min(getEnvironmentParallelism(), items.length)
58
+ } = options;
59
+ const iterator = items[Symbol.iterator]();
60
+ const results = new Array();
61
+ let itemIndex = 0;
62
+ await Promise.all(Array(threadCount).fill(0).map(async () => {
63
+ const thread = new worker_threads.Worker(`(${workerQueueThread})(${workerFactory})`, {
64
+ eval: true,
65
+ workerData
66
+ });
67
+ return new Promise((resolve, reject) => {
68
+ thread.on("message", (message) => {
69
+ if (message.type === "start" || message.type === "result") {
70
+ if (message.type === "result") {
71
+ results[message.index] = message.result;
72
+ }
73
+ const { value, done } = iterator.next();
74
+ if (done) {
75
+ thread.postMessage({ type: "done" });
76
+ } else {
77
+ thread.postMessage({
78
+ type: "item",
79
+ index: itemIndex,
80
+ item: value
81
+ });
82
+ itemIndex += 1;
83
+ }
84
+ } else if (message.type === "error") {
85
+ const error = new Error(message.error.message);
86
+ error.name = message.error.name;
87
+ error.stack = message.error.stack;
88
+ reject(error);
89
+ }
90
+ });
91
+ thread.on("error", reject);
92
+ thread.on("exit", (code) => {
93
+ if (code !== 0) {
94
+ reject(new Error(`Worker thread exited with code ${code}`));
95
+ } else {
96
+ resolve();
97
+ }
98
+ });
99
+ });
100
+ }));
101
+ return results;
102
+ }
103
+ function workerQueueThread(workerFuncFactory) {
104
+ const { parentPort, workerData } = require("worker_threads");
105
+ Promise.resolve().then(() => workerFuncFactory(workerData)).then((workerFunc) => {
106
+ parentPort.on("message", async (message) => {
107
+ if (message.type === "done") {
108
+ parentPort.close();
109
+ return;
110
+ }
111
+ if (message.type === "item") {
112
+ try {
113
+ const result = await workerFunc(message.item);
114
+ parentPort.postMessage({
115
+ type: "result",
116
+ index: message.index,
117
+ result
118
+ });
119
+ } catch (error) {
120
+ parentPort.postMessage({ type: "error", error });
121
+ }
122
+ }
123
+ });
124
+ parentPort.postMessage({ type: "start" });
125
+ }, (error) => parentPort.postMessage({ type: "error", error }));
126
+ }
127
+ async function runWorkerThreads(options) {
128
+ const { worker, workerData, threadCount = 1, onMessage } = options;
129
+ return Promise.all(Array(threadCount).fill(0).map(async () => {
130
+ const thread = new worker_threads.Worker(`(${workerThread})(${worker})`, {
131
+ eval: true,
132
+ workerData
133
+ });
134
+ return new Promise((resolve, reject) => {
135
+ thread.on("message", (message) => {
136
+ if (message.type === "result") {
137
+ resolve(message.result);
138
+ } else if (message.type === "error") {
139
+ reject(message.error);
140
+ } else if (message.type === "message") {
141
+ onMessage == null ? void 0 : onMessage(message.message);
142
+ }
143
+ });
144
+ thread.on("error", reject);
145
+ thread.on("exit", (code) => {
146
+ reject(new Error(`Unexpected worker thread exit with code ${code}`));
147
+ });
148
+ });
149
+ }));
150
+ }
151
+ function workerThread(workerFunc) {
152
+ const { parentPort, workerData } = require("worker_threads");
153
+ const sendMessage = (message) => {
154
+ parentPort.postMessage({ type: "message", message });
155
+ };
156
+ workerFunc(workerData, sendMessage).then((result) => {
157
+ parentPort.postMessage({
158
+ type: "result",
159
+ index: 0,
160
+ result
161
+ });
162
+ }, (error) => {
163
+ parentPort.postMessage({ type: "error", error });
164
+ });
165
+ }
166
+
167
+ exports.getEnvironmentParallelism = getEnvironmentParallelism;
168
+ exports.runParallelWorkers = runParallelWorkers;
169
+ exports.runWorkerQueueThreads = runWorkerQueueThreads;
170
+ exports.runWorkerThreads = runWorkerThreads;
171
+ //# sourceMappingURL=parallel-d8e5bcbf.cjs.js.map
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var chalk = require('chalk');
5
4
  var path = require('path');
6
5
  var ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
7
6
  var HtmlWebpackPlugin = require('html-webpack-plugin');
@@ -12,16 +11,15 @@ var nodeExternals = require('webpack-node-externals');
12
11
  var cliCommon = require('@backstage/cli-common');
13
12
  var getPackages = require('@manypkg/get-packages');
14
13
  var MiniCssExtractPlugin = require('mini-css-extract-plugin');
15
- var svgrTemplate = require('./svgrTemplate-f19e974c.cjs.js');
16
- var index = require('./index-4605496f.cjs.js');
17
- var run = require('./run-43a2e0bb.cjs.js');
14
+ var svgrTemplate = require('./svgrTemplate-b7a4ee52.cjs.js');
15
+ var index = require('./index-87dfd82d.cjs.js');
16
+ var run = require('./run-5fdca9d5.cjs.js');
18
17
  var ESLintPlugin = require('eslint-webpack-plugin');
19
18
  var pickBy = require('lodash/pickBy');
20
19
 
21
20
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
21
 
23
22
  var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
24
- var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
25
23
  var ForkTsCheckerWebpackPlugin__default = /*#__PURE__*/_interopDefaultLegacy(ForkTsCheckerWebpackPlugin);
26
24
  var HtmlWebpackPlugin__default = /*#__PURE__*/_interopDefaultLegacy(HtmlWebpackPlugin);
27
25
  var ModuleScopePlugin__default = /*#__PURE__*/_interopDefaultLegacy(ModuleScopePlugin);
@@ -276,34 +274,10 @@ async function createConfig(paths, options) {
276
274
  plugins.push(new webpack__default["default"].EnvironmentPlugin({
277
275
  APP_CONFIG: options.frontendAppConfigs
278
276
  }));
279
- const appParamDeprecationMsg = chalk__default["default"].red('DEPRECATION WARNING: using `app.<key>` in the index.html template is deprecated, use `config.getString("app.<key>")` instead.');
280
277
  plugins.push(new HtmlWebpackPlugin__default["default"]({
281
278
  template: paths.targetHtml,
282
279
  templateParameters: {
283
280
  publicPath: validBaseUrl.pathname.replace(/\/$/, ""),
284
- app: {
285
- get title() {
286
- console.warn(appParamDeprecationMsg);
287
- return frontendConfig.getString("app.title");
288
- },
289
- get baseUrl() {
290
- console.warn(appParamDeprecationMsg);
291
- return validBaseUrl.href;
292
- },
293
- get googleAnalyticsTrackingId() {
294
- console.warn(appParamDeprecationMsg);
295
- return frontendConfig.getOptionalString("app.googleAnalyticsTrackingId");
296
- },
297
- get datadogRum() {
298
- console.warn(appParamDeprecationMsg);
299
- return {
300
- env: frontendConfig.getOptionalString("app.datadogRum.env"),
301
- clientToken: frontendConfig.getOptionalString("app.datadogRum.clientToken"),
302
- applicationId: frontendConfig.getOptionalString("app.datadogRum.applicationId"),
303
- site: frontendConfig.getOptionalString("app.datadogRum.site")
304
- };
305
- }
306
- },
307
281
  config: frontendConfig
308
282
  }
309
283
  }));
@@ -315,7 +289,9 @@ async function createConfig(paths, options) {
315
289
  try {
316
290
  const { version: reactDomVersion } = require("react-dom/package.json");
317
291
  if (reactDomVersion.startsWith("16.")) {
318
- resolveAliases["react-dom"] = "@hot-loader/react-dom";
292
+ resolveAliases["react-dom"] = "@hot-loader/react-dom-v16";
293
+ } else {
294
+ resolveAliases["react-dom"] = "@hot-loader/react-dom-v17";
319
295
  }
320
296
  } catch (error) {
321
297
  console.warn(`WARNING: Failed to read react-dom version, ${error}`);
@@ -517,4 +493,4 @@ exports.createBackendConfig = createBackendConfig;
517
493
  exports.createConfig = createConfig;
518
494
  exports.resolveBaseUrl = resolveBaseUrl;
519
495
  exports.resolveBundlingPaths = resolveBundlingPaths;
520
- //# sourceMappingURL=paths-2db88422.cjs.js.map
496
+ //# sourceMappingURL=paths-6bb65aa4.cjs.js.map
@@ -2,9 +2,9 @@
2
2
 
3
3
  var yaml = require('yaml');
4
4
  var config$1 = require('@backstage/config');
5
- var config = require('./config-2045332a.cjs.js');
5
+ var config = require('./config-421162a7.cjs.js');
6
6
  require('@backstage/config-loader');
7
- require('./index-4605496f.cjs.js');
7
+ require('./index-87dfd82d.cjs.js');
8
8
  require('commander');
9
9
  require('chalk');
10
10
  require('fs-extra');
@@ -13,7 +13,10 @@ require('@backstage/cli-common');
13
13
  require('@backstage/config/package.json');
14
14
  require('@backstage/errors');
15
15
  require('@manypkg/get-packages');
16
- require('./PackageGraph-f7218931.cjs.js');
16
+ require('./PackageGraph-b00df225.cjs.js');
17
+ require('path');
18
+ require('child_process');
19
+ require('util');
17
20
 
18
21
  var print = async (cmd) => {
19
22
  const { schema, appConfigs } = await config.loadCliConfig({
@@ -59,4 +62,4 @@ function serializeConfigData(appConfigs, schema, visibility) {
59
62
  }
60
63
 
61
64
  exports["default"] = print;
62
- //# sourceMappingURL=print-0be864a4.cjs.js.map
65
+ //# sourceMappingURL=print-1ff6b34f.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var child_process = require('child_process');
4
- var index = require('./index-4605496f.cjs.js');
4
+ var index = require('./index-87dfd82d.cjs.js');
5
5
  var util = require('util');
6
6
  var errors = require('@backstage/errors');
7
7
 
@@ -78,4 +78,4 @@ async function waitForExit(child, name) {
78
78
  exports.run = run;
79
79
  exports.runCheck = runCheck;
80
80
  exports.runPlain = runPlain;
81
- //# sourceMappingURL=run-43a2e0bb.cjs.js.map
81
+ //# sourceMappingURL=run-5fdca9d5.cjs.js.map