@builder.io/qwik
Version:
An Open-Source sub-framework designed with a focus on server-side-rendering, lazy-loading, and styling/animation.
88 lines (76 loc) • 2.41 kB
text/typescript
/*
* WHAT IS THIS FILE?
*
* It's the entry point for the Deno HTTP server when building for production.
*
* Learn more about the Deno integration here:
* - https://qwik.dev/docs/deployments/deno/
* - https://docs.deno.com/runtime/tutorials/http_server
*
*/
import { getRequestEvent } from "@builder.io/qwik-city";
import { createQwikCity } from "@builder.io/qwik-city/middleware/deno";
import qwikCityPlan from "@qwik-city-plan";
import render from "./entry.ssr";
// Create the Qwik City Deno middleware
const { router, notFound, staticFile } = createQwikCity({
render,
qwikCityPlan,
static: {
cacheControl: "public, max-age=31536000, immutable",
},
});
// Allow for dynamic port
const port = Number(Deno.env.get("PORT") ?? 3009);
/* eslint-disable */
console.log(`Server starter: http://localhost:${port}/app/`);
// Optional request-aware diagnostics for crashes that escape request boundaries.
// This does not prevent Deno from crashing, but it does provide better diagnostics.
// See Deno runtime event docs for error and unhandled rejection behavior.
globalThis.addEventListener("error", (event: ErrorEvent) => {
const requestEv = getRequestEvent();
if (requestEv) {
console.error("Unhandled exception during request", {
method: requestEv.method,
url: requestEv.url.href,
headersSent: requestEv.headersSent,
error: event.error,
});
return;
}
console.error("Unhandled exception outside request", {
error: event.error,
});
});
globalThis.addEventListener(
"unhandledrejection",
(event: PromiseRejectionEvent) => {
const requestEv = getRequestEvent();
if (requestEv) {
console.error("Unhandled rejection during request", {
method: requestEv.method,
url: requestEv.url.href,
headersSent: requestEv.headersSent,
reason: event.reason,
});
return;
}
console.error("Unhandled rejection outside request", {
reason: event.reason,
});
},
);
Deno.serve({ port }, async (request: Request, info: any) => {
const staticResponse = await staticFile(request);
if (staticResponse) {
return staticResponse;
}
// Server-side render this request with Qwik City
const qwikCityResponse = await router(request, info);
if (qwikCityResponse) {
return qwikCityResponse;
}
// Path not found
return notFound(request);
});
declare const Deno: any;