summaryrefslogtreecommitdiff
path: root/examples/ssr/server/server.mjs
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@skypack.dev> 2022-03-24 07:26:25 -0400
committerGravatar GitHub <noreply@github.com> 2022-03-24 07:26:25 -0400
commit5e52814d97a5723dbe7ebb32fbe040a7a4c0ea77 (patch)
treeb4cd5790933ad9829159314191487462bd5e9d2e /examples/ssr/server/server.mjs
parent5c96145527f9480e7b7b16b599f4b2091e41aa6c (diff)
downloadastro-5e52814d97a5723dbe7ebb32fbe040a7a4c0ea77.tar.gz
astro-5e52814d97a5723dbe7ebb32fbe040a7a4c0ea77.tar.zst
astro-5e52814d97a5723dbe7ebb32fbe040a7a4c0ea77.zip
Adapters v0 (#2855)
* Adapter v0 * Finalizing adapters * Update the lockfile * Add the default adapter after config setup is called * Create the default adapter in config:done * Fix lint error * Remove unused callConfigSetup * remove unused export * Use a test adapter to test SSR * Adds a changeset * Updated based on feedback * Updated the lockfile * Only throw if set to a different adapter * Clean up outdated comments * Move the adapter to an config option * Make adapter optional * Update the docs/changeset to reflect config API change * Clarify regular Node usage
Diffstat (limited to 'examples/ssr/server/server.mjs')
-rw-r--r--examples/ssr/server/server.mjs48
1 files changed, 18 insertions, 30 deletions
diff --git a/examples/ssr/server/server.mjs b/examples/ssr/server/server.mjs
index c6f35685e..bed49b749 100644
--- a/examples/ssr/server/server.mjs
+++ b/examples/ssr/server/server.mjs
@@ -1,43 +1,31 @@
import { createServer } from 'http';
import fs from 'fs';
import mime from 'mime';
-import { loadApp } from 'astro/app/node';
-import { polyfill } from '@astrojs/webapi';
import { apiHandler } from './api.mjs';
-
-polyfill(globalThis);
+import { handler as ssrHandler } from '../dist/server/entry.mjs';
const clientRoot = new URL('../dist/client/', import.meta.url);
-const serverRoot = new URL('../dist/server/', import.meta.url);
-const app = await loadApp(serverRoot);
async function handle(req, res) {
- const route = app.match(req);
+ ssrHandler(req, res, async () => {
+ // Did not match an SSR route
- if (route) {
- /** @type {Response} */
- const response = await app.render(req, route);
- const html = await response.text();
- res.writeHead(response.status, {
- 'Content-Type': 'text/html; charset=utf-8',
- 'Content-Length': Buffer.byteLength(html, 'utf-8'),
- });
- res.end(html);
- } else if (/^\/api\//.test(req.url)) {
- return apiHandler(req, res);
- } else {
- let local = new URL('.' + req.url, clientRoot);
- try {
- const data = await fs.promises.readFile(local);
- res.writeHead(200, {
- 'Content-Type': mime.getType(req.url),
- });
- res.end(data);
- } catch {
- res.writeHead(404);
- res.end();
+ if (/^\/api\//.test(req.url)) {
+ return apiHandler(req, res);
+ } else {
+ let local = new URL('.' + req.url, clientRoot);
+ try {
+ const data = await fs.promises.readFile(local);
+ res.writeHead(200, {
+ 'Content-Type': mime.getType(req.url),
+ });
+ res.end(data);
+ } catch {
+ res.writeHead(404);
+ res.end();
+ }
}
- }
+ });
}
const server = createServer((req, res) => {