@backstage/cli 0.18.0 → 0.18.1-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 (45) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/{Lockfile-48dc675e.cjs.js → Lockfile-72b7072e.cjs.js} +25 -9
  3. package/dist/cjs/{PackageGraph-1d7b086a.cjs.js → PackageGraph-6e1d4bd4.cjs.js} +17 -9
  4. package/dist/cjs/{build-52ba70a2.cjs.js → build-3b11f7c9.cjs.js} +26 -15
  5. package/dist/cjs/{buildBackend-55985c84.cjs.js → buildBackend-87996ad4.cjs.js} +61 -36
  6. package/dist/cjs/{buildWorkspace-d663903d.cjs.js → buildWorkspace-425726da.cjs.js} +7 -7
  7. package/dist/cjs/{bump-1a3769e9.cjs.js → bump-f3c6b3cd.cjs.js} +88 -33
  8. package/dist/cjs/{clean-9a8c294a.cjs.js → clean-798512b5.cjs.js} +2 -2
  9. package/dist/cjs/{config-de1bf46a.cjs.js → config-4a59f918.cjs.js} +15 -11
  10. package/dist/cjs/{create-b0ca2add.cjs.js → create-a7269bb5.cjs.js} +80 -32
  11. package/dist/cjs/{createDistWorkspace-fc94c796.cjs.js → createDistWorkspace-cb9a9a84.cjs.js} +137 -65
  12. package/dist/cjs/{createPlugin-4d7e1b01.cjs.js → createPlugin-fca2c26e.cjs.js} +69 -30
  13. package/dist/cjs/{diff-a561bee3.cjs.js → diff-3dec490d.cjs.js} +68 -16
  14. package/dist/cjs/{docs-bd70b38e.cjs.js → docs-e60d4fe7.cjs.js} +9 -5
  15. package/dist/cjs/{fix-47eb8dc4.cjs.js → fix-b60a5395.cjs.js} +17 -7
  16. package/dist/cjs/{index-27d57881.cjs.js → index-131467e2.cjs.js} +10 -10
  17. package/dist/cjs/{index-7e13cc9d.cjs.js → index-50703ee1.cjs.js} +151 -50
  18. package/dist/cjs/{index-4f4a8498.cjs.js → index-71d143d5.cjs.js} +57 -38
  19. package/dist/cjs/{index-bb24147b.cjs.js → index-7efbd23e.cjs.js} +39 -12
  20. package/dist/cjs/{info-29f0ee36.cjs.js → info-04610119.cjs.js} +20 -6
  21. package/dist/cjs/{install-fea0e3f5.cjs.js → install-589f1c25.cjs.js} +44 -17
  22. package/dist/cjs/{lint-81a75364.cjs.js → lint-41010f96.cjs.js} +37 -11
  23. package/dist/cjs/{lint-1711bbbb.cjs.js → lint-6fcb9a70.cjs.js} +5 -3
  24. package/dist/cjs/{lint-0db8937c.cjs.js → lint-7f6b0d33.cjs.js} +4 -4
  25. package/dist/cjs/{list-deprecations-cea8fad3.cjs.js → list-deprecations-8aee2123.cjs.js} +3 -3
  26. package/dist/cjs/{pack-8ab429c0.cjs.js → pack-91881c2f.cjs.js} +17 -11
  27. package/dist/cjs/packageLintConfigs-f9e5fcc6.cjs.js +83 -0
  28. package/dist/cjs/packageRole-16eb6c89.cjs.js +59 -0
  29. package/dist/cjs/{packageRoles-a310f84c.cjs.js → packageRoles-96528891.cjs.js} +5 -3
  30. package/dist/cjs/packageScripts-eb2443c2.cjs.js +98 -0
  31. package/dist/cjs/{packages-ea5c38ec.cjs.js → packages-1b40c101.cjs.js} +17 -12
  32. package/dist/cjs/parallel-a8f6219c.cjs.js +187 -0
  33. package/dist/cjs/{paths-d98c9d0c.cjs.js → paths-b34f135a.cjs.js} +100 -55
  34. package/dist/cjs/{print-4cbe70e7.cjs.js → print-e99d7c2e.cjs.js} +4 -4
  35. package/dist/cjs/{run-5e05ba2c.cjs.js → run-722b1384.cjs.js} +2 -2
  36. package/dist/cjs/{schema-2c842cbe.cjs.js → schema-c636e913.cjs.js} +9 -5
  37. package/dist/cjs/{tasks-b054c9ce.cjs.js → tasks-4776baa6.cjs.js} +29 -12
  38. package/dist/cjs/{test-b5969f53.cjs.js → test-76539f57.cjs.js} +3 -3
  39. package/dist/cjs/{validate-8a03d402.cjs.js → validate-f9273594.cjs.js} +4 -4
  40. package/dist/index.cjs.js +1 -1
  41. package/package.json +12 -12
  42. package/dist/cjs/packageLintConfigs-77b71b79.cjs.js +0 -74
  43. package/dist/cjs/packageRole-d1e7c7d6.cjs.js +0 -53
  44. package/dist/cjs/packageScripts-6731503e.cjs.js +0 -96
  45. package/dist/cjs/parallel-8286d3fa.cjs.js +0 -171
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-7e13cc9d.cjs.js');
4
+ var index = require('./index-50703ee1.cjs.js');
5
5
  require('commander');
6
6
  require('chalk');
7
7
  require('semver');
@@ -19,4 +19,4 @@ async function clean() {
19
19
  }
20
20
 
21
21
  exports["default"] = clean;
22
- //# sourceMappingURL=clean-9a8c294a.cjs.js.map
22
+ //# sourceMappingURL=clean-798512b5.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-7e13cc9d.cjs.js');
5
+ var index = require('./index-50703ee1.cjs.js');
6
6
  var getPackages = require('@manypkg/get-packages');
7
- var PackageGraph = require('./PackageGraph-1d7b086a.cjs.js');
7
+ var PackageGraph = require('./PackageGraph-6e1d4bd4.cjs.js');
8
8
 
9
9
  function isValidUrl(url) {
10
10
  try {
@@ -27,12 +27,14 @@ async function loadCliConfig(options) {
27
27
  if (options.fromPackage) {
28
28
  if (packages.length) {
29
29
  const graph = PackageGraph.PackageGraph.fromPackages(packages);
30
- localPackageNames = Array.from(graph.collectPackageNames([options.fromPackage], (node) => {
31
- if (node.name === "@backstage/cli") {
32
- return void 0;
33
- }
34
- return node.localDependencies.keys();
35
- }));
30
+ localPackageNames = Array.from(
31
+ graph.collectPackageNames([options.fromPackage], (node) => {
32
+ if (node.name === "@backstage/cli") {
33
+ return void 0;
34
+ }
35
+ return node.localDependencies.keys();
36
+ })
37
+ );
36
38
  } else {
37
39
  localPackageNames = [options.fromPackage];
38
40
  }
@@ -48,8 +50,10 @@ async function loadCliConfig(options) {
48
50
  configRoot: index.paths.targetRoot,
49
51
  configTargets
50
52
  });
51
- process.stderr.write(`Loaded config from ${appConfigs.map((c) => c.context).join(", ")}
52
- `);
53
+ process.stderr.write(
54
+ `Loaded config from ${appConfigs.map((c) => c.context).join(", ")}
55
+ `
56
+ );
53
57
  try {
54
58
  const frontendAppConfigs = schema.process(appConfigs, {
55
59
  visibility: options.fullVisibility ? ["frontend", "backend", "secret"] : ["frontend"],
@@ -76,4 +80,4 @@ async function loadCliConfig(options) {
76
80
  }
77
81
 
78
82
  exports.loadCliConfig = loadCliConfig;
79
- //# sourceMappingURL=config-de1bf46a.cjs.js.map
83
+ //# sourceMappingURL=config-4a59f918.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-7e13cc9d.cjs.js');
11
- var tasks = require('./tasks-b054c9ce.cjs.js');
12
- var Lockfile = require('./Lockfile-48dc675e.cjs.js');
10
+ var index = require('./index-50703ee1.cjs.js');
11
+ var tasks = require('./tasks-4776baa6.cjs.js');
12
+ var Lockfile = require('./Lockfile-72b7072e.cjs.js');
13
13
  require('minimatch');
14
14
  require('@manypkg/get-packages');
15
- require('./run-5e05ba2c.cjs.js');
15
+ require('./run-722b1384.cjs.js');
16
16
  var partition = require('lodash/partition');
17
17
  var errors = require('@backstage/errors');
18
18
  require('commander');
@@ -85,14 +85,23 @@ async function executePluginPackageTemplate(ctx, options) {
85
85
  const shortPluginDir = path.relative(index.paths.targetRoot, targetDir);
86
86
  await tasks.Task.forItem("availability", shortPluginDir, async () => {
87
87
  if (await fs__default["default"].pathExists(targetDir)) {
88
- throw new Error(`A package with the same plugin ID already exists at ${chalk__default["default"].cyan(shortPluginDir)}. Please try again with a different ID.`);
88
+ throw new Error(
89
+ `A package with the same plugin ID already exists at ${chalk__default["default"].cyan(
90
+ shortPluginDir
91
+ )}. Please try again with a different ID.`
92
+ );
89
93
  }
90
94
  });
91
95
  const tempDir = await tasks.Task.forItem("creating", "temp dir", async () => {
92
96
  return await ctx.createTemporaryDirectory("backstage-create");
93
97
  });
94
98
  tasks.Task.section("Executing Template");
95
- await tasks.templatingTask(index.paths.resolveOwn("templates", options.templateName), tempDir, options.values, index.createPackageVersionProvider(lockfile));
99
+ await tasks.templatingTask(
100
+ index.paths.resolveOwn("templates", options.templateName),
101
+ tempDir,
102
+ options.values,
103
+ index.createPackageVersionProvider(lockfile)
104
+ );
96
105
  const pkgJsonPath = path.resolve(tempDir, "package.json");
97
106
  if (await fs__default["default"].pathExists(pkgJsonPath)) {
98
107
  const pkgJson = await fs__default["default"].readJson(pkgJsonPath);
@@ -101,7 +110,9 @@ async function executePluginPackageTemplate(ctx, options) {
101
110
  tasks.Task.section("Installing");
102
111
  await tasks.Task.forItem("moving", shortPluginDir, async () => {
103
112
  await fs__default["default"].move(tempDir, targetDir).catch((error) => {
104
- throw new Error(`Failed to move package from ${tempDir} to ${targetDir}, ${error.message}`);
113
+ throw new Error(
114
+ `Failed to move package from ${tempDir} to ${targetDir}, ${error.message}`
115
+ );
105
116
  });
106
117
  });
107
118
  ctx.markAsModified();
@@ -136,22 +147,31 @@ const frontendPlugin = createFactory({
136
147
  });
137
148
  if (await fs__default["default"].pathExists(index.paths.resolveTargetRoot("packages/app"))) {
138
149
  await tasks.Task.forItem("app", "adding dependency", async () => {
139
- await tasks.addPackageDependency(index.paths.resolveTargetRoot("packages/app/package.json"), {
140
- dependencies: {
141
- [name]: `^${ctx.defaultVersion}`
150
+ await tasks.addPackageDependency(
151
+ index.paths.resolveTargetRoot("packages/app/package.json"),
152
+ {
153
+ dependencies: {
154
+ [name]: `^${ctx.defaultVersion}`
155
+ }
142
156
  }
143
- });
157
+ );
144
158
  });
145
159
  await tasks.Task.forItem("app", "adding import", async () => {
146
160
  var _a;
147
- const pluginsFilePath = index.paths.resolveTargetRoot("packages/app/src/App.tsx");
161
+ const pluginsFilePath = index.paths.resolveTargetRoot(
162
+ "packages/app/src/App.tsx"
163
+ );
148
164
  if (!await fs__default["default"].pathExists(pluginsFilePath)) {
149
165
  return;
150
166
  }
151
167
  const content = await fs__default["default"].readFile(pluginsFilePath, "utf8");
152
168
  const revLines = content.split("\n").reverse();
153
- const lastImportIndex = revLines.findIndex((line) => line.match(/ from ("|').*("|')/));
154
- const lastRouteIndex = revLines.findIndex((line) => line.match(/<\/FlatRoutes/));
169
+ const lastImportIndex = revLines.findIndex(
170
+ (line) => line.match(/ from ("|').*("|')/)
171
+ );
172
+ const lastRouteIndex = revLines.findIndex(
173
+ (line) => line.match(/<\/FlatRoutes/)
174
+ );
155
175
  if (lastImportIndex !== -1 && lastRouteIndex !== -1) {
156
176
  const importLine = `import { ${extensionName} } from '${name}';`;
157
177
  if (!content.includes(importLine)) {
@@ -205,11 +225,14 @@ const backendPlugin = createFactory({
205
225
  });
206
226
  if (await fs__default["default"].pathExists(index.paths.resolveTargetRoot("packages/backend"))) {
207
227
  await tasks.Task.forItem("backend", "adding dependency", async () => {
208
- await tasks.addPackageDependency(index.paths.resolveTargetRoot("packages/backend/package.json"), {
209
- dependencies: {
210
- [name]: `^${ctx.defaultVersion}`
228
+ await tasks.addPackageDependency(
229
+ index.paths.resolveTargetRoot("packages/backend/package.json"),
230
+ {
231
+ dependencies: {
232
+ [name]: `^${ctx.defaultVersion}`
233
+ }
211
234
  }
212
- });
235
+ );
213
236
  });
214
237
  }
215
238
  if (options.owner) {
@@ -376,7 +399,10 @@ class FactoryRegistry {
376
399
  };
377
400
  }
378
401
  if (factory.optionsPrompts) {
379
- const [hasAnswers, needsAnswers] = partition__default["default"](factory.optionsPrompts, (option) => option.name in currentOptions);
402
+ const [hasAnswers, needsAnswers] = partition__default["default"](
403
+ factory.optionsPrompts,
404
+ (option) => option.name in currentOptions
405
+ );
380
406
  for (const option of hasAnswers) {
381
407
  const value = provided[option.name];
382
408
  if (option.validate) {
@@ -386,15 +412,22 @@ class FactoryRegistry {
386
412
  }
387
413
  }
388
414
  }
389
- currentOptions = await inquirer__default["default"].prompt(needsAnswers.map((option) => applyPromptMessageTransforms(option, {
390
- message: chalk__default["default"].blue,
391
- error: chalk__default["default"].red
392
- })), currentOptions);
415
+ currentOptions = await inquirer__default["default"].prompt(
416
+ needsAnswers.map(
417
+ (option) => applyPromptMessageTransforms(option, {
418
+ message: chalk__default["default"].blue,
419
+ error: chalk__default["default"].red
420
+ })
421
+ ),
422
+ currentOptions
423
+ );
393
424
  }
394
425
  return currentOptions;
395
426
  }
396
427
  }
397
- FactoryRegistry.factoryMap = new Map(Object.values(factories).map((factory) => [factory.name, factory]));
428
+ FactoryRegistry.factoryMap = new Map(
429
+ Object.values(factories).map((factory) => [factory.name, factory])
430
+ );
398
431
 
399
432
  function parseOptions(optionStrings) {
400
433
  const options = {};
@@ -402,7 +435,9 @@ function parseOptions(optionStrings) {
402
435
  const [key] = str.split("=", 1);
403
436
  const value = str.slice(key.length + 1);
404
437
  if (!key || str[key.length] !== "=") {
405
- throw new Error(`Invalid option '${str}', must be of the format <key>=<value>`);
438
+ throw new Error(
439
+ `Invalid option '${str}', must be of the format <key>=<value>`
440
+ );
406
441
  }
407
442
  options[key] = value;
408
443
  }
@@ -412,10 +447,15 @@ var create = async (opts) => {
412
447
  var _a;
413
448
  const factory = await FactoryRegistry.interactiveSelect(opts.select);
414
449
  const providedOptions = parseOptions(opts.option);
415
- const options = await FactoryRegistry.populateOptions(factory, providedOptions);
450
+ const options = await FactoryRegistry.populateOptions(
451
+ factory,
452
+ providedOptions
453
+ );
416
454
  let isMonoRepo = false;
417
455
  try {
418
- const rootPackageJson = await fs__default["default"].readJson(index.paths.resolveTargetRoot("package.json"));
456
+ const rootPackageJson = await fs__default["default"].readJson(
457
+ index.paths.resolveTargetRoot("package.json")
458
+ );
419
459
  if (rootPackageJson.workspaces) {
420
460
  isMonoRepo = true;
421
461
  }
@@ -427,7 +467,9 @@ var create = async (opts) => {
427
467
  }
428
468
  let defaultVersion = "0.1.0";
429
469
  try {
430
- const rootLernaJson = await fs__default["default"].readJson(index.paths.resolveTargetRoot("lerna.json"));
470
+ const rootLernaJson = await fs__default["default"].readJson(
471
+ index.paths.resolveTargetRoot("lerna.json")
472
+ );
431
473
  if (rootLernaJson.version) {
432
474
  defaultVersion = rootLernaJson.version;
433
475
  }
@@ -465,8 +507,12 @@ var create = async (opts) => {
465
507
  if (modified) {
466
508
  tasks.Task.log("It seems that something went wrong in the creation process \u{1F914}");
467
509
  tasks.Task.log();
468
- tasks.Task.log("We have left the changes that were made intact in case you want to");
469
- tasks.Task.log("continue manually, but you can also revert the changes and try again.");
510
+ tasks.Task.log(
511
+ "We have left the changes that were made intact in case you want to"
512
+ );
513
+ tasks.Task.log(
514
+ "continue manually, but you can also revert the changes and try again."
515
+ );
470
516
  tasks.Task.error(`\u{1F525} Failed to create ${factory.name}!`);
471
517
  }
472
518
  } finally {
@@ -474,11 +520,13 @@ var create = async (opts) => {
474
520
  try {
475
521
  await fs__default["default"].remove(dir);
476
522
  } catch (error) {
477
- console.error(`Failed to remove temporary directory '${dir}', ${error}`);
523
+ console.error(
524
+ `Failed to remove temporary directory '${dir}', ${error}`
525
+ );
478
526
  }
479
527
  }
480
528
  }
481
529
  };
482
530
 
483
531
  exports["default"] = create;
484
- //# sourceMappingURL=create-b0ca2add.cjs.js.map
532
+ //# sourceMappingURL=create-a7269bb5.cjs.js.map
@@ -6,9 +6,9 @@ var path = require('path');
6
6
  var os = require('os');
7
7
  var tar = require('tar');
8
8
  var partition = require('lodash/partition');
9
- var index = require('./index-7e13cc9d.cjs.js');
10
- var run = require('./run-5e05ba2c.cjs.js');
11
- var PackageGraph = require('./PackageGraph-1d7b086a.cjs.js');
9
+ var index = require('./index-50703ee1.cjs.js');
10
+ var run = require('./run-722b1384.cjs.js');
11
+ var PackageGraph = require('./PackageGraph-6e1d4bd4.cjs.js');
12
12
  var rollup = require('rollup');
13
13
  var commonjs = require('@rollup/plugin-commonjs');
14
14
  var resolve = require('@rollup/plugin-node-resolve');
@@ -20,8 +20,8 @@ var json = require('@rollup/plugin-json');
20
20
  var yaml = require('@rollup/plugin-yaml');
21
21
  var rollupPluginutils = require('rollup-pluginutils');
22
22
  var svgrTemplate = require('./svgrTemplate-550efce6.cjs.js');
23
- var parallel = require('./parallel-8286d3fa.cjs.js');
24
- var packageRoles = require('./packageRoles-a310f84c.cjs.js');
23
+ var parallel = require('./parallel-a8f6219c.cjs.js');
24
+ var packageRoles = require('./packageRoles-96528891.cjs.js');
25
25
  var npmPackList = require('npm-packlist');
26
26
 
27
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -64,12 +64,14 @@ function forwardFileImports(options) {
64
64
  }
65
65
  generatedFor.add(dir);
66
66
  const srcRoot = path.dirname(chunk.facadeModuleId);
67
- await Promise.all(Array.from(exportedFiles).map(async (exportedFile) => {
68
- const outputPath = path.relative(srcRoot, exportedFile);
69
- const targetFile = path.resolve(dir, outputPath);
70
- await fs__default["default"].ensureDir(path.dirname(targetFile));
71
- await fs__default["default"].copyFile(exportedFile, targetFile);
72
- }));
67
+ await Promise.all(
68
+ Array.from(exportedFiles).map(async (exportedFile) => {
69
+ const outputPath = path.relative(srcRoot, exportedFile);
70
+ const targetFile = path.resolve(dir, outputPath);
71
+ await fs__default["default"].ensureDir(path.dirname(targetFile));
72
+ await fs__default["default"].copyFile(exportedFile, targetFile);
73
+ })
74
+ );
73
75
  return;
74
76
  }
75
77
  },
@@ -194,11 +196,19 @@ async function makeRollupConfigs(options) {
194
196
  });
195
197
  }
196
198
  if (options.outputs.has(Output.types) && !options.useApiExtractor) {
197
- const typesInput = index.paths.resolveTargetRoot("dist-types", path.relative(index.paths.targetRoot, targetDir), "src/index.d.ts");
199
+ const typesInput = index.paths.resolveTargetRoot(
200
+ "dist-types",
201
+ path.relative(index.paths.targetRoot, targetDir),
202
+ "src/index.d.ts"
203
+ );
198
204
  const declarationsExist = await fs__default["default"].pathExists(typesInput);
199
205
  if (!declarationsExist) {
200
206
  const path$1 = path.relative(targetDir, typesInput);
201
- 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`);
207
+ throw new Error(
208
+ `No declaration files found at ${path$1}, be sure to run ${chalk__default["default"].bgRed.white(
209
+ "yarn tsc"
210
+ )} to generate .d.ts files before packaging`
211
+ );
202
212
  }
203
213
  configs.push({
204
214
  input: typesInput,
@@ -227,7 +237,9 @@ async function buildTypeDefinitionsWorker(workerData, sendMessage) {
227
237
  try {
228
238
  require("@microsoft/api-extractor");
229
239
  } catch (error) {
230
- 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");
240
+ throw new Error(
241
+ "Failed to resolve @microsoft/api-extractor, it must best installed as a dependency of your project in order to use experimental type builds"
242
+ );
231
243
  }
232
244
  const { dirname } = require("path");
233
245
  const { entryPoints, workerConfigs, typescriptCompilerFolder } = workerData;
@@ -263,22 +275,36 @@ async function buildTypeDefinitionsWorker(workerData, sendMessage) {
263
275
  }
264
276
  });
265
277
  if (!extractorResult.succeeded) {
266
- throw new Error(`Type definition build completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`);
278
+ throw new Error(
279
+ `Type definition build completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`
280
+ );
267
281
  }
268
282
  }
269
283
  }
270
284
 
271
285
  const ignoredMessages = /* @__PURE__ */ new Set(["tsdoc-undefined-tag", "ae-forgotten-export"]);
272
286
  async function buildTypeDefinitions(targetDirs = [index.paths.targetDir]) {
273
- const packageDirs = targetDirs.map((dir) => path.relative(index.paths.targetRoot, dir));
274
- const entryPoints = await Promise.all(packageDirs.map(async (dir) => {
275
- const entryPoint = index.paths.resolveTargetRoot("dist-types", dir, "src/index.d.ts");
276
- const declarationsExist = await fs__default["default"].pathExists(entryPoint);
277
- if (!declarationsExist) {
278
- 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`);
279
- }
280
- return entryPoint;
281
- }));
287
+ const packageDirs = targetDirs.map(
288
+ (dir) => path.relative(index.paths.targetRoot, dir)
289
+ );
290
+ const entryPoints = await Promise.all(
291
+ packageDirs.map(async (dir) => {
292
+ const entryPoint = index.paths.resolveTargetRoot(
293
+ "dist-types",
294
+ dir,
295
+ "src/index.d.ts"
296
+ );
297
+ const declarationsExist = await fs__default["default"].pathExists(entryPoint);
298
+ if (!declarationsExist) {
299
+ throw new Error(
300
+ `No declaration files found at ${entryPoint}, be sure to run ${chalk__default["default"].bgRed.white(
301
+ "yarn tsc"
302
+ )} to generate .d.ts files before packaging`
303
+ );
304
+ }
305
+ return entryPoint;
306
+ })
307
+ );
282
308
  const workerConfigs = packageDirs.map((packageDir) => {
283
309
  const targetDir = index.paths.resolveTargetRoot(packageDir);
284
310
  const targetTypesDir = index.paths.resolveTargetRoot("dist-types", packageDir);
@@ -407,9 +433,15 @@ async function rollupBuild(config) {
407
433
  }
408
434
  const buildPackage = async (options) => {
409
435
  try {
410
- const { resolutions } = await fs__default["default"].readJson(index.paths.resolveTargetRoot("package.json"));
436
+ const { resolutions } = await fs__default["default"].readJson(
437
+ index.paths.resolveTargetRoot("package.json")
438
+ );
411
439
  if (resolutions == null ? void 0 : resolutions.esbuild) {
412
- console.warn(chalk__default["default"].red('Your root package.json contains a "resolutions" entry for "esbuild". This was included in older @backstage/create-app templates in order to work around build issues that have since been fixed. Please remove the entry and run `yarn install`'));
440
+ console.warn(
441
+ chalk__default["default"].red(
442
+ 'Your root package.json contains a "resolutions" entry for "esbuild". This was included in older @backstage/create-app templates in order to work around build issues that have since been fixed. Please remove the entry and run `yarn install`'
443
+ )
444
+ );
413
445
  }
414
446
  } catch {
415
447
  }
@@ -426,9 +458,13 @@ const buildPackages = async (options) => {
426
458
  throw new Error("targetDir must be set for all build options");
427
459
  }
428
460
  const rollupConfigs = await Promise.all(options.map(makeRollupConfigs));
429
- await Promise.all(options.map(({ targetDir }) => fs__default["default"].remove(path.resolve(targetDir, "dist"))));
461
+ await Promise.all(
462
+ options.map(({ targetDir }) => fs__default["default"].remove(path.resolve(targetDir, "dist")))
463
+ );
430
464
  const buildTasks = rollupConfigs.flat().map((opts) => () => rollupBuild(opts));
431
- const typeDefinitionTargetDirs = options.filter(({ outputs, useApiExtractor }) => outputs.has(Output.types) && useApiExtractor).map((_) => _.targetDir);
465
+ const typeDefinitionTargetDirs = options.filter(
466
+ ({ outputs, useApiExtractor }) => outputs.has(Output.types) && useApiExtractor
467
+ ).map((_) => _.targetDir);
432
468
  if (typeDefinitionTargetDirs.length > 0) {
433
469
  buildTasks.unshift(() => buildTypeDefinitions(typeDefinitionTargetDirs));
434
470
  }
@@ -460,14 +496,18 @@ function resolveEntrypoint(pkg, name) {
460
496
  }
461
497
  async function writeReleaseStageEntrypoint(pkg, stage, targetDir) {
462
498
  await fs__default["default"].ensureDir(path.resolve(targetDir, stage));
463
- await fs__default["default"].writeJson(path.resolve(targetDir, stage, "package.json"), {
464
- name: pkg.name,
465
- version: pkg.version,
466
- main: resolveEntrypoint(pkg, "main"),
467
- module: resolveEntrypoint(pkg, "module"),
468
- browser: resolveEntrypoint(pkg, "browser"),
469
- types: path.join("..", pkg.publishConfig[`${stage}Types`])
470
- }, { encoding: "utf8", spaces: 2 });
499
+ await fs__default["default"].writeJson(
500
+ path.resolve(targetDir, stage, "package.json"),
501
+ {
502
+ name: pkg.name,
503
+ version: pkg.version,
504
+ main: resolveEntrypoint(pkg, "main"),
505
+ module: resolveEntrypoint(pkg, "module"),
506
+ browser: resolveEntrypoint(pkg, "browser"),
507
+ types: path.join("..", pkg.publishConfig[`${stage}Types`])
508
+ },
509
+ { encoding: "utf8", spaces: 2 }
510
+ );
471
511
  }
472
512
  async function copyPackageDist(packageDir, targetDir) {
473
513
  var _a;
@@ -490,7 +530,10 @@ async function copyPackageDist(packageDir, targetDir) {
490
530
  const filePaths = await npmPackList__default["default"]({ path: packageDir });
491
531
  await fs__default["default"].ensureDir(targetDir);
492
532
  for (const filePath of filePaths.sort()) {
493
- await fs__default["default"].copy(path.resolve(packageDir, filePath), path.resolve(targetDir, filePath));
533
+ await fs__default["default"].copy(
534
+ path.resolve(packageDir, filePath),
535
+ path.resolve(targetDir, filePath)
536
+ );
494
537
  }
495
538
  if (publishConfig.alphaTypes) {
496
539
  await writeReleaseStageEntrypoint(pkg, "alpha", targetDir);
@@ -519,7 +562,9 @@ async function createDistWorkspace(packageNames, options = {}) {
519
562
  const targets = Array.from(targetNames).map((name) => packageGraph.get(name));
520
563
  if (options.buildDependencies) {
521
564
  const exclude = (_b = options.buildExcludes) != null ? _b : [];
522
- const toBuild = new Set(targets.map((_) => _.name).filter((name) => !exclude.includes(name)));
565
+ const toBuild = new Set(
566
+ targets.map((_) => _.name).filter((name) => !exclude.includes(name))
567
+ );
523
568
  const standardBuilds = new Array();
524
569
  const customBuild = new Array();
525
570
  for (const pkg of packages) {
@@ -528,7 +573,9 @@ async function createDistWorkspace(packageNames, options = {}) {
528
573
  }
529
574
  const role = (_c = pkg.packageJson.backstage) == null ? void 0 : _c.role;
530
575
  if (!role) {
531
- console.warn(`Building ${pkg.packageJson.name} separately because it has no role`);
576
+ console.warn(
577
+ `Building ${pkg.packageJson.name} separately because it has no role`
578
+ );
532
579
  customBuild.push(pkg.packageJson.name);
533
580
  continue;
534
581
  }
@@ -538,12 +585,16 @@ async function createDistWorkspace(packageNames, options = {}) {
538
585
  continue;
539
586
  }
540
587
  if (!buildScript.startsWith("backstage-cli package build")) {
541
- console.warn(`Building ${pkg.packageJson.name} separately because it has a custom build script, '${buildScript}'`);
588
+ console.warn(
589
+ `Building ${pkg.packageJson.name} separately because it has a custom build script, '${buildScript}'`
590
+ );
542
591
  customBuild.push(pkg.packageJson.name);
543
592
  continue;
544
593
  }
545
594
  if (packageRoles.getRoleInfo(role).output.includes("bundle")) {
546
- console.warn(`Building ${pkg.packageJson.name} separately because it is a bundled package`);
595
+ console.warn(
596
+ `Building ${pkg.packageJson.name} separately because it is a bundled package`
597
+ );
547
598
  customBuild.push(pkg.packageJson.name);
548
599
  continue;
549
600
  }
@@ -580,13 +631,16 @@ async function createDistWorkspace(packageNames, options = {}) {
580
631
  const dir = path.relative(index.paths.targetRoot, target.dir);
581
632
  return path.join(dir, "package.json");
582
633
  });
583
- await tar__default["default"].create({
584
- file: path.resolve(targetDir, options.skeleton),
585
- cwd: targetDir,
586
- portable: true,
587
- noMtime: true,
588
- gzip: options.skeleton.endsWith(".gz")
589
- }, skeletonFiles);
634
+ await tar__default["default"].create(
635
+ {
636
+ file: path.resolve(targetDir, options.skeleton),
637
+ cwd: targetDir,
638
+ portable: true,
639
+ noMtime: true,
640
+ gzip: options.skeleton.endsWith(".gz")
641
+ },
642
+ skeletonFiles
643
+ );
590
644
  }
591
645
  return targetDir;
592
646
  }
@@ -596,16 +650,21 @@ const FAST_PACK_SCRIPTS = [
596
650
  "backstage-cli package prepack"
597
651
  ];
598
652
  async function moveToDistWorkspace(workspaceDir, localPackages) {
599
- const [fastPackPackages, slowPackPackages] = partition__default["default"](localPackages, (pkg) => {
600
- var _a;
601
- return FAST_PACK_SCRIPTS.includes((_a = pkg.packageJson.scripts) == null ? void 0 : _a.prepack);
602
- });
603
- await Promise.all(fastPackPackages.map(async (target) => {
604
- console.log(`Moving ${target.name} into dist workspace`);
605
- const outputDir = path.relative(index.paths.targetRoot, target.dir);
606
- const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
607
- await copyPackageDist(target.dir, absoluteOutputPath);
608
- }));
653
+ const [fastPackPackages, slowPackPackages] = partition__default["default"](
654
+ localPackages,
655
+ (pkg) => {
656
+ var _a;
657
+ return FAST_PACK_SCRIPTS.includes((_a = pkg.packageJson.scripts) == null ? void 0 : _a.prepack);
658
+ }
659
+ );
660
+ await Promise.all(
661
+ fastPackPackages.map(async (target) => {
662
+ console.log(`Moving ${target.name} into dist workspace`);
663
+ const outputDir = path.relative(index.paths.targetRoot, target.dir);
664
+ const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
665
+ await copyPackageDist(target.dir, absoluteOutputPath);
666
+ })
667
+ );
609
668
  async function pack(target, archive) {
610
669
  var _a, _b;
611
670
  console.log(`Repacking ${target.name} into dist workspace`);
@@ -626,21 +685,34 @@ async function moveToDistWorkspace(workspaceDir, localPackages) {
626
685
  });
627
686
  await fs__default["default"].remove(archivePath);
628
687
  if (target.packageJson.bundled) {
629
- const pkgJson = await fs__default["default"].readJson(path.resolve(absoluteOutputPath, "package.json"));
688
+ const pkgJson = await fs__default["default"].readJson(
689
+ path.resolve(absoluteOutputPath, "package.json")
690
+ );
630
691
  delete pkgJson.dependencies;
631
692
  delete pkgJson.devDependencies;
632
693
  delete pkgJson.peerDependencies;
633
694
  delete pkgJson.optionalDependencies;
634
- await fs__default["default"].writeJson(path.resolve(absoluteOutputPath, "package.json"), pkgJson, {
635
- spaces: 2
636
- });
695
+ await fs__default["default"].writeJson(
696
+ path.resolve(absoluteOutputPath, "package.json"),
697
+ pkgJson,
698
+ {
699
+ spaces: 2
700
+ }
701
+ );
637
702
  }
638
703
  }
639
- const [unsafePackages, safePackages] = partition__default["default"](slowPackPackages, (p) => UNSAFE_PACKAGES.includes(p.name));
704
+ const [unsafePackages, safePackages] = partition__default["default"](
705
+ slowPackPackages,
706
+ (p) => UNSAFE_PACKAGES.includes(p.name)
707
+ );
640
708
  for (const target of unsafePackages) {
641
709
  await pack(target, `temp-package.tgz`);
642
710
  }
643
- await Promise.all(safePackages.map(async (target, index) => pack(target, `temp-package-${index}.tgz`)));
711
+ await Promise.all(
712
+ safePackages.map(
713
+ async (target, index) => pack(target, `temp-package-${index}.tgz`)
714
+ )
715
+ );
644
716
  }
645
717
 
646
718
  exports.Output = Output;
@@ -648,4 +720,4 @@ exports.buildPackage = buildPackage;
648
720
  exports.buildPackages = buildPackages;
649
721
  exports.createDistWorkspace = createDistWorkspace;
650
722
  exports.getOutputsForRole = getOutputsForRole;
651
- //# sourceMappingURL=createDistWorkspace-fc94c796.cjs.js.map
723
+ //# sourceMappingURL=createDistWorkspace-cb9a9a84.cjs.js.map