tome-web/server/server.ts

52 lines
1.3 KiB
TypeScript

import { Application, Status } from 'oak'
//// import any necessary wasm file here
// import init from '~/common/wasm.js'
import apiRouter from './routes/api.ts'
import staticRouter from './routes/static.tsx'
const app = new Application()
app.addEventListener("error", (event) => {
console.error(event.error);
})
app.use(async (ctx, next) => {
try {
await next();
} catch (error) {
ctx.response.body = "Internal server error";
throw error;
}
});
app.use((ctx, next) => {
ctx.response.headers.set('Access-Control-Allow-Origin', '*')
// avoid CSP concerns
// ctx.response.headers.delete("content-security-policy");
console.log(ctx.request.url.pathname)
return next()
})
app.use(apiRouter.routes())
app.use(apiRouter.allowedMethods())
app.use(staticRouter.routes())
app.use(staticRouter.allowedMethods())
// 404
app.use((context) => {
context.response.status = Status.NotFound
context.response.body = `"${context.request.url}" not found`
})
//// init wasm file here
//// https://deno.com/deploy/docs/serve-static-assets
// const WASM_PATH = new URL('../common/wasm/wasm_bg.wasm', import.meta.url)
//// https://github.com/rustwasm/wasm-pack/issues/672#issuecomment-813630435
// await init(Deno.readFile(WASM_PATH))
const port = +(Deno.env.get('PORT') ?? 8080)
console.log(`Listening on port ${port}...`)
app.listen(`:${port}`)