@httpland/coop-middleware
Version:
HTTP cross-origin opener policy(COOP) middleware
38 lines (37 loc) • 1.22 kB
TypeScript
import { CrossOriginOpenerPolicyValue } from "./constants.js";
import { CrossOriginOpenerPolicy } from "./types.js";
import { type Middleware } from "./deps.js";
/** Middleware options. */
export interface Options extends Partial<Pick<CrossOriginOpenerPolicy, "reportTo">> {
/** Opener policy value.
* @default "same-origin"
*/
readonly policy?: `${CrossOriginOpenerPolicyValue}`;
/** Whether header is report-only or not.
* Depending on the value, the header will be:
* - `true`: `Cross-Origin-Opener-Policy-Report-Only`
* - `false`: `Cross-Origin-Opener-Policy`
* @default false
*/
readonly reportOnly?: boolean;
}
/** Create cross-origin opener policy middleware.
*
* @example
* ```ts
* import {
* coop,
* type Handler,
* } from "https://deno.land/x/coop_middleware@$VERSION/mod.ts";
* import { assert } from "https://deno.land/std/testing/asserts.ts";
*
* declare const request: Request;
* declare const handler: Handler;
*
* const middleware = coop();
* const response = await middleware(request, handler);
*
* assert(response.headers.has("cross-origin-opener-policy"));
* ```
*/
export declare function coop(options?: Options): Middleware;