diff options
Diffstat (limited to 'packages/integrations/netlify/src')
-rw-r--r-- | packages/integrations/netlify/src/index.ts | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/packages/integrations/netlify/src/index.ts b/packages/integrations/netlify/src/index.ts index d2da0fd98..11dfafe51 100644 --- a/packages/integrations/netlify/src/index.ts +++ b/packages/integrations/netlify/src/index.ts @@ -5,7 +5,13 @@ import { fileURLToPath } from 'node:url'; import { emptyDir } from '@astrojs/internal-helpers/fs'; import { createRedirectsFromAstroRoutes } from '@astrojs/underscore-redirects'; import type { Context } from '@netlify/functions'; -import type { AstroConfig, AstroIntegration, AstroIntegrationLogger, RouteData } from 'astro'; +import type { + AstroConfig, + AstroIntegration, + AstroIntegrationLogger, + HookParameters, + RouteData, +} from 'astro'; import { build } from 'esbuild'; import { copyDependenciesToFunction } from './lib/nft.js'; import type { Args } from './ssr-function.js'; @@ -201,6 +207,8 @@ export default function netlifyIntegration( // Secret used to verify that the caller is the astro-generated edge middleware and not a third-party const middlewareSecret = randomUUID(); + let finalBuildOutput: HookParameters<'astro:config:done'>['buildOutput']; + const TRACE_CACHE = {}; const ssrBuildDir = () => new URL('./.netlify/build/', rootDir); @@ -215,7 +223,7 @@ export default function netlifyIntegration( ]); async function writeRedirects(routes: RouteData[], dir: URL) { - const fallback = _config.output === 'static' ? '/.netlify/static' : '/.netlify/functions/ssr'; + const fallback = finalBuildOutput === 'static' ? '/.netlify/static' : '/.netlify/functions/ssr'; const redirects = createRedirectsFromAstroRoutes({ config: _config, dir, @@ -283,7 +291,7 @@ export default function netlifyIntegration( import { createContext, trySerializeLocals } from 'astro/middleware'; export default async (request, context) => { - const ctx = createContext({ + const ctx = createContext({ request, params: {} }); @@ -294,7 +302,7 @@ export default function netlifyIntegration( request.headers.set("x-astro-middleware-secret", "${middlewareSecret}"); return context.next(); }; - + return onRequest(ctx, next); } @@ -440,10 +448,12 @@ export default function netlifyIntegration( }, }); }, - 'astro:config:done': async ({ config, setAdapter, logger }) => { + 'astro:config:done': async ({ config, setAdapter, logger, buildOutput }) => { rootDir = config.root; _config = config; + finalBuildOutput = buildOutput; + await writeNetlifyFrameworkConfig(config, logger); const edgeMiddleware = integrationConfig?.edgeMiddleware ?? false; @@ -477,7 +487,7 @@ export default function netlifyIntegration( await writeRedirects(routes, dir); logger.info('Emitted _redirects'); - if (_config.output !== 'static') { + if (finalBuildOutput !== 'static') { let notFoundContent = undefined; try { notFoundContent = await readFile(new URL('./404.html', dir), 'utf8'); |