Don't export authRoutes from barrel file to break the cycle: services.ts → auth/index.ts → auth/routes.ts → services.ts Import authRoutes directly from ./auth/routes instead. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
105 lines
2.5 KiB
TypeScript
105 lines
2.5 KiB
TypeScript
/// <reference lib="dom" />
|
|
|
|
import nunjucks from "nunjucks";
|
|
import { DateTime } from "ts-luxon";
|
|
import { authRoutes } from "./auth/routes";
|
|
import { contentTypes } from "./content-types";
|
|
import { multiHandler } from "./handlers";
|
|
import { HttpCode, httpCodes } from "./http-codes";
|
|
import { services } from "./services";
|
|
import { type Call, ProcessedRoute, type Result, type Route } from "./types";
|
|
|
|
// FIXME: Obviously put this somewhere else
|
|
const okText = (result: string): Result => {
|
|
const code = httpCodes.success.OK;
|
|
|
|
const retval: Result = {
|
|
code,
|
|
result,
|
|
contentType: contentTypes.text.plain,
|
|
};
|
|
|
|
return retval;
|
|
};
|
|
|
|
const routes: Route[] = [
|
|
...authRoutes,
|
|
{
|
|
path: "/slow",
|
|
methods: ["GET"],
|
|
handler: async (_call: Call): Promise<Result> => {
|
|
console.log("starting slow request");
|
|
|
|
await services.misc.sleep(2);
|
|
|
|
console.log("finishing slow request");
|
|
const retval = okText("that was slow");
|
|
|
|
return retval;
|
|
},
|
|
},
|
|
{
|
|
path: "/list",
|
|
methods: ["GET"],
|
|
handler: async (call: Call): Promise<Result> => {
|
|
const code = httpCodes.success.OK;
|
|
const lr = (rr: Route[]) => {
|
|
const ret = rr.map((r: Route) => {
|
|
return r.path;
|
|
});
|
|
|
|
return ret;
|
|
};
|
|
|
|
const listing = lr(routes).join(", ");
|
|
return {
|
|
code,
|
|
result: listing + "\n",
|
|
contentType: contentTypes.text.plain,
|
|
};
|
|
},
|
|
},
|
|
{
|
|
path: "/ok",
|
|
methods: ["GET", "POST", "PUT"],
|
|
handler: multiHandler,
|
|
},
|
|
{
|
|
path: "/alsook",
|
|
methods: ["GET"],
|
|
handler: async (_req): Promise<Result> => {
|
|
const code = httpCodes.success.OK;
|
|
return {
|
|
code,
|
|
result: "it is also ok",
|
|
contentType: contentTypes.text.plain,
|
|
};
|
|
},
|
|
},
|
|
{
|
|
path: "/time",
|
|
methods: ["GET"],
|
|
handler: async (_req): Promise<Result> => {
|
|
const now = DateTime.now();
|
|
const template = `
|
|
<html>
|
|
<head></head>
|
|
<body>
|
|
{{ now }}
|
|
</body>
|
|
</html>
|
|
`;
|
|
|
|
const result = nunjucks.renderString(template, { now });
|
|
|
|
return {
|
|
code: httpCodes.success.OK,
|
|
contentType: contentTypes.text.html,
|
|
result,
|
|
};
|
|
},
|
|
},
|
|
];
|
|
|
|
export { routes };
|