@adonisjs/drive
Version:
A thin wrapper on top of Flydrive to work seamlessly with AdonisJS
50 lines (49 loc) • 1.78 kB
JavaScript
import "node:module";
import { Exception } from "@adonisjs/core/exceptions";
import { debuglog } from "node:util";
var __defProp = Object.defineProperty;
var __exportAll = (all, no_symbols) => {
let target = {};
for (var name in all) __defProp(target, name, {
get: all[name],
enumerable: true
});
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
return target;
};
var errors_exports = /* @__PURE__ */ __exportAll({ CannotServeFileException: () => CannotServeFileException });
var CannotServeFileException = class extends Exception {
debug = process.env.NODE_ENV !== "production";
constructor(originalError) {
super("Cannot serve local file using drive", {
code: "E_CANNOT_SERVE_FILE",
status: 500,
cause: originalError
});
}
#getRootCause(error) {
if (error && typeof error === "object" && "cause" in error) return this.#getRootCause(error.cause);
return error;
}
parseError(error) {
const rootCause = this.#getRootCause(error);
const message = rootCause.message || error.message;
return {
stack: rootCause.stack,
status: rootCause.code === "ENOENT" || message.includes("Cannot get metadata of a directory") ? 404 : 500,
message
};
}
handle(error, ctx) {
if (!this.debug) return ctx.response.status(404).send("File not found");
let { stack, status, message } = this.parseError(error);
return ctx.response.status(status).send(`${message}${stack ? `\nStack:${stack}` : ""}`);
}
report(error, ctx) {
const { stack, status, message } = this.parseError(error);
if (status === 404) ctx.logger.warn(message);
else ctx.logger.error({ err: stack }, message);
}
};
var debug_default = debuglog("adonisjs:drive");
export { CannotServeFileException as n, errors_exports as r, debug_default as t };