@cldn/web-ts
Version:
Class-based Node.js web server
37 lines • 2.93 kB
JavaScript
import { TextResponse } from "./response/TextResponse.js";
/**
* A registry for server errors.
*/
class ServerErrorRegistry {
responses;
/**
* Create a new server error registry initialised with default responses.
*/
constructor() {
this.responses = {
[0 /* ServerErrorRegistry.ErrorCodes.BAD_URL */]: new TextResponse("Invalid request URL.", 400),
[1 /* ServerErrorRegistry.ErrorCodes.NO_ROUTE */]: new TextResponse("No route matched the request.", 404),
[2 /* ServerErrorRegistry.ErrorCodes.INTERNAL */]: new TextResponse("An unexpected internal server error occurred.", 500),
[3 /* ServerErrorRegistry.ErrorCodes.PRECONDITION_FAILED */]: new TextResponse("One or more preconditions were not met.", 412),
[4 /* ServerErrorRegistry.ErrorCodes.NO_PERMISSION */]: new TextResponse("You do not have the necessary permissions to perform this action.", 403),
[5 /* ServerErrorRegistry.ErrorCodes.UNAUTHORISED */]: new TextResponse("Authentication information was either absent or invalid.", 401),
};
}
/**
* Replace server error response by registering a new custom response.
* @param code The server error code.
* @param response The response to send.
*/
register(code, response) {
this.responses[code] = response;
}
/** @internal */
_get(code, req) {
const r = this.responses[code];
if (typeof r === "function")
return r(req ?? void 0);
return r;
}
}
export { ServerErrorRegistry };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyRXJyb3JSZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TZXJ2ZXJFcnJvclJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sbUJBQW1CO0lBQ0osU0FBUyxDQUE0RjtJQUV0SDs7T0FFRztJQUNIO1FBQ0ksSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLGdEQUF3QyxFQUNwQyxJQUFJLFlBQVksQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLENBQUM7WUFFakQsaURBQXlDLEVBQ3JDLElBQUksWUFBWSxDQUFDLCtCQUErQixFQUFFLEdBQUcsQ0FBQztZQUUxRCxpREFBeUMsRUFDckMsSUFBSSxZQUFZLENBQUMsK0NBQStDLEVBQUUsR0FBRyxDQUFDO1lBRTFFLDREQUFvRCxFQUNoRCxJQUFJLFlBQVksQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLENBQUM7WUFFcEUsc0RBQThDLEVBQzFDLElBQUksWUFBWSxDQUFDLG1FQUFtRSxFQUFFLEdBQUcsQ0FBQztZQUU5RixxREFBNkMsRUFDekMsSUFBSSxZQUFZLENBQUMsMERBQTBELEVBQUUsR0FBRyxDQUFDO1NBQ3hGLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxJQUFvQyxFQUFFLFFBQTJEO1FBQzdHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0I7SUFDVCxJQUFJLENBQUMsSUFBb0MsRUFBRSxHQUFzQjtRQUNwRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVTtZQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNKO0FBZ0JELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxDQUFDIn0=