summaryrefslogtreecommitdiff
path: root/benchmark/packages/adapter/src/server.ts
diff options
context:
space:
mode:
authorGravatar Emanuele Stoppa <my.burning@gmail.com> 2024-11-06 12:33:14 +0000
committerGravatar GitHub <noreply@github.com> 2024-11-06 12:33:14 +0000
commited5a9f1b755f9ae31735dacf75b970669c8c38c8 (patch)
treeb539b47c4bbf6bfac981b5d65ff3a92c4339d09b /benchmark/packages/adapter/src/server.ts
parent222f71894cc7118319ce83b3b29fa61a9dbebb75 (diff)
downloadastro-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.ts34
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),
+ };
+}