Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
handler: handler(async (req: IncomingMessage): Promise => {
const youch = new Youch(err, req);
const json = await youch.toJSON();
console.log(forTerminal(json)); // eslint-disable-line
return youch.toHTML();
}),
path: '*',
const youchPlugin = (fun: any): any => async (req: IM, res: SR): Promise => {
try {
return await fun(req, res);
} catch (err) {
const youch = new Youch(err, req);
const json = await youch.toJSON();
console.log(forTerminal(json)); // eslint-disable-line
return youch.toHTML();
}
};
this.server.use(async (err, req, res, next) => {
if (process.env.NODE_ENV === 'development') {
const errors = await new Youch(err, req).toJSON(); // toHTML();
return res.status(500).json(errors);
}
return res.status(500).json({ error: 'Internal server error' });
});
}
this.server.use(async (err, req, res, next) => {
if (process.env.NODE_ENV === 'development') {
const errors = await new Youch(err, req).toJSON();
// you have an alternativo toHTML also
// we prefer toJSON because in this case we are working over an API
return res.status(500).json(errors);
}
return res.status(500).json({ error: 'Internal server error' });
});
}
export async function renderTestEntity(
entity: TestContextEntity,
tick: number = 0,
ident: number = 0
) {
const defaultName = '';
const identifier = `${entity.kind} ${entity.id || defaultName}`;
const spinnerContent = ['◜','◠','◝','◞','◡','◟'];
const timeSinceStarted = entity.isStarted() ? (((new Date().getTime()) - (entity.startDate.getTime())) / 1000).toFixed(0) : '';
const error = entity.error ? EOL + await new Youch(entity.error, {}).toJSON().then(forTerminal) : '';
const color = chalk.bold.green;
const main = !entity.isFinished()
? chalk`${spinnerContent[tick % spinnerContent.length]} {bold.yellow RUNNING} ${identifier} {gray for} ${timeSinceStarted.toString()}`
: !!entity.error
? chalk`{bold.red ✗ ERROR} ${identifier} {gray after} ${(entity.duration || NaN).toString()}` + error
: color(` ✓ ${getReadableStateName(entity.state)} `) + chalk`${identifier} {gray after} ${(entity.duration || NaN).toString()}`;
let addition = '';
if(entity instanceof TestSuiteContext) {
addition = await renderArray(entity.testCases, tc => renderTestEntity(tc, tick, 1));
}
if(entity instanceof TestCaseContext) {
addition = await renderArray(entity.testSteps, ts => renderTestEntity(ts, tick, 2));
}
return `${createIdent(ident)}${main}${EOL}${addition}`;
}
async renderError(error, req) {
if (process.env.NODE_ENV !== 'production') {
const youch = new Youch(error, req);
return youch.toHTML();
} else {
const { readFile } = require('fs-extra');
return readFile(this.options.path, 'utf-8');
}
},
};
this.server.use(async (err, req, res, next) => {
if (process.env.NODE_ENV === 'development') {
const errors = await new Youch(err, req).toJSON();
return res.status(500).json(errors);
}
return res.status(500).json({ error: 'Internal server error' });
});
}