@backstage/cli 0.34.4-next.2 → 0.34.4-next.3
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.
- package/CHANGELOG.md +13 -0
- package/config/jestCachingModuleLoader.js +0 -17
- package/dist/lib/version.cjs.js +11 -8
- package/dist/lib/yarnPlugin.cjs.js +46 -0
- package/dist/modules/migrate/commands/versions/bump.cjs.js +2 -34
- package/dist/modules/new/lib/execution/PortableTemplater.cjs.js +5 -1
- package/dist/packages/cli/package.json.cjs.js +1 -4
- package/dist/packages/core-components/package.json.cjs.js +1 -1
- package/dist/packages/frontend-plugin-api/package.json.cjs.js +1 -1
- package/package.json +2 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @backstage/cli
|
|
2
2
|
|
|
3
|
+
## 0.34.4-next.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f2cf564: Removed the script transform cache from the default Jest configuration. The script cache provided a moderate performance boost, but it is incompatible with Jest 30.
|
|
8
|
+
- 024645e: Remove unused @octokit modules from cli package
|
|
9
|
+
|
|
10
|
+
- @octokit/graphql
|
|
11
|
+
- @octokit/graphql-schema
|
|
12
|
+
- @octokit/oauth-app
|
|
13
|
+
|
|
14
|
+
- d14ef24: Added automatic detection and support for the Backstage Yarn plugin when generating new packages with `yarn new`. When the plugin is installed, new packages will automatically use `backstage:^` ranges for `@backstage/*` dependencies.
|
|
15
|
+
|
|
3
16
|
## 0.34.4-next.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -16,29 +16,12 @@
|
|
|
16
16
|
|
|
17
17
|
const { default: JestRuntime } = require('jest-runtime');
|
|
18
18
|
|
|
19
|
-
const scriptTransformCache = new Map();
|
|
20
|
-
|
|
21
19
|
module.exports = class CachingJestRuntime extends JestRuntime {
|
|
22
20
|
constructor(config, ...restArgs) {
|
|
23
21
|
super(config, ...restArgs);
|
|
24
22
|
this.allowLoadAsEsm = config.extensionsToTreatAsEsm.includes('.mts');
|
|
25
23
|
}
|
|
26
24
|
|
|
27
|
-
// This may or may not be a good idea. Theoretically I don't know why this would impact
|
|
28
|
-
// test correctness and flakiness, but it seems like it may introduce flakiness and strange failures.
|
|
29
|
-
// It does seem to speed up test execution by a fair amount though.
|
|
30
|
-
createScriptFromCode(scriptSource, filename) {
|
|
31
|
-
let script = scriptTransformCache.get(scriptSource);
|
|
32
|
-
if (!script) {
|
|
33
|
-
script = super.createScriptFromCode(scriptSource, filename);
|
|
34
|
-
// Tried to store the script object in a WeakRef here. It starts out at
|
|
35
|
-
// about 90% hit rate, but eventually drops all the way to 20%, and overall
|
|
36
|
-
// it seemed to increase memory usage by 20% or so.
|
|
37
|
-
scriptTransformCache.set(scriptSource, script);
|
|
38
|
-
}
|
|
39
|
-
return script;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
25
|
// Unfortunately we need to use this unstable API to make sure that .js files
|
|
43
26
|
// are only loaded as modules where ESM is supported, i.e. Node.js packages.
|
|
44
27
|
unstable_shouldLoadAsEsm(path, ...restArgs) {
|
package/dist/lib/version.cjs.js
CHANGED
|
@@ -61,20 +61,23 @@ function findVersion() {
|
|
|
61
61
|
}
|
|
62
62
|
const version = findVersion();
|
|
63
63
|
fs__default.default.pathExistsSync(paths.paths.resolveOwn("src"));
|
|
64
|
-
function createPackageVersionProvider(lockfile) {
|
|
64
|
+
function createPackageVersionProvider(lockfile, options) {
|
|
65
65
|
return (name, versionHint) => {
|
|
66
66
|
const packageVersion = packageVersions[name];
|
|
67
|
+
const lockfileEntries = lockfile?.get(name);
|
|
68
|
+
const lockfileEntry = lockfileEntries?.find(
|
|
69
|
+
(entry) => entry.range.startsWith("workspace:")
|
|
70
|
+
);
|
|
71
|
+
if (lockfileEntry) {
|
|
72
|
+
return "workspace:^";
|
|
73
|
+
}
|
|
74
|
+
if (options?.preferBackstageProtocol && name.startsWith("@backstage/")) {
|
|
75
|
+
return "backstage:^";
|
|
76
|
+
}
|
|
67
77
|
const targetVersion = versionHint || packageVersion;
|
|
68
78
|
if (!targetVersion) {
|
|
69
79
|
throw new Error(`No version available for package ${name}`);
|
|
70
80
|
}
|
|
71
|
-
const lockfileEntries = lockfile?.get(name);
|
|
72
|
-
for (const specifier of ["^", "~", "*"]) {
|
|
73
|
-
const range = `workspace:${specifier}`;
|
|
74
|
-
if (lockfileEntries?.some((entry) => entry.range === range)) {
|
|
75
|
-
return range;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
81
|
const validRanges = lockfileEntries?.filter(
|
|
79
82
|
(entry) => semver__default.default.satisfies(targetVersion, entry.range)
|
|
80
83
|
);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var yaml = require('yaml');
|
|
5
|
+
var z = require('zod');
|
|
6
|
+
var paths = require('./paths.cjs.js');
|
|
7
|
+
|
|
8
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
9
|
+
|
|
10
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
11
|
+
var yaml__default = /*#__PURE__*/_interopDefaultCompat(yaml);
|
|
12
|
+
var z__default = /*#__PURE__*/_interopDefaultCompat(z);
|
|
13
|
+
|
|
14
|
+
const yarnRcSchema = z__default.default.object({
|
|
15
|
+
plugins: z__default.default.array(
|
|
16
|
+
z__default.default.object({
|
|
17
|
+
path: z__default.default.string()
|
|
18
|
+
})
|
|
19
|
+
).optional()
|
|
20
|
+
});
|
|
21
|
+
async function getHasYarnPlugin() {
|
|
22
|
+
const yarnRcPath = paths.paths.resolveTargetRoot(".yarnrc.yml");
|
|
23
|
+
const yarnRcContent = await fs__default.default.readFile(yarnRcPath, "utf-8").catch((e) => {
|
|
24
|
+
if (e.code === "ENOENT") {
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
27
|
+
throw e;
|
|
28
|
+
});
|
|
29
|
+
if (!yarnRcContent) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const parseResult = yarnRcSchema.safeParse(yaml__default.default.parse(yarnRcContent));
|
|
33
|
+
if (!parseResult.success) {
|
|
34
|
+
throw new Error(
|
|
35
|
+
`Unexpected content in .yarnrc.yml: ${parseResult.error.toString()}`
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
const yarnRc = parseResult.data;
|
|
39
|
+
const backstagePlugin = yarnRc.plugins?.some(
|
|
40
|
+
(plugin) => plugin.path === ".yarn/plugins/@yarnpkg/plugin-backstage.cjs"
|
|
41
|
+
);
|
|
42
|
+
return Boolean(backstagePlugin);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exports.getHasYarnPlugin = getHasYarnPlugin;
|
|
46
|
+
//# sourceMappingURL=yarnPlugin.cjs.js.map
|
|
@@ -6,11 +6,10 @@ var fs = require('fs-extra');
|
|
|
6
6
|
var chalk = require('chalk');
|
|
7
7
|
var minimatch = require('minimatch');
|
|
8
8
|
var semver = require('semver');
|
|
9
|
-
var yaml = require('yaml');
|
|
10
|
-
var z = require('zod');
|
|
11
9
|
var errors = require('@backstage/errors');
|
|
12
10
|
var path = require('path');
|
|
13
11
|
var paths = require('../../../../lib/paths.cjs.js');
|
|
12
|
+
var yarnPlugin = require('../../../../lib/yarnPlugin.cjs.js');
|
|
14
13
|
var Lockfile = require('../../../../lib/versioning/Lockfile.cjs.js');
|
|
15
14
|
var packages = require('../../../../lib/versioning/packages.cjs.js');
|
|
16
15
|
var cliCommon = require('@backstage/cli-common');
|
|
@@ -25,8 +24,6 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
|
|
|
25
24
|
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
26
25
|
var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
|
|
27
26
|
var semver__default = /*#__PURE__*/_interopDefaultCompat(semver);
|
|
28
|
-
var yaml__default = /*#__PURE__*/_interopDefaultCompat(yaml);
|
|
29
|
-
var z__default = /*#__PURE__*/_interopDefaultCompat(z);
|
|
30
27
|
|
|
31
28
|
maybeBootstrapProxy();
|
|
32
29
|
function maybeBootstrapProxy() {
|
|
@@ -56,7 +53,7 @@ function extendsDefaultPattern(pattern) {
|
|
|
56
53
|
var bump = async (opts) => {
|
|
57
54
|
const lockfilePath = paths.paths.resolveTargetRoot("yarn.lock");
|
|
58
55
|
const lockfile = await Lockfile.Lockfile.load(lockfilePath);
|
|
59
|
-
const hasYarnPlugin = await getHasYarnPlugin();
|
|
56
|
+
const hasYarnPlugin = await yarnPlugin.getHasYarnPlugin();
|
|
60
57
|
let pattern = opts.pattern;
|
|
61
58
|
if (!pattern) {
|
|
62
59
|
console.log(`Using default pattern glob ${DEFAULT_PATTERN_GLOB}`);
|
|
@@ -377,35 +374,6 @@ async function asLockfileVersion(version) {
|
|
|
377
374
|
}
|
|
378
375
|
return version;
|
|
379
376
|
}
|
|
380
|
-
const yarnRcSchema = z__default.default.object({
|
|
381
|
-
plugins: z__default.default.array(
|
|
382
|
-
z__default.default.object({
|
|
383
|
-
path: z__default.default.string()
|
|
384
|
-
})
|
|
385
|
-
).optional()
|
|
386
|
-
});
|
|
387
|
-
async function getHasYarnPlugin() {
|
|
388
|
-
const yarnRcPath = paths.paths.resolveTargetRoot(".yarnrc.yml");
|
|
389
|
-
const yarnRcContent = await fs__default.default.readFile(yarnRcPath, "utf-8").catch((e) => {
|
|
390
|
-
if (e.code === "ENOENT") {
|
|
391
|
-
return "";
|
|
392
|
-
}
|
|
393
|
-
throw e;
|
|
394
|
-
});
|
|
395
|
-
if (!yarnRcContent) {
|
|
396
|
-
return false;
|
|
397
|
-
}
|
|
398
|
-
const parseResult = yarnRcSchema.safeParse(yaml__default.default.parse(yarnRcContent));
|
|
399
|
-
if (!parseResult.success) {
|
|
400
|
-
throw new Error(
|
|
401
|
-
`Unexpected content in .yarnrc.yml: ${parseResult.error.toString()}`
|
|
402
|
-
);
|
|
403
|
-
}
|
|
404
|
-
const yarnRc = parseResult.data;
|
|
405
|
-
return yarnRc.plugins?.some(
|
|
406
|
-
(plugin) => plugin.path === ".yarn/plugins/@yarnpkg/plugin-backstage.cjs"
|
|
407
|
-
);
|
|
408
|
-
}
|
|
409
377
|
|
|
410
378
|
exports.bumpBackstageJsonVersion = bumpBackstageJsonVersion;
|
|
411
379
|
exports.createStrictVersionFinder = createStrictVersionFinder;
|
|
@@ -17,6 +17,7 @@ require('../../../../lib/run.cjs.js');
|
|
|
17
17
|
require('@backstage/errors');
|
|
18
18
|
var paths = require('../../../../lib/paths.cjs.js');
|
|
19
19
|
var version = require('../../../../lib/version.cjs.js');
|
|
20
|
+
var yarnPlugin = require('../../../../lib/yarnPlugin.cjs.js');
|
|
20
21
|
|
|
21
22
|
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
22
23
|
|
|
@@ -47,7 +48,10 @@ class PortableTemplater {
|
|
|
47
48
|
lockfile = await Lockfile.Lockfile.load(paths.paths.resolveTargetRoot("yarn.lock"));
|
|
48
49
|
} catch {
|
|
49
50
|
}
|
|
50
|
-
const
|
|
51
|
+
const hasYarnPlugin = await yarnPlugin.getHasYarnPlugin();
|
|
52
|
+
const versionProvider = version.createPackageVersionProvider(lockfile, {
|
|
53
|
+
preferBackstageProtocol: hasYarnPlugin
|
|
54
|
+
});
|
|
51
55
|
const templater = new PortableTemplater(
|
|
52
56
|
{
|
|
53
57
|
versionQuery(name, versionHint) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var version = "0.34.4-next.
|
|
3
|
+
var version = "0.34.4-next.3";
|
|
4
4
|
var dependencies = {
|
|
5
5
|
"@backstage/catalog-model": "workspace:^",
|
|
6
6
|
"@backstage/cli-common": "workspace:^",
|
|
@@ -14,9 +14,6 @@ var dependencies = {
|
|
|
14
14
|
"@backstage/types": "workspace:^",
|
|
15
15
|
"@manypkg/get-packages": "^1.1.3",
|
|
16
16
|
"@module-federation/enhanced": "^0.9.0",
|
|
17
|
-
"@octokit/graphql": "^5.0.0",
|
|
18
|
-
"@octokit/graphql-schema": "^13.7.0",
|
|
19
|
-
"@octokit/oauth-app": "^4.2.0",
|
|
20
17
|
"@octokit/request": "^8.0.0",
|
|
21
18
|
"@rollup/plugin-commonjs": "^26.0.0",
|
|
22
19
|
"@rollup/plugin-json": "^6.0.0",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/cli",
|
|
3
|
-
"version": "0.34.4-next.
|
|
3
|
+
"version": "0.34.4-next.3",
|
|
4
4
|
"description": "CLI for developing Backstage plugins and apps",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "cli"
|
|
@@ -59,9 +59,6 @@
|
|
|
59
59
|
"@backstage/types": "1.2.2",
|
|
60
60
|
"@manypkg/get-packages": "^1.1.3",
|
|
61
61
|
"@module-federation/enhanced": "^0.9.0",
|
|
62
|
-
"@octokit/graphql": "^5.0.0",
|
|
63
|
-
"@octokit/graphql-schema": "^13.7.0",
|
|
64
|
-
"@octokit/oauth-app": "^4.2.0",
|
|
65
62
|
"@octokit/request": "^8.0.0",
|
|
66
63
|
"@rollup/plugin-commonjs": "^26.0.0",
|
|
67
64
|
"@rollup/plugin-json": "^6.0.0",
|
|
@@ -159,7 +156,7 @@
|
|
|
159
156
|
"@backstage/catalog-client": "1.12.0",
|
|
160
157
|
"@backstage/config": "1.3.5-next.0",
|
|
161
158
|
"@backstage/core-app-api": "1.19.1-next.0",
|
|
162
|
-
"@backstage/core-components": "0.18.2-next.
|
|
159
|
+
"@backstage/core-components": "0.18.2-next.3",
|
|
163
160
|
"@backstage/core-plugin-api": "1.11.1-next.0",
|
|
164
161
|
"@backstage/dev-utils": "1.1.15-next.2",
|
|
165
162
|
"@backstage/errors": "1.2.7",
|