From dbbf77472c210f37a75e0e962c6c8e4bbf90070c Mon Sep 17 00:00:00 2001 From: JuanM04 Date: Mon, 28 Mar 2022 17:55:03 -0300 Subject: [PATCH] Updated some types + added webapi --- packages/integrations/vercel/package.json | 1 - packages/integrations/vercel/src/index.ts | 13 ++++++++++--- packages/integrations/vercel/src/shims.ts | 5 +++++ 3 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 packages/integrations/vercel/src/shims.ts diff --git a/packages/integrations/vercel/package.json b/packages/integrations/vercel/package.json index e93639b60d..d7713183c8 100644 --- a/packages/integrations/vercel/package.json +++ b/packages/integrations/vercel/package.json @@ -23,7 +23,6 @@ }, "dependencies": { "@astrojs/webapi": "^0.11.0", - "@vercel/node": "^1.14.0", "esbuild": "0.14.25", "globby": "^12.2.0" }, diff --git a/packages/integrations/vercel/src/index.ts b/packages/integrations/vercel/src/index.ts index c89435ece3..5d67942065 100644 --- a/packages/integrations/vercel/src/index.ts +++ b/packages/integrations/vercel/src/index.ts @@ -1,17 +1,21 @@ import type { AstroIntegration, AstroConfig } from 'astro'; -import fs from 'fs/promises'; +import type { IncomingMessage, ServerResponse } from 'http'; import type { PathLike } from 'fs'; + +import fs from 'fs/promises'; import { fileURLToPath } from 'url'; import { globby } from 'globby'; import esbuild from 'esbuild'; -export type { VercelApiHandler, VercelRequest, VercelRequestBody, VercelRequestCookies, VercelRequestQuery, VercelResponse } from '@vercel/node'; +export type VercelRequest = IncomingMessage; +export type VercelResponse = ServerResponse; +export type VercelHandler = (request: VercelRequest, response: VercelResponse) => void | Promise; const writeJson = (path: PathLike, data: any) => fs.writeFile(path, JSON.stringify(data), { encoding: 'utf-8' }); const ENDPOINT_GLOB = 'api/**/*.{js,ts,tsx}'; -export function vercelFunctions(): AstroIntegration { +function vercelFunctions(): AstroIntegration { let _config: AstroConfig; let output: URL; @@ -59,11 +63,14 @@ export function vercelFunctions(): AstroIntegration { entryPoints: endpoints.map((endpoint) => new URL(endpoint, _config.pages)).map(fileURLToPath), outdir: fileURLToPath(new URL('./server/pages/api/', output)), outbase: fileURLToPath(new URL('./api/', _config.pages)), + inject: [fileURLToPath(new URL('./shims.js', import.meta.url))], bundle: true, target: 'node14', platform: 'node', format: 'cjs', }); + + await writeJson(new URL(`./package.json`, output), { type: 'commonjs' }); }, }, }; diff --git a/packages/integrations/vercel/src/shims.ts b/packages/integrations/vercel/src/shims.ts new file mode 100644 index 0000000000..01f7b39bff --- /dev/null +++ b/packages/integrations/vercel/src/shims.ts @@ -0,0 +1,5 @@ +import { polyfill } from '@astrojs/webapi'; + +polyfill(globalThis, { + exclude: 'window document', +});