diff options
author | 2023-01-27 16:20:34 +0100 | |
---|---|---|
committer | 2023-01-27 10:20:34 -0500 | |
commit | 1c230f10373ec392b6cdcd5c196ae932f89033aa (patch) | |
tree | 1947b1e788d920f026c23db9dbc6f5610a07ffbb /packages/integrations/netlify/src/netlify-functions.ts | |
parent | 2565bc453ec5bc5e31e0cb567e2c22dafd74a09a (diff) | |
download | astro-1c230f10373ec392b6cdcd5c196ae932f89033aa.tar.gz astro-1c230f10373ec392b6cdcd5c196ae932f89033aa.tar.zst astro-1c230f10373ec392b6cdcd5c196ae932f89033aa.zip |
feat(@astrojs/netlify): Add on-demand builders Netlify functions (#5874)
* Add on-demand builders option
* chore: add changeset
* docs: add documentation in configuration section
* Update packages/integrations/netlify/README.md
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Update packages/integrations/netlify/README.md
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Update packages/integrations/netlify/README.md
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
* Update .changeset/twenty-pans-agree.md
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
---------
Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
Diffstat (limited to 'packages/integrations/netlify/src/netlify-functions.ts')
-rw-r--r-- | packages/integrations/netlify/src/netlify-functions.ts | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/packages/integrations/netlify/src/netlify-functions.ts b/packages/integrations/netlify/src/netlify-functions.ts index 57b042af9..9c9a70848 100644 --- a/packages/integrations/netlify/src/netlify-functions.ts +++ b/packages/integrations/netlify/src/netlify-functions.ts @@ -1,5 +1,5 @@ import { polyfill } from '@astrojs/webapi'; -import type { Handler } from '@netlify/functions'; +import { builder, Handler } from '@netlify/functions'; import { SSRManifest } from 'astro'; import { App } from 'astro/app'; @@ -8,6 +8,7 @@ polyfill(globalThis, { }); export interface Args { + builders?: boolean; binaryMediaTypes?: string[]; } @@ -20,6 +21,7 @@ const clientAddressSymbol = Symbol.for('astro.clientAddress'); export const createExports = (manifest: SSRManifest, args: Args) => { const app = new App(manifest); + const builders = args.builders ?? false; const binaryMediaTypes = args.binaryMediaTypes ?? []; const knownBinaryMediaTypes = new Set([ 'audio/3gpp', @@ -53,7 +55,7 @@ export const createExports = (manifest: SSRManifest, args: Args) => { ...binaryMediaTypes, ]); - const handler: Handler = async (event) => { + const myHandler: Handler = async (event) => { const { httpMethod, headers, rawUrl, body: requestBody, isBase64Encoded } = event; const init: RequestInit = { method: httpMethod, @@ -143,6 +145,8 @@ export const createExports = (manifest: SSRManifest, args: Args) => { return fnResponse; }; + const handler = builders ? builder(myHandler) : myHandler + return { handler }; }; |