vite-plugin-csp
Version:
Create CSP meta tags and header configs from all sources in the final Vite html
123 lines (118 loc) • 35.3 kB
TypeScript
import { PluginOption } from 'vite';
import { DirectivesObj, CspDirectives, CspDirectiveHeaders } from 'csp-typed-directives';
declare const builtinProcessorFns: {
CaddyJSON: InternalProcessFn;
CaddyJSON_HeadersOnly: InternalProcessFn;
Nginx: InternalProcessFn;
Nginx_HeadersOnly: InternalProcessFn;
Caddyfile: InternalProcessFn;
Caddyfile_HeadersOnly: InternalProcessFn;
};
declare const DEFAULT_OPTIONS: {
enabled: boolean;
inject: boolean;
injectReporting: boolean;
onDev: "permissive" | "full" | "skip";
policy: PolicyOptions;
hashingMethod: "sha256" | "sha384" | "sha512";
hashEnabled: {
'script-src': boolean;
'style-src': boolean;
'script-src-attr': boolean;
'style-src-attr': boolean;
};
/** @deprecated requires SSR support first, included for webpack migrations */
nonceEnabled: {
'script-src': boolean;
'style-src': boolean;
};
processFn: ProcessOptions | undefined;
referrerHeaderOverride: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | "none" | undefined;
sendReportsTo: ({
group: string;
max_age: number;
endpoints: {
url: `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | `${string}.${string}/${string}` | `${string}.${string}?${string}` | `${string}.${string}#${string}` | `${string}.${string}\\${string}` | `localhost/${string}` | `localhost?${string}` | `localhost#${string}` | `localhost\\${string}` | `${string}.${string}:${number}/${string}` | `${string}.${string}:${number}?${string}` | `${string}.${string}:${number}#${string}` | `${string}.${string}:${number}\\${string}` | `${string}.${string}:*/${string}` | `${string}.${string}:*?${string}` | `${string}.${string}:*#${string}` | `${string}.${string}:*\\${string}` | `localhost:${number}/${string}` | `localhost:${number}?${string}` | `localhost:${number}#${string}` | `localhost:${number}\\${string}` | `localhost:*/${string}` | `localhost:*?${string}` | `localhost:*#${string}` | `localhost:*\\${string}` | `${string}://${string}.${string}/${string}` | `${string}://${string}.${string}?${string}` | `${string}://${string}.${string}#${string}` | `${string}://${string}.${string}\\${string}` | `${string}://${string}.${string}:${number}/${string}` | `${string}://${string}.${string}:${number}?${string}` | `${string}://${string}.${string}:${number}#${string}` | `${string}://${string}.${string}:${number}\\${string}` | `${string}://${string}.${string}:*/${string}` | `${string}://${string}.${string}:*?${string}` | `${string}://${string}.${string}:*#${string}` | `${string}://${string}.${string}:*\\${string}` | `${string}://localhost/${string}` | `${string}://localhost?${string}` | `${string}://localhost#${string}` | `${string}://localhost\\${string}` | `${string}://localhost:${number}/${string}` | `${string}://localhost:${number}?${string}` | `${string}://localhost:${number}#${string}` | `${string}://localhost:${number}\\${string}` | `${string}://localhost:*/${string}` | `${string}://localhost:*?${string}` | `${string}://localhost:*#${string}` | `${string}://localhost:*\\${string}`;
}[];
} | {
group: string;
max_age: number;
endpoints: {
url: `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | `${string}.${string}/${string}` | `${string}.${string}?${string}` | `${string}.${string}#${string}` | `${string}.${string}\\${string}` | `localhost/${string}` | `localhost?${string}` | `localhost#${string}` | `localhost\\${string}` | `${string}.${string}:${number}/${string}` | `${string}.${string}:${number}?${string}` | `${string}.${string}:${number}#${string}` | `${string}.${string}:${number}\\${string}` | `${string}.${string}:*/${string}` | `${string}.${string}:*?${string}` | `${string}.${string}:*#${string}` | `${string}.${string}:*\\${string}` | `localhost:${number}/${string}` | `localhost:${number}?${string}` | `localhost:${number}#${string}` | `localhost:${number}\\${string}` | `localhost:*/${string}` | `localhost:*?${string}` | `localhost:*#${string}` | `localhost:*\\${string}` | `${string}://${string}.${string}/${string}` | `${string}://${string}.${string}?${string}` | `${string}://${string}.${string}#${string}` | `${string}://${string}.${string}\\${string}` | `${string}://${string}.${string}:${number}/${string}` | `${string}://${string}.${string}:${number}?${string}` | `${string}://${string}.${string}:${number}#${string}` | `${string}://${string}.${string}:${number}\\${string}` | `${string}://${string}.${string}:*/${string}` | `${string}://${string}.${string}:*?${string}` | `${string}://${string}.${string}:*#${string}` | `${string}://${string}.${string}:*\\${string}` | `${string}://localhost/${string}` | `${string}://localhost?${string}` | `${string}://localhost#${string}` | `${string}://localhost\\${string}` | `${string}://localhost:${number}/${string}` | `${string}://localhost:${number}?${string}` | `${string}://localhost:${number}#${string}` | `${string}://localhost:${number}\\${string}` | `${string}://localhost:*/${string}` | `${string}://localhost:*?${string}` | `${string}://localhost:*#${string}` | `${string}://localhost:*\\${string}`;
}[];
}[]) | undefined;
reportSubset: ({
'child-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'frame-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'worker-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
} & {
'connect-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'default-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample") | (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample")[] | undefined;
'font-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'frame-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'img-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'manifest-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'media-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'object-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'prefetch-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'script-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample") | (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample")[] | undefined;
'script-src-elem'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'script-src-attr'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'style-src'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'style-src-elem'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
'style-src-attr'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | ("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`)[]) | undefined;
} & {
'block-all-mixed-content'?: boolean | undefined;
referrer?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | "none" | undefined;
'require-sri-for'?: "script" | "style" | "script style" | undefined;
'require-trusted-types-for'?: "script" | undefined;
'trusted-types'?: string | string[] | undefined;
'upgrade-insecure-requests'?: boolean | undefined;
} & {
'report-uri'?: `/${string}` | `?${string}` | `#${string}` | `\\${string}` | undefined;
'report-to'?: string | undefined;
} & {
'form-action'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample") | (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample")[] | undefined;
'frame-ancestors'?: ("none" | "self" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:") | ("none" | "self" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:")[] | undefined;
'navigate-to'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample") | (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample")[] | undefined;
} & {
'base-uri'?: (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample") | (("none" | "self" | "unsafe-eval" | "unsafe-hashes" | "unsafe-inline" | `${string}.${string}` | "localhost" | `${string}.${string}:${number}` | `${string}.${string}:*` | `localhost:${number}` | "localhost:*" | `${string}://${string}.${string}` | `${string}://${string}.${string}:${number}` | `${string}://${string}.${string}:*` | `${string}://localhost` | `${string}://localhost:${number}` | `${string}://localhost:*` | "http:" | "https:" | "data:" | "mediastream:" | "blob:" | "filesystem:" | `nonce-${string}` | `sha256-${string}` | `sha384-${string}` | `sha512-${string}`) | "strict-dynamic" | "report-sample")[] | undefined;
'plugin-types'?: ("none" | `${string}/${string}`) | ("none" | `${string}/${string}`)[] | undefined;
sandbox?: "allow-downloads-without-user-activation" | "allow-forms" | "allow-modals" | "allow-orientation-lock" | "allow-pointer-lock" | "allow-popups" | "allow-popups-to-escape-sandbox" | "allow-presentation" | "allow-same-origin" | "allow-scripts" | "allow-storage-access-by-user-activation" | "allow-top-navigation" | "allow-top-navigation-by-user-activation" | undefined;
}) | undefined;
mapHtmlFiles: Record<string, PolicyOptions> | undefined;
debugPlugin: boolean;
srvConfDir: string;
};
declare type InternalProcessFnNames = keyof typeof builtinProcessorFns;
declare type InternalProcessFnParams = {
processor: InternalProcessFnNames;
outFile?: string;
};
declare type InternalProcessOptions = InternalProcessFnParams & {
ctx: ProcessFnContext;
parsedHeaders: CspDirectiveHeaders;
};
declare type InternalProcessFn = (options: InternalProcessOptions) => void;
declare type ProcessFnContext = {
path: string;
htmlFileName: string;
srvConfDir: string;
builtinProcessorFns: typeof builtinProcessorFns;
};
declare type ProcessFnReturn = {
name: string;
content: string;
} | void;
declare type ProcessFn = (ctx: ProcessFnContext, parsedHeaders: CspDirectiveHeaders) => ProcessFnReturn | Promise<ProcessFnReturn>;
declare type DirectivesParams = ConstructorParameters<typeof CspDirectives>;
declare type PolicyOptions = DirectivesParams | DirectivesObj;
declare type ProcessOption = keyof typeof builtinProcessorFns | InternalProcessFnParams | ProcessFn;
declare type ProcessOptions = ProcessOption | ProcessOption[];
declare type ViteCspPluginOptions = typeof DEFAULT_OPTIONS;
declare type ViteCspPluginOpts = Partial<ViteCspPluginOptions>;
declare function createViteCspPlugin(policy: PolicyOptions, options: ViteCspPluginOpts): Exclude<PluginOption, PluginOption[]>;
declare function createViteCspPlugin(options: Partial<ViteCspPluginOpts>): Exclude<PluginOption, PluginOption[]>;
declare function createViteCspPlugin(): Exclude<PluginOption, PluginOption[]>;
declare const ViteCspPlugin: typeof createViteCspPlugin;
export { ViteCspPlugin, ViteCspPluginOptions, ViteCspPlugin as default };