polen
Version:
A framework for delightful GraphQL developer portals
33 lines • 1.29 kB
JavaScript
import { Mask } from '#lib/mask';
import { Err, Str } from '@wollybeard/kit';
export const formatReport = (report, options) => {
const maskOptions = options?.debug
? undefined
: (options?.mask ?? report.task.mask);
// Apply masks
const maskedInput = maskOptions?.input
? Mask.apply(report.execution.input, Mask.create(maskOptions.input))
: report.execution.input;
const maskedOutput = report.execution.output instanceof Error || !maskOptions?.output
? report.execution.output
: Mask.apply(report.execution.output, Mask.create(maskOptions.output));
// Format report
const s = Str.Builder();
s `Task: ${report.task.name}`;
s `Duration: ${report.execution.timings.duration.toFixed(2)}ms`;
s `Input: ${JSON.stringify(maskedInput, null, 2)}`;
if (report.execution.output instanceof Error) {
s(Err.inspect(report.execution.output));
}
else {
s `Output: ${JSON.stringify(maskedOutput, null, 2)}`;
}
return s.render();
};
export const exitWithReport = (report, options) => {
const isError = Err.is(report.execution.output);
const exitCode = isError ? 1 : 0;
console.log(formatReport(report, options));
process.exit(exitCode);
};
//# sourceMappingURL=report.js.map