@backstage/cli 0.7.15 → 0.8.2

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 +63 -0
  2. package/config/eslint.backend.js +11 -6
  3. package/config/jest.js +45 -16
  4. package/config/jestEsmTransform.js +4 -21
  5. package/config/jestSucraseTransform.js +66 -0
  6. package/dist/cjs/{build-6991f114.cjs.js → build-1cbb9e7d.cjs.js} +6 -5
  7. package/dist/cjs/{build-e9d00839.cjs.js → build-70dd213a.cjs.js} +4 -3
  8. package/dist/cjs/{build-584089b4.cjs.js → build-b25b29ed.cjs.js} +4 -3
  9. package/dist/cjs/{build-6303ed2c.cjs.js → build-bae5a019.cjs.js} +4 -3
  10. package/dist/cjs/{buildImage-40785c7b.cjs.js → buildImage-6b35526c.cjs.js} +5 -4
  11. package/dist/cjs/{buildWorkspace-54f31886.cjs.js → buildWorkspace-424d4929.cjs.js} +5 -4
  12. package/dist/cjs/{bump-f1bd882f.cjs.js → bump-bce7f9c2.cjs.js} +10 -50
  13. package/dist/cjs/{bundle-82c252ba.cjs.js → bundle-cc6870fb.cjs.js} +6 -5
  14. package/dist/cjs/{clean-d37f05f1.cjs.js → clean-7a981ea7.cjs.js} +3 -2
  15. package/dist/cjs/{config-25f9b58b.cjs.js → config-24fce3c1.cjs.js} +20 -5
  16. package/dist/cjs/{createPlugin-066b2211.cjs.js → createPlugin-2c2b30fc.cjs.js} +7 -4
  17. package/dist/cjs/{dev-267f8c50.cjs.js → dev-efe399b8.cjs.js} +5 -4
  18. package/dist/cjs/{diff-23290f53.cjs.js → diff-e3661054.cjs.js} +3 -2
  19. package/dist/cjs/{docs-16e1a114.cjs.js → docs-ceb404a3.cjs.js} +4 -3
  20. package/dist/cjs/{index-595dd01c.cjs.js → index-26bec8ac.cjs.js} +5 -6
  21. package/dist/cjs/{index-74ba6239.cjs.js → index-6fee1c9a.cjs.js} +159 -41
  22. package/dist/cjs/{index-06502eb1.cjs.js → index-fbff7b78.cjs.js} +3 -2
  23. package/dist/cjs/{info-60e7921f.cjs.js → info-5e7c2679.cjs.js} +4 -3
  24. package/dist/cjs/install-5920b5df.cjs.js +214 -0
  25. package/dist/cjs/{lint-30f44ea5.cjs.js → lint-306bb8fe.cjs.js} +4 -3
  26. package/dist/cjs/{lint-a76f6ca5.cjs.js → lint-6175d471.cjs.js} +4 -3
  27. package/dist/cjs/{pack-cd0b0812.cjs.js → pack-32228ad6.cjs.js} +3 -2
  28. package/dist/cjs/{packager-c2a87e1f.cjs.js → packager-1ad7272f.cjs.js} +2 -2
  29. package/dist/cjs/packages-a5b6a3df.cjs.js +50 -0
  30. package/dist/cjs/{paths-a0eb9f40.cjs.js → paths-09202a46.cjs.js} +8 -5
  31. package/dist/cjs/{print-81bff161.cjs.js → print-806676fe.cjs.js} +6 -4
  32. package/dist/cjs/{removePlugin-3ad49c8c.cjs.js → removePlugin-f82ac16a.cjs.js} +11 -3
  33. package/dist/cjs/{run-7e2d4777.cjs.js → run-59c4395e.cjs.js} +9 -4
  34. package/dist/cjs/{schema-48dd9498.cjs.js → schema-398d8593.cjs.js} +4 -3
  35. package/dist/cjs/{serve-7f18ef8d.cjs.js → serve-708fbf98.cjs.js} +8 -7
  36. package/dist/cjs/{serve-4d9dbf1e.cjs.js → serve-f4bb3cb0.cjs.js} +7 -6
  37. package/dist/cjs/{server-433545bf.cjs.js → server-107d9cc0.cjs.js} +2 -2
  38. package/dist/cjs/{tasks-fbc2dd76.cjs.js → tasks-9bd3e946.cjs.js} +2 -2
  39. package/dist/cjs/{testCommand-749220a2.cjs.js → testCommand-e32fbd45.cjs.js} +4 -3
  40. package/dist/cjs/{validate-5a9fa99d.cjs.js → validate-9523a11e.cjs.js} +6 -4
  41. package/dist/index.cjs.js +2 -1
  42. package/package.json +21 -22
  43. package/templates/default-backend-plugin/package.json.hbs +1 -1
  44. package/templates/default-plugin/package.json.hbs +1 -1
  45. package/templates/default-plugin/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs +5 -2
  46. package/templates/default-plugin/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx.hbs +2 -2
  47. package/templates/default-plugin/src/setupTests.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,68 @@
1
1
  # @backstage/cli
2
2
 
3
+ ## 0.8.2
4
+
5
+ ### Patch Changes
6
+
7
+ - dd355bca46: Switched to dynamically determining the packages that are unsafe to repack when executing the CLI within the Backstage main repo.
8
+ - b393c4d4be: Fixed the `config:check` command that was incorrectly only validating frontend configuration. Also added a `--frontend` flag to the command which maintains that behavior.
9
+ - 0611f3b3e2: Reading app config from a remote server
10
+ - ec64d9590c: Make `ExitCodeError` call `super` early to avoid compiler warnings
11
+ - 8af66229e7: Bumped `@spotify/eslint-config-react` from `v10` to `v12`, dropping support for Node.js v12.
12
+ - a197708da9: Bumped `@spotify/eslint-config-typescript` from `v10` to `v12`, dropping support for Node.js v12.
13
+ - Updated dependencies
14
+ - @backstage/config-loader@0.7.2
15
+
16
+ ## 0.8.1
17
+
18
+ ### Patch Changes
19
+
20
+ - f1e96dc5b1: Update usage of msw in default plugin template
21
+ - b0dc1fd241: bump `@spotify/eslint-config-base` from 9.0.2 to 12.0.0
22
+ - c5bb1df55d: Bump `msw` to `v0.35.0` to resolve [CVE-2021-32796](https://github.com/advisories/GHSA-5fg8-2547-mr8q).
23
+ - 10615525f3: Switch to use the json and observable types from `@backstage/types`
24
+ - Updated dependencies
25
+ - @backstage/config@0.1.11
26
+ - @backstage/cli-common@0.1.5
27
+ - @backstage/errors@0.1.4
28
+ - @backstage/config-loader@0.7.1
29
+
30
+ ## 0.8.0
31
+
32
+ ### Minor Changes
33
+
34
+ - b486adb8c6: The Jest configuration that's included with the Backstage CLI has received several changes.
35
+
36
+ As a part of migrating to more widespread usage of ESM modules, the default configuration now transforms all source files everywhere, including those within `node_modules`. Due to this change the existing `transformModules` option has been removed and will be ignored. There is also a list of known packages that do not require transforms in the CLI, which will evolve over time. If needed there will also be an option to add packages to this list in the future, but it is not included yet to avoid clutter.
37
+
38
+ To counteract the slowdown of the additional transforms that have been introduced, the default configuration has also been reworked to enable caching across different packages. Previously each package in a Backstage monorepo would have its own isolated Jest cache, but it is now shared between packages that have a similar enough Jest configuration.
39
+
40
+ Another change that will speed up test execution is that the transformer for `.esm.js` files has been switched. It used to be an ESM transformer based on Babel, but it is also done by sucrase now since it is significantly faster.
41
+
42
+ The changes above are not strictly breaking as all tests should still work. It may however cause excessive slowdowns in projects that have configured custom transforms in the `jest` field within `package.json` files. In this case it is either best to consider removing the custom transforms, or overriding the `transformIgnorePatterns` to instead use Jest's default `'/node_modules/'` pattern.
43
+
44
+ This change also removes the `@backstage/cli/config/jestEsmTransform.js` transform, which can be replaced by using the `@backstage/cli/config/sucraseEsmTransform.js` transform instead.
45
+
46
+ ### Patch Changes
47
+
48
+ - 36e67d2f24: Internal updates to apply more strict checks to throw errors.
49
+ - Updated dependencies
50
+ - @backstage/config-loader@0.7.0
51
+ - @backstage/errors@0.1.3
52
+
53
+ ## 0.7.16
54
+
55
+ ### Patch Changes
56
+
57
+ - 53bdc66623: add a --from <location> option to the plugin install command
58
+ - 84e24fcdaf: Bump sucrase to version 3.20.2
59
+ - 6583c6ac40: Add semicolon in template to make prettier happy
60
+ - c6f927d819: Bump mini-css-extract-plugin to v2
61
+ - 16f044cb6b: Update default backend ESLint configuration to allow usage of `__dirname` in tests.
62
+ - 1ef9e64901: Add an experimental `install <plugin>` command.
63
+
64
+ Given a `pluginId`, the command looks for NPM packages matching `@backstage/plugin-{pluginId}` or `backstage-plugin-{pluginId}` or `{pluginId}`. It looks for the `experimentalInstallationRecipe` in their `package.json` for the steps of installation. Detailed documentation and API Spec to follow (and to be decided as well).
65
+
3
66
  ## 0.7.15
4
67
 
5
68
  ### Patch Changes
@@ -14,6 +14,15 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ const globalRestrictedSyntax = [
18
+ {
19
+ message:
20
+ 'Default import from winston is not allowed, import `* as winston` instead.',
21
+ selector:
22
+ 'ImportDeclaration[source.value="winston"] ImportDefaultSpecifier',
23
+ },
24
+ ];
25
+
17
26
  module.exports = {
18
27
  extends: [
19
28
  '@spotify/eslint-config-base',
@@ -69,17 +78,12 @@ module.exports = {
69
78
  // Avoid default import from winston as it breaks at runtime
70
79
  'no-restricted-syntax': [
71
80
  'error',
72
- {
73
- message:
74
- 'Default import from winston is not allowed, import `* as winston` instead.',
75
- selector:
76
- 'ImportDeclaration[source.value="winston"] ImportDefaultSpecifier',
77
- },
78
81
  {
79
82
  message:
80
83
  "`__dirname` doesn't refer to the same dir in production builds, try `resolvePackagePath()` from `@backstage/backend-common` instead.",
81
84
  selector: 'Identifier[name="__dirname"]',
82
85
  },
86
+ ...globalRestrictedSyntax,
83
87
  ],
84
88
  },
85
89
  overrides: [
@@ -103,6 +107,7 @@ module.exports = {
103
107
  bundledDependencies: true,
104
108
  },
105
109
  ],
110
+ 'no-restricted-syntax': ['error', ...globalRestrictedSyntax],
106
111
  },
107
112
  },
108
113
  ],
package/config/jest.js CHANGED
@@ -16,9 +16,27 @@
16
16
 
17
17
  const fs = require('fs-extra');
18
18
  const path = require('path');
19
+ const crypto = require('crypto');
19
20
  const glob = require('util').promisify(require('glob'));
20
-
21
- async function getProjectConfig(targetPath) {
21
+ const { version } = require('../package.json');
22
+
23
+ const transformIgnorePattern = [
24
+ '@material-ui',
25
+ '@rjsf',
26
+ 'ajv',
27
+ 'core-js',
28
+ 'jest-.*',
29
+ 'jsdom',
30
+ 'knex',
31
+ 'react',
32
+ 'react-dom',
33
+ 'highlight\\.js',
34
+ 'prismjs',
35
+ 'react-use',
36
+ 'typescript',
37
+ ].join('|');
38
+
39
+ async function getProjectConfig(targetPath, displayName) {
22
40
  const configJsPath = path.resolve(targetPath, 'jest.config.js');
23
41
  const configTsPath = path.resolve(targetPath, 'jest.config.ts');
24
42
  // If the package has it's own jest config, we use that instead.
@@ -58,10 +76,7 @@ async function getProjectConfig(targetPath) {
58
76
  currentPath = newPath;
59
77
  }
60
78
 
61
- // We add an additional Jest config parameter only known by the Backstage CLI
62
- // called `transformModules`. It's a list of modules that we want to apply
63
- // our configured jest transformations for.
64
- // This is useful when packages are published in untranspiled ESM or TS form.
79
+ // This is an old deprecated option that is no longer used.
65
80
  const transformModules = pkgJsonConfigs
66
81
  .flatMap(conf => {
67
82
  const modules = conf.transformModules || [];
@@ -70,9 +85,14 @@ async function getProjectConfig(targetPath) {
70
85
  })
71
86
  .map(name => `${name}/`)
72
87
  .join('|');
73
- const transformModulePattern = transformModules && `(?!${transformModules})`;
88
+ if (transformModules.length > 0) {
89
+ console.warn(
90
+ 'The Backstage CLI jest transformModules option is no longer used and will be ignored. All modules are now always transformed.',
91
+ );
92
+ }
74
93
 
75
94
  const options = {
95
+ ...(displayName && { displayName }),
76
96
  rootDir: path.resolve(targetPath, 'src'),
77
97
  coverageDirectory: path.resolve(targetPath, 'coverage'),
78
98
  collectCoverageFrom: ['**/*.{js,jsx,ts,tsx}', '!**/*.d.ts'],
@@ -81,8 +101,7 @@ async function getProjectConfig(targetPath) {
81
101
  },
82
102
 
83
103
  transform: {
84
- '\\.esm\\.js$': require.resolve('./jestEsmTransform.js'), // See jestEsmTransform.js
85
- '\\.(js|jsx|ts|tsx)$': require.resolve('@sucrase/jest-plugin'),
104
+ '\\.(js|jsx|ts|tsx)$': require.resolve('./jestSucraseTransform.js'),
86
105
  '\\.(bmp|gif|jpg|jpeg|png|frag|xml|svg|eot|woff|woff2|ttf)$':
87
106
  require.resolve('./jestFileTransform.js'),
88
107
  '\\.(yaml)$': require.resolve('jest-transform-yaml'),
@@ -91,11 +110,7 @@ async function getProjectConfig(targetPath) {
91
110
  // A bit more opinionated
92
111
  testMatch: ['**/?(*.)test.{js,jsx,mjs,ts,tsx}'],
93
112
 
94
- // Default behaviour is to not apply transforms for node_modules, but we still want
95
- // to apply the esm-transformer to .esm.js files, since that's what we use in backstage packages.
96
- transformIgnorePatterns: [
97
- `/node_modules/${transformModulePattern}.*\\.(?:(?<!esm\\.)js|json)$`,
98
- ],
113
+ transformIgnorePatterns: [`/node_modules/(?:${transformIgnorePattern})/`],
99
114
  };
100
115
 
101
116
  // Use src/setupTests.ts as the default location for configuring test env
@@ -103,7 +118,21 @@ async function getProjectConfig(targetPath) {
103
118
  options.setupFilesAfterEnv = ['<rootDir>/setupTests.ts'];
104
119
  }
105
120
 
106
- return Object.assign(options, ...pkgJsonConfigs);
121
+ const config = Object.assign(options, ...pkgJsonConfigs);
122
+
123
+ // The config name is a cache key that lets us share the jest cache across projects.
124
+ // If no explicit name was configured, generated one based on the configuration.
125
+ if (!config.name) {
126
+ const configHash = crypto
127
+ .createHash('md5')
128
+ .update(version)
129
+ .update(Buffer.alloc(1))
130
+ .update(JSON.stringify(config.transform))
131
+ .digest('hex');
132
+ config.name = `backstage_cli_${configHash}`;
133
+ }
134
+
135
+ return config;
107
136
  }
108
137
 
109
138
  // This loads the root jest config, which in turn will either refer to a single
@@ -143,7 +172,7 @@ async function getRootConfig() {
143
172
  const packageData = await fs.readJson(packagePath);
144
173
  const testScript = packageData.scripts && packageData.scripts.test;
145
174
  if (testScript && testScript.includes('backstage-cli test')) {
146
- return await getProjectConfig(projectPath);
175
+ return await getProjectConfig(projectPath, packageData.name);
147
176
  }
148
177
 
149
178
  return undefined;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2020 The Backstage Authors
2
+ * Copyright 2021 The Backstage Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -14,23 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const babel = require('@babel/core');
18
-
19
- // We build .esm.js files with plugin:build, so to be able to load these in tests they need to be transformed
20
- // TODO: jest is working on module support, it's possible that we can remove this in the future
21
- module.exports = {
22
- process(src) {
23
- const result = babel.transform(src, {
24
- babelrc: false,
25
- compact: false,
26
- plugins: [
27
- // This transforms the regular ESM syntax, import and export statements
28
- require.resolve('@babel/plugin-transform-modules-commonjs'),
29
- // This transforms dynamic `import()`, which is not supported yet in the Node.js VM API
30
- require.resolve('babel-plugin-dynamic-import-node'),
31
- ],
32
- });
33
-
34
- return result.code;
35
- },
36
- };
17
+ throw new Error(
18
+ 'The ./jestEsmTransform.js transform has been removed, switch to using ./jestSucraseTransform.js instead',
19
+ );
@@ -0,0 +1,66 @@
1
+ /*
2
+ * Copyright 2021 The Backstage Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ const { createHash } = require('crypto');
18
+ const { transform } = require('sucrase');
19
+ const sucrasePkg = require('sucrase/package.json');
20
+ const sucrasePluginPkg = require('@sucrase/jest-plugin/package.json');
21
+
22
+ const ESM_REGEX = /\b(?:import|export)\b/;
23
+
24
+ function process(source, filePath) {
25
+ let transforms;
26
+
27
+ if (filePath.endsWith('.esm.js')) {
28
+ transforms = ['imports'];
29
+ } else if (filePath.endsWith('.js')) {
30
+ // This is a very rough filter to avoid transforming things that we quickly
31
+ // can be sure are definitely not ESM modules.
32
+ if (ESM_REGEX.test(source)) {
33
+ transforms = ['imports', 'jsx']; // JSX within .js is currently allowed
34
+ }
35
+ } else if (filePath.endsWith('.jsx')) {
36
+ transforms = ['jsx', 'imports'];
37
+ } else if (filePath.endsWith('.ts')) {
38
+ transforms = ['typescript', 'imports'];
39
+ } else if (filePath.endsWith('.tsx')) {
40
+ transforms = ['typescript', 'jsx', 'imports'];
41
+ }
42
+
43
+ // Only apply the jest transform to the test files themselves
44
+ if (transforms && filePath.includes('.test.')) {
45
+ transforms.push('jest');
46
+ }
47
+
48
+ if (transforms) {
49
+ return transform(source, { transforms, filePath }).code;
50
+ }
51
+
52
+ return source;
53
+ }
54
+
55
+ // TODO: contribute something like this to @sucrase/jest-plugin
56
+ function getCacheKey(sourceText) {
57
+ return createHash('md5')
58
+ .update(sourceText)
59
+ .update(Buffer.alloc(1))
60
+ .update(sucrasePkg.version)
61
+ .update(Buffer.alloc(1))
62
+ .update(sucrasePluginPkg.version)
63
+ .digest('hex');
64
+ }
65
+
66
+ module.exports = { process, getCacheKey };
@@ -12,20 +12,21 @@ require('@backstage/cli-common');
12
12
  require('terser-webpack-plugin');
13
13
  var parallel = require('./parallel-a4714c72.cjs.js');
14
14
  require('mini-css-extract-plugin');
15
- var index = require('./index-74ba6239.cjs.js');
16
- require('./run-7e2d4777.cjs.js');
15
+ var index = require('./index-6fee1c9a.cjs.js');
16
+ require('./run-59c4395e.cjs.js');
17
17
  require('lodash/pickBy');
18
18
  var yn = require('yn');
19
19
  var FileSizeReporter = require('react-dev-utils/FileSizeReporter');
20
20
  var formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
21
- var paths = require('./paths-a0eb9f40.cjs.js');
21
+ var paths = require('./paths-09202a46.cjs.js');
22
22
  var chalk = require('chalk');
23
23
  require('webpack-dev-server');
24
24
  require('react-dev-utils/openBrowser');
25
- var config = require('./config-25f9b58b.cjs.js');
25
+ var config = require('./config-24fce3c1.cjs.js');
26
26
  require('commander');
27
27
  require('semver');
28
28
  require('@backstage/config/package.json');
29
+ require('@backstage/errors');
29
30
  require('child_process');
30
31
  require('util');
31
32
  require('./svgrTemplate-2d0d15cf.cjs.js');
@@ -135,4 +136,4 @@ var build = async (cmd) => {
135
136
  };
136
137
 
137
138
  exports.default = build;
138
- //# sourceMappingURL=build-6991f114.cjs.js.map
139
+ //# sourceMappingURL=build-1cbb9e7d.cjs.js.map
@@ -1,15 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var packager = require('./packager-c2a87e1f.cjs.js');
3
+ var packager = require('./packager-1ad7272f.cjs.js');
4
4
  require('fs-extra');
5
5
  require('rollup');
6
6
  require('chalk');
7
7
  require('path');
8
- require('./index-74ba6239.cjs.js');
8
+ require('./index-6fee1c9a.cjs.js');
9
9
  require('commander');
10
10
  require('semver');
11
11
  require('@backstage/cli-common');
12
12
  require('@backstage/config/package.json');
13
+ require('@backstage/errors');
13
14
  require('rollup-plugin-peer-deps-external');
14
15
  require('@rollup/plugin-commonjs');
15
16
  require('@rollup/plugin-node-resolve');
@@ -29,4 +30,4 @@ var build = async () => {
29
30
  };
30
31
 
31
32
  exports.default = build;
32
- //# sourceMappingURL=build-e9d00839.cjs.js.map
33
+ //# sourceMappingURL=build-70dd213a.cjs.js.map
@@ -1,15 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var packager = require('./packager-c2a87e1f.cjs.js');
3
+ var packager = require('./packager-1ad7272f.cjs.js');
4
4
  require('fs-extra');
5
5
  require('rollup');
6
6
  require('chalk');
7
7
  require('path');
8
- require('./index-74ba6239.cjs.js');
8
+ require('./index-6fee1c9a.cjs.js');
9
9
  require('commander');
10
10
  require('semver');
11
11
  require('@backstage/cli-common');
12
12
  require('@backstage/config/package.json');
13
+ require('@backstage/errors');
13
14
  require('rollup-plugin-peer-deps-external');
14
15
  require('@rollup/plugin-commonjs');
15
16
  require('@rollup/plugin-node-resolve');
@@ -29,4 +30,4 @@ var build = async () => {
29
30
  };
30
31
 
31
32
  exports.default = build;
32
- //# sourceMappingURL=build-584089b4.cjs.js.map
33
+ //# sourceMappingURL=build-b25b29ed.cjs.js.map
@@ -1,15 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var packager = require('./packager-c2a87e1f.cjs.js');
3
+ var packager = require('./packager-1ad7272f.cjs.js');
4
4
  require('fs-extra');
5
5
  require('rollup');
6
6
  require('chalk');
7
7
  require('path');
8
- require('./index-74ba6239.cjs.js');
8
+ require('./index-6fee1c9a.cjs.js');
9
9
  require('commander');
10
10
  require('semver');
11
11
  require('@backstage/cli-common');
12
12
  require('@backstage/config/package.json');
13
+ require('@backstage/errors');
13
14
  require('rollup-plugin-peer-deps-external');
14
15
  require('@rollup/plugin-commonjs');
15
16
  require('@rollup/plugin-node-resolve');
@@ -40,4 +41,4 @@ var build = async (cmd) => {
40
41
  };
41
42
 
42
43
  exports.default = build;
43
- //# sourceMappingURL=build-6303ed2c.cjs.js.map
44
+ //# sourceMappingURL=build-bae5a019.cjs.js.map
@@ -3,9 +3,9 @@
3
3
  var chalk = require('chalk');
4
4
  var fs = require('fs-extra');
5
5
  var path = require('path');
6
- var index$1 = require('./index-595dd01c.cjs.js');
7
- var index = require('./index-74ba6239.cjs.js');
8
- var run = require('./run-7e2d4777.cjs.js');
6
+ var index$1 = require('./index-26bec8ac.cjs.js');
7
+ var index = require('./index-6fee1c9a.cjs.js');
8
+ var run = require('./run-59c4395e.cjs.js');
9
9
  var parallel = require('./parallel-a4714c72.cjs.js');
10
10
  require('os');
11
11
  require('tar');
@@ -13,6 +13,7 @@ require('commander');
13
13
  require('semver');
14
14
  require('@backstage/cli-common');
15
15
  require('@backstage/config/package.json');
16
+ require('@backstage/errors');
16
17
  require('child_process');
17
18
  require('util');
18
19
 
@@ -73,4 +74,4 @@ async function findAppConfigs() {
73
74
  }
74
75
 
75
76
  exports.default = buildImage;
76
- //# sourceMappingURL=buildImage-40785c7b.cjs.js.map
77
+ //# sourceMappingURL=buildImage-6b35526c.cjs.js.map
@@ -1,17 +1,18 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-595dd01c.cjs.js');
4
+ var index = require('./index-26bec8ac.cjs.js');
5
5
  require('path');
6
6
  require('os');
7
7
  require('tar');
8
- require('./index-74ba6239.cjs.js');
8
+ require('./index-6fee1c9a.cjs.js');
9
9
  require('commander');
10
10
  require('chalk');
11
11
  require('semver');
12
12
  require('@backstage/cli-common');
13
13
  require('@backstage/config/package.json');
14
- require('./run-7e2d4777.cjs.js');
14
+ require('@backstage/errors');
15
+ require('./run-59c4395e.cjs.js');
15
16
  require('child_process');
16
17
  require('util');
17
18
 
@@ -29,4 +30,4 @@ var buildWorkspace = async (dir, _cmd, packages) => {
29
30
  };
30
31
 
31
32
  exports.default = buildWorkspace;
32
- //# sourceMappingURL=buildWorkspace-54f31886.cjs.js.map
33
+ //# sourceMappingURL=buildWorkspace-424d4929.cjs.js.map
@@ -3,11 +3,13 @@
3
3
  var fs = require('fs-extra');
4
4
  var chalk = require('chalk');
5
5
  var semver = require('semver');
6
+ var errors = require('@backstage/errors');
6
7
  var path = require('path');
7
- var run = require('./run-7e2d4777.cjs.js');
8
- var index = require('./index-74ba6239.cjs.js');
8
+ var run = require('./run-59c4395e.cjs.js');
9
+ var index = require('./index-6fee1c9a.cjs.js');
9
10
  var Lockfile = require('./Lockfile-80f0eec4.cjs.js');
10
- var lint = require('./lint-a76f6ca5.cjs.js');
11
+ var packages = require('./packages-a5b6a3df.cjs.js');
12
+ var lint = require('./lint-6175d471.cjs.js');
11
13
  require('child_process');
12
14
  require('util');
13
15
  require('commander');
@@ -22,48 +24,6 @@ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
22
24
  var chalk__default = /*#__PURE__*/_interopDefaultLegacy(chalk);
23
25
  var semver__default = /*#__PURE__*/_interopDefaultLegacy(semver);
24
26
 
25
- const PREFIX = "@backstage";
26
- const DEP_TYPES$1 = [
27
- "dependencies",
28
- "devDependencies",
29
- "peerDependencies",
30
- "optionalDependencies"
31
- ];
32
- async function fetchPackageInfo(name) {
33
- const output = await run.runPlain("yarn", "info", "--json", name);
34
- if (!output) {
35
- throw new index.NotFoundError(`No package information found for package ${name}`);
36
- }
37
- const info = JSON.parse(output);
38
- if (info.type !== "inspect") {
39
- throw new Error(`Received unknown yarn info for ${name}, ${output}`);
40
- }
41
- return info.data;
42
- }
43
- async function mapDependencies(targetDir) {
44
- var _a;
45
- const {Project} = require("@lerna/project");
46
- const project = new Project(targetDir);
47
- const packages = await project.getPackages();
48
- const dependencyMap = new Map();
49
- for (const pkg of packages) {
50
- const deps = DEP_TYPES$1.flatMap((t) => {
51
- var _a2;
52
- return Object.entries((_a2 = pkg.get(t)) != null ? _a2 : {});
53
- });
54
- for (const [name, range] of deps) {
55
- if (name.startsWith(PREFIX)) {
56
- dependencyMap.set(name, ((_a = dependencyMap.get(name)) != null ? _a : []).concat({
57
- range,
58
- name: pkg.name,
59
- location: pkg.location
60
- }));
61
- }
62
- }
63
- }
64
- return dependencyMap;
65
- }
66
-
67
27
  const DEP_TYPES = [
68
28
  "dependencies",
69
29
  "devDependencies",
@@ -75,7 +35,7 @@ var bump = async () => {
75
35
  const lockfilePath = index.paths.resolveTargetRoot("yarn.lock");
76
36
  const lockfile = await Lockfile.Lockfile.load(lockfilePath);
77
37
  const findTargetVersion = createVersionFinder();
78
- const dependencyMap = await mapDependencies(index.paths.targetDir);
38
+ const dependencyMap = await packages.mapDependencies(index.paths.targetDir);
79
39
  const versionBumps = new Map();
80
40
  const unlocked = Array();
81
41
  await workerThreads(16, dependencyMap.entries(), async ([name, pkgs]) => {
@@ -84,7 +44,7 @@ var bump = async () => {
84
44
  try {
85
45
  target = await findTargetVersion(name);
86
46
  } catch (error) {
87
- if (error.name === "NotFoundError") {
47
+ if (errors.isError(error) && error.name === "NotFoundError") {
88
48
  console.log(`Package info not found, ignoring package ${name}`);
89
49
  return;
90
50
  }
@@ -114,7 +74,7 @@ var bump = async () => {
114
74
  try {
115
75
  target = await findTargetVersion(name);
116
76
  } catch (error) {
117
- if (error.name === "NotFoundError") {
77
+ if (errors.isError(error) && error.name === "NotFoundError") {
118
78
  console.log(`Package info not found, ignoring package ${name}`);
119
79
  return;
120
80
  }
@@ -220,7 +180,7 @@ function createVersionFinder() {
220
180
  return existing;
221
181
  }
222
182
  console.log(`Checking for updates of ${name}`);
223
- const info = await fetchPackageInfo(name);
183
+ const info = await packages.fetchPackageInfo(name);
224
184
  const latest = info["dist-tags"].latest;
225
185
  if (!latest) {
226
186
  throw new Error(`No latest version found for ${name}`);
@@ -243,4 +203,4 @@ async function workerThreads(count, items, fn) {
243
203
  }
244
204
 
245
205
  exports.default = bump;
246
- //# sourceMappingURL=bump-f1bd882f.cjs.js.map
206
+ //# sourceMappingURL=bump-bce7f9c2.cjs.js.map
@@ -4,13 +4,14 @@ var os = require('os');
4
4
  var fs = require('fs-extra');
5
5
  var path = require('path');
6
6
  var tar = require('tar');
7
- var index$1 = require('./index-595dd01c.cjs.js');
8
- var index = require('./index-74ba6239.cjs.js');
7
+ var index$1 = require('./index-26bec8ac.cjs.js');
8
+ var index = require('./index-6fee1c9a.cjs.js');
9
9
  var parallel = require('./parallel-a4714c72.cjs.js');
10
- var packager = require('./packager-c2a87e1f.cjs.js');
11
- require('./run-7e2d4777.cjs.js');
10
+ var packager = require('./packager-1ad7272f.cjs.js');
11
+ require('./run-59c4395e.cjs.js');
12
12
  require('child_process');
13
13
  require('util');
14
+ require('@backstage/errors');
14
15
  require('commander');
15
16
  require('chalk');
16
17
  require('semver');
@@ -66,4 +67,4 @@ var bundle = async (cmd) => {
66
67
  };
67
68
 
68
69
  exports.default = bundle;
69
- //# sourceMappingURL=bundle-82c252ba.cjs.js.map
70
+ //# sourceMappingURL=bundle-cc6870fb.cjs.js.map
@@ -1,12 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-74ba6239.cjs.js');
4
+ var index = require('./index-6fee1c9a.cjs.js');
5
5
  require('commander');
6
6
  require('chalk');
7
7
  require('semver');
8
8
  require('@backstage/cli-common');
9
9
  require('@backstage/config/package.json');
10
+ require('@backstage/errors');
10
11
 
11
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
13
 
@@ -19,4 +20,4 @@ async function clean() {
19
20
  }
20
21
 
21
22
  exports.default = clean;
22
- //# sourceMappingURL=clean-d37f05f1.cjs.js.map
23
+ //# sourceMappingURL=clean-7a981ea7.cjs.js.map