diff options
author | 2023-07-17 15:53:10 +0100 | |
---|---|---|
committer | 2023-07-17 15:53:10 +0100 | |
commit | 4c93bd8154c210ebce6ad2889bd8bfdf4c349a78 (patch) | |
tree | e0b9fb9474845411b35f177260408f444d0631ff /packages/integrations/netlify/src/netlify-functions.ts | |
parent | cc8e9de88179d2ed4b70980c60b41448db393429 (diff) | |
download | astro-4c93bd8154c210ebce6ad2889bd8bfdf4c349a78.tar.gz astro-4c93bd8154c210ebce6ad2889bd8bfdf4c349a78.tar.zst astro-4c93bd8154c210ebce6ad2889bd8bfdf4c349a78.zip |
feat(@astrojs/netlify): edge middleware support (#7632)
Co-authored-by: Bjorn Lu <bjornlu.dev@gmail.com>
Co-authored-by: Yan Thomas <61414485+Yan-Thomas@users.noreply.github.com>
Diffstat (limited to 'packages/integrations/netlify/src/netlify-functions.ts')
-rw-r--r-- | packages/integrations/netlify/src/netlify-functions.ts | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/packages/integrations/netlify/src/netlify-functions.ts b/packages/integrations/netlify/src/netlify-functions.ts index 915f72955..8d0196d5e 100644 --- a/packages/integrations/netlify/src/netlify-functions.ts +++ b/packages/integrations/netlify/src/netlify-functions.ts @@ -2,6 +2,7 @@ import { polyfill } from '@astrojs/webapi'; import { builder, type Handler } from '@netlify/functions'; import type { SSRManifest } from 'astro'; import { App } from 'astro/app'; +import { ASTRO_LOCALS_HEADER } from './integration-functions.js'; polyfill(globalThis, { exclude: 'window document', @@ -80,8 +81,14 @@ export const createExports = (manifest: SSRManifest, args: Args) => { const ip = headers['x-nf-client-connection-ip']; Reflect.set(request, clientAddressSymbol, ip); - - const response: Response = await app.render(request, routeData); + let locals = {}; + if (request.headers.has(ASTRO_LOCALS_HEADER)) { + let localsAsString = request.headers.get(ASTRO_LOCALS_HEADER); + if (localsAsString) { + locals = JSON.parse(localsAsString); + } + } + const response: Response = await app.render(request, routeData, locals); const responseHeaders = Object.fromEntries(response.headers.entries()); const responseContentType = parseContentType(responseHeaders['content-type']); |