From 754e4fd31ce49eadb2cf4951e941a48d11d10e73 Mon Sep 17 00:00:00 2001 From: Arsh <69170106+lilnasy@users.noreply.github.com> Date: Tue, 7 Nov 2023 14:01:04 +0000 Subject: [PATCH] feat(vercel): streaming (#8879) --- .changeset/tricky-clocks-end.md | 7 +++++++ .../vercel/src/serverless/adapter.ts | 3 ++- .../test/fixtures/streaming/astro.config.mjs | 7 +++++++ .../test/fixtures/streaming/package.json | 10 +++++++++ .../fixtures/streaming/src/pages/one.astro | 8 +++++++ .../fixtures/streaming/src/pages/two.astro | 8 +++++++ .../vercel/test/static-assets.test.js | 15 ++++++------- .../vercel/test/streaming.test.js | 21 +++++++++++++++++++ pnpm-lock.yaml | 9 ++++++++ 9 files changed, 80 insertions(+), 8 deletions(-) create mode 100644 .changeset/tricky-clocks-end.md create mode 100644 packages/integrations/vercel/test/fixtures/streaming/astro.config.mjs create mode 100644 packages/integrations/vercel/test/fixtures/streaming/package.json create mode 100644 packages/integrations/vercel/test/fixtures/streaming/src/pages/one.astro create mode 100644 packages/integrations/vercel/test/fixtures/streaming/src/pages/two.astro create mode 100644 packages/integrations/vercel/test/streaming.test.js diff --git a/.changeset/tricky-clocks-end.md b/.changeset/tricky-clocks-end.md new file mode 100644 index 000000000000..8b57899881cb --- /dev/null +++ b/.changeset/tricky-clocks-end.md @@ -0,0 +1,7 @@ +--- +'@astrojs/vercel': minor +--- + +The Vercel adapter now streams responses! + +This brings better performance to your visitors by showing them content as it is rendered. The browser can also start loading the required stylesheets and scripts much sooner, which ultimately results in faster full page loads. diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts index ea7cd7e533f8..621849688ff3 100644 --- a/packages/integrations/vercel/src/serverless/adapter.ts +++ b/packages/integrations/vercel/src/serverless/adapter.ts @@ -341,7 +341,7 @@ interface CreateFunctionFolderArgs { NTF_CACHE: any; includeFiles: URL[]; excludeFiles?: string[]; - maxDuration?: number; + maxDuration: number | undefined; } async function createFunctionFolder({ @@ -381,6 +381,7 @@ async function createFunctionFolder({ handler, launcherType: 'Nodejs', maxDuration, + supportsResponseStreaming: true, }); } diff --git a/packages/integrations/vercel/test/fixtures/streaming/astro.config.mjs b/packages/integrations/vercel/test/fixtures/streaming/astro.config.mjs new file mode 100644 index 000000000000..b1a48b07df94 --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/streaming/astro.config.mjs @@ -0,0 +1,7 @@ +import { defineConfig } from 'astro/config'; +import vercel from '@astrojs/vercel/serverless'; + +export default defineConfig({ + output: "server", + adapter: vercel() +}); diff --git a/packages/integrations/vercel/test/fixtures/streaming/package.json b/packages/integrations/vercel/test/fixtures/streaming/package.json new file mode 100644 index 000000000000..80068581cc33 --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/streaming/package.json @@ -0,0 +1,10 @@ +{ + "name": "@test/vercel-streaming", + "version": "0.0.0", + "private": true, + "dependencies": { + "@astrojs/vercel": "workspace:*", + "astro": "workspace:*" + } +} + \ No newline at end of file diff --git a/packages/integrations/vercel/test/fixtures/streaming/src/pages/one.astro b/packages/integrations/vercel/test/fixtures/streaming/src/pages/one.astro new file mode 100644 index 000000000000..0c7fb90a735e --- /dev/null +++ b/packages/integrations/vercel/test/fixtures/streaming/src/pages/one.astro @@ -0,0 +1,8 @@ + +
+