@backstage/cli 0.27.1 → 0.28.0-next.1

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 (47) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/config/jest.js +114 -68
  3. package/dist/cjs/{build-D9YZ-dyI.cjs.js → build-CQdcGuBr.cjs.js} +10 -9
  4. package/dist/cjs/{buildBackend-CmtimF8a.cjs.js → buildBackend-CkhZWCz1.cjs.js} +6 -6
  5. package/dist/cjs/{buildWorkspace-C4wCq5WM.cjs.js → buildWorkspace-CZPp9oRm.cjs.js} +7 -6
  6. package/dist/cjs/{bump-BQ6YRL6D.cjs.js → bump-BHEh5ytx.cjs.js} +73 -9
  7. package/dist/cjs/{clean-BllZTky1.cjs.js → clean-W6nxsHeK.cjs.js} +2 -2
  8. package/dist/cjs/{clean-CVl--Ec9.cjs.js → clean-a6Q4k9Vm.cjs.js} +2 -2
  9. package/dist/cjs/{config-BMsjTUVf.cjs.js → config-DBpmZirN.cjs.js} +2 -2
  10. package/dist/cjs/{createDistWorkspace-DxOWPD6z.cjs.js → createDistWorkspace-DdHPGSMS.cjs.js} +8 -6
  11. package/dist/cjs/{docs-DPzCP6Jp.cjs.js → docs-BGyA6jwW.cjs.js} +3 -3
  12. package/dist/cjs/{entryPoints-CoHH4lBA.cjs.js → entryPoints-coip0t-x.cjs.js} +4 -1
  13. package/dist/cjs/{fix-BM8I_DZ2.cjs.js → fix-COitqgqm.cjs.js} +2 -2
  14. package/dist/cjs/{index-CXG8-26G.cjs.js → index-BXv4Xa2e.cjs.js} +15 -12
  15. package/dist/cjs/{index-Cw0lUK20.cjs.js → index-CGuAP7nv.cjs.js} +11 -10
  16. package/dist/cjs/{index-DmUbBCFk.cjs.js → index-b1ouG3q6.cjs.js} +62 -82
  17. package/dist/cjs/{index-BgEQ8aeF.cjs.js → index-j193pV_Y.cjs.js} +2 -2
  18. package/dist/cjs/{info-FKrzx-9W.cjs.js → info-DuAv1Tsx.cjs.js} +5 -6
  19. package/dist/cjs/{lint-6vrbdjyg.cjs.js → lint-BwiDJkjE.cjs.js} +2 -2
  20. package/dist/cjs/{lint-Cm_9pg85.cjs.js → lint-Dsiocf9K.cjs.js} +2 -2
  21. package/dist/cjs/{list-deprecations-C6R3rEyS.cjs.js → list-deprecations-CtUaQgaP.cjs.js} +2 -2
  22. package/dist/cjs/{moduleFederation-8XXecxLD.cjs.js → moduleFederation-DmStnvEg.cjs.js} +4 -4
  23. package/dist/cjs/{new-DJUBFwiF.cjs.js → new-CEnFhTT-.cjs.js} +336 -97
  24. package/dist/cjs/{pack-BqFGqZb5.cjs.js → pack-XLRcGJqH.cjs.js} +5 -4
  25. package/dist/cjs/{packageExports-DvjdOWjC.cjs.js → packageExports-BJBwdvUH.cjs.js} +3 -3
  26. package/dist/cjs/{packageLintConfigs-DGkvTpBd.cjs.js → packageLintConfigs-DeUGBP17.cjs.js} +3 -3
  27. package/dist/cjs/{packageRole-CHz7zkIQ.cjs.js → packageRole-Iuv9NRii.cjs.js} +2 -2
  28. package/dist/cjs/{print-CQU7JzAh.cjs.js → print-Dd6aChXU.cjs.js} +3 -3
  29. package/dist/cjs/{productionPack-BWU8WkGs.cjs.js → productionPack-BxoMbBkH.cjs.js} +106 -5
  30. package/dist/cjs/{role-8b0z7P0n.cjs.js → role-BjiBExhi.cjs.js} +2 -2
  31. package/dist/cjs/{run-CSt1n0F1.cjs.js → run-CpZGNJQr.cjs.js} +2 -2
  32. package/dist/cjs/{schema-B4250t0W.cjs.js → schema-D93FRhBL.cjs.js} +3 -3
  33. package/dist/cjs/{test-Diil1uTk.cjs.js → test-COxIko8N.cjs.js} +3 -3
  34. package/dist/cjs/{test-DVUsmgyZ.cjs.js → test-JcLI2pPM.cjs.js} +3 -3
  35. package/dist/cjs/{validate-DDIGkK2r.cjs.js → validate-CELljsEX.cjs.js} +3 -3
  36. package/dist/cjs/{Lockfile-B4mqBkH6.cjs.js → yarn-6FNAgNBK.cjs.js} +31 -1
  37. package/dist/index.cjs.js +1 -1
  38. package/package.json +21 -22
  39. package/dist/cjs/codeowners-FKKtpciN.cjs.js +0 -91
  40. package/dist/cjs/createPlugin-Dj7O_us6.cjs.js +0 -280
  41. package/dist/cjs/diff-Drt115Zb.cjs.js +0 -436
  42. package/dist/cjs/index-DRp-18FB.cjs.js +0 -1027
  43. package/dist/cjs/install-BMA3RshT.cjs.js +0 -268
  44. package/dist/cjs/lint-Dkx_fBkS.cjs.js +0 -10
  45. package/dist/cjs/packages-Cuogjl7j.cjs.js +0 -75
  46. package/dist/cjs/tasks-DtAiMv5G.cjs.js +0 -188
  47. package/dist/cjs/yarn-Ukl9MOS0.cjs.js +0 -34
package/CHANGELOG.md CHANGED
@@ -1,5 +1,60 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.28.0-next.1
4
+
5
+ ### Minor Changes
6
+
7
+ - 55b8b84: **BREAKING**: The Jest configuration defined at `@backstage/cli/config/jest` no longer collects configuration defined in the `"jest"` field from all parent `package.json` files. Instead, it will only read and merge configuration from the `package.json` in the monorepo root if it exists, as well as the target package. In addition, configuration defined in the root `package.json` will now only be merged into each package configuration if it is a valid project-level configuration key.
8
+
9
+ ### Patch Changes
10
+
11
+ - 03810d2: Remove unknown dependency `diff`
12
+ - cebee4f: Added support for a new experimental `EXPERIMENTAL_TRIM_NEXT_ENTRY` flag which removes any `./next` entry points present in packages when building and publishing.
13
+ - 55b8b84: The Jest configuration will now search for a `src/setupTests.*` file with any valid script extension, not only `.ts`.
14
+ - Updated dependencies
15
+ - @backstage/eslint-plugin@0.1.10-next.0
16
+ - @backstage/integration@1.15.1-next.0
17
+ - @backstage/catalog-model@1.7.0
18
+ - @backstage/cli-common@0.1.14
19
+ - @backstage/cli-node@0.2.8
20
+ - @backstage/config@1.2.0
21
+ - @backstage/config-loader@1.9.1
22
+ - @backstage/errors@1.2.4
23
+ - @backstage/release-manifests@0.0.11
24
+ - @backstage/types@1.1.1
25
+
26
+ ## 0.28.0-next.0
27
+
28
+ ### Minor Changes
29
+
30
+ - 6129076: **BREAKING**: Removed the following deprecated commands:
31
+
32
+ - `create`: Use `backstage-cli new` instead
33
+ - `create-plugin`: Use `backstage-cli new` instead
34
+ - `plugin:diff`: Use `backstage-cli fix` instead
35
+ - `test`: Use `backstage-cli repo test` or `backstage-cli package test` instead
36
+ - `versions:check`: Use `yarn dedupe` or `yarn-deduplicate` instead
37
+ - `clean`: Use `backstage-cli package clean` instead
38
+
39
+ In addition, the experimental `install` and `onboard` commands have been removed since they have not received any updates since their introduction and we're expecting usage to be low. If you where relying on these commands, please let us know by opening an issue towards the main Backstage repository.
40
+
41
+ ### Patch Changes
42
+
43
+ - 520a383: Added functionality to the prepack script that will append the default export type for entry points to the `exports` object before publishing. This is to help with identifying the declarative integration points for plugins without needing to fetch or run the plugins first.
44
+ - 094eaa3: Remove references to in-repo backend-common
45
+ - 79ba5a8: The `LEGACY_BACKEND_START` flag is now deprecated.
46
+ - Updated dependencies
47
+ - @backstage/catalog-model@1.7.0
48
+ - @backstage/cli-common@0.1.14
49
+ - @backstage/cli-node@0.2.8
50
+ - @backstage/config@1.2.0
51
+ - @backstage/config-loader@1.9.1
52
+ - @backstage/errors@1.2.4
53
+ - @backstage/eslint-plugin@0.1.9
54
+ - @backstage/integration@1.15.0
55
+ - @backstage/release-manifests@0.0.11
56
+ - @backstage/types@1.1.1
57
+
3
58
  ## 0.27.1
4
59
 
5
60
  ### Patch Changes
package/config/jest.js CHANGED
@@ -19,6 +19,9 @@ const path = require('path');
19
19
  const crypto = require('crypto');
20
20
  const glob = require('util').promisify(require('glob'));
21
21
  const { version } = require('../package.json');
22
+ const paths = require('@backstage/cli-common').findPaths(process.cwd());
23
+
24
+ const SRC_EXTS = ['ts', 'js', 'tsx', 'jsx', 'mts', 'cts', 'mjs', 'cjs'];
22
25
 
23
26
  const envOptions = {
24
27
  oldTests: Boolean(process.env.BACKSTAGE_OLD_TESTS),
@@ -31,6 +34,75 @@ try {
31
34
  /* ignored */
32
35
  }
33
36
 
37
+ /**
38
+ * A list of config keys that are valid for project-level config.
39
+ * Jest will complain if we forward any other root configuration to the projects.
40
+ *
41
+ * @type {Array<keyof import('@jest/types').Config.ProjectConfig>}
42
+ */
43
+ const projectConfigKeys = [
44
+ 'automock',
45
+ 'cache',
46
+ 'cacheDirectory',
47
+ 'clearMocks',
48
+ 'collectCoverageFrom',
49
+ 'coverageDirectory',
50
+ 'coveragePathIgnorePatterns',
51
+ 'cwd',
52
+ 'dependencyExtractor',
53
+ 'detectLeaks',
54
+ 'detectOpenHandles',
55
+ 'displayName',
56
+ 'errorOnDeprecated',
57
+ 'extensionsToTreatAsEsm',
58
+ 'fakeTimers',
59
+ 'filter',
60
+ 'forceCoverageMatch',
61
+ 'globalSetup',
62
+ 'globalTeardown',
63
+ 'globals',
64
+ 'haste',
65
+ 'id',
66
+ 'injectGlobals',
67
+ 'moduleDirectories',
68
+ 'moduleFileExtensions',
69
+ 'moduleNameMapper',
70
+ 'modulePathIgnorePatterns',
71
+ 'modulePaths',
72
+ 'openHandlesTimeout',
73
+ 'preset',
74
+ 'prettierPath',
75
+ 'resetMocks',
76
+ 'resetModules',
77
+ 'resolver',
78
+ 'restoreMocks',
79
+ 'rootDir',
80
+ 'roots',
81
+ 'runner',
82
+ 'runtime',
83
+ 'sandboxInjectedGlobals',
84
+ 'setupFiles',
85
+ 'setupFilesAfterEnv',
86
+ 'skipFilter',
87
+ 'skipNodeResolution',
88
+ 'slowTestThreshold',
89
+ 'snapshotResolver',
90
+ 'snapshotSerializers',
91
+ 'snapshotFormat',
92
+ 'testEnvironment',
93
+ 'testEnvironmentOptions',
94
+ 'testMatch',
95
+ 'testLocationInResults',
96
+ 'testPathIgnorePatterns',
97
+ 'testRegex',
98
+ 'testRunner',
99
+ 'transform',
100
+ 'transformIgnorePatterns',
101
+ 'watchPathIgnorePatterns',
102
+ 'unmockedModulePathPatterns',
103
+ 'workerIdleMemoryLimit',
104
+ ];
105
+
34
106
  const transformIgnorePattern = [
35
107
  '@material-ui',
36
108
  'ajv',
@@ -76,54 +148,11 @@ async function getProjectConfig(targetPath, extraConfig) {
76
148
  return require(configTsPath);
77
149
  }
78
150
 
79
- // We read all "jest" config fields in package.json files all the way to the filesystem root.
80
- // All configs are merged together to create the final config, with longer paths taking precedence.
151
+ // Jest config can be defined both in the root package.json and within each package. The root config
152
+ // gets forwarded to us through the `extraConfig` parameter, while the package config is read here.
153
+ // If they happen to be the same the keys will simply override each other.
81
154
  // The merging of the configs is shallow, meaning e.g. all transforms are replaced if new ones are defined.
82
- const pkgJsonConfigs = [];
83
- let closestPkgJson = undefined;
84
- let currentPath = targetPath;
85
-
86
- // Some confidence check to avoid infinite loop
87
- for (let i = 0; i < 100; i++) {
88
- const packagePath = path.resolve(currentPath, 'package.json');
89
- const exists = fs.pathExistsSync(packagePath);
90
- if (exists) {
91
- try {
92
- const data = fs.readJsonSync(packagePath);
93
- if (!closestPkgJson) {
94
- closestPkgJson = data;
95
- }
96
- if (data.jest) {
97
- pkgJsonConfigs.unshift(data.jest);
98
- }
99
- } catch (error) {
100
- throw new Error(
101
- `Failed to parse package.json file reading jest configs, ${error}`,
102
- );
103
- }
104
- }
105
-
106
- const newPath = path.dirname(currentPath);
107
- if (newPath === currentPath) {
108
- break;
109
- }
110
- currentPath = newPath;
111
- }
112
-
113
- // This is an old deprecated option that is no longer used.
114
- const transformModules = pkgJsonConfigs
115
- .flatMap(conf => {
116
- const modules = conf.transformModules || [];
117
- delete conf.transformModules;
118
- return modules;
119
- })
120
- .map(name => `${name}/`)
121
- .join('|');
122
- if (transformModules.length > 0) {
123
- console.warn(
124
- 'The Backstage CLI jest transformModules option is no longer used and will be ignored. All modules are now always transformed.',
125
- );
126
- }
155
+ const pkgJson = await fs.readJson(path.resolve(targetPath, 'package.json'));
127
156
 
128
157
  const options = {
129
158
  ...extraConfig,
@@ -191,14 +220,14 @@ async function getProjectConfig(targetPath, extraConfig) {
191
220
  },
192
221
 
193
222
  // A bit more opinionated
194
- testMatch: ['**/*.test.{js,jsx,ts,tsx,mjs,cjs}'],
223
+ testMatch: [`**/*.test.{${SRC_EXTS.join(',')}}`],
195
224
 
196
225
  runtime: envOptions.oldTests
197
226
  ? undefined
198
227
  : require.resolve('./jestCachingModuleLoader'),
199
228
 
200
229
  transformIgnorePatterns: [`/node_modules/(?:${transformIgnorePattern})/`],
201
- ...getRoleConfig(closestPkgJson?.backstage?.role),
230
+ ...getRoleConfig(pkgJson.backstage?.role),
202
231
  };
203
232
 
204
233
  options.setupFilesAfterEnv = options.setupFilesAfterEnv || [];
@@ -208,12 +237,15 @@ async function getProjectConfig(targetPath, extraConfig) {
208
237
  options.setupFilesAfterEnv.unshift(require.resolve('cross-fetch/polyfill'));
209
238
  }
210
239
 
211
- // Use src/setupTests.ts as the default location for configuring test env
212
- if (fs.existsSync(path.resolve(targetPath, 'src/setupTests.ts'))) {
213
- options.setupFilesAfterEnv.push('<rootDir>/setupTests.ts');
240
+ // Use src/setupTests.* as the default location for configuring test env
241
+ for (const ext of SRC_EXTS) {
242
+ if (fs.existsSync(path.resolve(targetPath, `src/setupTests.${ext}`))) {
243
+ options.setupFilesAfterEnv.push(`<rootDir>/setupTests.${ext}`);
244
+ break;
245
+ }
214
246
  }
215
247
 
216
- const config = Object.assign(options, ...pkgJsonConfigs);
248
+ const config = Object.assign(options, pkgJson.jest);
217
249
 
218
250
  // The config id is a cache key that lets us share the jest cache across projects.
219
251
  // If no explicit id was configured, generated one based on the configuration.
@@ -234,31 +266,44 @@ async function getProjectConfig(targetPath, extraConfig) {
234
266
  // configuration for the current package, or a collection of configurations for
235
267
  // the target workspace packages
236
268
  async function getRootConfig() {
237
- const targetPath = process.cwd();
238
- const targetPackagePath = path.resolve(targetPath, 'package.json');
239
- const exists = await fs.pathExists(targetPackagePath);
269
+ const rootPkgJson = await fs.readJson(
270
+ paths.resolveTargetRoot('package.json'),
271
+ );
240
272
 
241
- const coverageConfig = {
242
- coverageDirectory: path.resolve(targetPath, 'coverage'),
273
+ const baseCoverageConfig = {
274
+ coverageDirectory: paths.resolveTarget('coverage'),
243
275
  coverageProvider: envOptions.oldTests ? 'v8' : 'babel',
244
276
  collectCoverageFrom: ['**/*.{js,jsx,ts,tsx,mjs,cjs}', '!**/*.d.ts'],
245
277
  };
246
278
 
247
- if (!exists) {
248
- return getProjectConfig(targetPath, coverageConfig);
279
+ const workspacePatterns =
280
+ rootPkgJson.workspaces && rootPkgJson.workspaces.packages;
281
+
282
+ // Check if we're running within a specific monorepo package. In that case just get the single project config.
283
+ if (!workspacePatterns || paths.targetRoot !== paths.targetDir) {
284
+ return getProjectConfig(paths.targetDir, {
285
+ ...baseCoverageConfig,
286
+ ...(rootPkgJson.jest ?? {}),
287
+ });
249
288
  }
250
289
 
251
- // Check whether the current package is a workspace root or not
252
- const data = await fs.readJson(targetPackagePath);
253
- const workspacePatterns = data.workspaces && data.workspaces.packages;
254
- if (!workspacePatterns) {
255
- return getProjectConfig(targetPath, coverageConfig);
290
+ const globalRootConfig = { ...baseCoverageConfig };
291
+ const globalProjectConfig = {};
292
+
293
+ for (const [key, value] of Object.entries(rootPkgJson.jest ?? {})) {
294
+ if (projectConfigKeys.includes(key)) {
295
+ globalProjectConfig[key] = value;
296
+ } else {
297
+ globalRootConfig[key] = value;
298
+ }
256
299
  }
257
300
 
258
301
  // If the target package is a workspace root, we find all packages in the
259
302
  // workspace and load those in as separate jest projects instead.
260
303
  const projectPaths = await Promise.all(
261
- workspacePatterns.map(pattern => glob(path.join(targetPath, pattern))),
304
+ workspacePatterns.map(pattern =>
305
+ glob(path.join(paths.targetRoot, pattern)),
306
+ ),
262
307
  ).then(_ => _.flat());
263
308
 
264
309
  const configs = await Promise.all(
@@ -277,6 +322,7 @@ async function getRootConfig() {
277
322
  testScript?.includes('backstage-cli package test');
278
323
  if (testScript && isSupportedTestScript) {
279
324
  return await getProjectConfig(projectPath, {
325
+ ...globalProjectConfig,
280
326
  displayName: packageData.name,
281
327
  });
282
328
  }
@@ -286,9 +332,9 @@ async function getRootConfig() {
286
332
  ).then(cs => cs.filter(Boolean));
287
333
 
288
334
  return {
289
- rootDir: targetPath,
335
+ rootDir: paths.targetRoot,
290
336
  projects: configs,
291
- ...coverageConfig,
337
+ ...globalRootConfig,
292
338
  };
293
339
  }
294
340
 
@@ -2,17 +2,17 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var path = require('path');
5
- var createDistWorkspace = require('./createDistWorkspace-DxOWPD6z.cjs.js');
6
- var index = require('./index-DmUbBCFk.cjs.js');
5
+ var createDistWorkspace = require('./createDistWorkspace-DdHPGSMS.cjs.js');
6
+ var index = require('./index-b1ouG3q6.cjs.js');
7
7
  var cliNode = require('@backstage/cli-node');
8
8
  var parallel = require('./parallel-BszNaKyc.cjs.js');
9
- var buildBackend = require('./buildBackend-CmtimF8a.cjs.js');
9
+ var buildBackend = require('./buildBackend-CkhZWCz1.cjs.js');
10
10
  require('fs-extra');
11
11
  require('p-limit');
12
12
  require('os');
13
13
  require('tar');
14
14
  require('lodash/partition');
15
- require('./run-CSt1n0F1.cjs.js');
15
+ require('./run-CpZGNJQr.cjs.js');
16
16
  require('child_process');
17
17
  require('util');
18
18
  require('@backstage/errors');
@@ -27,9 +27,10 @@ require('@rollup/plugin-json');
27
27
  require('@rollup/plugin-yaml');
28
28
  require('rollup-pluginutils');
29
29
  require('./svgrTemplate-BTjBQ3by.cjs.js');
30
- require('./entryPoints-CoHH4lBA.cjs.js');
31
- require('./productionPack-BWU8WkGs.cjs.js');
30
+ require('./entryPoints-coip0t-x.cjs.js');
31
+ require('./productionPack-BxoMbBkH.cjs.js');
32
32
  require('npm-packlist');
33
+ require('ts-morph');
33
34
  require('commander');
34
35
  require('semver');
35
36
  require('@backstage/cli-common');
@@ -44,7 +45,7 @@ require('run-script-webpack-plugin');
44
45
  require('@pmmmwh/react-refresh-webpack-plugin');
45
46
  require('@manypkg/get-packages');
46
47
  require('webpack-node-externals');
47
- require('./moduleFederation-8XXecxLD.cjs.js');
48
+ require('./moduleFederation-DmStnvEg.cjs.js');
48
49
  require('lodash/pickBy');
49
50
  require('mini-css-extract-plugin');
50
51
  require('yn');
@@ -55,7 +56,7 @@ require('react-dev-utils/FileSizeReporter');
55
56
  require('react-dev-utils/formatWebpackMessages');
56
57
  require('react-dev-utils/openBrowser');
57
58
  require('webpack-dev-server');
58
- require('./config-BMsjTUVf.cjs.js');
59
+ require('./config-DBpmZirN.cjs.js');
59
60
  require('@backstage/config-loader');
60
61
 
61
62
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -190,4 +191,4 @@ async function command(opts, cmd) {
190
191
  }
191
192
 
192
193
  exports.command = command;
193
- //# sourceMappingURL=build-D9YZ-dyI.cjs.js.map
194
+ //# sourceMappingURL=build-CQdcGuBr.cjs.js.map
@@ -12,23 +12,23 @@ require('@backstage/cli-common');
12
12
  require('react-dev-utils/ModuleScopePlugin');
13
13
  require('run-script-webpack-plugin');
14
14
  require('@pmmmwh/react-refresh-webpack-plugin');
15
- require('./index-DmUbBCFk.cjs.js');
15
+ require('./index-b1ouG3q6.cjs.js');
16
16
  require('@manypkg/get-packages');
17
17
  require('webpack-node-externals');
18
- var moduleFederation = require('./moduleFederation-8XXecxLD.cjs.js');
18
+ var moduleFederation = require('./moduleFederation-DmStnvEg.cjs.js');
19
19
  require('lodash/pickBy');
20
- require('./run-CSt1n0F1.cjs.js');
20
+ require('./run-CpZGNJQr.cjs.js');
21
21
  require('mini-css-extract-plugin');
22
22
  var yn = require('yn');
23
23
  var FileSizeReporter = require('react-dev-utils/FileSizeReporter');
24
24
  var formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
25
25
  require('react-dev-utils/openBrowser');
26
26
  require('webpack-dev-server');
27
- var config = require('./config-BMsjTUVf.cjs.js');
27
+ var config = require('./config-DBpmZirN.cjs.js');
28
28
  var parallel = require('./parallel-BszNaKyc.cjs.js');
29
29
  var os = require('os');
30
30
  var tar = require('tar');
31
- var createDistWorkspace = require('./createDistWorkspace-DxOWPD6z.cjs.js');
31
+ var createDistWorkspace = require('./createDistWorkspace-DdHPGSMS.cjs.js');
32
32
  var cliNode = require('@backstage/cli-node');
33
33
 
34
34
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -265,4 +265,4 @@ async function buildBackend(options) {
265
265
 
266
266
  exports.buildBackend = buildBackend;
267
267
  exports.buildFrontend = buildFrontend;
268
- //# sourceMappingURL=buildBackend-CmtimF8a.cjs.js.map
268
+ //# sourceMappingURL=buildBackend-CkhZWCz1.cjs.js.map
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var createDistWorkspace = require('./createDistWorkspace-DxOWPD6z.cjs.js');
4
+ var createDistWorkspace = require('./createDistWorkspace-DdHPGSMS.cjs.js');
5
5
  require('chalk');
6
6
  require('path');
7
7
  require('p-limit');
8
8
  require('os');
9
9
  require('tar');
10
10
  require('lodash/partition');
11
- require('./index-DmUbBCFk.cjs.js');
11
+ require('./index-b1ouG3q6.cjs.js');
12
12
  require('commander');
13
13
  require('semver');
14
14
  require('@backstage/cli-common');
15
15
  require('@backstage/errors');
16
- require('./run-CSt1n0F1.cjs.js');
16
+ require('./run-CpZGNJQr.cjs.js');
17
17
  require('child_process');
18
18
  require('util');
19
19
  require('rollup');
@@ -27,12 +27,13 @@ require('@rollup/plugin-json');
27
27
  require('@rollup/plugin-yaml');
28
28
  require('rollup-pluginutils');
29
29
  require('./svgrTemplate-BTjBQ3by.cjs.js');
30
- require('./entryPoints-CoHH4lBA.cjs.js');
30
+ require('./entryPoints-coip0t-x.cjs.js');
31
31
  require('@backstage/cli-node');
32
32
  require('./parallel-BszNaKyc.cjs.js');
33
33
  require('worker_threads');
34
- require('./productionPack-BWU8WkGs.cjs.js');
34
+ require('./productionPack-BxoMbBkH.cjs.js');
35
35
  require('npm-packlist');
36
+ require('ts-morph');
36
37
 
37
38
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
38
39
 
@@ -49,4 +50,4 @@ var buildWorkspace = async (dir, packages, options) => {
49
50
  };
50
51
 
51
52
  exports.default = buildWorkspace;
52
- //# sourceMappingURL=buildWorkspace-C4wCq5WM.cjs.js.map
53
+ //# sourceMappingURL=buildWorkspace-CZPp9oRm.cjs.js.map
@@ -9,15 +9,15 @@ var yaml = require('yaml');
9
9
  var z = require('zod');
10
10
  var errors = require('@backstage/errors');
11
11
  var path = require('path');
12
- var run = require('./run-CSt1n0F1.cjs.js');
13
- var index = require('./index-DmUbBCFk.cjs.js');
14
- var Lockfile = require('./Lockfile-B4mqBkH6.cjs.js');
15
- var packages = require('./packages-Cuogjl7j.cjs.js');
12
+ var run = require('./run-CpZGNJQr.cjs.js');
13
+ var index = require('./index-b1ouG3q6.cjs.js');
14
+ var yarn = require('./yarn-6FNAgNBK.cjs.js');
15
+ var minimatch = require('minimatch');
16
+ var getPackages = require('@manypkg/get-packages');
16
17
  var cliCommon = require('@backstage/cli-common');
17
18
  var parallel = require('./parallel-BszNaKyc.cjs.js');
18
19
  var releaseManifests = require('@backstage/release-manifests');
19
20
  var cliNode = require('@backstage/cli-node');
20
- var minimatch = require('minimatch');
21
21
  var replace = require('replace-in-file');
22
22
 
23
23
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -30,6 +30,70 @@ var yaml__default = /*#__PURE__*/_interopDefaultCompat(yaml);
30
30
  var z__default = /*#__PURE__*/_interopDefaultCompat(z);
31
31
  var replace__default = /*#__PURE__*/_interopDefaultCompat(replace);
32
32
 
33
+ const DEP_TYPES$1 = [
34
+ "dependencies",
35
+ "devDependencies",
36
+ "peerDependencies",
37
+ "optionalDependencies"
38
+ ];
39
+ async function fetchPackageInfo(name) {
40
+ const yarnVersion = await yarn.detectYarnVersion();
41
+ const cmd = yarnVersion === "classic" ? ["info"] : ["npm", "info"];
42
+ try {
43
+ const { stdout: output } = await run.execFile(
44
+ "yarn",
45
+ [...cmd, "--json", name],
46
+ { shell: true }
47
+ );
48
+ if (!output) {
49
+ throw new index.NotFoundError(
50
+ `No package information found for package ${name}`
51
+ );
52
+ }
53
+ if (yarnVersion === "berry") {
54
+ return JSON.parse(output);
55
+ }
56
+ const info = JSON.parse(output);
57
+ if (info.type !== "inspect") {
58
+ throw new Error(`Received unknown yarn info for ${name}, ${output}`);
59
+ }
60
+ return info.data;
61
+ } catch (error) {
62
+ if (yarnVersion === "classic") {
63
+ throw error;
64
+ }
65
+ if (error?.stdout.includes("Response Code: 404")) {
66
+ throw new index.NotFoundError(
67
+ `No package information found for package ${name}`
68
+ );
69
+ }
70
+ throw error;
71
+ }
72
+ }
73
+ async function mapDependencies(targetDir, pattern) {
74
+ const { packages, root } = await getPackages.getPackages(targetDir);
75
+ packages.push(root);
76
+ const dependencyMap = /* @__PURE__ */ new Map();
77
+ for (const pkg of packages) {
78
+ const deps = DEP_TYPES$1.flatMap(
79
+ (t) => Object.entries(pkg.packageJson[t] ?? {})
80
+ );
81
+ for (const [name, range] of deps) {
82
+ if (minimatch.minimatch(name, pattern)) {
83
+ dependencyMap.set(
84
+ name,
85
+ (dependencyMap.get(name) ?? []).concat({
86
+ range,
87
+ name: pkg.packageJson.name,
88
+ location: pkg.dir
89
+ })
90
+ );
91
+ }
92
+ }
93
+ }
94
+ return dependencyMap;
95
+ }
96
+
33
97
  var migrate = async (options) => {
34
98
  const changed = await migrateMovedPackages({
35
99
  pattern: options.pattern,
@@ -147,7 +211,7 @@ const DEP_TYPES = [
147
211
  const DEFAULT_PATTERN_GLOB = "@backstage/*";
148
212
  var bump = async (opts) => {
149
213
  const lockfilePath = index.paths.resolveTargetRoot("yarn.lock");
150
- const lockfile = await Lockfile.Lockfile.load(lockfilePath);
214
+ const lockfile = await yarn.Lockfile.load(lockfilePath);
151
215
  const hasYarnPlugin = await getHasYarnPlugin();
152
216
  let pattern = opts.pattern;
153
217
  if (!pattern) {
@@ -182,7 +246,7 @@ var bump = async (opts) => {
182
246
  releaseManifest
183
247
  });
184
248
  }
185
- const dependencyMap = await packages.mapDependencies(index.paths.targetDir, pattern);
249
+ const dependencyMap = await mapDependencies(index.paths.targetDir, pattern);
186
250
  const versionBumps = /* @__PURE__ */ new Map();
187
251
  await parallel.runParallelWorkers({
188
252
  parallelismFactor: 4,
@@ -343,7 +407,7 @@ function createStrictVersionFinder(options) {
343
407
  function createVersionFinder(options) {
344
408
  const {
345
409
  releaseLine = "latest",
346
- packageInfoFetcher = packages.fetchPackageInfo,
410
+ packageInfoFetcher = fetchPackageInfo,
347
411
  releaseManifest
348
412
  } = options;
349
413
  const distTag = releaseLine === "main" ? "latest" : releaseLine;
@@ -519,4 +583,4 @@ var bump$1 = /*#__PURE__*/Object.freeze({
519
583
 
520
584
  exports.bump = bump$1;
521
585
  exports.migrate = migrate$1;
522
- //# sourceMappingURL=bump-BQ6YRL6D.cjs.js.map
586
+ //# sourceMappingURL=bump-BHEh5ytx.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-DmUbBCFk.cjs.js');
4
+ var index = require('./index-b1ouG3q6.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-BllZTky1.cjs.js.map
22
+ //# sourceMappingURL=clean-W6nxsHeK.cjs.js.map
@@ -5,7 +5,7 @@ var fs = require('fs-extra');
5
5
  var path = require('path');
6
6
  var util = require('util');
7
7
  var cliNode = require('@backstage/cli-node');
8
- var index = require('./index-DmUbBCFk.cjs.js');
8
+ var index = require('./index-b1ouG3q6.cjs.js');
9
9
  require('commander');
10
10
  require('chalk');
11
11
  require('semver');
@@ -45,4 +45,4 @@ async function command() {
45
45
  }
46
46
 
47
47
  exports.command = command;
48
- //# sourceMappingURL=clean-CVl--Ec9.cjs.js.map
48
+ //# sourceMappingURL=clean-a6Q4k9Vm.cjs.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  var configLoader = require('@backstage/config-loader');
4
4
  var config = require('@backstage/config');
5
- var index = require('./index-DmUbBCFk.cjs.js');
5
+ var index = require('./index-b1ouG3q6.cjs.js');
6
6
  var getPackages = require('@manypkg/get-packages');
7
7
  var cliNode = require('@backstage/cli-node');
8
8
 
@@ -105,4 +105,4 @@ async function loadCliConfig(options) {
105
105
  }
106
106
 
107
107
  exports.loadCliConfig = loadCliConfig;
108
- //# sourceMappingURL=config-BMsjTUVf.cjs.js.map
108
+ //# sourceMappingURL=config-DBpmZirN.cjs.js.map
@@ -7,8 +7,8 @@ var pLimit = require('p-limit');
7
7
  var os = require('os');
8
8
  var tar = require('tar');
9
9
  var partition = require('lodash/partition');
10
- var index = require('./index-DmUbBCFk.cjs.js');
11
- var run = require('./run-CSt1n0F1.cjs.js');
10
+ var index = require('./index-b1ouG3q6.cjs.js');
11
+ var run = require('./run-CpZGNJQr.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,10 +20,10 @@ 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-BTjBQ3by.cjs.js');
23
- var entryPoints = require('./entryPoints-CoHH4lBA.cjs.js');
23
+ var entryPoints = require('./entryPoints-coip0t-x.cjs.js');
24
24
  var cliNode = require('@backstage/cli-node');
25
25
  var parallel = require('./parallel-BszNaKyc.cjs.js');
26
- var productionPack = require('./productionPack-BWU8WkGs.cjs.js');
26
+ var productionPack = require('./productionPack-BxoMbBkH.cjs.js');
27
27
 
28
28
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
29
29
 
@@ -508,6 +508,7 @@ async function moveToDistWorkspace(workspaceDir, localPackages, alwaysYarnPack)
508
508
  localPackages,
509
509
  (pkg) => !alwaysYarnPack && FAST_PACK_SCRIPTS.includes(pkg.packageJson.scripts?.prepack)
510
510
  );
511
+ const tsMorphProject = fastPackPackages.length > 0 ? await productionPack.createTypeDistProject() : void 0;
511
512
  await Promise.all(
512
513
  fastPackPackages.map(async (target) => {
513
514
  console.log(`Moving ${target.name} into dist workspace`);
@@ -515,7 +516,8 @@ async function moveToDistWorkspace(workspaceDir, localPackages, alwaysYarnPack)
515
516
  const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
516
517
  await productionPack.productionPack({
517
518
  packageDir: target.dir,
518
- targetDir: absoluteOutputPath
519
+ targetDir: absoluteOutputPath,
520
+ project: tsMorphProject
519
521
  });
520
522
  })
521
523
  );
@@ -571,4 +573,4 @@ exports.buildPackage = buildPackage;
571
573
  exports.buildPackages = buildPackages;
572
574
  exports.createDistWorkspace = createDistWorkspace;
573
575
  exports.getOutputsForRole = getOutputsForRole;
574
- //# sourceMappingURL=createDistWorkspace-DxOWPD6z.cjs.js.map
576
+ //# sourceMappingURL=createDistWorkspace-DdHPGSMS.cjs.js.map