@backstage/cli 0.13.1 → 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 +19 -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-13a4b7bd.cjs.js → build-8fd28a6d.cjs.js} +7 -3
  7. package/dist/cjs/{build-e1971801.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-89dd948d.cjs.js → bump-a85eb7bb.cjs.js} +74 -73
  13. package/dist/cjs/{build-7ef7f5f9.cjs.js → bundle-4ce79bce.cjs.js} +10 -49
  14. package/dist/cjs/{bundle-37417344.cjs.js → bundle-b3d9e5ab.cjs.js} +15 -10
  15. package/dist/cjs/{clean-4b42d722.cjs.js → clean-c50d4782.cjs.js} +2 -2
  16. package/dist/cjs/{config-994b1bfd.cjs.js → config-f2365900.cjs.js} +3 -3
  17. package/dist/cjs/{create-dcedc988.cjs.js → create-7ad905e4.cjs.js} +4 -4
  18. package/dist/cjs/createDistWorkspace-f4c0276b.cjs.js +205 -0
  19. package/dist/cjs/{createPlugin-6a69e42a.cjs.js → createPlugin-ba8c6df0.cjs.js} +4 -4
  20. package/dist/cjs/{dev-e999907a.cjs.js → dev-e8f4294f.cjs.js} +7 -32
  21. package/dist/cjs/{diff-28f4f458.cjs.js → diff-7c3a6378.cjs.js} +4 -8
  22. package/dist/cjs/{docs-58816f75.cjs.js → docs-f72a2ec8.cjs.js} +4 -4
  23. package/dist/cjs/index-526e4dc9.cjs.js +94 -0
  24. package/dist/cjs/{index-16b6f41d.cjs.js → index-8b03e1f7.cjs.js} +67 -42
  25. package/dist/cjs/{index-ebeed7eb.cjs.js → index-c953b562.cjs.js} +2 -2
  26. package/dist/cjs/index-d7ee78c4.cjs.js +125 -0
  27. package/dist/cjs/{info-85d98cb4.cjs.js → info-92d051f2.cjs.js} +3 -3
  28. package/dist/cjs/{install-a23596a5.cjs.js → install-1f10c477.cjs.js} +4 -4
  29. package/dist/cjs/lint-a49b0261.cjs.js +35 -0
  30. package/dist/cjs/{lint-40168339.cjs.js → lint-cc10c98e.cjs.js} +3 -3
  31. package/dist/cjs/{build-0546efb7.cjs.js → oldBuild-e0886590.cjs.js} +9 -5
  32. package/dist/cjs/{pack-71b12bff.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-4d2c58d1.cjs.js → packager-3bddd88f.cjs.js} +181 -74
  37. package/dist/cjs/{packages-ad8ea6d7.cjs.js → packages-08c02af1.cjs.js} +3 -3
  38. package/dist/cjs/parallel-e73a4058.cjs.js +48 -0
  39. package/dist/cjs/{paths-5b29b704.cjs.js → paths-f6ca70df.cjs.js} +19 -18
  40. package/dist/cjs/{print-946963ae.cjs.js → print-43232f19.cjs.js} +4 -4
  41. package/dist/cjs/{run-c686c70b.cjs.js → run-8da8f918.cjs.js} +2 -2
  42. package/dist/cjs/{schema-12fa6113.cjs.js → schema-2c7e9598.cjs.js} +4 -4
  43. package/dist/cjs/{serve-2fbcc44e.cjs.js → serve-01190cc4.cjs.js} +8 -8
  44. package/dist/cjs/{serve-8da3cb63.cjs.js → serve-9c68f54d.cjs.js} +7 -7
  45. package/dist/cjs/{server-4ed19c62.cjs.js → server-937c32b4.cjs.js} +2 -2
  46. package/dist/cjs/{tasks-12cc7c7b.cjs.js → tasks-3a7eba1b.cjs.js} +2 -2
  47. package/dist/cjs/{testCommand-01ec5173.cjs.js → testCommand-5cdbf69c.cjs.js} +3 -3
  48. package/dist/cjs/{validate-07fd5d94.cjs.js → validate-697fd284.cjs.js} +4 -4
  49. package/dist/index.cjs.js +1 -1
  50. package/package.json +9 -6
  51. package/dist/cjs/buildWorkspace-e9feb879.cjs.js +0 -35
  52. package/dist/cjs/index-c4147846.cjs.js +0 -106
  53. package/dist/cjs/lint-f8292a5c.cjs.js +0 -29
  54. package/dist/cjs/parallel-7e32a8d0.cjs.js +0 -25
@@ -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-16b6f41d.cjs.js');
7
+ var index = require('./index-8b03e1f7.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');
@@ -16,6 +16,9 @@ var json = require('@rollup/plugin-json');
16
16
  var yaml = require('@rollup/plugin-yaml');
17
17
  var rollupPluginutils = require('rollup-pluginutils');
18
18
  var svgrTemplate = require('./svgrTemplate-f19e974c.cjs.js');
19
+ var worker_threads = require('worker_threads');
20
+ var packageRoles = require('./packageRoles-f4b169a7.cjs.js');
21
+ var parallel = require('./parallel-e73a4058.cjs.js');
19
22
 
20
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
24
 
@@ -96,13 +99,26 @@ var Output = /* @__PURE__ */ ((Output2) => {
96
99
  })(Output || {});
97
100
 
98
101
  async function makeRollupConfigs(options) {
102
+ var _a;
99
103
  const configs = new Array();
104
+ const targetDir = (_a = options.targetDir) != null ? _a : index.paths.targetDir;
105
+ const onwarn = ({ code, message }) => {
106
+ if (code === "EMPTY_BUNDLE") {
107
+ return;
108
+ }
109
+ if (options.logPrefix) {
110
+ console.log(options.logPrefix + message);
111
+ } else {
112
+ console.log(message);
113
+ }
114
+ };
115
+ const distDir = path.resolve(targetDir, "dist");
100
116
  if (options.outputs.has(Output.cjs) || options.outputs.has(Output.esm)) {
101
117
  const output = new Array();
102
118
  const mainFields = ["module", "main"];
103
119
  if (options.outputs.has(Output.cjs)) {
104
120
  output.push({
105
- dir: "dist",
121
+ dir: distDir,
106
122
  entryFileNames: "index.cjs.js",
107
123
  chunkFileNames: "cjs/[name]-[hash].cjs.js",
108
124
  format: "commonjs",
@@ -111,7 +127,7 @@ async function makeRollupConfigs(options) {
111
127
  }
112
128
  if (options.outputs.has(Output.esm)) {
113
129
  output.push({
114
- dir: "dist",
130
+ dir: distDir,
115
131
  entryFileNames: "index.esm.js",
116
132
  chunkFileNames: "esm/[name]-[hash].esm.js",
117
133
  format: "module",
@@ -120,12 +136,14 @@ async function makeRollupConfigs(options) {
120
136
  mainFields.unshift("browser");
121
137
  }
122
138
  configs.push({
123
- input: "src/index.ts",
139
+ input: path.resolve(targetDir, "src/index.ts"),
124
140
  output,
141
+ onwarn,
125
142
  preserveEntrySignatures: "strict",
126
143
  external: require("module").builtinModules,
127
144
  plugins: [
128
145
  peerDepsExternal__default["default"]({
146
+ packageJsonPath: path.resolve(targetDir, "package.json"),
129
147
  includeDependencies: true
130
148
  }),
131
149
  resolve__default["default"]({ mainFields }),
@@ -162,111 +180,167 @@ async function makeRollupConfigs(options) {
162
180
  });
163
181
  }
164
182
  if (options.outputs.has(Output.types) && !options.useApiExtractor) {
165
- const typesInput = index.paths.resolveTargetRoot("dist-types", path.relative(index.paths.targetRoot, index.paths.targetDir), "src/index.d.ts");
183
+ const typesInput = index.paths.resolveTargetRoot("dist-types", path.relative(index.paths.targetRoot, targetDir), "src/index.d.ts");
166
184
  const declarationsExist = await fs__default["default"].pathExists(typesInput);
167
185
  if (!declarationsExist) {
168
- const path$1 = path.relative(index.paths.targetDir, typesInput);
186
+ const path$1 = path.relative(targetDir, typesInput);
169
187
  throw new Error(`No declaration files found at ${path$1}, be sure to run ${chalk__default["default"].bgRed.white("yarn tsc")} to generate .d.ts files before packaging`);
170
188
  }
171
189
  configs.push({
172
190
  input: typesInput,
173
191
  output: {
174
- file: "dist/index.d.ts",
192
+ file: path.resolve(distDir, "index.d.ts"),
175
193
  format: "es"
176
194
  },
195
+ onwarn,
177
196
  plugins: [dts__default["default"]()]
178
197
  });
179
198
  }
180
199
  return configs;
181
200
  }
182
201
 
183
- const ignoredMessages = /* @__PURE__ */ new Set(["tsdoc-undefined-tag", "ae-forgotten-export"]);
184
- let apiExtractor;
185
- function prepareApiExtractor() {
186
- if (apiExtractor) {
187
- return apiExtractor;
188
- }
202
+ function buildTypeDefinitionsWorker() {
189
203
  try {
190
- apiExtractor = require("@microsoft/api-extractor");
204
+ require("@microsoft/api-extractor");
191
205
  } catch (error) {
192
206
  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");
193
207
  }
208
+ const { dirname } = require("path");
209
+ const { workerData, parentPort } = require("worker_threads");
210
+ const { entryPoints, workerConfigs, typescriptCompilerFolder } = workerData;
211
+ const apiExtractor = require("@microsoft/api-extractor");
212
+ const { Extractor, ExtractorConfig, CompilerState } = apiExtractor;
194
213
  const {
195
214
  PackageJsonLookup
196
215
  } = require("@rushstack/node-core-library/lib/PackageJsonLookup");
197
216
  const old = PackageJsonLookup.prototype.tryGetPackageJsonFilePathFor;
198
- PackageJsonLookup.prototype.tryGetPackageJsonFilePathFor = function tryGetPackageJsonFilePathForPatch(path$1) {
199
- if (path$1.includes("@material-ui") && !path.dirname(path$1).endsWith("@material-ui")) {
217
+ PackageJsonLookup.prototype.tryGetPackageJsonFilePathFor = function tryGetPackageJsonFilePathForPatch(path) {
218
+ if (path.includes("@material-ui") && !dirname(path).endsWith("@material-ui")) {
200
219
  return void 0;
201
220
  }
202
- return old.call(this, path$1);
221
+ return old.call(this, path);
203
222
  };
204
- return apiExtractor;
205
- }
206
- async function buildTypeDefinitions() {
207
- const { Extractor, ExtractorConfig } = prepareApiExtractor();
208
- const distTypesPackageDir = index.paths.resolveTargetRoot("dist-types", path.relative(index.paths.targetRoot, index.paths.targetDir));
209
- const entryPoint = path.resolve(distTypesPackageDir, "src/index.d.ts");
210
- const declarationsExist = await fs__default["default"].pathExists(entryPoint);
211
- if (!declarationsExist) {
212
- const path$1 = path.relative(index.paths.targetDir, entryPoint);
213
- throw new Error(`No declaration files found at ${path$1}, be sure to run ${chalk__default["default"].bgRed.white("yarn tsc")} to generate .d.ts files before packaging`);
223
+ let success = true;
224
+ let compilerState;
225
+ for (const { extractorOptions, targetTypesDir } of workerConfigs) {
226
+ const extractorConfig = ExtractorConfig.prepare(extractorOptions);
227
+ if (!compilerState) {
228
+ compilerState = CompilerState.create(extractorConfig, {
229
+ additionalEntryPoints: entryPoints
230
+ });
231
+ }
232
+ const extractorResult = Extractor.invoke(extractorConfig, {
233
+ compilerState,
234
+ localBuild: false,
235
+ typescriptCompilerFolder,
236
+ showVerboseMessages: false,
237
+ showDiagnostics: false,
238
+ messageCallback: (message) => {
239
+ message.handled = true;
240
+ parentPort.postMessage({ type: "message", message, targetTypesDir });
241
+ }
242
+ });
243
+ 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;
250
+ }
214
251
  }
215
- const extractorConfig = ExtractorConfig.prepare({
216
- configObject: {
217
- mainEntryPointFilePath: entryPoint,
218
- bundledPackages: [],
219
- compiler: {
220
- skipLibCheck: true,
221
- tsconfigFilePath: index.paths.resolveTargetRoot("tsconfig.json")
222
- },
223
- dtsRollup: {
224
- enabled: true,
225
- untrimmedFilePath: index.paths.resolveTarget("dist/index.alpha.d.ts"),
226
- betaTrimmedFilePath: index.paths.resolveTarget("dist/index.beta.d.ts"),
227
- publicTrimmedFilePath: index.paths.resolveTarget("dist/index.d.ts")
252
+ if (success) {
253
+ parentPort.postMessage({ type: "done" });
254
+ }
255
+ }
256
+
257
+ const ignoredMessages = /* @__PURE__ */ new Set(["tsdoc-undefined-tag", "ae-forgotten-export"]);
258
+ async function buildTypeDefinitions(targetDirs = [index.paths.targetDir]) {
259
+ const packageDirs = targetDirs.map((dir) => path.relative(index.paths.targetRoot, dir));
260
+ const entryPoints = await Promise.all(packageDirs.map(async (dir) => {
261
+ const entryPoint = index.paths.resolveTargetRoot("dist-types", dir, "src/index.d.ts");
262
+ const declarationsExist = await fs__default["default"].pathExists(entryPoint);
263
+ if (!declarationsExist) {
264
+ throw new Error(`No declaration files found at ${entryPoint}, be sure to run ${chalk__default["default"].bgRed.white("yarn tsc")} to generate .d.ts files before packaging`);
265
+ }
266
+ return entryPoint;
267
+ }));
268
+ const workerConfigs = packageDirs.map((packageDir) => {
269
+ const targetDir = index.paths.resolveTargetRoot(packageDir);
270
+ const targetTypesDir = index.paths.resolveTargetRoot("dist-types", packageDir);
271
+ const extractorOptions = {
272
+ configObject: {
273
+ mainEntryPointFilePath: path.resolve(targetTypesDir, "src/index.d.ts"),
274
+ bundledPackages: [],
275
+ compiler: {
276
+ skipLibCheck: true,
277
+ tsconfigFilePath: index.paths.resolveTargetRoot("tsconfig.json")
278
+ },
279
+ dtsRollup: {
280
+ enabled: true,
281
+ untrimmedFilePath: path.resolve(targetDir, "dist/index.alpha.d.ts"),
282
+ betaTrimmedFilePath: path.resolve(targetDir, "dist/index.beta.d.ts"),
283
+ publicTrimmedFilePath: path.resolve(targetDir, "dist/index.d.ts")
284
+ },
285
+ newlineKind: "lf",
286
+ projectFolder: targetDir
228
287
  },
229
- newlineKind: "lf",
230
- projectFolder: index.paths.targetDir
231
- },
232
- configObjectFullPath: index.paths.targetDir,
233
- packageJsonFullPath: index.paths.resolveTarget("package.json")
288
+ configObjectFullPath: targetDir,
289
+ packageJsonFullPath: path.resolve(targetDir, "package.json")
290
+ };
291
+ return { extractorOptions, targetTypesDir };
234
292
  });
235
293
  const typescriptDir = index.paths.resolveTargetRoot("node_modules/typescript");
236
294
  const hasTypescript = await fs__default["default"].pathExists(typescriptDir);
237
- const extractorResult = Extractor.invoke(extractorConfig, {
238
- typescriptCompilerFolder: hasTypescript ? typescriptDir : void 0,
239
- localBuild: false,
240
- showVerboseMessages: false,
241
- showDiagnostics: false,
242
- messageCallback(message) {
243
- message.handled = true;
244
- if (ignoredMessages.has(message.messageId)) {
245
- return;
295
+ const typescriptCompilerFolder = hasTypescript ? typescriptDir : void 0;
296
+ const worker = new worker_threads.Worker(`(${buildTypeDefinitionsWorker})()`, {
297
+ eval: true,
298
+ workerData: {
299
+ entryPoints,
300
+ workerConfigs,
301
+ 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}`));
246
309
  }
247
- let text = `${message.text} (${message.messageId})`;
248
- if (message.sourceFilePath) {
249
- text += " at ";
250
- text += path.relative(distTypesPackageDir, message.sourceFilePath);
251
- if (message.sourceFileLine) {
252
- text += `:${message.sourceFileLine}`;
253
- if (message.sourceFileColumn) {
254
- text += `:${message.sourceFileColumn}`;
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
+ }
255
332
  }
256
333
  }
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
+ }
257
341
  }
258
- if (message.logLevel === "error") {
259
- console.error(chalk__default["default"].red(`Error: ${text}`));
260
- } else if (message.logLevel === "warning" || message.category === "Extractor") {
261
- console.warn(`Warning: ${text}`);
262
- } else {
263
- console.log(text);
264
- }
265
- }
342
+ });
266
343
  });
267
- if (!extractorResult.succeeded) {
268
- throw new Error(`Type definition build completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`);
269
- }
270
344
  }
271
345
 
272
346
  function formatErrorMessage(error) {
@@ -346,7 +420,40 @@ const buildPackage = async (options) => {
346
420
  }
347
421
  await Promise.all(buildTasks);
348
422
  };
423
+ const buildPackages = async (options) => {
424
+ if (options.some((opt) => !opt.targetDir)) {
425
+ throw new Error("targetDir must be set for all build options");
426
+ }
427
+ const rollupConfigs = await Promise.all(options.map(makeRollupConfigs));
428
+ await Promise.all(options.map(({ targetDir }) => fs__default["default"].remove(path.resolve(targetDir, "dist"))));
429
+ const buildTasks = rollupConfigs.flat().map((opts) => () => rollupBuild(opts));
430
+ const typeDefinitionTargetDirs = options.filter(({ outputs, useApiExtractor }) => outputs.has(Output.types) && useApiExtractor).map((_) => _.targetDir);
431
+ if (typeDefinitionTargetDirs.length > 0) {
432
+ buildTasks.unshift(() => buildTypeDefinitions(typeDefinitionTargetDirs));
433
+ }
434
+ await parallel.runParallelWorkers({
435
+ items: buildTasks,
436
+ worker: async (task) => task()
437
+ });
438
+ };
439
+ function getOutputsForRole(role) {
440
+ const outputs = /* @__PURE__ */ new Set();
441
+ for (const output of packageRoles.getRoleInfo(role).output) {
442
+ if (output === "cjs") {
443
+ outputs.add(Output.cjs);
444
+ }
445
+ if (output === "esm") {
446
+ outputs.add(Output.esm);
447
+ }
448
+ if (output === "types") {
449
+ outputs.add(Output.types);
450
+ }
451
+ }
452
+ return outputs;
453
+ }
349
454
 
350
455
  exports.Output = Output;
351
456
  exports.buildPackage = buildPackage;
352
- //# sourceMappingURL=packager-4d2c58d1.cjs.js.map
457
+ exports.buildPackages = buildPackages;
458
+ exports.getOutputsForRole = getOutputsForRole;
459
+ //# sourceMappingURL=packager-3bddd88f.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-c686c70b.cjs.js');
6
- var index = require('./index-16b6f41d.cjs.js');
5
+ var run = require('./run-8da8f918.cjs.js');
6
+ var index = require('./index-8b03e1f7.cjs.js');
7
7
 
8
8
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
9
 
@@ -50,4 +50,4 @@ async function mapDependencies(targetDir, pattern) {
50
50
 
51
51
  exports.fetchPackageInfo = fetchPackageInfo;
52
52
  exports.mapDependencies = mapDependencies;
53
- //# sourceMappingURL=packages-ad8ea6d7.cjs.js.map
53
+ //# sourceMappingURL=packages-08c02af1.cjs.js.map
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ const DEFAULT_PARALLELISM = 4;
4
+ const PARALLEL_ENV_VAR = "BACKSTAGE_CLI_BUILD_PARALLEL";
5
+ function parseParallelismOption(parallel) {
6
+ if (parallel === void 0 || parallel === null) {
7
+ return DEFAULT_PARALLELISM;
8
+ } else if (typeof parallel === "boolean") {
9
+ return parallel ? DEFAULT_PARALLELISM : 1;
10
+ } else if (typeof parallel === "number" && Number.isInteger(parallel)) {
11
+ if (parallel < 1) {
12
+ return 1;
13
+ }
14
+ return parallel;
15
+ } else if (typeof parallel === "string") {
16
+ if (parallel === "true") {
17
+ return parseParallelismOption(true);
18
+ } else if (parallel === "false") {
19
+ return parseParallelismOption(false);
20
+ }
21
+ const parsed = Number(parallel);
22
+ if (Number.isInteger(parsed)) {
23
+ return parseParallelismOption(parsed);
24
+ }
25
+ }
26
+ throw Error(`Parallel option value '${parallel}' is not a boolean or integer`);
27
+ }
28
+ function getEnvironmentParallelism() {
29
+ return parseParallelismOption(process.env[PARALLEL_ENV_VAR]);
30
+ }
31
+ async function runParallelWorkers(options) {
32
+ const { parallelismFactor = 1, parallelismSetting, items, worker } = options;
33
+ const parallelism = parallelismSetting ? parseParallelismOption(parallelismSetting) : getEnvironmentParallelism();
34
+ const sharedIterator = items[Symbol.iterator]();
35
+ const sharedIterable = {
36
+ [Symbol.iterator]: () => sharedIterator
37
+ };
38
+ const workerCount = Math.max(Math.floor(parallelismFactor * parallelism), 1);
39
+ return Promise.all(Array(workerCount).fill(0).map(async () => {
40
+ for (const value of sharedIterable) {
41
+ await worker(value);
42
+ }
43
+ }));
44
+ }
45
+
46
+ exports.getEnvironmentParallelism = getEnvironmentParallelism;
47
+ exports.runParallelWorkers = runParallelWorkers;
48
+ //# sourceMappingURL=parallel-e73a4058.cjs.js.map
@@ -13,8 +13,8 @@ var cliCommon = require('@backstage/cli-common');
13
13
  var getPackages = require('@manypkg/get-packages');
14
14
  var MiniCssExtractPlugin = require('mini-css-extract-plugin');
15
15
  var svgrTemplate = require('./svgrTemplate-f19e974c.cjs.js');
16
- var index = require('./index-16b6f41d.cjs.js');
17
- var run = require('./run-c686c70b.cjs.js');
16
+ var index = require('./index-8b03e1f7.cjs.js');
17
+ var run = require('./run-8da8f918.cjs.js');
18
18
  var ESLintPlugin = require('eslint-webpack-plugin');
19
19
  var pickBy = require('lodash/pickBy');
20
20
 
@@ -38,7 +38,8 @@ const optimization = (options) => {
38
38
  minimize: !isDev,
39
39
  minimizer: [
40
40
  new ESBuildMinifyPlugin({
41
- target: "es2019"
41
+ target: "es2019",
42
+ format: "iife"
42
43
  })
43
44
  ],
44
45
  runtimeChunk: "single",
@@ -262,7 +263,7 @@ async function createConfig(paths, options) {
262
263
  const validBaseUrl = new URL(baseUrl);
263
264
  if (checksEnabled) {
264
265
  plugins.push(new ForkTsCheckerWebpackPlugin__default["default"]({
265
- typescript: { configFile: paths.targetTsConfig }
266
+ typescript: { configFile: paths.targetTsConfig, memoryLimit: 4096 }
266
267
  }), new ESLintPlugin__default["default"]({
267
268
  context: paths.targetPath,
268
269
  files: ["**", "!**/__tests__/**", "!**/?(*.)(spec|test).*"]
@@ -473,40 +474,40 @@ function nodeExternalsWithResolve(options) {
473
474
  }
474
475
 
475
476
  function resolveBundlingPaths(options) {
476
- const { entry } = options;
477
+ const { entry, targetDir = index.paths.targetDir } = options;
477
478
  const resolveTargetModule = (pathString) => {
478
479
  for (const ext of ["mjs", "js", "ts", "tsx", "jsx"]) {
479
- const filePath = index.paths.resolveTarget(`${pathString}.${ext}`);
480
+ const filePath = path.resolve(targetDir, `${pathString}.${ext}`);
480
481
  if (fs__default["default"].pathExistsSync(filePath)) {
481
482
  return filePath;
482
483
  }
483
484
  }
484
- return index.paths.resolveTarget(`${pathString}.js`);
485
+ return path.resolve(targetDir, `${pathString}.js`);
485
486
  };
486
487
  let targetPublic = void 0;
487
- let targetHtml = index.paths.resolveTarget("public/index.html");
488
+ let targetHtml = path.resolve(targetDir, "public/index.html");
488
489
  if (fs__default["default"].pathExistsSync(targetHtml)) {
489
- targetPublic = index.paths.resolveTarget("public");
490
+ targetPublic = path.resolve(targetDir, "public");
490
491
  } else {
491
- targetHtml = index.paths.resolveTarget(`${entry}.html`);
492
+ targetHtml = path.resolve(targetDir, `${entry}.html`);
492
493
  if (!fs__default["default"].pathExistsSync(targetHtml)) {
493
494
  targetHtml = index.paths.resolveOwn("templates/serve_index.html");
494
495
  }
495
496
  }
496
- const targetRunFile = index.paths.resolveTarget("src/run.ts");
497
+ const targetRunFile = path.resolve(targetDir, "src/run.ts");
497
498
  const runFileExists = fs__default["default"].pathExistsSync(targetRunFile);
498
499
  return {
499
500
  targetHtml,
500
501
  targetPublic,
501
- targetPath: index.paths.resolveTarget("."),
502
+ targetPath: path.resolve(targetDir, "."),
502
503
  targetRunFile: runFileExists ? targetRunFile : void 0,
503
- targetDist: index.paths.resolveTarget("dist"),
504
- targetAssets: index.paths.resolveTarget("assets"),
505
- targetSrc: index.paths.resolveTarget("src"),
506
- targetDev: index.paths.resolveTarget("dev"),
504
+ targetDist: path.resolve(targetDir, "dist"),
505
+ targetAssets: path.resolve(targetDir, "assets"),
506
+ targetSrc: path.resolve(targetDir, "src"),
507
+ targetDev: path.resolve(targetDir, "dev"),
507
508
  targetEntry: resolveTargetModule(entry),
508
509
  targetTsConfig: index.paths.resolveTargetRoot("tsconfig.json"),
509
- targetPackageJson: index.paths.resolveTarget("package.json"),
510
+ targetPackageJson: path.resolve(targetDir, "package.json"),
510
511
  rootNodeModules: index.paths.resolveTargetRoot("node_modules"),
511
512
  root: index.paths.targetRoot
512
513
  };
@@ -516,4 +517,4 @@ exports.createBackendConfig = createBackendConfig;
516
517
  exports.createConfig = createConfig;
517
518
  exports.resolveBaseUrl = resolveBaseUrl;
518
519
  exports.resolveBundlingPaths = resolveBundlingPaths;
519
- //# sourceMappingURL=paths-5b29b704.cjs.js.map
520
+ //# sourceMappingURL=paths-f6ca70df.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-994b1bfd.cjs.js');
5
+ var config = require('./config-f2365900.cjs.js');
6
6
  require('@backstage/config-loader');
7
- require('./index-16b6f41d.cjs.js');
7
+ require('./index-8b03e1f7.cjs.js');
8
8
  require('commander');
9
9
  require('chalk');
10
10
  require('fs-extra');
@@ -13,7 +13,7 @@ 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-7a0d3a83.cjs.js');
16
+ require('./PackageGraph-96b2e6ef.cjs.js');
17
17
 
18
18
  var print = async (cmd) => {
19
19
  const { schema, appConfigs } = await config.loadCliConfig({
@@ -59,4 +59,4 @@ function serializeConfigData(appConfigs, schema, visibility) {
59
59
  }
60
60
 
61
61
  exports["default"] = print;
62
- //# sourceMappingURL=print-946963ae.cjs.js.map
62
+ //# sourceMappingURL=print-43232f19.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-16b6f41d.cjs.js');
4
+ var index = require('./index-8b03e1f7.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-c686c70b.cjs.js.map
81
+ //# sourceMappingURL=run-8da8f918.cjs.js.map
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var yaml = require('yaml');
4
- var config = require('./config-994b1bfd.cjs.js');
4
+ var config = require('./config-f2365900.cjs.js');
5
5
  var configLoader = require('@backstage/config-loader');
6
6
  require('@backstage/config');
7
- require('./index-16b6f41d.cjs.js');
7
+ require('./index-8b03e1f7.cjs.js');
8
8
  require('commander');
9
9
  require('chalk');
10
10
  require('fs-extra');
@@ -13,7 +13,7 @@ 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-7a0d3a83.cjs.js');
16
+ require('./PackageGraph-96b2e6ef.cjs.js');
17
17
 
18
18
  var schema = async (cmd) => {
19
19
  const { schema } = await config.loadCliConfig({
@@ -34,4 +34,4 @@ var schema = async (cmd) => {
34
34
  };
35
35
 
36
36
  exports["default"] = schema;
37
- //# sourceMappingURL=schema-12fa6113.cjs.js.map
37
+ //# sourceMappingURL=schema-2c7e9598.cjs.js.map
@@ -12,20 +12,20 @@ require('run-script-webpack-plugin');
12
12
  require('webpack-node-externals');
13
13
  require('@backstage/cli-common');
14
14
  require('@manypkg/get-packages');
15
- require('./paths-5b29b704.cjs.js');
15
+ require('./paths-f6ca70df.cjs.js');
16
16
  require('mini-css-extract-plugin');
17
- var index = require('./index-16b6f41d.cjs.js');
18
- require('./run-c686c70b.cjs.js');
17
+ var index = require('./index-8b03e1f7.cjs.js');
18
+ require('./run-8da8f918.cjs.js');
19
19
  require('eslint-webpack-plugin');
20
20
  require('lodash/pickBy');
21
21
  require('yn');
22
22
  require('react-dev-utils/FileSizeReporter');
23
23
  require('react-dev-utils/formatWebpackMessages');
24
- var server = require('./server-4ed19c62.cjs.js');
25
- var config = require('./config-994b1bfd.cjs.js');
24
+ var server = require('./server-937c32b4.cjs.js');
25
+ var config = require('./config-f2365900.cjs.js');
26
26
  var Lockfile = require('./Lockfile-35661afa.cjs.js');
27
27
  require('minimatch');
28
- var lint = require('./lint-40168339.cjs.js');
28
+ var lint = require('./lint-cc10c98e.cjs.js');
29
29
  require('./svgrTemplate-f19e974c.cjs.js');
30
30
  require('commander');
31
31
  require('semver');
@@ -37,7 +37,7 @@ require('webpack-dev-server');
37
37
  require('react-dev-utils/openBrowser');
38
38
  require('@backstage/config-loader');
39
39
  require('@backstage/config');
40
- require('./PackageGraph-7a0d3a83.cjs.js');
40
+ require('./PackageGraph-96b2e6ef.cjs.js');
41
41
  require('@yarnpkg/lockfile');
42
42
  require('lodash/partition');
43
43
 
@@ -94,4 +94,4 @@ var serve = async (cmd) => {
94
94
  };
95
95
 
96
96
  exports["default"] = serve;
97
- //# sourceMappingURL=serve-2fbcc44e.cjs.js.map
97
+ //# sourceMappingURL=serve-01190cc4.cjs.js.map
@@ -11,17 +11,17 @@ require('run-script-webpack-plugin');
11
11
  require('webpack-node-externals');
12
12
  require('@backstage/cli-common');
13
13
  require('@manypkg/get-packages');
14
- require('./paths-5b29b704.cjs.js');
14
+ require('./paths-f6ca70df.cjs.js');
15
15
  require('mini-css-extract-plugin');
16
- var index = require('./index-16b6f41d.cjs.js');
17
- require('./run-c686c70b.cjs.js');
16
+ var index = require('./index-8b03e1f7.cjs.js');
17
+ require('./run-8da8f918.cjs.js');
18
18
  require('eslint-webpack-plugin');
19
19
  require('lodash/pickBy');
20
20
  require('yn');
21
21
  require('react-dev-utils/FileSizeReporter');
22
22
  require('react-dev-utils/formatWebpackMessages');
23
- var server = require('./server-4ed19c62.cjs.js');
24
- var config = require('./config-994b1bfd.cjs.js');
23
+ var server = require('./server-937c32b4.cjs.js');
24
+ var config = require('./config-f2365900.cjs.js');
25
25
  require('./svgrTemplate-f19e974c.cjs.js');
26
26
  require('commander');
27
27
  require('semver');
@@ -33,7 +33,7 @@ require('webpack-dev-server');
33
33
  require('react-dev-utils/openBrowser');
34
34
  require('@backstage/config-loader');
35
35
  require('@backstage/config');
36
- require('./PackageGraph-7a0d3a83.cjs.js');
36
+ require('./PackageGraph-96b2e6ef.cjs.js');
37
37
 
38
38
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
39
39
 
@@ -54,4 +54,4 @@ var serve = async (cmd) => {
54
54
  };
55
55
 
56
56
  exports["default"] = serve;
57
- //# sourceMappingURL=serve-8da3cb63.cjs.js.map
57
+ //# sourceMappingURL=serve-9c68f54d.cjs.js.map