diff options
author | 2024-11-06 12:33:14 +0000 | |
---|---|---|
committer | 2024-11-06 12:33:14 +0000 | |
commit | ed5a9f1b755f9ae31735dacf75b970669c8c38c8 (patch) | |
tree | b539b47c4bbf6bfac981b5d65ff3a92c4339d09b /benchmark/packages/adapter/src/server.ts | |
parent | 222f71894cc7118319ce83b3b29fa61a9dbebb75 (diff) | |
download | astro-ed5a9f1b755f9ae31735dacf75b970669c8c38c8.tar.gz astro-ed5a9f1b755f9ae31735dacf75b970669c8c38c8.tar.zst astro-ed5a9f1b755f9ae31735dacf75b970669c8c38c8.zip |
chore: codspeed benchmark (#12347)
Diffstat (limited to 'benchmark/packages/adapter/src/server.ts')
-rw-r--r-- | benchmark/packages/adapter/src/server.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/benchmark/packages/adapter/src/server.ts b/benchmark/packages/adapter/src/server.ts new file mode 100644 index 000000000..ca69fe28f --- /dev/null +++ b/benchmark/packages/adapter/src/server.ts @@ -0,0 +1,34 @@ +import * as fs from 'node:fs'; +import type { SSRManifest } from 'astro'; +import { App } from 'astro/app'; +import { applyPolyfills } from 'astro/app/node'; + +applyPolyfills(); + +class MyApp extends App { + #manifest: SSRManifest | undefined; + #streaming: boolean; + constructor(manifest: SSRManifest, streaming = false) { + super(manifest, streaming); + this.#manifest = manifest; + this.#streaming = streaming; + } + + async render(request: Request) { + const url = new URL(request.url); + if (this.#manifest?.assets.has(url.pathname)) { + const filePath = new URL('../../client/' + this.removeBase(url.pathname), import.meta.url); + const data = await fs.promises.readFile(filePath); + return new Response(data); + } + + return super.render(request); + } +} + +export function createExports(manifest: SSRManifest) { + return { + manifest, + createApp: (streaming: boolean) => new MyApp(manifest, streaming), + }; +} |