@backstage/cli 0.18.0 → 0.18.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.
- package/CHANGELOG.md +23 -0
- package/config/eslint-factory.js +1 -1
- package/dist/cjs/{Lockfile-48dc675e.cjs.js → Lockfile-72b7072e.cjs.js} +25 -9
- package/dist/cjs/{PackageGraph-1d7b086a.cjs.js → PackageGraph-7ea22294.cjs.js} +17 -9
- package/dist/cjs/{build-52ba70a2.cjs.js → build-688edcd3.cjs.js} +26 -15
- package/dist/cjs/{buildBackend-55985c84.cjs.js → buildBackend-ac6c633b.cjs.js} +61 -36
- package/dist/cjs/{buildWorkspace-d663903d.cjs.js → buildWorkspace-76f958f0.cjs.js} +7 -7
- package/dist/cjs/{bump-1a3769e9.cjs.js → bump-db89c0f3.cjs.js} +88 -33
- package/dist/cjs/{clean-9a8c294a.cjs.js → clean-68c34bfd.cjs.js} +2 -2
- package/dist/cjs/{config-de1bf46a.cjs.js → config-9d64a562.cjs.js} +15 -11
- package/dist/cjs/{create-b0ca2add.cjs.js → create-94a20b19.cjs.js} +80 -32
- package/dist/cjs/{createDistWorkspace-fc94c796.cjs.js → createDistWorkspace-0412df70.cjs.js} +137 -65
- package/dist/cjs/{createPlugin-4d7e1b01.cjs.js → createPlugin-02079f81.cjs.js} +69 -30
- package/dist/cjs/{diff-a561bee3.cjs.js → diff-f68eaf29.cjs.js} +68 -16
- package/dist/cjs/{docs-bd70b38e.cjs.js → docs-1527b730.cjs.js} +9 -5
- package/dist/cjs/{fix-47eb8dc4.cjs.js → fix-56a6d092.cjs.js} +17 -7
- package/dist/cjs/{index-27d57881.cjs.js → index-025feb83.cjs.js} +10 -10
- package/dist/cjs/{index-bb24147b.cjs.js → index-16fe1d27.cjs.js} +39 -12
- package/dist/cjs/{index-4f4a8498.cjs.js → index-4f8f2562.cjs.js} +58 -38
- package/dist/cjs/{index-7e13cc9d.cjs.js → index-b7ce30d9.cjs.js} +151 -50
- package/dist/cjs/{info-29f0ee36.cjs.js → info-88431720.cjs.js} +20 -6
- package/dist/cjs/{install-fea0e3f5.cjs.js → install-4d423030.cjs.js} +44 -17
- package/dist/cjs/{lint-0db8937c.cjs.js → lint-2fd53d5f.cjs.js} +4 -4
- package/dist/cjs/{lint-81a75364.cjs.js → lint-bd7b9e13.cjs.js} +37 -11
- package/dist/cjs/{lint-1711bbbb.cjs.js → lint-da011116.cjs.js} +5 -3
- package/dist/cjs/{list-deprecations-cea8fad3.cjs.js → list-deprecations-268e1d6b.cjs.js} +3 -3
- package/dist/cjs/{pack-8ab429c0.cjs.js → pack-ce12d4b7.cjs.js} +17 -11
- package/dist/cjs/packageLintConfigs-9f3b0766.cjs.js +83 -0
- package/dist/cjs/packageRole-582e0558.cjs.js +59 -0
- package/dist/cjs/{packageRoles-a310f84c.cjs.js → packageRoles-fec3121b.cjs.js} +5 -3
- package/dist/cjs/packageScripts-04ac9bc2.cjs.js +98 -0
- package/dist/cjs/{packages-ea5c38ec.cjs.js → packages-24759dcb.cjs.js} +17 -12
- package/dist/cjs/parallel-a8f6219c.cjs.js +187 -0
- package/dist/cjs/{paths-d98c9d0c.cjs.js → paths-13d8625f.cjs.js} +102 -57
- package/dist/cjs/{print-4cbe70e7.cjs.js → print-58fe18ba.cjs.js} +4 -4
- package/dist/cjs/{run-5e05ba2c.cjs.js → run-f4586ef6.cjs.js} +2 -2
- package/dist/cjs/{schema-2c842cbe.cjs.js → schema-65c31be1.cjs.js} +9 -5
- package/dist/cjs/{tasks-b054c9ce.cjs.js → tasks-16da761b.cjs.js} +29 -12
- package/dist/cjs/{test-b5969f53.cjs.js → test-464a46fe.cjs.js} +3 -3
- package/dist/cjs/{validate-8a03d402.cjs.js → validate-3231ba7d.cjs.js} +4 -4
- package/dist/index.cjs.js +1 -1
- package/package.json +12 -12
- package/dist/cjs/packageLintConfigs-77b71b79.cjs.js +0 -74
- package/dist/cjs/packageRole-d1e7c7d6.cjs.js +0 -53
- package/dist/cjs/packageScripts-6731503e.cjs.js +0 -96
- 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-
|
|
4
|
+
var index = require('./index-b7ce30d9.cjs.js');
|
|
5
5
|
var path = require('path');
|
|
6
6
|
require('commander');
|
|
7
7
|
require('chalk');
|
|
@@ -22,14 +22,18 @@ function resolveEntrypoint(pkg, name) {
|
|
|
22
22
|
}
|
|
23
23
|
async function writeReleaseStageEntrypoint(pkg, stage) {
|
|
24
24
|
await fs__default["default"].ensureDir(index.paths.resolveTarget(stage));
|
|
25
|
-
await fs__default["default"].writeJson(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
await fs__default["default"].writeJson(
|
|
26
|
+
index.paths.resolveTarget(stage, PKG_PATH),
|
|
27
|
+
{
|
|
28
|
+
name: pkg.name,
|
|
29
|
+
version: pkg.version,
|
|
30
|
+
main: resolveEntrypoint(pkg, "main"),
|
|
31
|
+
module: resolveEntrypoint(pkg, "module"),
|
|
32
|
+
browser: resolveEntrypoint(pkg, "browser"),
|
|
33
|
+
types: path.join("..", pkg.publishConfig[`${stage}Types`])
|
|
34
|
+
},
|
|
35
|
+
{ encoding: "utf8", spaces: 2 }
|
|
36
|
+
);
|
|
33
37
|
}
|
|
34
38
|
const pre = async () => {
|
|
35
39
|
var _a;
|
|
@@ -63,10 +67,12 @@ const post = async () => {
|
|
|
63
67
|
await fs__default["default"].remove(index.paths.resolveTarget("beta"));
|
|
64
68
|
}
|
|
65
69
|
} catch (error) {
|
|
66
|
-
console.warn(
|
|
70
|
+
console.warn(
|
|
71
|
+
`Failed to restore package.json during postpack, ${error}. Your package will be fine but you may have ended up with some garbage in the repo.`
|
|
72
|
+
);
|
|
67
73
|
}
|
|
68
74
|
};
|
|
69
75
|
|
|
70
76
|
exports.post = post;
|
|
71
77
|
exports.pre = pre;
|
|
72
|
-
//# sourceMappingURL=pack-
|
|
78
|
+
//# sourceMappingURL=pack-ce12d4b7.cjs.js.map
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var PackageGraph = require('./PackageGraph-7ea22294.cjs.js');
|
|
6
|
+
var run = require('./run-f4586ef6.cjs.js');
|
|
7
|
+
require('@manypkg/get-packages');
|
|
8
|
+
require('./index-b7ce30d9.cjs.js');
|
|
9
|
+
require('commander');
|
|
10
|
+
require('chalk');
|
|
11
|
+
require('semver');
|
|
12
|
+
require('@backstage/cli-common');
|
|
13
|
+
require('@backstage/errors');
|
|
14
|
+
require('child_process');
|
|
15
|
+
require('util');
|
|
16
|
+
|
|
17
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
18
|
+
|
|
19
|
+
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
20
|
+
|
|
21
|
+
const PREFIX = `module.exports = require('@backstage/cli/config/eslint-factory')`;
|
|
22
|
+
async function command() {
|
|
23
|
+
const packages = await PackageGraph.PackageGraph.listTargetPackages();
|
|
24
|
+
const oldConfigs = [
|
|
25
|
+
require.resolve("@backstage/cli/config/eslint.js"),
|
|
26
|
+
require.resolve("@backstage/cli/config/eslint.backend.js")
|
|
27
|
+
];
|
|
28
|
+
const configPaths = new Array();
|
|
29
|
+
await Promise.all(
|
|
30
|
+
packages.map(async ({ dir, packageJson }) => {
|
|
31
|
+
var _a;
|
|
32
|
+
const configPath = path.resolve(dir, ".eslintrc.js");
|
|
33
|
+
if (!await fs__default["default"].pathExists(configPath)) {
|
|
34
|
+
console.log(`Skipping ${packageJson.name}, missing .eslintrc.js`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
let existingConfig;
|
|
38
|
+
try {
|
|
39
|
+
existingConfig = require(configPath);
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.log(
|
|
42
|
+
`Skipping ${packageJson.name}, failed to load .eslintrc.js, ${error}`
|
|
43
|
+
);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const extendsArray = (_a = existingConfig.extends) != null ? _a : [];
|
|
47
|
+
const extendIndex = extendsArray.findIndex((p) => oldConfigs.includes(p));
|
|
48
|
+
if (extendIndex === -1) {
|
|
49
|
+
console.log(
|
|
50
|
+
`Skipping ${packageJson.name}, .eslintrc.js does not extend the legacy config`
|
|
51
|
+
);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
extendsArray.splice(extendIndex, 1);
|
|
55
|
+
if (extendsArray.length === 0) {
|
|
56
|
+
delete existingConfig.extends;
|
|
57
|
+
}
|
|
58
|
+
if (Object.keys(existingConfig).length > 0) {
|
|
59
|
+
await fs__default["default"].writeFile(
|
|
60
|
+
configPath,
|
|
61
|
+
`${PREFIX}(__dirname, ${JSON.stringify(existingConfig, null, 2)});
|
|
62
|
+
`
|
|
63
|
+
);
|
|
64
|
+
} else {
|
|
65
|
+
await fs__default["default"].writeFile(configPath, `${PREFIX}(__dirname);
|
|
66
|
+
`);
|
|
67
|
+
}
|
|
68
|
+
configPaths.push(configPath);
|
|
69
|
+
})
|
|
70
|
+
);
|
|
71
|
+
let hasPrettier = false;
|
|
72
|
+
try {
|
|
73
|
+
require.resolve("prettier");
|
|
74
|
+
hasPrettier = true;
|
|
75
|
+
} catch {
|
|
76
|
+
}
|
|
77
|
+
if (hasPrettier) {
|
|
78
|
+
await run.runPlain("prettier", "--write", ...configPaths);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
exports.command = command;
|
|
83
|
+
//# sourceMappingURL=packageLintConfigs-9f3b0766.cjs.js.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var getPackages = require('@manypkg/get-packages');
|
|
6
|
+
var index = require('./index-b7ce30d9.cjs.js');
|
|
7
|
+
var packageRoles = require('./packageRoles-fec3121b.cjs.js');
|
|
8
|
+
require('commander');
|
|
9
|
+
require('chalk');
|
|
10
|
+
require('semver');
|
|
11
|
+
require('@backstage/cli-common');
|
|
12
|
+
require('@backstage/errors');
|
|
13
|
+
require('zod');
|
|
14
|
+
|
|
15
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
16
|
+
|
|
17
|
+
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
18
|
+
|
|
19
|
+
var packageRole = async () => {
|
|
20
|
+
const { packages } = await getPackages.getPackages(index.paths.targetDir);
|
|
21
|
+
await Promise.all(
|
|
22
|
+
packages.map(async ({ dir, packageJson: pkg }) => {
|
|
23
|
+
const { name } = pkg;
|
|
24
|
+
const existingRole = packageRoles.getRoleFromPackage(pkg);
|
|
25
|
+
if (existingRole) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const detectedRole = packageRoles.detectRoleFromPackage(pkg);
|
|
29
|
+
if (!detectedRole) {
|
|
30
|
+
console.error(`No role detected for package ${name}`);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
console.log(`Detected package role of ${name} as ${detectedRole}`);
|
|
34
|
+
let newPkg = pkg;
|
|
35
|
+
const pkgKeys = Object.keys(pkg);
|
|
36
|
+
if (pkgKeys.includes("backstage")) {
|
|
37
|
+
newPkg.backstage = {
|
|
38
|
+
...newPkg.backstage,
|
|
39
|
+
role: detectedRole
|
|
40
|
+
};
|
|
41
|
+
} else {
|
|
42
|
+
const index = Math.max(
|
|
43
|
+
pkgKeys.indexOf("version"),
|
|
44
|
+
pkgKeys.indexOf("private"),
|
|
45
|
+
pkgKeys.indexOf("publishConfig")
|
|
46
|
+
) + 1 || pkgKeys.length;
|
|
47
|
+
const pkgEntries = Object.entries(pkg);
|
|
48
|
+
pkgEntries.splice(index, 0, ["backstage", { role: detectedRole }]);
|
|
49
|
+
newPkg = Object.fromEntries(pkgEntries);
|
|
50
|
+
}
|
|
51
|
+
await fs__default["default"].writeJson(path.resolve(dir, "package.json"), newPkg, {
|
|
52
|
+
spaces: 2
|
|
53
|
+
});
|
|
54
|
+
})
|
|
55
|
+
);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
exports["default"] = packageRole;
|
|
59
|
+
//# sourceMappingURL=packageRole-582e0558.cjs.js.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var zod = require('zod');
|
|
4
4
|
var fs = require('fs-extra');
|
|
5
|
-
var index = require('./index-
|
|
5
|
+
var index = require('./index-b7ce30d9.cjs.js');
|
|
6
6
|
|
|
7
7
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
8
|
|
|
@@ -78,7 +78,9 @@ function getRoleFromPackage(pkgJson) {
|
|
|
78
78
|
if (pkg.backstage) {
|
|
79
79
|
const { role } = pkg.backstage;
|
|
80
80
|
if (!role) {
|
|
81
|
-
throw new Error(
|
|
81
|
+
throw new Error(
|
|
82
|
+
`Package ${pkg.name} must specify a role in the "backstage" field`
|
|
83
|
+
);
|
|
82
84
|
}
|
|
83
85
|
return getRoleInfo(role).role;
|
|
84
86
|
}
|
|
@@ -155,4 +157,4 @@ exports.detectRoleFromPackage = detectRoleFromPackage;
|
|
|
155
157
|
exports.findRoleFromCommand = findRoleFromCommand;
|
|
156
158
|
exports.getRoleFromPackage = getRoleFromPackage;
|
|
157
159
|
exports.getRoleInfo = getRoleInfo;
|
|
158
|
-
//# sourceMappingURL=packageRoles-
|
|
160
|
+
//# sourceMappingURL=packageRoles-fec3121b.cjs.js.map
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var PackageGraph = require('./PackageGraph-7ea22294.cjs.js');
|
|
6
|
+
var packageRoles = require('./packageRoles-fec3121b.cjs.js');
|
|
7
|
+
require('@manypkg/get-packages');
|
|
8
|
+
require('./index-b7ce30d9.cjs.js');
|
|
9
|
+
require('commander');
|
|
10
|
+
require('chalk');
|
|
11
|
+
require('semver');
|
|
12
|
+
require('@backstage/cli-common');
|
|
13
|
+
require('@backstage/errors');
|
|
14
|
+
require('child_process');
|
|
15
|
+
require('util');
|
|
16
|
+
require('zod');
|
|
17
|
+
|
|
18
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
19
|
+
|
|
20
|
+
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
21
|
+
|
|
22
|
+
const configArgPattern = /--config[=\s][^\s$]+/;
|
|
23
|
+
const noStartRoles = ["cli", "common-library"];
|
|
24
|
+
async function command() {
|
|
25
|
+
const packages = await PackageGraph.PackageGraph.listTargetPackages();
|
|
26
|
+
await Promise.all(
|
|
27
|
+
packages.map(async ({ dir, packageJson }) => {
|
|
28
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
29
|
+
const role = packageRoles.getRoleFromPackage(packageJson);
|
|
30
|
+
if (!role) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const roleInfo = packageRoles.getRoleInfo(role);
|
|
34
|
+
const hasStart = !noStartRoles.includes(role);
|
|
35
|
+
const needsPack = !(roleInfo.output.includes("bundle") || role === "cli");
|
|
36
|
+
const scripts = (_a = packageJson.scripts) != null ? _a : {};
|
|
37
|
+
const startCmd = ["start"];
|
|
38
|
+
if ((_b = scripts.start) == null ? void 0 : _b.includes("--check")) {
|
|
39
|
+
startCmd.push("--check");
|
|
40
|
+
}
|
|
41
|
+
if ((_c = scripts.start) == null ? void 0 : _c.includes("--config")) {
|
|
42
|
+
startCmd.push(...(_d = scripts.start.match(configArgPattern)) != null ? _d : []);
|
|
43
|
+
}
|
|
44
|
+
const buildCmd = ["build"];
|
|
45
|
+
if ((_e = scripts.build) == null ? void 0 : _e.includes("--minify")) {
|
|
46
|
+
buildCmd.push("--minify");
|
|
47
|
+
}
|
|
48
|
+
if ((_f = scripts.build) == null ? void 0 : _f.includes("--experimental-type-build")) {
|
|
49
|
+
buildCmd.push("--experimental-type-build");
|
|
50
|
+
}
|
|
51
|
+
if ((_g = scripts.build) == null ? void 0 : _g.includes("--config")) {
|
|
52
|
+
buildCmd.push(...(_h = scripts.build.match(configArgPattern)) != null ? _h : []);
|
|
53
|
+
}
|
|
54
|
+
const testCmd = ["test"];
|
|
55
|
+
if ((_i = scripts.test) == null ? void 0 : _i.startsWith("backstage-cli test")) {
|
|
56
|
+
const args = scripts.test.slice("backstage-cli test".length).split(" ").filter(Boolean);
|
|
57
|
+
if (args.includes("--passWithNoTests")) {
|
|
58
|
+
args.splice(args.indexOf("--passWithNoTests"), 1);
|
|
59
|
+
}
|
|
60
|
+
testCmd.push(...args);
|
|
61
|
+
}
|
|
62
|
+
const expectedScripts = {
|
|
63
|
+
...hasStart && {
|
|
64
|
+
start: `backstage-cli package ${startCmd.join(" ")}`
|
|
65
|
+
},
|
|
66
|
+
build: `backstage-cli package ${buildCmd.join(" ")}`,
|
|
67
|
+
lint: "backstage-cli package lint",
|
|
68
|
+
test: `backstage-cli package ${testCmd.join(" ")}`,
|
|
69
|
+
clean: "backstage-cli package clean",
|
|
70
|
+
...needsPack && {
|
|
71
|
+
postpack: "backstage-cli package postpack",
|
|
72
|
+
prepack: "backstage-cli package prepack"
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
let changed = false;
|
|
76
|
+
const currentScripts = packageJson.scripts = packageJson.scripts || {};
|
|
77
|
+
for (const [name, value] of Object.entries(expectedScripts)) {
|
|
78
|
+
const currentScript = currentScripts[name];
|
|
79
|
+
const isMissing = !currentScript;
|
|
80
|
+
const isDifferent = currentScript !== value;
|
|
81
|
+
const isBackstageScript = currentScript == null ? void 0 : currentScript.includes("backstage-cli");
|
|
82
|
+
if (isMissing || isDifferent && isBackstageScript) {
|
|
83
|
+
changed = true;
|
|
84
|
+
currentScripts[name] = value;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (changed) {
|
|
88
|
+
console.log(`Updating scripts for ${packageJson.name}`);
|
|
89
|
+
await fs__default["default"].writeJson(path.resolve(dir, "package.json"), packageJson, {
|
|
90
|
+
spaces: 2
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
exports.command = command;
|
|
98
|
+
//# sourceMappingURL=packageScripts-04ac9bc2.cjs.js.map
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
var minimatch = require('minimatch');
|
|
4
4
|
var getPackages = require('@manypkg/get-packages');
|
|
5
|
-
var run = require('./run-
|
|
6
|
-
var index = require('./index-
|
|
5
|
+
var run = require('./run-f4586ef6.cjs.js');
|
|
6
|
+
var index = require('./index-b7ce30d9.cjs.js');
|
|
7
7
|
|
|
8
8
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
9
|
|
|
@@ -32,17 +32,22 @@ async function mapDependencies(targetDir, pattern) {
|
|
|
32
32
|
packages.push(root);
|
|
33
33
|
const dependencyMap = /* @__PURE__ */ new Map();
|
|
34
34
|
for (const pkg of packages) {
|
|
35
|
-
const deps = DEP_TYPES.flatMap(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
const deps = DEP_TYPES.flatMap(
|
|
36
|
+
(t) => {
|
|
37
|
+
var _a2;
|
|
38
|
+
return Object.entries((_a2 = pkg.packageJson[t]) != null ? _a2 : {});
|
|
39
|
+
}
|
|
40
|
+
);
|
|
39
41
|
for (const [name, range] of deps) {
|
|
40
42
|
if (minimatch__default["default"](name, pattern)) {
|
|
41
|
-
dependencyMap.set(
|
|
42
|
-
|
|
43
|
-
name:
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
dependencyMap.set(
|
|
44
|
+
name,
|
|
45
|
+
((_a = dependencyMap.get(name)) != null ? _a : []).concat({
|
|
46
|
+
range,
|
|
47
|
+
name: pkg.packageJson.name,
|
|
48
|
+
location: pkg.dir
|
|
49
|
+
})
|
|
50
|
+
);
|
|
46
51
|
}
|
|
47
52
|
}
|
|
48
53
|
}
|
|
@@ -51,4 +56,4 @@ async function mapDependencies(targetDir, pattern) {
|
|
|
51
56
|
|
|
52
57
|
exports.fetchPackageInfo = fetchPackageInfo;
|
|
53
58
|
exports.mapDependencies = mapDependencies;
|
|
54
|
-
//# sourceMappingURL=packages-
|
|
59
|
+
//# sourceMappingURL=packages-24759dcb.cjs.js.map
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var os = require('os');
|
|
4
|
+
var worker_threads = require('worker_threads');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
7
|
+
|
|
8
|
+
var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
|
|
9
|
+
|
|
10
|
+
const defaultParallelism = Math.ceil(os__default["default"].cpus().length / 2);
|
|
11
|
+
const PARALLEL_ENV_VAR = "BACKSTAGE_CLI_BUILD_PARALLEL";
|
|
12
|
+
function parseParallelismOption(parallel) {
|
|
13
|
+
if (parallel === void 0 || parallel === null) {
|
|
14
|
+
return defaultParallelism;
|
|
15
|
+
} else if (typeof parallel === "boolean") {
|
|
16
|
+
return parallel ? defaultParallelism : 1;
|
|
17
|
+
} else if (typeof parallel === "number" && Number.isInteger(parallel)) {
|
|
18
|
+
if (parallel < 1) {
|
|
19
|
+
return 1;
|
|
20
|
+
}
|
|
21
|
+
return parallel;
|
|
22
|
+
} else if (typeof parallel === "string") {
|
|
23
|
+
if (parallel === "true") {
|
|
24
|
+
return parseParallelismOption(true);
|
|
25
|
+
} else if (parallel === "false") {
|
|
26
|
+
return parseParallelismOption(false);
|
|
27
|
+
}
|
|
28
|
+
const parsed = Number(parallel);
|
|
29
|
+
if (Number.isInteger(parsed)) {
|
|
30
|
+
return parseParallelismOption(parsed);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
throw Error(
|
|
34
|
+
`Parallel option value '${parallel}' is not a boolean or integer`
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
function getEnvironmentParallelism() {
|
|
38
|
+
return parseParallelismOption(process.env[PARALLEL_ENV_VAR]);
|
|
39
|
+
}
|
|
40
|
+
async function runParallelWorkers(options) {
|
|
41
|
+
const { parallelismFactor = 1, parallelismSetting, items, worker } = options;
|
|
42
|
+
const parallelism = parallelismSetting ? parseParallelismOption(parallelismSetting) : getEnvironmentParallelism();
|
|
43
|
+
const sharedIterator = items[Symbol.iterator]();
|
|
44
|
+
const sharedIterable = {
|
|
45
|
+
[Symbol.iterator]: () => sharedIterator
|
|
46
|
+
};
|
|
47
|
+
const workerCount = Math.max(Math.floor(parallelismFactor * parallelism), 1);
|
|
48
|
+
return Promise.all(
|
|
49
|
+
Array(workerCount).fill(0).map(async () => {
|
|
50
|
+
for (const value of sharedIterable) {
|
|
51
|
+
await worker(value);
|
|
52
|
+
}
|
|
53
|
+
})
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
async function runWorkerQueueThreads(options) {
|
|
57
|
+
const items = Array.from(options.items);
|
|
58
|
+
const {
|
|
59
|
+
workerFactory,
|
|
60
|
+
workerData,
|
|
61
|
+
threadCount = Math.min(getEnvironmentParallelism(), items.length)
|
|
62
|
+
} = options;
|
|
63
|
+
const iterator = items[Symbol.iterator]();
|
|
64
|
+
const results = new Array();
|
|
65
|
+
let itemIndex = 0;
|
|
66
|
+
await Promise.all(
|
|
67
|
+
Array(threadCount).fill(0).map(async () => {
|
|
68
|
+
const thread = new worker_threads.Worker(`(${workerQueueThread})(${workerFactory})`, {
|
|
69
|
+
eval: true,
|
|
70
|
+
workerData
|
|
71
|
+
});
|
|
72
|
+
return new Promise((resolve, reject) => {
|
|
73
|
+
thread.on("message", (message) => {
|
|
74
|
+
if (message.type === "start" || message.type === "result") {
|
|
75
|
+
if (message.type === "result") {
|
|
76
|
+
results[message.index] = message.result;
|
|
77
|
+
}
|
|
78
|
+
const { value, done } = iterator.next();
|
|
79
|
+
if (done) {
|
|
80
|
+
thread.postMessage({ type: "done" });
|
|
81
|
+
} else {
|
|
82
|
+
thread.postMessage({
|
|
83
|
+
type: "item",
|
|
84
|
+
index: itemIndex,
|
|
85
|
+
item: value
|
|
86
|
+
});
|
|
87
|
+
itemIndex += 1;
|
|
88
|
+
}
|
|
89
|
+
} else if (message.type === "error") {
|
|
90
|
+
const error = new Error(message.error.message);
|
|
91
|
+
error.name = message.error.name;
|
|
92
|
+
error.stack = message.error.stack;
|
|
93
|
+
reject(error);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
thread.on("error", reject);
|
|
97
|
+
thread.on("exit", (code) => {
|
|
98
|
+
if (code !== 0) {
|
|
99
|
+
reject(new Error(`Worker thread exited with code ${code}`));
|
|
100
|
+
} else {
|
|
101
|
+
resolve();
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
})
|
|
106
|
+
);
|
|
107
|
+
return results;
|
|
108
|
+
}
|
|
109
|
+
function workerQueueThread(workerFuncFactory) {
|
|
110
|
+
const { parentPort, workerData } = require("worker_threads");
|
|
111
|
+
Promise.resolve().then(() => workerFuncFactory(workerData)).then(
|
|
112
|
+
(workerFunc) => {
|
|
113
|
+
parentPort.on("message", async (message) => {
|
|
114
|
+
if (message.type === "done") {
|
|
115
|
+
parentPort.close();
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (message.type === "item") {
|
|
119
|
+
try {
|
|
120
|
+
const result = await workerFunc(message.item);
|
|
121
|
+
parentPort.postMessage({
|
|
122
|
+
type: "result",
|
|
123
|
+
index: message.index,
|
|
124
|
+
result
|
|
125
|
+
});
|
|
126
|
+
} catch (error) {
|
|
127
|
+
parentPort.postMessage({ type: "error", error });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
parentPort.postMessage({ type: "start" });
|
|
132
|
+
},
|
|
133
|
+
(error) => parentPort.postMessage({ type: "error", error })
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
async function runWorkerThreads(options) {
|
|
137
|
+
const { worker, workerData, threadCount = 1, onMessage } = options;
|
|
138
|
+
return Promise.all(
|
|
139
|
+
Array(threadCount).fill(0).map(async () => {
|
|
140
|
+
const thread = new worker_threads.Worker(`(${workerThread})(${worker})`, {
|
|
141
|
+
eval: true,
|
|
142
|
+
workerData
|
|
143
|
+
});
|
|
144
|
+
return new Promise((resolve, reject) => {
|
|
145
|
+
thread.on("message", (message) => {
|
|
146
|
+
if (message.type === "result") {
|
|
147
|
+
resolve(message.result);
|
|
148
|
+
} else if (message.type === "error") {
|
|
149
|
+
reject(message.error);
|
|
150
|
+
} else if (message.type === "message") {
|
|
151
|
+
onMessage == null ? void 0 : onMessage(message.message);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
thread.on("error", reject);
|
|
155
|
+
thread.on("exit", (code) => {
|
|
156
|
+
reject(
|
|
157
|
+
new Error(`Unexpected worker thread exit with code ${code}`)
|
|
158
|
+
);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
})
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
function workerThread(workerFunc) {
|
|
165
|
+
const { parentPort, workerData } = require("worker_threads");
|
|
166
|
+
const sendMessage = (message) => {
|
|
167
|
+
parentPort.postMessage({ type: "message", message });
|
|
168
|
+
};
|
|
169
|
+
workerFunc(workerData, sendMessage).then(
|
|
170
|
+
(result) => {
|
|
171
|
+
parentPort.postMessage({
|
|
172
|
+
type: "result",
|
|
173
|
+
index: 0,
|
|
174
|
+
result
|
|
175
|
+
});
|
|
176
|
+
},
|
|
177
|
+
(error) => {
|
|
178
|
+
parentPort.postMessage({ type: "error", error });
|
|
179
|
+
}
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
exports.getEnvironmentParallelism = getEnvironmentParallelism;
|
|
184
|
+
exports.runParallelWorkers = runParallelWorkers;
|
|
185
|
+
exports.runWorkerQueueThreads = runWorkerQueueThreads;
|
|
186
|
+
exports.runWorkerThreads = runWorkerThreads;
|
|
187
|
+
//# sourceMappingURL=parallel-a8f6219c.cjs.js.map
|