Add a first cut at an express-based backend

This commit is contained in:
Michael Wolf
2025-11-17 10:58:54 -06:00
parent c346a70cce
commit 1a13fd0909
20 changed files with 2102 additions and 0 deletions

43
express/http-codes.ts Normal file
View File

@@ -0,0 +1,43 @@
import { Extensible } from "./interfaces";
export type HttpCode = {
code: number;
name: string;
description?: string;
};
type Group = "success" | "redirection" | "clientErrors" | "serverErrors";
type CodeDefinitions = {
[K in Group]: {
[K: string]: HttpCode;
};
};
// FIXME: Figure out how to brand CodeDefinitions in a way that isn't
// tedious.
const httpCodes: CodeDefinitions = {
success: {
OK: { code: 200, name: "OK", description: "" },
Created: { code: 201, name: "Created" },
Accepted: { code: 202, name: "Accepted" },
NoContent: { code: 204, name: "No content" },
},
redirection: {
// later
},
clientErrors: {
BadRequest: { code: 400, name: "Bad Request" },
Unauthorized: { code: 401, name: "Unauthorized" },
Forbidden: { code: 403, name: "Forbidden" },
NotFound: { code: 404, name: "Not Found" },
MethodNotAllowed: { code: 405, name: "Method Not Allowed" },
NotAcceptable: { code: 406, name: "Not Acceptable" },
// More later
},
serverErrors: {
InternalServerError: { code: 500, name: "Internal Server Error" },
NotImplemented: { code: 500, name: "Not implemented" },
// more later
},
};
export { httpCodes };