[READ-ONLY] Mirror of https://github.com/danielroe/netlify-dynamic-builder.
1.1 kB
32 lines
1import '#internal/nitro/virtual/polyfill'
2
3import { withQuery } from 'ufo'
4import { createRouter as createMatcher } from 'radix3'
5
6import { useRuntimeConfig } from '#internal/nitro'
7import { handler as _handler } from '#internal/nitro/entries/aws-lambda'
8
9export const handler = async function handler (event, context) {
10 const config = useRuntimeConfig()
11 const routerOptions = createMatcher({ routes: config.nitro.routes })
12
13 const query = {
14 ...event.queryStringParameters,
15 ...event.multiValueQueryStringParameters,
16 }
17 const url = withQuery(event.path || event.rawPath, query)
18 const routeOptions = routerOptions.lookup(url) || {}
19
20 if (routeOptions.static || routeOptions.swr) {
21 const builder = await import('@netlify/functions').then(
22 (r) => r.builder || r.default.builder
23 )
24 const ttl = typeof routeOptions.swr === 'number' ? routeOptions.swr : 60
25 const swrHandler = routeOptions.swr
26 ? (event, context) => _handler(event, context).then(r => ({ ...r, ttl }))
27 : _handler
28 return builder(swrHandler)(event, context)
29 }
30
31 return _handler(event, context)
32}