fastlane
Version:
Fastlane is a fast and flexible API framework for Node.js. It automatically creates Express routes from your project's file structure, making it easy to build APIs quickly and efficiently.
46 lines • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NotProcessed = exports.Unauthorized = exports.StatusError = void 0;
exports.appErrorHandler = appErrorHandler;
exports.isKnownError = isKnownError;
const zod_1 = require("zod");
function appErrorHandler(err, req, res, next) {
console.log('Error', err);
if (err instanceof zod_1.ZodError) {
const formatted = err.format();
console.log(JSON.stringify(formatted));
res.status(400).send(err);
}
else if (isKnownError(err)) {
res.status(err.statusCode).json({ message: err.message });
}
else {
res.status(500).json({ message: 'Unknown error' });
}
}
class StatusError extends Error {
statusCode = 400;
constructor(message, options = {}) {
super(message);
if (options.statusCode) {
this.statusCode = options.statusCode;
}
}
}
exports.StatusError = StatusError;
class Unauthorized extends StatusError {
constructor(message = 'Unauthorized') {
super(message, { statusCode: 401 });
}
}
exports.Unauthorized = Unauthorized;
class NotProcessed extends StatusError {
constructor(message = 'NotProcessed') {
super(message, { statusCode: 403 });
}
}
exports.NotProcessed = NotProcessed;
function isKnownError(err) {
return !!err && typeof err === 'object' && 'statusCode' in err && typeof err.statusCode === 'number' && 'message' in err && typeof err.message === 'string';
}
//# sourceMappingURL=errors.js.map