diff --git a/packages/integrations/vercel/README.md b/packages/integrations/vercel/README.md index f66d3832faae..bad219b98c89 100644 --- a/packages/integrations/vercel/README.md +++ b/packages/integrations/vercel/README.md @@ -266,7 +266,7 @@ export default defineConfig({ **Type:** `number`
**Available for:** Serverless -Use this property to extend or limit the maximum duration (in seconds) that Serverless Functions can run before timing out. See the [Vercel documentation](https://vercel.com/docs/functions/serverless-functions/runtimes#maxduration) for the default and maximum limit for your account plan. +Use this property to extend or limit the maximum duration (in seconds) that Serverless Functions can run before timing out. See the [Vercel documentation](https://vercel.com/docs/functions/serverless-functions/runtimes#maxduration) for the default and maximum limit for your account plan. ```diff lang="js" // astro.config.mjs diff --git a/packages/integrations/vercel/src/serverless/adapter.ts b/packages/integrations/vercel/src/serverless/adapter.ts index ef8828132331..e7cdebfb971c 100644 --- a/packages/integrations/vercel/src/serverless/adapter.ts +++ b/packages/integrations/vercel/src/serverless/adapter.ts @@ -99,7 +99,7 @@ export interface VercelServerlessConfig { /** Whether to create the Vercel Edge middleware from an Astro middleware in your code base. */ edgeMiddleware?: boolean; - + /** Whether to split builds into a separate function for each route. */ functionPerRoute?: boolean; @@ -120,7 +120,6 @@ export default function vercelServerless({ edgeMiddleware = false, maxDuration, }: VercelServerlessConfig = {}): AstroIntegration { - if (maxDuration) { if (typeof maxDuration !== 'number') { throw new TypeError(`maxDuration must be a number`, { cause: maxDuration }); @@ -143,10 +142,13 @@ export default function vercelServerless({ name: PACKAGE_NAME, hooks: { 'astro:config:setup': async ({ command, config, updateConfig, injectScript, logger }) => { - if (maxDuration && maxDuration > 900) { - logger.warn(`maxDuration is set to ${maxDuration} seconds, which is longer than the maximum allowed duration of 900 seconds.`) - logger.warn(`Please make sure that your plan allows for this duration. See https://vercel.com/docs/functions/serverless-functions/runtimes#maxduration for more information.`) + logger.warn( + `maxDuration is set to ${maxDuration} seconds, which is longer than the maximum allowed duration of 900 seconds.` + ); + logger.warn( + `Please make sure that your plan allows for this duration. See https://vercel.com/docs/functions/serverless-functions/runtimes#maxduration for more information.` + ); } if (webAnalytics?.enabled || analytics) { @@ -272,7 +274,7 @@ You can set functionPerRoute: false to prevent surpassing the limit.` NTF_CACHE, includeFiles: filesToInclude, excludeFiles, - maxDuration + maxDuration, }); routeDefinitions.push({ src: route.pattern.source, @@ -288,7 +290,7 @@ You can set functionPerRoute: false to prevent surpassing the limit.` NTF_CACHE, includeFiles: filesToInclude, excludeFiles, - maxDuration + maxDuration, }); routeDefinitions.push({ src: '/.*', dest: 'render' }); } @@ -331,14 +333,14 @@ You can set functionPerRoute: false to prevent surpassing the limit.` } interface CreateFunctionFolderArgs { - functionName: string - entry: URL - config: AstroConfig - logger: AstroIntegrationLogger - NTF_CACHE: any - includeFiles: URL[] - excludeFiles?: string[] - maxDuration?: number + functionName: string; + entry: URL; + config: AstroConfig; + logger: AstroIntegrationLogger; + NTF_CACHE: any; + includeFiles: URL[]; + excludeFiles?: string[]; + maxDuration?: number; } async function createFunctionFolder({ diff --git a/packages/integrations/vercel/test/max-duration.test.js b/packages/integrations/vercel/test/max-duration.test.js index 9826dcdfbb58..8f0af3b89df4 100644 --- a/packages/integrations/vercel/test/max-duration.test.js +++ b/packages/integrations/vercel/test/max-duration.test.js @@ -2,18 +2,20 @@ import { loadFixture } from './test-utils.js'; import { expect } from 'chai'; describe('maxDuration', () => { - /** @type {import('./test-utils.js').Fixture} */ - let fixture; + /** @type {import('./test-utils.js').Fixture} */ + let fixture; - before(async () => { - fixture = await loadFixture({ - root: './fixtures/max-duration/', - }); - await fixture.build(); - }); + before(async () => { + fixture = await loadFixture({ + root: './fixtures/max-duration/', + }); + await fixture.build(); + }); - it('makes it to vercel function configuration', async () => { - const vcConfig = JSON.parse(await fixture.readFile('../.vercel/output/functions/render.func/.vc-config.json')); - expect(vcConfig).to.deep.include({ maxDuration: 60 }); - }); + it('makes it to vercel function configuration', async () => { + const vcConfig = JSON.parse( + await fixture.readFile('../.vercel/output/functions/render.func/.vc-config.json') + ); + expect(vcConfig).to.deep.include({ maxDuration: 60 }); + }); });