knex
Version:
A batteries-included SQL query & schema builder for PostgresSQL, MySQL, CockroachDB, MSSQL and SQLite3
28 lines (23 loc) • 887 B
JavaScript
const { inspect } = require('util');
// since we're loading code that's not ours when we read a knexfile, it can throw anything.
//
// this small helper class acts as glue between catching an error during knexfile handling
// and presenting the failure to the user when calling exit() with the result, determining
// how to format whatever we know about the failure to present a useful error to the user
//
// see https://github.com/knex/knex/issues/6082
class KnexfileRuntimeError {
constructor(message, configPath, caught) {
const strs = [message];
if (caught instanceof Error) {
strs.push(caught.stack ?? caught.message);
} else {
strs.push(
`A non-Error value was thrown\n at default export (${configPath})`
);
strs.push(inspect(caught));
}
this.message = strs.join('\n');
}
}
module.exports = { KnexfileRuntimeError };