[ci] format

This commit is contained in:
ematipico 2023-07-05 15:48:32 +00:00 committed by astrobot-houston
parent 9e5fafa2b2
commit c490eb6e52
7 changed files with 33 additions and 32 deletions

View file

@ -1,9 +1,9 @@
import type { AstroConfig, AstroSettings, ManifestData, RuntimeMode } from '../../@types/astro';
import fs from 'fs';
import * as colors from 'kleur/colors';
import { performance } from 'perf_hooks';
import type * as vite from 'vite';
import type yargs from 'yargs-parser';
import type { AstroConfig, AstroSettings, ManifestData, RuntimeMode } from '../../@types/astro';
import {
runHookBuildDone,
runHookBuildStart,
@ -11,7 +11,7 @@ import {
runHookConfigSetup,
} from '../../integrations/index.js';
import { createVite } from '../create-vite.js';
import { debug, info, warn, levels, timerMessage, type LogOptions } from '../logger/core.js';
import { debug, info, levels, timerMessage, warn, type LogOptions } from '../logger/core.js';
import { printHelp } from '../messages.js';
import { apply as applyPolyfill } from '../polyfill.js';
import { RouteCache } from '../render/route-cache.js';

View file

@ -1,9 +1,9 @@
import type { Plugin as VitePlugin } from 'vite';
import { MIDDLEWARE_PATH_SEGMENT_NAME } from '../../constants.js';
import { addRollupInput } from '../add-rollup-input.js';
import type { BuildInternals } from '../internal';
import type { AstroBuildPlugin } from '../plugin';
import type { StaticBuildOptions } from '../types';
import type { BuildInternals } from '../internal';
export const MIDDLEWARE_MODULE_ID = '@astro-middleware';

View file

@ -1,6 +1,6 @@
import type { MiddlewareResponseHandler, Params } from '../../@types/astro';
import { sequence } from './sequence.js';
import { createAPIContext } from '../endpoint/index.js';
import { sequence } from './sequence.js';
function defineMiddleware(fn: MiddlewareResponseHandler) {
return fn;

View file

@ -235,7 +235,7 @@ export default defineConfig({
### Vercel Edge Middleware
You can use Vercel Edge middleware to intercept a request and redirect before sending a response. Vercel middleware can run for Edge, SSR, and Static deployments. You may not need to install this package for your middleware. `@vercel/edge` is only required to use some middleware features such as geolocation. For more information see [Vercels middleware documentation](https://vercel.com/docs/concepts/functions/edge-middleware).
You can use Vercel Edge middleware to intercept a request and redirect before sending a response. Vercel middleware can run for Edge, SSR, and Static deployments. You may not need to install this package for your middleware. `@vercel/edge` is only required to use some middleware features such as geolocation. For more information see [Vercels middleware documentation](https://vercel.com/docs/concepts/functions/edge-middleware).
1. Add a `middleware.js` file to the root of your project:
@ -270,15 +270,15 @@ This is an opt-in feature, and the `build.excludeMiddleware` option needs to be
```js
// astro.config.mjs
import {defineConfig} from "astro/config";
import vercel from "@astrojs/vercel";
import { defineConfig } from 'astro/config';
import vercel from '@astrojs/vercel';
export default defineConfig({
output: "server",
adapter: vercel(),
build: {
excludeMiddleware: true
}
})
output: 'server',
adapter: vercel(),
build: {
excludeMiddleware: true,
},
});
```
Optionally, you can create a file recognized by the adapter named `vercel-edge-middleware.(js|ts)` in the [`srcDir`](https://docs.astro.build/en/reference/configuration-reference/#srcdir) folder to create [`Astro.locals`](https://docs.astro.build/en/reference/api-reference/#astrolocals).
@ -288,16 +288,16 @@ Typings requires the [`@vercel/edge`](https://www.npmjs.com/package/@vercel/edge
```js
// src/vercel-edge-middleware.js
/**
*
*
* @param options.request {Request}
* @param options.context {import("@vercel/edge").RequestContext}
* @returns {object}
*/
export default function({ request, context }) {
// do something with request and context
return {
title: "Spider-man's blog"
}
export default function ({ request, context }) {
// do something with request and context
return {
title: "Spider-man's blog",
};
}
```
@ -305,33 +305,34 @@ If you use TypeScript, you can type the function as follows:
```ts
// src/vercel-edge-middleware.ts
import type {RequestContext} from "@vercel/edge";
import type { RequestContext } from '@vercel/edge';
export default function ({request, context}: { request: Request, context: RequestContext }) {
// do something with request and context
return {
title: "Spider-man's blog"
}
export default function ({ request, context }: { request: Request; context: RequestContext }) {
// do something with request and context
return {
title: "Spider-man's blog",
};
}
```
The data returned by this function will be passed to Astro middleware.
The function:
- must export a **default** function;
- must **return** an `object`;
- accepts an object with a `request` and `context` as properties;
- `request` is typed as [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request);
- `context` is typed as [`RequestContext`](https://vercel.com/docs/concepts/functions/edge-functions/vercel-edge-package#requestcontext);
#### Limitations and constraints
#### Limitations and constraints
When you opt in to this feature, there are few constraints to note:
- The Vercel Edge middleware will always be the **first** function to receive the `Request` and the last function to receive `Response`. This an architectural constraint that follows the [boundaries set by Vercel](https://vercel.com/docs/concepts/functions/edge-middleware).
- Only `request` and `context` may be used to produce an `Astro.locals` object. Operations like redirects, etc. should be delegated to Astro middleware.
- `Astro.locals` **must be serializable**. Failing to do so will result in a **runtime error**. This means that you **cannot** store complex types like `Map`, `function`, `Set`, etc.
## Troubleshooting
**A few known complex packages (example: [puppeteer](https://github.com/puppeteer/puppeteer)) do not support bundling and therefore will not work properly with this adapter.** By default, Vercel doesn't include npm installed files & packages from your project's `./node_modules` folder. To address this, the `@astrojs/vercel` adapter automatically bundles your final build output using `esbuild`.

View file

@ -2,6 +2,7 @@ import type { AstroAdapter, AstroConfig, AstroIntegration, RouteData } from 'ast
import glob from 'fast-glob';
import { basename } from 'node:path';
import { fileURLToPath } from 'node:url';
import { pathToFileURL } from 'url';
import {
defaultImageConfig,
@ -14,7 +15,6 @@ import { getVercelOutput, removeDir, writeJson } from '../lib/fs.js';
import { copyDependenciesToFunction } from '../lib/nft.js';
import { getRedirects } from '../lib/redirects.js';
import { generateEdgeMiddleware } from './middleware.js';
import { fileURLToPath } from 'node:url';
const PACKAGE_NAME = '@astrojs/vercel/serverless';
export const ASTRO_LOCALS_HEADER = 'x-astro-locals';

View file

@ -3,8 +3,8 @@ import type { SSRManifest } from 'astro';
import { App } from 'astro/app';
import type { IncomingMessage, ServerResponse } from 'node:http';
import { getRequest, setResponse } from './request-transform';
import { ASTRO_LOCALS_HEADER } from './adapter';
import { getRequest, setResponse } from './request-transform';
polyfill(globalThis, {
exclude: 'window document',

View file

@ -1,7 +1,7 @@
import { fileURLToPath, pathToFileURL } from 'node:url';
import { join } from 'node:path';
import { ASTRO_LOCALS_HEADER } from './adapter.js';
import { existsSync } from 'fs';
import { join } from 'node:path';
import { fileURLToPath, pathToFileURL } from 'node:url';
import { ASTRO_LOCALS_HEADER } from './adapter.js';
/**
* It generates the Vercel Edge Middleware file.