@backstage/cli 0.28.0-next.1 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +78 -0
- package/config/jest.js +9 -1
- package/config/jestCacheResultProcessor.cjs +23 -0
- package/config/jestSwcTransform.js +4 -1
- package/dist/commands/build/buildBackend.cjs.js +65 -0
- package/dist/commands/build/buildFrontend.cjs.js +57 -0
- package/dist/commands/build/command.cjs.js +75 -0
- package/dist/commands/build/index.cjs.js +8 -0
- package/dist/commands/buildWorkspace.cjs.js +24 -0
- package/dist/commands/clean/clean.cjs.js +19 -0
- package/dist/{cjs/docs-BGyA6jwW.cjs.js → commands/config/docs.cjs.js} +4 -12
- package/dist/{cjs/print-Dd6aChXU.cjs.js → commands/config/print.cjs.js} +4 -12
- package/dist/{cjs/schema-D93FRhBL.cjs.js → commands/config/schema.cjs.js} +4 -12
- package/dist/commands/config/validate.cjs.js +19 -0
- package/dist/{cjs/index-j193pV_Y.cjs.js → commands/create-github-app/GithubCreateAppServer.cjs.js} +2 -110
- package/dist/commands/create-github-app/index.cjs.js +117 -0
- package/dist/commands/index.cjs.js +231 -0
- package/dist/{cjs/info-DuAv1Tsx.cjs.js → commands/info.cjs.js} +13 -17
- package/dist/{cjs/lint-BwiDJkjE.cjs.js → commands/lint.cjs.js} +10 -10
- package/dist/commands/migrate/packageExports.cjs.js +17 -0
- package/dist/{cjs/packageLintConfigs-DeUGBP17.cjs.js → commands/migrate/packageLintConfigs.cjs.js} +2 -10
- package/dist/{cjs/packageRole-Iuv9NRii.cjs.js → commands/migrate/packageRole.cjs.js} +5 -8
- package/dist/{cjs/packageScripts-DX6dilK6.cjs.js → commands/migrate/packageScripts.cjs.js} +1 -1
- package/dist/{cjs/reactRouterDeps-CR-hjviw.cjs.js → commands/migrate/reactRouterDeps.cjs.js} +1 -1
- package/dist/commands/new/new.cjs.js +101 -0
- package/dist/commands/pack.cjs.js +29 -0
- package/dist/commands/repo/build.cjs.js +113 -0
- package/dist/{cjs/clean-a6Q4k9Vm.cjs.js → commands/repo/clean.cjs.js} +5 -10
- package/dist/{cjs/fix-COitqgqm.cjs.js → commands/repo/fix.cjs.js} +8 -13
- package/dist/commands/repo/lint.cjs.js +205 -0
- package/dist/{cjs/list-deprecations-CtUaQgaP.cjs.js → commands/repo/list-deprecations.cjs.js} +7 -12
- package/dist/commands/repo/optionsParser.cjs.js +37 -0
- package/dist/commands/repo/test.cjs.js +277 -0
- package/dist/commands/start/command.cjs.js +48 -0
- package/dist/commands/start/index.cjs.js +8 -0
- package/dist/commands/start/startBackend.cjs.js +112 -0
- package/dist/commands/start/startFrontend.cjs.js +47 -0
- package/dist/{cjs/test-COxIko8N.cjs.js → commands/test.cjs.js} +6 -12
- package/dist/{cjs/bump-BHEh5ytx.cjs.js → commands/versions/bump.cjs.js} +21 -190
- package/dist/commands/versions/migrate.cjs.js +112 -0
- package/dist/index.cjs.js +29 -7
- package/dist/lib/builder/config.cjs.js +199 -0
- package/dist/lib/builder/packager.cjs.js +131 -0
- package/dist/lib/builder/plugins.cjs.js +71 -0
- package/dist/lib/builder/types.cjs.js +11 -0
- package/dist/lib/bundler/LinkedPackageResolvePlugin.cjs.js +47 -0
- package/dist/lib/bundler/backend.cjs.js +36 -0
- package/dist/{cjs/buildBackend-CkhZWCz1.cjs.js → lib/bundler/bundle.cjs.js} +31 -117
- package/dist/lib/bundler/config.cjs.js +491 -0
- package/dist/lib/bundler/hasReactDomClient.cjs.js +17 -0
- package/dist/lib/bundler/moduleFederation.cjs.js +28 -0
- package/dist/lib/bundler/optimization.cjs.js +67 -0
- package/dist/lib/bundler/packageDetection.cjs.js +117 -0
- package/dist/lib/bundler/paths.cjs.js +60 -0
- package/dist/lib/bundler/server.cjs.js +286 -0
- package/dist/lib/bundler/transforms.cjs.js +172 -0
- package/dist/lib/codeowners/codeowners.cjs.js +92 -0
- package/dist/{cjs/config-DBpmZirN.cjs.js → lib/config.cjs.js} +6 -6
- package/dist/{cjs/entryPoints-coip0t-x.cjs.js → lib/entryPoints.cjs.js} +1 -1
- package/dist/lib/errors.cjs.js +45 -0
- package/dist/lib/experimental/IpcServer.cjs.js +60 -0
- package/dist/lib/experimental/ServerDataStore.cjs.js +36 -0
- package/dist/lib/experimental/startBackendExperimental.cjs.js +128 -0
- package/dist/lib/new/FactoryRegistry.cjs.js +96 -0
- package/dist/lib/new/factories/backendModule.cjs.js +82 -0
- package/dist/lib/new/factories/backendPlugin.cjs.js +78 -0
- package/dist/lib/new/factories/common/prompts.cjs.js +57 -0
- package/dist/lib/new/factories/common/tasks.cjs.js +66 -0
- package/dist/lib/new/factories/common/util.cjs.js +16 -0
- package/dist/lib/new/factories/frontendPlugin.cjs.js +107 -0
- package/dist/lib/new/factories/index.cjs.js +24 -0
- package/dist/lib/new/factories/nodeLibraryPackage.cjs.js +57 -0
- package/dist/lib/new/factories/pluginCommon.cjs.js +58 -0
- package/dist/lib/new/factories/pluginNode.cjs.js +58 -0
- package/dist/lib/new/factories/pluginWeb.cjs.js +58 -0
- package/dist/lib/new/factories/scaffolderModule.cjs.js +90 -0
- package/dist/lib/new/factories/webLibraryPackage.cjs.js +57 -0
- package/dist/lib/new/types.cjs.js +8 -0
- package/dist/lib/packager/createDistWorkspace.cjs.js +219 -0
- package/dist/{cjs/productionPack-BxoMbBkH.cjs.js → lib/packager/productionPack.cjs.js} +8 -96
- package/dist/{cjs/parallel-BszNaKyc.cjs.js → lib/parallel.cjs.js} +2 -1
- package/dist/lib/paths.cjs.js +8 -0
- package/dist/{cjs/publishing-DQtsKTbc.cjs.js → lib/publishing.cjs.js} +1 -1
- package/dist/{cjs/role-BjiBExhi.cjs.js → lib/role.cjs.js} +3 -3
- package/dist/{cjs/run-CpZGNJQr.cjs.js → lib/run.cjs.js} +6 -5
- package/dist/{cjs/svgrTemplate-BTjBQ3by.cjs.js → lib/svgrTemplate.cjs.js} +1 -1
- package/dist/lib/tasks.cjs.js +188 -0
- package/dist/lib/typeDistProject.cjs.js +94 -0
- package/dist/lib/urls.cjs.js +13 -0
- package/dist/lib/version.cjs.js +94 -0
- package/dist/{cjs/yarn-6FNAgNBK.cjs.js → lib/versioning/Lockfile.cjs.js} +1 -31
- package/dist/lib/versioning/packages.cjs.js +75 -0
- package/dist/lib/yarn.cjs.js +34 -0
- package/dist/packages/backend-defaults/package.json.cjs.js +6 -0
- package/dist/packages/backend-plugin-api/package.json.cjs.js +6 -0
- package/dist/packages/backend-test-utils/package.json.cjs.js +6 -0
- package/dist/packages/catalog-client/package.json.cjs.js +6 -0
- package/dist/packages/cli/package.json.cjs.js +171 -0
- package/dist/packages/config/package.json.cjs.js +6 -0
- package/dist/packages/core-app-api/package.json.cjs.js +6 -0
- package/dist/packages/core-components/package.json.cjs.js +6 -0
- package/dist/packages/core-plugin-api/package.json.cjs.js +6 -0
- package/dist/packages/dev-utils/package.json.cjs.js +6 -0
- package/dist/packages/errors/package.json.cjs.js +6 -0
- package/dist/packages/test-utils/package.json.cjs.js +6 -0
- package/dist/packages/theme/package.json.cjs.js +6 -0
- package/dist/plugins/auth-backend/package.json.cjs.js +6 -0
- package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +6 -0
- package/dist/plugins/catalog-node/package.json.cjs.js +6 -0
- package/dist/plugins/scaffolder-node/package.json.cjs.js +6 -0
- package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +6 -0
- package/package.json +55 -25
- package/templates/default-backend-plugin/README.md.hbs +22 -8
- package/templates/default-backend-plugin/dev/index.ts.hbs +60 -0
- package/templates/default-backend-plugin/package.json.hbs +5 -5
- package/templates/default-backend-plugin/src/index.ts.hbs +0 -1
- package/templates/default-backend-plugin/src/plugin.test.ts.hbs +85 -0
- package/templates/default-backend-plugin/src/plugin.ts.hbs +16 -14
- package/templates/default-backend-plugin/src/router.test.ts +67 -0
- package/templates/default-backend-plugin/src/router.ts +51 -0
- package/templates/default-backend-plugin/src/services/TodoListService/createTodoListService.ts +100 -0
- package/templates/default-backend-plugin/src/services/TodoListService/index.ts +1 -0
- package/templates/default-backend-plugin/src/services/TodoListService/types.ts +27 -0
- package/templates/scaffolder-module/package.json.hbs +3 -1
- package/templates/scaffolder-module/src/actions/example.test.ts +24 -0
- package/templates/scaffolder-module/src/actions/{example/example.ts → example.ts} +7 -3
- package/templates/scaffolder-module/src/index.ts.hbs +1 -1
- package/templates/scaffolder-module/src/{actions/example/module.ts → module.ts} +3 -3
- package/dist/cjs/build-CQdcGuBr.cjs.js +0 -194
- package/dist/cjs/buildWorkspace-CZPp9oRm.cjs.js +0 -53
- package/dist/cjs/clean-W6nxsHeK.cjs.js +0 -22
- package/dist/cjs/createDistWorkspace-DdHPGSMS.cjs.js +0 -576
- package/dist/cjs/index-BXv4Xa2e.cjs.js +0 -625
- package/dist/cjs/index-CGuAP7nv.cjs.js +0 -131
- package/dist/cjs/index-b1ouG3q6.cjs.js +0 -518
- package/dist/cjs/lint-Dsiocf9K.cjs.js +0 -91
- package/dist/cjs/moduleFederation-DmStnvEg.cjs.js +0 -910
- package/dist/cjs/new-CEnFhTT-.cjs.js +0 -1043
- package/dist/cjs/pack-XLRcGJqH.cjs.js +0 -34
- package/dist/cjs/packageExports-BJBwdvUH.cjs.js +0 -27
- package/dist/cjs/test-JcLI2pPM.cjs.js +0 -126
- package/dist/cjs/validate-CELljsEX.cjs.js +0 -28
- package/templates/default-backend-plugin/dev/index.ts +0 -9
- package/templates/default-backend-plugin/src/service/router.test.ts +0 -30
- package/templates/default-backend-plugin/src/service/router.ts +0 -28
- package/templates/scaffolder-module/src/actions/example/example.test.ts +0 -32
- package/templates/scaffolder-module/src/actions/example/index.ts +0 -7
- package/templates/scaffolder-module/src/actions/index.ts +0 -1
- /package/templates/default-backend-module/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
- /package/templates/default-backend-plugin/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
- /package/templates/default-common-plugin-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
- /package/templates/default-node-plugin-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
- /package/templates/default-plugin/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
- /package/templates/default-react-plugin-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
- /package/templates/node-library-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
- /package/templates/scaffolder-module/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
- /package/templates/web-library-package/{.eslintrc.js → .eslintrc.js.hbs} +0 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var os = require('os');
|
|
4
|
+
var crypto = require('node:crypto');
|
|
5
|
+
var fs = require('fs-extra');
|
|
6
|
+
var yargs = require('yargs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var cliNode = require('@backstage/cli-node');
|
|
9
|
+
var paths = require('../../lib/paths.cjs.js');
|
|
10
|
+
var run = require('../../lib/run.cjs.js');
|
|
11
|
+
var cliCommon = require('@backstage/cli-common');
|
|
12
|
+
|
|
13
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
14
|
+
|
|
15
|
+
var os__default = /*#__PURE__*/_interopDefaultCompat(os);
|
|
16
|
+
var crypto__default = /*#__PURE__*/_interopDefaultCompat(crypto);
|
|
17
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
18
|
+
var yargs__default = /*#__PURE__*/_interopDefaultCompat(yargs);
|
|
19
|
+
|
|
20
|
+
const CACHE_FILE_NAME = "test-cache.json";
|
|
21
|
+
async function readCache(dir) {
|
|
22
|
+
try {
|
|
23
|
+
const data = await fs__default.default.readJson(path.resolve(dir, CACHE_FILE_NAME));
|
|
24
|
+
if (!Array.isArray(data)) {
|
|
25
|
+
return void 0;
|
|
26
|
+
}
|
|
27
|
+
if (data.some((x) => typeof x !== "string")) {
|
|
28
|
+
return void 0;
|
|
29
|
+
}
|
|
30
|
+
return data;
|
|
31
|
+
} catch {
|
|
32
|
+
return void 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function writeCache(dir, cache) {
|
|
36
|
+
fs__default.default.mkdirpSync(dir);
|
|
37
|
+
fs__default.default.writeJsonSync(path.resolve(dir, CACHE_FILE_NAME), cache, { spaces: 2 });
|
|
38
|
+
}
|
|
39
|
+
async function readPackageTreeHashes(graph) {
|
|
40
|
+
const pkgs = Array.from(graph.values());
|
|
41
|
+
const output = await run.runPlain(
|
|
42
|
+
"git",
|
|
43
|
+
"ls-tree",
|
|
44
|
+
"--object-only",
|
|
45
|
+
"HEAD",
|
|
46
|
+
"--",
|
|
47
|
+
...pkgs.map((pkg) => path.relative(paths.paths.targetRoot, pkg.dir))
|
|
48
|
+
);
|
|
49
|
+
const treeShaList = output.trim().split(/\r?\n/);
|
|
50
|
+
if (treeShaList.length !== pkgs.length) {
|
|
51
|
+
throw new Error(
|
|
52
|
+
`Error listing project git tree hashes, output length does not equal input length`
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
const map = new Map(
|
|
56
|
+
pkgs.map((pkg, i) => [pkg.packageJson.name, treeShaList[i]])
|
|
57
|
+
);
|
|
58
|
+
return (pkgName) => {
|
|
59
|
+
const sha = map.get(pkgName);
|
|
60
|
+
if (!sha) {
|
|
61
|
+
throw new Error(`Tree sha not found for ${pkgName}`);
|
|
62
|
+
}
|
|
63
|
+
return sha;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function createFlagFinder(args) {
|
|
67
|
+
const flags = /* @__PURE__ */ new Set();
|
|
68
|
+
for (const arg of args) {
|
|
69
|
+
if (arg.startsWith("--no-")) {
|
|
70
|
+
flags.add(`--${arg.slice("--no-".length)}`);
|
|
71
|
+
} else if (arg.startsWith("--")) {
|
|
72
|
+
flags.add(arg.split("=")[0]);
|
|
73
|
+
} else if (arg.startsWith("-")) {
|
|
74
|
+
const shortFlags = arg.slice(1).split("");
|
|
75
|
+
for (const shortFlag of shortFlags) {
|
|
76
|
+
flags.add(`-${shortFlag}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return (...findFlags) => {
|
|
81
|
+
for (const flag of findFlags) {
|
|
82
|
+
if (flags.has(flag)) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function removeOptionArg(args, option, size = 2) {
|
|
90
|
+
let changed = false;
|
|
91
|
+
do {
|
|
92
|
+
changed = false;
|
|
93
|
+
const index = args.indexOf(option);
|
|
94
|
+
if (index >= 0) {
|
|
95
|
+
changed = true;
|
|
96
|
+
args.splice(index, size);
|
|
97
|
+
}
|
|
98
|
+
const indexEq = args.findIndex((arg) => arg.startsWith(`${option}=`));
|
|
99
|
+
if (indexEq >= 0) {
|
|
100
|
+
changed = true;
|
|
101
|
+
args.splice(indexEq, 1);
|
|
102
|
+
}
|
|
103
|
+
} while (changed);
|
|
104
|
+
}
|
|
105
|
+
async function command(opts, cmd) {
|
|
106
|
+
let parent = cmd;
|
|
107
|
+
while (parent.parent) {
|
|
108
|
+
parent = parent.parent;
|
|
109
|
+
}
|
|
110
|
+
const allArgs = parent.args;
|
|
111
|
+
const args = allArgs.slice(allArgs.indexOf("test") + 1);
|
|
112
|
+
const hasFlags = createFlagFinder(args);
|
|
113
|
+
if (!hasFlags("-c", "--config")) {
|
|
114
|
+
args.push("--config", paths.paths.resolveOwn("config/jest.js"));
|
|
115
|
+
}
|
|
116
|
+
if (!hasFlags("--passWithNoTests")) {
|
|
117
|
+
args.push("--passWithNoTests");
|
|
118
|
+
}
|
|
119
|
+
if (!opts.since && !process.env.CI && !hasFlags("--coverage", "--watch", "--watchAll")) {
|
|
120
|
+
const isGitRepo = () => run.runCheck("git", "rev-parse", "--is-inside-work-tree");
|
|
121
|
+
const isMercurialRepo = () => run.runCheck("hg", "--cwd", ".", "root");
|
|
122
|
+
if (await isGitRepo() || await isMercurialRepo()) {
|
|
123
|
+
args.push("--watch");
|
|
124
|
+
} else {
|
|
125
|
+
args.push("--watchAll");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (!hasFlags("--workerIdleMemoryLimit")) {
|
|
129
|
+
args.push("--workerIdleMemoryLimit=1000M");
|
|
130
|
+
}
|
|
131
|
+
if (os__default.default.cpus().length <= 3 && !hasFlags("-i", "--runInBand", "-w", "--maxWorkers")) {
|
|
132
|
+
args.push("--maxWorkers=2");
|
|
133
|
+
}
|
|
134
|
+
if (opts.since) {
|
|
135
|
+
removeOptionArg(args, "--since");
|
|
136
|
+
}
|
|
137
|
+
let packageGraph;
|
|
138
|
+
async function getPackageGraph() {
|
|
139
|
+
if (packageGraph) {
|
|
140
|
+
return packageGraph;
|
|
141
|
+
}
|
|
142
|
+
const packages = await cliNode.PackageGraph.listTargetPackages();
|
|
143
|
+
packageGraph = cliNode.PackageGraph.fromPackages(packages);
|
|
144
|
+
return packageGraph;
|
|
145
|
+
}
|
|
146
|
+
let selectedProjects = void 0;
|
|
147
|
+
if (opts.since && !hasFlags("--selectProjects")) {
|
|
148
|
+
const graph = await getPackageGraph();
|
|
149
|
+
const changedPackages = await graph.listChangedPackages({
|
|
150
|
+
ref: opts.since,
|
|
151
|
+
analyzeLockfile: true
|
|
152
|
+
});
|
|
153
|
+
selectedProjects = Array.from(
|
|
154
|
+
graph.collectPackageNames(
|
|
155
|
+
changedPackages.map((pkg) => pkg.name),
|
|
156
|
+
(pkg) => pkg.allLocalDependents.keys()
|
|
157
|
+
)
|
|
158
|
+
);
|
|
159
|
+
if (selectedProjects.length === 0) {
|
|
160
|
+
console.log(`No packages changed since ${opts.since}`);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
args.push("--selectProjects", ...selectedProjects);
|
|
164
|
+
}
|
|
165
|
+
if (!process.env.NODE_ENV) {
|
|
166
|
+
process.env.NODE_ENV = "test";
|
|
167
|
+
}
|
|
168
|
+
if (!process.env.TZ) {
|
|
169
|
+
process.env.TZ = "UTC";
|
|
170
|
+
}
|
|
171
|
+
if (args.includes("--jest-help")) {
|
|
172
|
+
removeOptionArg(args, "--jest-help");
|
|
173
|
+
args.push("--help");
|
|
174
|
+
process.stdout._handle.setBlocking(true);
|
|
175
|
+
}
|
|
176
|
+
const jestCli = require("jest-cli");
|
|
177
|
+
if (opts.successCache) {
|
|
178
|
+
removeOptionArg(args, "--successCache", 1);
|
|
179
|
+
removeOptionArg(args, "--successCacheDir");
|
|
180
|
+
const cacheDir = path.resolve(
|
|
181
|
+
opts.successCacheDir ?? "node_modules/.cache/backstage-cli"
|
|
182
|
+
);
|
|
183
|
+
const { _: parsedArgs } = await yargs__default.default(args).options(jestCli.yargsOptions).argv;
|
|
184
|
+
if (parsedArgs.length > 0) {
|
|
185
|
+
throw new Error(
|
|
186
|
+
`The --successCache flag can not be combined with the following arguments: ${parsedArgs.join(
|
|
187
|
+
", "
|
|
188
|
+
)}`
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
if (args.includes("--shard")) {
|
|
192
|
+
throw new Error(
|
|
193
|
+
`The --successCache flag can not be combined with the --shard flag`
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
const graph = await getPackageGraph();
|
|
197
|
+
const projectHashes = /* @__PURE__ */ new Map();
|
|
198
|
+
const outputSuccessCache = new Array();
|
|
199
|
+
const globalWithCache = global;
|
|
200
|
+
globalWithCache.__backstageCli_jestSuccessCache = {
|
|
201
|
+
// This is called by `config/jest.js` after the project configs have been gathered
|
|
202
|
+
async filterConfigs(projectConfigs, globalRootConfig) {
|
|
203
|
+
const cache = await readCache(cacheDir);
|
|
204
|
+
const lockfile = await cliNode.Lockfile.load(
|
|
205
|
+
paths.paths.resolveTargetRoot("yarn.lock")
|
|
206
|
+
);
|
|
207
|
+
const getPackageTreeHash = await readPackageTreeHashes(graph);
|
|
208
|
+
const baseHash = crypto__default.default.createHash("sha1");
|
|
209
|
+
baseHash.update("v1");
|
|
210
|
+
baseHash.update("\0");
|
|
211
|
+
baseHash.update(process.version);
|
|
212
|
+
baseHash.update("\0");
|
|
213
|
+
baseHash.update(JSON.stringify(globalRootConfig));
|
|
214
|
+
const baseSha = baseHash.digest("hex");
|
|
215
|
+
return projectConfigs.filter((project) => {
|
|
216
|
+
const packageName = project.displayName;
|
|
217
|
+
const pkg = graph.get(packageName);
|
|
218
|
+
if (!pkg) {
|
|
219
|
+
throw new Error(
|
|
220
|
+
`Package ${packageName} not found in package graph`
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
const hash = crypto__default.default.createHash("sha1");
|
|
224
|
+
hash.update(baseSha);
|
|
225
|
+
const packageTreeSha = getPackageTreeHash(packageName);
|
|
226
|
+
hash.update(packageTreeSha);
|
|
227
|
+
for (const [depName, depPkg] of pkg.allLocalDependencies) {
|
|
228
|
+
const depHash = getPackageTreeHash(depPkg.name);
|
|
229
|
+
hash.update(`${depName}:${depHash}`);
|
|
230
|
+
}
|
|
231
|
+
hash.update(JSON.stringify(project));
|
|
232
|
+
hash.update(lockfile.getDependencyTreeHash(packageName));
|
|
233
|
+
const sha = hash.digest("hex");
|
|
234
|
+
projectHashes.set(packageName, sha);
|
|
235
|
+
if (cache?.includes(sha)) {
|
|
236
|
+
if (!selectedProjects || selectedProjects.includes(packageName)) {
|
|
237
|
+
console.log(`Skipped ${packageName} due to cache hit`);
|
|
238
|
+
}
|
|
239
|
+
outputSuccessCache.push(sha);
|
|
240
|
+
return void 0;
|
|
241
|
+
}
|
|
242
|
+
return project;
|
|
243
|
+
});
|
|
244
|
+
},
|
|
245
|
+
// This is called by `config/jestCacheResultProcess.cjs` after all tests have run
|
|
246
|
+
async reportResults(results) {
|
|
247
|
+
const successful = /* @__PURE__ */ new Set();
|
|
248
|
+
const failed = /* @__PURE__ */ new Set();
|
|
249
|
+
for (const testResult of results.testResults) {
|
|
250
|
+
for (const [pkgName, pkg] of graph) {
|
|
251
|
+
if (cliCommon.isChildPath(pkg.dir, testResult.testFilePath)) {
|
|
252
|
+
if (testResult.testExecError || testResult.failureMessage || testResult.numFailingTests > 0) {
|
|
253
|
+
failed.add(pkgName);
|
|
254
|
+
successful.delete(pkgName);
|
|
255
|
+
} else if (!failed.has(pkgName)) {
|
|
256
|
+
successful.add(pkgName);
|
|
257
|
+
}
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
for (const pkgName of successful) {
|
|
263
|
+
const sha = projectHashes.get(pkgName);
|
|
264
|
+
if (sha) {
|
|
265
|
+
outputSuccessCache.push(sha);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
await writeCache(cacheDir, outputSuccessCache);
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
await jestCli.run(args);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
exports.command = command;
|
|
276
|
+
exports.createFlagFinder = createFlagFinder;
|
|
277
|
+
//# sourceMappingURL=test.cjs.js.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var role = require('../../lib/role.cjs.js');
|
|
4
|
+
var startBackend = require('./startBackend.cjs.js');
|
|
5
|
+
var startFrontend = require('./startFrontend.cjs.js');
|
|
6
|
+
|
|
7
|
+
async function command(opts) {
|
|
8
|
+
const role$1 = await role.findRoleFromCommand(opts);
|
|
9
|
+
const options = {
|
|
10
|
+
configPaths: opts.config,
|
|
11
|
+
checksEnabled: Boolean(opts.check),
|
|
12
|
+
inspectEnabled: opts.inspect,
|
|
13
|
+
inspectBrkEnabled: opts.inspectBrk,
|
|
14
|
+
require: opts.require
|
|
15
|
+
};
|
|
16
|
+
switch (role$1) {
|
|
17
|
+
case "backend":
|
|
18
|
+
return startBackend.startBackend(options);
|
|
19
|
+
case "backend-plugin":
|
|
20
|
+
case "backend-plugin-module":
|
|
21
|
+
case "node-library":
|
|
22
|
+
return startBackend.startBackendPlugin(options);
|
|
23
|
+
case "frontend":
|
|
24
|
+
return startFrontend.startFrontend({
|
|
25
|
+
...options,
|
|
26
|
+
entry: "src/index",
|
|
27
|
+
verifyVersions: true
|
|
28
|
+
});
|
|
29
|
+
case "web-library":
|
|
30
|
+
case "frontend-plugin":
|
|
31
|
+
case "frontend-plugin-module":
|
|
32
|
+
return startFrontend.startFrontend({ entry: "dev/index", ...options });
|
|
33
|
+
case "frontend-dynamic-container":
|
|
34
|
+
return startFrontend.startFrontend({
|
|
35
|
+
entry: "src/index",
|
|
36
|
+
...options,
|
|
37
|
+
skipOpenBrowser: true,
|
|
38
|
+
isModuleFederationRemote: true
|
|
39
|
+
});
|
|
40
|
+
default:
|
|
41
|
+
throw new Error(
|
|
42
|
+
`Start command is not supported for package role '${role$1}'`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
exports.command = command;
|
|
48
|
+
//# sourceMappingURL=command.cjs.js.map
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
var paths = require('../../lib/paths.cjs.js');
|
|
5
|
+
var backend = require('../../lib/bundler/backend.cjs.js');
|
|
6
|
+
require('yn');
|
|
7
|
+
require('path');
|
|
8
|
+
require('webpack');
|
|
9
|
+
require('react-dev-utils/FileSizeReporter');
|
|
10
|
+
require('react-dev-utils/formatWebpackMessages');
|
|
11
|
+
require('chalk');
|
|
12
|
+
require('eslint-webpack-plugin');
|
|
13
|
+
require('fork-ts-checker-webpack-plugin');
|
|
14
|
+
require('html-webpack-plugin');
|
|
15
|
+
require('@module-federation/enhanced/webpack');
|
|
16
|
+
require('@backstage/cli-common');
|
|
17
|
+
require('react-dev-utils/ModuleScopePlugin');
|
|
18
|
+
require('run-script-webpack-plugin');
|
|
19
|
+
require('@pmmmwh/react-refresh-webpack-plugin');
|
|
20
|
+
require('@manypkg/get-packages');
|
|
21
|
+
require('webpack-node-externals');
|
|
22
|
+
require('../../lib/bundler/optimization.cjs.js');
|
|
23
|
+
require('lodash/pickBy');
|
|
24
|
+
require('../../lib/run.cjs.js');
|
|
25
|
+
require('mini-css-extract-plugin');
|
|
26
|
+
require('../../lib/version.cjs.js');
|
|
27
|
+
require('../../lib/bundler/packageDetection.cjs.js');
|
|
28
|
+
require('react-dev-utils/openBrowser');
|
|
29
|
+
require('webpack-dev-server');
|
|
30
|
+
require('@backstage/config-loader');
|
|
31
|
+
require('@backstage/config');
|
|
32
|
+
require('@backstage/cli-node');
|
|
33
|
+
var startBackendExperimental = require('../../lib/experimental/startBackendExperimental.cjs.js');
|
|
34
|
+
|
|
35
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
36
|
+
|
|
37
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
38
|
+
|
|
39
|
+
async function startBackend(options) {
|
|
40
|
+
if (!process.env.LEGACY_BACKEND_START) {
|
|
41
|
+
const waitForExit = await startBackendExperimental.startBackendExperimental({
|
|
42
|
+
entry: "src/index",
|
|
43
|
+
checksEnabled: false,
|
|
44
|
+
// not supported
|
|
45
|
+
inspectEnabled: options.inspectEnabled,
|
|
46
|
+
inspectBrkEnabled: options.inspectBrkEnabled,
|
|
47
|
+
require: options.require
|
|
48
|
+
});
|
|
49
|
+
await waitForExit();
|
|
50
|
+
} else {
|
|
51
|
+
console.warn(
|
|
52
|
+
"LEGACY_BACKEND_START is deprecated and will be removed in a future release"
|
|
53
|
+
);
|
|
54
|
+
const waitForExit = await cleanDistAndServeBackend({
|
|
55
|
+
entry: "src/index",
|
|
56
|
+
checksEnabled: options.checksEnabled,
|
|
57
|
+
inspectEnabled: options.inspectEnabled,
|
|
58
|
+
inspectBrkEnabled: options.inspectBrkEnabled,
|
|
59
|
+
require: options.require
|
|
60
|
+
});
|
|
61
|
+
await waitForExit();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function startBackendPlugin(options) {
|
|
65
|
+
if (!process.env.LEGACY_BACKEND_START) {
|
|
66
|
+
const hasDevIndexEntry = await fs__default.default.pathExists(
|
|
67
|
+
paths.paths.resolveTarget("dev", "index.ts")
|
|
68
|
+
);
|
|
69
|
+
if (!hasDevIndexEntry) {
|
|
70
|
+
console.warn(
|
|
71
|
+
`The 'dev' directory is missing. Please create a proper dev/index.ts in order to start the plugin.`
|
|
72
|
+
);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const waitForExit = await startBackendExperimental.startBackendExperimental({
|
|
76
|
+
entry: "dev/index",
|
|
77
|
+
checksEnabled: false,
|
|
78
|
+
// not supported
|
|
79
|
+
inspectEnabled: options.inspectEnabled,
|
|
80
|
+
inspectBrkEnabled: options.inspectBrkEnabled,
|
|
81
|
+
require: options.require
|
|
82
|
+
});
|
|
83
|
+
await waitForExit();
|
|
84
|
+
} else {
|
|
85
|
+
const hasEntry = await fs__default.default.pathExists(paths.paths.resolveTarget("src", "run.ts"));
|
|
86
|
+
if (!hasEntry) {
|
|
87
|
+
console.warn(
|
|
88
|
+
`src/run.ts is missing. Please create the file or run the command without LEGACY_BACKEND_START`
|
|
89
|
+
);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
console.warn(
|
|
93
|
+
"LEGACY_BACKEND_START is deprecated and will be removed in a future release"
|
|
94
|
+
);
|
|
95
|
+
const waitForExit = await cleanDistAndServeBackend({
|
|
96
|
+
entry: "src/run",
|
|
97
|
+
checksEnabled: options.checksEnabled,
|
|
98
|
+
inspectEnabled: options.inspectEnabled,
|
|
99
|
+
inspectBrkEnabled: options.inspectBrkEnabled,
|
|
100
|
+
require: options.require
|
|
101
|
+
});
|
|
102
|
+
await waitForExit();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async function cleanDistAndServeBackend(options) {
|
|
106
|
+
await fs__default.default.remove(paths.paths.resolveTarget("dist"));
|
|
107
|
+
return backend.serveBackend(options);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
exports.startBackend = startBackend;
|
|
111
|
+
exports.startBackendPlugin = startBackendPlugin;
|
|
112
|
+
//# sourceMappingURL=startBackend.cjs.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs-extra');
|
|
4
|
+
require('webpack');
|
|
5
|
+
require('path');
|
|
6
|
+
require('chalk');
|
|
7
|
+
require('eslint-webpack-plugin');
|
|
8
|
+
require('fork-ts-checker-webpack-plugin');
|
|
9
|
+
require('html-webpack-plugin');
|
|
10
|
+
require('@module-federation/enhanced/webpack');
|
|
11
|
+
require('@backstage/cli-common');
|
|
12
|
+
require('react-dev-utils/ModuleScopePlugin');
|
|
13
|
+
require('run-script-webpack-plugin');
|
|
14
|
+
require('@pmmmwh/react-refresh-webpack-plugin');
|
|
15
|
+
var paths = require('../../lib/paths.cjs.js');
|
|
16
|
+
require('@manypkg/get-packages');
|
|
17
|
+
require('webpack-node-externals');
|
|
18
|
+
require('../../lib/bundler/optimization.cjs.js');
|
|
19
|
+
require('lodash/pickBy');
|
|
20
|
+
require('../../lib/run.cjs.js');
|
|
21
|
+
require('mini-css-extract-plugin');
|
|
22
|
+
require('../../lib/version.cjs.js');
|
|
23
|
+
require('yn');
|
|
24
|
+
require('react-dev-utils/FileSizeReporter');
|
|
25
|
+
require('react-dev-utils/formatWebpackMessages');
|
|
26
|
+
require('../../lib/bundler/packageDetection.cjs.js');
|
|
27
|
+
var moduleFederation = require('../../lib/bundler/moduleFederation.cjs.js');
|
|
28
|
+
var server = require('../../lib/bundler/server.cjs.js');
|
|
29
|
+
|
|
30
|
+
async function startFrontend(options) {
|
|
31
|
+
const { name } = await fs.readJson(paths.paths.resolveTarget("package.json"));
|
|
32
|
+
const waitForExit = await server.serveBundle({
|
|
33
|
+
entry: options.entry,
|
|
34
|
+
checksEnabled: options.checksEnabled,
|
|
35
|
+
configPaths: options.configPaths,
|
|
36
|
+
verifyVersions: options.verifyVersions,
|
|
37
|
+
skipOpenBrowser: options.skipOpenBrowser,
|
|
38
|
+
moduleFederation: moduleFederation.getModuleFederationOptions(
|
|
39
|
+
name,
|
|
40
|
+
options.isModuleFederationRemote
|
|
41
|
+
)
|
|
42
|
+
});
|
|
43
|
+
await waitForExit();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
exports.startFrontend = startFrontend;
|
|
47
|
+
//# sourceMappingURL=startFrontend.cjs.js.map
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
require('
|
|
6
|
-
require('
|
|
7
|
-
require('fs-extra');
|
|
8
|
-
require('semver');
|
|
9
|
-
require('@backstage/cli-common');
|
|
10
|
-
require('@backstage/errors');
|
|
11
|
-
require('child_process');
|
|
12
|
-
require('util');
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var paths = require('../lib/paths.cjs.js');
|
|
6
|
+
var run = require('../lib/run.cjs.js');
|
|
13
7
|
|
|
14
8
|
function includesAnyOf(hayStack, ...needles) {
|
|
15
9
|
for (const needle of needles) {
|
|
@@ -27,7 +21,7 @@ var test = async (_opts, cmd) => {
|
|
|
27
21
|
const allArgs = parent.args;
|
|
28
22
|
const args = allArgs.slice(allArgs.indexOf("test") + 1);
|
|
29
23
|
if (!includesAnyOf(args, "-c", "--config")) {
|
|
30
|
-
args.push("--config",
|
|
24
|
+
args.push("--config", paths.paths.resolveOwn("config/jest.js"));
|
|
31
25
|
}
|
|
32
26
|
if (!includesAnyOf(args, "--no-passWithNoTests", "--passWithNoTests=false")) {
|
|
33
27
|
args.push("--passWithNoTests");
|
|
@@ -56,4 +50,4 @@ var test = async (_opts, cmd) => {
|
|
|
56
50
|
};
|
|
57
51
|
|
|
58
52
|
exports.default = test;
|
|
59
|
-
//# sourceMappingURL=test
|
|
53
|
+
//# sourceMappingURL=test.cjs.js.map
|