UNPKG

126 kBTypeScriptView Raw
1import { QueryObject } from 'ufo';
2import { Hooks, AdapterOptions } from 'crossws';
3import { IncomingMessage, ServerResponse } from 'node:http';
4export { IncomingMessage as NodeIncomingMessage, ServerResponse as NodeServerResponse } from 'node:http';
5import { CookieSerializeOptions } from 'cookie-es';
6import { SealOptions } from 'iron-webcrypto';
7import { Readable } from 'node:stream';
8
9type NodeListener = (req: IncomingMessage, res: ServerResponse) => void;
10type NodePromisifiedHandler = (req: IncomingMessage, res: ServerResponse) => Promise<any>;
11type NodeMiddleware = (req: IncomingMessage, res: ServerResponse, next: (err?: Error) => any) => any;
12declare const defineNodeListener: (handler: NodeListener) => NodeListener;
13declare const defineNodeMiddleware: (middleware: NodeMiddleware) => NodeMiddleware;
14declare function fromNodeMiddleware(handler: NodeListener | NodeMiddleware): EventHandler;
15declare function toNodeListener(app: App): NodeListener;
16declare function promisifyNodeListener(handler: NodeListener | NodeMiddleware): NodePromisifiedHandler;
17declare function callNodeListener(handler: NodeMiddleware, req: IncomingMessage, res: ServerResponse): Promise<unknown>;
18
19interface NodeEventContext {
20 req: IncomingMessage & {
21 originalUrl?: string;
22 };
23 res: ServerResponse;
24}
25interface WebEventContext {
26 request?: Request;
27 url?: URL;
28}
29declare class H3Event<_RequestT extends EventHandlerRequest = EventHandlerRequest> implements Pick<FetchEvent, "respondWith"> {
30 "__is_event__": boolean;
31 node: NodeEventContext;
32 web?: WebEventContext;
33 context: H3EventContext;
34 _method?: HTTPMethod;
35 _path?: string;
36 _headers?: Headers;
37 _requestBody?: BodyInit;
38 _handled: boolean;
39 _onBeforeResponseCalled: boolean | undefined;
40 _onAfterResponseCalled: boolean | undefined;
41 constructor(req: IncomingMessage, res: ServerResponse);
42 get method(): HTTPMethod;
43 get path(): string;
44 get headers(): Headers;
45 get handled(): boolean;
46 respondWith(response: Response | PromiseLike<Response>): Promise<void>;
47 toString(): string;
48 toJSON(): string;
49 /** @deprecated Please use `event.node.req` instead. */
50 get req(): IncomingMessage & {
51 originalUrl?: string | undefined;
52 };
53 /** @deprecated Please use `event.node.res` instead. */
54 get res(): ServerResponse<IncomingMessage>;
55}
56/**
57 * Checks if the input is an H3Event object.
58 * @param input - The input to check.
59 * @returns True if the input is an H3Event object, false otherwise.
60 * @see H3Event
61 */
62declare function isEvent(input: any): input is H3Event;
63/**
64 * Creates a new H3Event instance from the given Node.js request and response objects.
65 * @param req - The NodeIncomingMessage object.
66 * @param res - The NodeServerResponse object.
67 * @returns A new H3Event instance.
68 * @see H3Event
69 */
70declare function createEvent(req: IncomingMessage, res: ServerResponse): H3Event;
71
72declare function defineEventHandler<Request extends EventHandlerRequest = EventHandlerRequest, Response = EventHandlerResponse>(handler: EventHandler<Request, Response> | EventHandlerObject<Request, Response>): EventHandler<Request, Response>;
73declare function defineEventHandler<Request = EventHandlerRequest, Response = EventHandlerResponse>(handler: EventHandler<Request extends EventHandlerRequest ? Request : EventHandlerRequest, Request extends EventHandlerRequest ? Response : Request>): EventHandler<Request extends EventHandlerRequest ? Request : EventHandlerRequest, Request extends EventHandlerRequest ? Response : Request>;
74declare const eventHandler: typeof defineEventHandler;
75declare function defineRequestMiddleware<Request extends EventHandlerRequest = EventHandlerRequest>(fn: _RequestMiddleware<Request>): _RequestMiddleware<Request>;
76declare function defineResponseMiddleware<Request extends EventHandlerRequest = EventHandlerRequest>(fn: _ResponseMiddleware<Request>): _ResponseMiddleware<Request>;
77/**
78 * Checks if any kind of input is an event handler.
79 * @param input The input to check.
80 * @returns True if the input is an event handler, false otherwise.
81 */
82declare function isEventHandler(input: any): input is EventHandler;
83declare function toEventHandler(input: any, _?: any, _route?: string): EventHandler;
84interface DynamicEventHandler extends EventHandler {
85 set: (handler: EventHandler) => void;
86}
87declare function dynamicEventHandler(initial?: EventHandler): DynamicEventHandler;
88declare function defineLazyEventHandler<T extends LazyEventHandler>(factory: T): Awaited<ReturnType<T>>;
89declare const lazyEventHandler: typeof defineLazyEventHandler;
90
91/**
92 * @deprecated Please use native web Headers
93 * https://developer.mozilla.org/en-US/docs/Web/API/Headers
94 */
95declare const H3Headers: {
96 new (init?: HeadersInit | undefined): Headers;
97 prototype: Headers;
98};
99/**
100 * @deprecated Please use native web Response
101 * https://developer.mozilla.org/en-US/docs/Web/API/Response
102 */
103declare const H3Response: {
104 new (body?: BodyInit | null | undefined, init?: ResponseInit | undefined): Response;
105 prototype: Response;
106 error(): Response;
107 json(data: any, init?: ResponseInit | undefined): Response;
108 redirect(url: string | URL, status?: number | undefined): Response;
109};
110
111type SessionDataT = Record<string, any>;
112type SessionData<T extends SessionDataT = SessionDataT> = T;
113declare const getSessionPromise: unique symbol;
114interface Session<T extends SessionDataT = SessionDataT> {
115 id: string;
116 createdAt: number;
117 data: SessionData<T>;
118 [getSessionPromise]?: Promise<Session<T>>;
119}
120interface SessionConfig {
121 /** Private key used to encrypt session tokens */
122 password: string;
123 /** Session expiration time in seconds */
124 maxAge?: number;
125 /** default is h3 */
126 name?: string;
127 /** Default is secure, httpOnly, / */
128 cookie?: false | CookieSerializeOptions;
129 /** Default is x-h3-session / x-{name}-session */
130 sessionHeader?: false | string;
131 seal?: SealOptions;
132 crypto?: Crypto;
133 /** Default is Crypto.randomUUID */
134 generateId?: () => string;
135}
136/**
137 * Create a session manager for the current request.
138 *
139 */
140declare function useSession<T extends SessionDataT = SessionDataT>(event: H3Event, config: SessionConfig): Promise<{
141 readonly id: string | undefined;
142 readonly data: T;
143 update: (update: SessionUpdate<T>) => Promise<any>;
144 clear: () => Promise<any>;
145}>;
146/**
147 * Get the session for the current request.
148 */
149declare function getSession<T extends SessionDataT = SessionDataT>(event: H3Event, config: SessionConfig): Promise<Session<T>>;
150type SessionUpdate<T extends SessionDataT = SessionDataT> = Partial<SessionData<T>> | ((oldData: SessionData<T>) => Partial<SessionData<T>> | undefined);
151/**
152 * Update the session data for the current request.
153 */
154declare function updateSession<T extends SessionDataT = SessionDataT>(event: H3Event, config: SessionConfig, update?: SessionUpdate<T>): Promise<Session<T>>;
155/**
156 * Encrypt and sign the session data for the current request.
157 */
158declare function sealSession<T extends SessionDataT = SessionDataT>(event: H3Event, config: SessionConfig): Promise<string>;
159/**
160 * Decrypt and verify the session data for the current request.
161 */
162declare function unsealSession(_event: H3Event, config: SessionConfig, sealed: string): Promise<Partial<Session<SessionDataT>>>;
163/**
164 * Clear the session data for the current request.
165 */
166declare function clearSession(event: H3Event, config: Partial<SessionConfig>): Promise<void>;
167
168type RouterMethod = Lowercase<HTTPMethod>;
169type RouterUse = (path: string, handler: EventHandler, method?: RouterMethod | RouterMethod[]) => Router;
170type AddRouteShortcuts = Record<RouterMethod, RouterUse>;
171interface Router extends AddRouteShortcuts {
172 add: RouterUse;
173 use: RouterUse;
174 handler: EventHandler;
175}
176interface RouteNode {
177 handlers: Partial<Record<RouterMethod | "all", EventHandler>>;
178 path: string;
179}
180interface CreateRouterOptions {
181 /** @deprecated Please use `preemptive` instead. */
182 preemtive?: boolean;
183 preemptive?: boolean;
184}
185/**
186 * Create a new h3 router instance.
187 */
188declare function createRouter(opts?: CreateRouterOptions): Router;
189
190type AnyString = string & {};
191type AnyNumber = number & {};
192
193type ValidateResult<T> = T | true | false | void;
194type ValidateFunction<T> = (data: unknown) => ValidateResult<T> | Promise<ValidateResult<T>>;
195
196type MimeType = 'application/1d-interleaved-parityfec' | 'application/3gpdash-qoe-report+xml' | 'application/3gppHal+json' | 'application/3gppHalForms+json' | 'application/3gpp-ims+xml' | 'application/A2L' | 'application/ace+cbor' | 'application/ace+json' | 'application/activemessage' | 'application/activity+json' | 'application/aif+cbor' | 'application/aif+json' | 'application/alto-cdni+json' | 'application/alto-cdnifilter+json' | 'application/alto-costmap+json' | 'application/alto-costmapfilter+json' | 'application/alto-directory+json' | 'application/alto-endpointprop+json' | 'application/alto-endpointpropparams+json' | 'application/alto-endpointcost+json' | 'application/alto-endpointcostparams+json' | 'application/alto-error+json' | 'application/alto-networkmapfilter+json' | 'application/alto-networkmap+json' | 'application/alto-propmap+json' | 'application/alto-propmapparams+json' | 'application/alto-tips+json' | 'application/alto-tipsparams+json' | 'application/alto-updatestreamcontrol+json' | 'application/alto-updatestreamparams+json' | 'application/AML' | 'application/andrew-inset' | 'application/applefile' | 'application/at+jwt' | 'application/ATF' | 'application/ATFX' | 'application/atom+xml' | 'application/atomcat+xml' | 'application/atomdeleted+xml' | 'application/atomicmail' | 'application/atomsvc+xml' | 'application/atsc-dwd+xml' | 'application/atsc-dynamic-event-message' | 'application/atsc-held+xml' | 'application/atsc-rdt+json' | 'application/atsc-rsat+xml' | 'application/ATXML' | 'application/auth-policy+xml' | 'application/automationml-aml+xml' | 'application/automationml-amlx+zip' | 'application/bacnet-xdd+zip' | 'application/batch-SMTP' | 'application/beep+xml' | 'application/c2pa' | 'application/calendar+json' | 'application/calendar+xml' | 'application/call-completion' | 'application/CALS-1840' | 'application/captive+json' | 'application/cbor' | 'application/cbor-seq' | 'application/cccex' | 'application/ccmp+xml' | 'application/ccxml+xml' | 'application/cda+xml' | 'application/CDFX+XML' | 'application/cdmi-capability' | 'application/cdmi-container' | 'application/cdmi-domain' | 'application/cdmi-object' | 'application/cdmi-queue' | 'application/cdni' | 'application/CEA' | 'application/cea-2018+xml' | 'application/cellml+xml' | 'application/cfw' | 'application/cid-edhoc+cbor-seq' | 'application/city+json' | 'application/clr' | 'application/clue_info+xml' | 'application/clue+xml' | 'application/cms' | 'application/cnrp+xml' | 'application/coap-group+json' | 'application/coap-payload' | 'application/commonground' | 'application/concise-problem-details+cbor' | 'application/conference-info+xml' | 'application/cpl+xml' | 'application/cose' | 'application/cose-key' | 'application/cose-key-set' | 'application/cose-x509' | 'application/csrattrs' | 'application/csta+xml' | 'application/CSTAdata+xml' | 'application/csvm+json' | 'application/cwl' | 'application/cwl+json' | 'application/cwt' | 'application/cybercash' | 'application/dash+xml' | 'application/dash-patch+xml' | 'application/dashdelta' | 'application/davmount+xml' | 'application/dca-rft' | 'application/DCD' | 'application/dec-dx' | 'application/dialog-info+xml' | 'application/dicom' | 'application/dicom+json' | 'application/dicom+xml' | 'application/DII' | 'application/DIT' | 'application/dns' | 'application/dns+json' | 'application/dns-message' | 'application/dots+cbor' | 'application/dpop+jwt' | 'application/dskpp+xml' | 'application/dssc+der' | 'application/dssc+xml' | 'application/dvcs' | 'application/ecmascript' | 'application/edhoc+cbor-seq' | 'application/EDI-consent' | 'application/EDIFACT' | 'application/EDI-X12' | 'application/efi' | 'application/elm+json' | 'application/elm+xml' | 'application/EmergencyCallData.cap+xml' | 'application/EmergencyCallData.Comment+xml' | 'application/EmergencyCallData.Control+xml' | 'application/EmergencyCallData.DeviceInfo+xml' | 'application/EmergencyCallData.eCall.MSD' | 'application/EmergencyCallData.LegacyESN+json' | 'application/EmergencyCallData.ProviderInfo+xml' | 'application/EmergencyCallData.ServiceInfo+xml' | 'application/EmergencyCallData.SubscriberInfo+xml' | 'application/EmergencyCallData.VEDS+xml' | 'application/emma+xml' | 'application/emotionml+xml' | 'application/encaprtp' | 'application/epp+xml' | 'application/epub+zip' | 'application/eshop' | 'application/example' | 'application/exi' | 'application/expect-ct-report+json' | 'application/express' | 'application/fastinfoset' | 'application/fastsoap' | 'application/fdf' | 'application/fdt+xml' | 'application/fhir+json' | 'application/fhir+xml' | 'application/fits' | 'application/flexfec' | 'application/font-sfnt' | 'application/font-tdpfr' | 'application/font-woff' | 'application/framework-attributes+xml' | 'application/geo+json' | 'application/geo+json-seq' | 'application/geopackage+sqlite3' | 'application/geoxacml+json' | 'application/geoxacml+xml' | 'application/gltf-buffer' | 'application/gml+xml' | 'application/gzip' | 'application/H224' | 'application/held+xml' | 'application/hl7v2+xml' | 'application/http' | 'application/hyperstudio' | 'application/ibe-key-request+xml' | 'application/ibe-pkg-reply+xml' | 'application/ibe-pp-data' | 'application/iges' | 'application/im-iscomposing+xml' | 'application/index' | 'application/index.cmd' | 'application/index.obj' | 'application/index.response' | 'application/index.vnd' | 'application/inkml+xml' | 'application/IOTP' | 'application/ipfix' | 'application/ipp' | 'application/ISUP' | 'application/its+xml' | 'application/java-archive' | 'application/javascript' | 'application/jf2feed+json' | 'application/jose' | 'application/jose+json' | 'application/jrd+json' | 'application/jscalendar+json' | 'application/jscontact+json' | 'application/json' | 'application/json-patch+json' | 'application/json-seq' | 'application/jsonpath' | 'application/jwk+json' | 'application/jwk-set+json' | 'application/jwt' | 'application/kpml-request+xml' | 'application/kpml-response+xml' | 'application/ld+json' | 'application/lgr+xml' | 'application/link-format' | 'application/linkset' | 'application/linkset+json' | 'application/load-control+xml' | 'application/logout+jwt' | 'application/lost+xml' | 'application/lostsync+xml' | 'application/lpf+zip' | 'application/LXF' | 'application/mac-binhex40' | 'application/macwriteii' | 'application/mads+xml' | 'application/manifest+json' | 'application/marc' | 'application/marcxml+xml' | 'application/mathematica' | 'application/mathml+xml' | 'application/mathml-content+xml' | 'application/mathml-presentation+xml' | 'application/mbms-associated-procedure-description+xml' | 'application/mbms-deregister+xml' | 'application/mbms-envelope+xml' | 'application/mbms-msk-response+xml' | 'application/mbms-msk+xml' | 'application/mbms-protection-description+xml' | 'application/mbms-reception-report+xml' | 'application/mbms-register-response+xml' | 'application/mbms-register+xml' | 'application/mbms-schedule+xml' | 'application/mbms-user-service-description+xml' | 'application/mbox' | 'application/media_control+xml' | 'application/media-policy-dataset+xml' | 'application/mediaservercontrol+xml' | 'application/merge-patch+json' | 'application/metalink4+xml' | 'application/mets+xml' | 'application/MF4' | 'application/mikey' | 'application/mipc' | 'application/missing-blocks+cbor-seq' | 'application/mmt-aei+xml' | 'application/mmt-usd+xml' | 'application/mods+xml' | 'application/moss-keys' | 'application/moss-signature' | 'application/mosskey-data' | 'application/mosskey-request' | 'application/mp21' | 'application/mp4' | 'application/mpeg4-generic' | 'application/mpeg4-iod' | 'application/mpeg4-iod-xmt' | 'application/mrb-consumer+xml' | 'application/mrb-publish+xml' | 'application/msc-ivr+xml' | 'application/msc-mixer+xml' | 'application/msword' | 'application/mud+json' | 'application/multipart-core' | 'application/mxf' | 'application/n-quads' | 'application/n-triples' | 'application/nasdata' | 'application/news-checkgroups' | 'application/news-groupinfo' | 'application/news-transmission' | 'application/nlsml+xml' | 'application/node' | 'application/nss' | 'application/oauth-authz-req+jwt' | 'application/oblivious-dns-message' | 'application/ocsp-request' | 'application/ocsp-response' | 'application/octet-stream' | 'application/ODA' | 'application/odm+xml' | 'application/ODX' | 'application/oebps-package+xml' | 'application/ogg' | 'application/ohttp-keys' | 'application/opc-nodeset+xml' | 'application/oscore' | 'application/oxps' | 'application/p21' | 'application/p21+zip' | 'application/p2p-overlay+xml' | 'application/parityfec' | 'application/passport' | 'application/patch-ops-error+xml' | 'application/pdf' | 'application/PDX' | 'application/pem-certificate-chain' | 'application/pgp-encrypted' | 'application/pgp-keys' | 'application/pgp-signature' | 'application/pidf-diff+xml' | 'application/pidf+xml' | 'application/pkcs10' | 'application/pkcs7-mime' | 'application/pkcs7-signature' | 'application/pkcs8' | 'application/pkcs8-encrypted' | 'application/pkcs12' | 'application/pkix-attr-cert' | 'application/pkix-cert' | 'application/pkix-crl' | 'application/pkix-pkipath' | 'application/pkixcmp' | 'application/pls+xml' | 'application/poc-settings+xml' | 'application/postscript' | 'application/ppsp-tracker+json' | 'application/private-token-issuer-directory' | 'application/private-token-request' | 'application/private-token-response' | 'application/problem+json' | 'application/problem+xml' | 'application/provenance+xml' | 'application/prs.alvestrand.titrax-sheet' | 'application/prs.cww' | 'application/prs.cyn' | 'application/prs.hpub+zip' | 'application/prs.implied-document+xml' | 'application/prs.implied-executable' | 'application/prs.implied-object+json' | 'application/prs.implied-object+json-seq' | 'application/prs.implied-object+yaml' | 'application/prs.implied-structure' | 'application/prs.nprend' | 'application/prs.plucker' | 'application/prs.rdf-xml-crypt' | 'application/prs.vcfbzip2' | 'application/prs.xsf+xml' | 'application/pskc+xml' | 'application/pvd+json' | 'application/rdf+xml' | 'application/route-apd+xml' | 'application/route-s-tsid+xml' | 'application/route-usd+xml' | 'application/QSIG' | 'application/raptorfec' | 'application/rdap+json' | 'application/reginfo+xml' | 'application/relax-ng-compact-syntax' | 'application/remote-printing' | 'application/reputon+json' | 'application/resource-lists-diff+xml' | 'application/resource-lists+xml' | 'application/rfc+xml' | 'application/riscos' | 'application/rlmi+xml' | 'application/rls-services+xml' | 'application/rpki-checklist' | 'application/rpki-ghostbusters' | 'application/rpki-manifest' | 'application/rpki-publication' | 'application/rpki-roa' | 'application/rpki-updown' | 'application/rtf' | 'application/rtploopback' | 'application/rtx' | 'application/samlassertion+xml' | 'application/samlmetadata+xml' | 'application/sarif-external-properties+json' | 'application/sarif+json' | 'application/sbe' | 'application/sbml+xml' | 'application/scaip+xml' | 'application/scim+json' | 'application/scvp-cv-request' | 'application/scvp-cv-response' | 'application/scvp-vp-request' | 'application/scvp-vp-response' | 'application/sdp' | 'application/secevent+jwt' | 'application/senml-etch+cbor' | 'application/senml-etch+json' | 'application/senml-exi' | 'application/senml+cbor' | 'application/senml+json' | 'application/senml+xml' | 'application/sensml-exi' | 'application/sensml+cbor' | 'application/sensml+json' | 'application/sensml+xml' | 'application/sep-exi' | 'application/sep+xml' | 'application/session-info' | 'application/set-payment' | 'application/set-payment-initiation' | 'application/set-registration' | 'application/set-registration-initiation' | 'application/SGML' | 'application/sgml-open-catalog' | 'application/shf+xml' | 'application/sieve' | 'application/simple-filter+xml' | 'application/simple-message-summary' | 'application/simpleSymbolContainer' | 'application/sipc' | 'application/slate' | 'application/smil' | 'application/smil+xml' | 'application/smpte336m' | 'application/soap+fastinfoset' | 'application/soap+xml' | 'application/sparql-query' | 'application/spdx+json' | 'application/sparql-results+xml' | 'application/spirits-event+xml' | 'application/sql' | 'application/srgs' | 'application/srgs+xml' | 'application/sru+xml' | 'application/ssml+xml' | 'application/stix+json' | 'application/swid+cbor' | 'application/swid+xml' | 'application/tamp-apex-update' | 'application/tamp-apex-update-confirm' | 'application/tamp-community-update' | 'application/tamp-community-update-confirm' | 'application/tamp-error' | 'application/tamp-sequence-adjust' | 'application/tamp-sequence-adjust-confirm' | 'application/tamp-status-query' | 'application/tamp-status-response' | 'application/tamp-update' | 'application/tamp-update-confirm' | 'application/taxii+json' | 'application/td+json' | 'application/tei+xml' | 'application/TETRA_ISI' | 'application/thraud+xml' | 'application/timestamp-query' | 'application/timestamp-reply' | 'application/timestamped-data' | 'application/tlsrpt+gzip' | 'application/tlsrpt+json' | 'application/tm+json' | 'application/tnauthlist' | 'application/token-introspection+jwt' | 'application/trickle-ice-sdpfrag' | 'application/trig' | 'application/ttml+xml' | 'application/tve-trigger' | 'application/tzif' | 'application/tzif-leap' | 'application/ulpfec' | 'application/urc-grpsheet+xml' | 'application/urc-ressheet+xml' | 'application/urc-targetdesc+xml' | 'application/urc-uisocketdesc+xml' | 'application/vcard+json' | 'application/vcard+xml' | 'application/vemmi' | 'application/vnd.1000minds.decision-model+xml' | 'application/vnd.1ob' | 'application/vnd.3gpp.5gnas' | 'application/vnd.3gpp.access-transfer-events+xml' | 'application/vnd.3gpp.bsf+xml' | 'application/vnd.3gpp.crs+xml' | 'application/vnd.3gpp.current-location-discovery+xml' | 'application/vnd.3gpp.GMOP+xml' | 'application/vnd.3gpp.gtpc' | 'application/vnd.3gpp.interworking-data' | 'application/vnd.3gpp.lpp' | 'application/vnd.3gpp.mc-signalling-ear' | 'application/vnd.3gpp.mcdata-affiliation-command+xml' | 'application/vnd.3gpp.mcdata-info+xml' | 'application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml' | 'application/vnd.3gpp.mcdata-payload' | 'application/vnd.3gpp.mcdata-regroup+xml' | 'application/vnd.3gpp.mcdata-service-config+xml' | 'application/vnd.3gpp.mcdata-signalling' | 'application/vnd.3gpp.mcdata-ue-config+xml' | 'application/vnd.3gpp.mcdata-user-profile+xml' | 'application/vnd.3gpp.mcptt-affiliation-command+xml' | 'application/vnd.3gpp.mcptt-floor-request+xml' | 'application/vnd.3gpp.mcptt-info+xml' | 'application/vnd.3gpp.mcptt-location-info+xml' | 'application/vnd.3gpp.mcptt-mbms-usage-info+xml' | 'application/vnd.3gpp.mcptt-regroup+xml' | 'application/vnd.3gpp.mcptt-service-config+xml' | 'application/vnd.3gpp.mcptt-signed+xml' | 'application/vnd.3gpp.mcptt-ue-config+xml' | 'application/vnd.3gpp.mcptt-ue-init-config+xml' | 'application/vnd.3gpp.mcptt-user-profile+xml' | 'application/vnd.3gpp.mcvideo-affiliation-command+xml' | 'application/vnd.3gpp.mcvideo-affiliation-info+xml' | 'application/vnd.3gpp.mcvideo-info+xml' | 'application/vnd.3gpp.mcvideo-location-info+xml' | 'application/vnd.3gpp.mcvideo-mbms-usage-info+xml' | 'application/vnd.3gpp.mcvideo-regroup+xml' | 'application/vnd.3gpp.mcvideo-service-config+xml' | 'application/vnd.3gpp.mcvideo-transmission-request+xml' | 'application/vnd.3gpp.mcvideo-ue-config+xml' | 'application/vnd.3gpp.mcvideo-user-profile+xml' | 'application/vnd.3gpp.mid-call+xml' | 'application/vnd.3gpp.ngap' | 'application/vnd.3gpp.pfcp' | 'application/vnd.3gpp.pic-bw-large' | 'application/vnd.3gpp.pic-bw-small' | 'application/vnd.3gpp.pic-bw-var' | 'application/vnd.3gpp-prose-pc3a+xml' | 'application/vnd.3gpp-prose-pc3ach+xml' | 'application/vnd.3gpp-prose-pc3ch+xml' | 'application/vnd.3gpp-prose-pc8+xml' | 'application/vnd.3gpp-prose+xml' | 'application/vnd.3gpp.s1ap' | 'application/vnd.3gpp.seal-group-doc+xml' | 'application/vnd.3gpp.seal-info+xml' | 'application/vnd.3gpp.seal-location-info+xml' | 'application/vnd.3gpp.seal-mbms-usage-info+xml' | 'application/vnd.3gpp.seal-network-QoS-management-info+xml' | 'application/vnd.3gpp.seal-ue-config-info+xml' | 'application/vnd.3gpp.seal-unicast-info+xml' | 'application/vnd.3gpp.seal-user-profile-info+xml' | 'application/vnd.3gpp.sms' | 'application/vnd.3gpp.sms+xml' | 'application/vnd.3gpp.srvcc-ext+xml' | 'application/vnd.3gpp.SRVCC-info+xml' | 'application/vnd.3gpp.state-and-event-info+xml' | 'application/vnd.3gpp.ussd+xml' | 'application/vnd.3gpp.vae-info+xml' | 'application/vnd.3gpp-v2x-local-service-information' | 'application/vnd.3gpp2.bcmcsinfo+xml' | 'application/vnd.3gpp2.sms' | 'application/vnd.3gpp2.tcap' | 'application/vnd.3gpp.v2x' | 'application/vnd.3lightssoftware.imagescal' | 'application/vnd.3M.Post-it-Notes' | 'application/vnd.accpac.simply.aso' | 'application/vnd.accpac.simply.imp' | 'application/vnd.acm.addressxfer+json' | 'application/vnd.acm.chatbot+json' | 'application/vnd.acucobol' | 'application/vnd.acucorp' | 'application/vnd.adobe.flash.movie' | 'application/vnd.adobe.formscentral.fcdt' | 'application/vnd.adobe.fxp' | 'application/vnd.adobe.partial-upload' | 'application/vnd.adobe.xdp+xml' | 'application/vnd.aether.imp' | 'application/vnd.afpc.afplinedata' | 'application/vnd.afpc.afplinedata-pagedef' | 'application/vnd.afpc.cmoca-cmresource' | 'application/vnd.afpc.foca-charset' | 'application/vnd.afpc.foca-codedfont' | 'application/vnd.afpc.foca-codepage' | 'application/vnd.afpc.modca' | 'application/vnd.afpc.modca-cmtable' | 'application/vnd.afpc.modca-formdef' | 'application/vnd.afpc.modca-mediummap' | 'application/vnd.afpc.modca-objectcontainer' | 'application/vnd.afpc.modca-overlay' | 'application/vnd.afpc.modca-pagesegment' | 'application/vnd.age' | 'application/vnd.ah-barcode' | 'application/vnd.ahead.space' | 'application/vnd.airzip.filesecure.azf' | 'application/vnd.airzip.filesecure.azs' | 'application/vnd.amadeus+json' | 'application/vnd.amazon.mobi8-ebook' | 'application/vnd.americandynamics.acc' | 'application/vnd.amiga.ami' | 'application/vnd.amundsen.maze+xml' | 'application/vnd.android.ota' | 'application/vnd.anki' | 'application/vnd.anser-web-certificate-issue-initiation' | 'application/vnd.antix.game-component' | 'application/vnd.apache.arrow.file' | 'application/vnd.apache.arrow.stream' | 'application/vnd.apache.thrift.binary' | 'application/vnd.apache.thrift.compact' | 'application/vnd.apache.thrift.json' | 'application/vnd.apexlang' | 'application/vnd.api+json' | 'application/vnd.aplextor.warrp+json' | 'application/vnd.apothekende.reservation+json' | 'application/vnd.apple.installer+xml' | 'application/vnd.apple.keynote' | 'application/vnd.apple.mpegurl' | 'application/vnd.apple.numbers' | 'application/vnd.apple.pages' | 'application/vnd.arastra.swi' | 'application/vnd.aristanetworks.swi' | 'application/vnd.artisan+json' | 'application/vnd.artsquare' | 'application/vnd.astraea-software.iota' | 'application/vnd.audiograph' | 'application/vnd.autopackage' | 'application/vnd.avalon+json' | 'application/vnd.avistar+xml' | 'application/vnd.balsamiq.bmml+xml' | 'application/vnd.banana-accounting' | 'application/vnd.bbf.usp.error' | 'application/vnd.bbf.usp.msg' | 'application/vnd.bbf.usp.msg+json' | 'application/vnd.balsamiq.bmpr' | 'application/vnd.bekitzur-stech+json' | 'application/vnd.belightsoft.lhzd+zip' | 'application/vnd.belightsoft.lhzl+zip' | 'application/vnd.bint.med-content' | 'application/vnd.biopax.rdf+xml' | 'application/vnd.blink-idb-value-wrapper' | 'application/vnd.blueice.multipass' | 'application/vnd.bluetooth.ep.oob' | 'application/vnd.bluetooth.le.oob' | 'application/vnd.bmi' | 'application/vnd.bpf' | 'application/vnd.bpf3' | 'application/vnd.businessobjects' | 'application/vnd.byu.uapi+json' | 'application/vnd.bzip3' | 'application/vnd.cab-jscript' | 'application/vnd.canon-cpdl' | 'application/vnd.canon-lips' | 'application/vnd.capasystems-pg+json' | 'application/vnd.cendio.thinlinc.clientconf' | 'application/vnd.century-systems.tcp_stream' | 'application/vnd.chemdraw+xml' | 'application/vnd.chess-pgn' | 'application/vnd.chipnuts.karaoke-mmd' | 'application/vnd.ciedi' | 'application/vnd.cinderella' | 'application/vnd.cirpack.isdn-ext' | 'application/vnd.citationstyles.style+xml' | 'application/vnd.claymore' | 'application/vnd.cloanto.rp9' | 'application/vnd.clonk.c4group' | 'application/vnd.cluetrust.cartomobile-config' | 'application/vnd.cluetrust.cartomobile-config-pkg' | 'application/vnd.cncf.helm.chart.content.v1.tar+gzip' | 'application/vnd.cncf.helm.chart.provenance.v1.prov' | 'application/vnd.cncf.helm.config.v1+json' | 'application/vnd.coffeescript' | 'application/vnd.collabio.xodocuments.document' | 'application/vnd.collabio.xodocuments.document-template' | 'application/vnd.collabio.xodocuments.presentation' | 'application/vnd.collabio.xodocuments.presentation-template' | 'application/vnd.collabio.xodocuments.spreadsheet' | 'application/vnd.collabio.xodocuments.spreadsheet-template' | 'application/vnd.collection.doc+json' | 'application/vnd.collection+json' | 'application/vnd.collection.next+json' | 'application/vnd.comicbook-rar' | 'application/vnd.comicbook+zip' | 'application/vnd.commerce-battelle' | 'application/vnd.commonspace' | 'application/vnd.coreos.ignition+json' | 'application/vnd.cosmocaller' | 'application/vnd.contact.cmsg' | 'application/vnd.crick.clicker' | 'application/vnd.crick.clicker.keyboard' | 'application/vnd.crick.clicker.palette' | 'application/vnd.crick.clicker.template' | 'application/vnd.crick.clicker.wordbank' | 'application/vnd.criticaltools.wbs+xml' | 'application/vnd.cryptii.pipe+json' | 'application/vnd.crypto-shade-file' | 'application/vnd.cryptomator.encrypted' | 'application/vnd.cryptomator.vault' | 'application/vnd.ctc-posml' | 'application/vnd.ctct.ws+xml' | 'application/vnd.cups-pdf' | 'application/vnd.cups-postscript' | 'application/vnd.cups-ppd' | 'application/vnd.cups-raster' | 'application/vnd.cups-raw' | 'application/vnd.curl' | 'application/vnd.cyan.dean.root+xml' | 'application/vnd.cybank' | 'application/vnd.cyclonedx+json' | 'application/vnd.cyclonedx+xml' | 'application/vnd.d2l.coursepackage1p0+zip' | 'application/vnd.d3m-dataset' | 'application/vnd.d3m-problem' | 'application/vnd.dart' | 'application/vnd.data-vision.rdz' | 'application/vnd.datalog' | 'application/vnd.datapackage+json' | 'application/vnd.dataresource+json' | 'application/vnd.dbf' | 'application/vnd.debian.binary-package' | 'application/vnd.dece.data' | 'application/vnd.dece.ttml+xml' | 'application/vnd.dece.unspecified' | 'application/vnd.dece.zip' | 'application/vnd.denovo.fcselayout-link' | 'application/vnd.desmume.movie' | 'application/vnd.dir-bi.plate-dl-nosuffix' | 'application/vnd.dm.delegation+xml' | 'application/vnd.dna' | 'application/vnd.document+json' | 'application/vnd.dolby.mobile.1' | 'application/vnd.dolby.mobile.2' | 'application/vnd.doremir.scorecloud-binary-document' | 'application/vnd.dpgraph' | 'application/vnd.dreamfactory' | 'application/vnd.drive+json' | 'application/vnd.dtg.local' | 'application/vnd.dtg.local.flash' | 'application/vnd.dtg.local.html' | 'application/vnd.dvb.ait' | 'application/vnd.dvb.dvbisl+xml' | 'application/vnd.dvb.dvbj' | 'application/vnd.dvb.esgcontainer' | 'application/vnd.dvb.ipdcdftnotifaccess' | 'application/vnd.dvb.ipdcesgaccess' | 'application/vnd.dvb.ipdcesgaccess2' | 'application/vnd.dvb.ipdcesgpdd' | 'application/vnd.dvb.ipdcroaming' | 'application/vnd.dvb.iptv.alfec-base' | 'application/vnd.dvb.iptv.alfec-enhancement' | 'application/vnd.dvb.notif-aggregate-root+xml' | 'application/vnd.dvb.notif-container+xml' | 'application/vnd.dvb.notif-generic+xml' | 'application/vnd.dvb.notif-ia-msglist+xml' | 'application/vnd.dvb.notif-ia-registration-request+xml' | 'application/vnd.dvb.notif-ia-registration-response+xml' | 'application/vnd.dvb.notif-init+xml' | 'application/vnd.dvb.pfr' | 'application/vnd.dvb.service' | 'application/vnd.dxr' | 'application/vnd.dynageo' | 'application/vnd.dzr' | 'application/vnd.easykaraoke.cdgdownload' | 'application/vnd.ecip.rlp' | 'application/vnd.ecdis-update' | 'application/vnd.eclipse.ditto+json' | 'application/vnd.ecowin.chart' | 'application/vnd.ecowin.filerequest' | 'application/vnd.ecowin.fileupdate' | 'application/vnd.ecowin.series' | 'application/vnd.ecowin.seriesrequest' | 'application/vnd.ecowin.seriesupdate' | 'application/vnd.efi.img' | 'application/vnd.efi.iso' | 'application/vnd.eln+zip' | 'application/vnd.emclient.accessrequest+xml' | 'application/vnd.enliven' | 'application/vnd.enphase.envoy' | 'application/vnd.eprints.data+xml' | 'application/vnd.epson.esf' | 'application/vnd.epson.msf' | 'application/vnd.epson.quickanime' | 'application/vnd.epson.salt' | 'application/vnd.epson.ssf' | 'application/vnd.ericsson.quickcall' | 'application/vnd.erofs' | 'application/vnd.espass-espass+zip' | 'application/vnd.eszigno3+xml' | 'application/vnd.etsi.aoc+xml' | 'application/vnd.etsi.asic-s+zip' | 'application/vnd.etsi.asic-e+zip' | 'application/vnd.etsi.cug+xml' | 'application/vnd.etsi.iptvcommand+xml' | 'application/vnd.etsi.iptvdiscovery+xml' | 'application/vnd.etsi.iptvprofile+xml' | 'application/vnd.etsi.iptvsad-bc+xml' | 'application/vnd.etsi.iptvsad-cod+xml' | 'application/vnd.etsi.iptvsad-npvr+xml' | 'application/vnd.etsi.iptvservice+xml' | 'application/vnd.etsi.iptvsync+xml' | 'application/vnd.etsi.iptvueprofile+xml' | 'application/vnd.etsi.mcid+xml' | 'application/vnd.etsi.mheg5' | 'application/vnd.etsi.overload-control-policy-dataset+xml' | 'application/vnd.etsi.pstn+xml' | 'application/vnd.etsi.sci+xml' | 'application/vnd.etsi.simservs+xml' | 'application/vnd.etsi.timestamp-token' | 'application/vnd.etsi.tsl+xml' | 'application/vnd.etsi.tsl.der' | 'application/vnd.eu.kasparian.car+json' | 'application/vnd.eudora.data' | 'application/vnd.evolv.ecig.profile' | 'application/vnd.evolv.ecig.settings' | 'application/vnd.evolv.ecig.theme' | 'application/vnd.exstream-empower+zip' | 'application/vnd.exstream-package' | 'application/vnd.ezpix-album' | 'application/vnd.ezpix-package' | 'application/vnd.f-secure.mobile' | 'application/vnd.fastcopy-disk-image' | 'application/vnd.familysearch.gedcom+zip' | 'application/vnd.fdsn.mseed' | 'application/vnd.fdsn.seed' | 'application/vnd.ffsns' | 'application/vnd.ficlab.flb+zip' | 'application/vnd.filmit.zfc' | 'application/vnd.fints' | 'application/vnd.firemonkeys.cloudcell' | 'application/vnd.FloGraphIt' | 'application/vnd.fluxtime.clip' | 'application/vnd.font-fontforge-sfd' | 'application/vnd.framemaker' | 'application/vnd.freelog.comic' | 'application/vnd.frogans.fnc' | 'application/vnd.frogans.ltf' | 'application/vnd.fsc.weblaunch' | 'application/vnd.fujifilm.fb.docuworks' | 'application/vnd.fujifilm.fb.docuworks.binder' | 'application/vnd.fujifilm.fb.docuworks.container' | 'application/vnd.fujifilm.fb.jfi+xml' | 'application/vnd.fujitsu.oasys' | 'application/vnd.fujitsu.oasys2' | 'application/vnd.fujitsu.oasys3' | 'application/vnd.fujitsu.oasysgp' | 'application/vnd.fujitsu.oasysprs' | 'application/vnd.fujixerox.ART4' | 'application/vnd.fujixerox.ART-EX' | 'application/vnd.fujixerox.ddd' | 'application/vnd.fujixerox.docuworks' | 'application/vnd.fujixerox.docuworks.binder' | 'application/vnd.fujixerox.docuworks.container' | 'application/vnd.fujixerox.HBPL' | 'application/vnd.fut-misnet' | 'application/vnd.futoin+cbor' | 'application/vnd.futoin+json' | 'application/vnd.fuzzysheet' | 'application/vnd.genomatix.tuxedo' | 'application/vnd.genozip' | 'application/vnd.gentics.grd+json' | 'application/vnd.gentoo.catmetadata+xml' | 'application/vnd.gentoo.ebuild' | 'application/vnd.gentoo.eclass' | 'application/vnd.gentoo.gpkg' | 'application/vnd.gentoo.manifest' | 'application/vnd.gentoo.xpak' | 'application/vnd.gentoo.pkgmetadata+xml' | 'application/vnd.geo+json' | 'application/vnd.geocube+xml' | 'application/vnd.geogebra.file' | 'application/vnd.geogebra.slides' | 'application/vnd.geogebra.tool' | 'application/vnd.geometry-explorer' | 'application/vnd.geonext' | 'application/vnd.geoplan' | 'application/vnd.geospace' | 'application/vnd.gerber' | 'application/vnd.globalplatform.card-content-mgt' | 'application/vnd.globalplatform.card-content-mgt-response' | 'application/vnd.gmx' | 'application/vnd.gnu.taler.exchange+json' | 'application/vnd.gnu.taler.merchant+json' | 'application/vnd.google-earth.kml+xml' | 'application/vnd.google-earth.kmz' | 'application/vnd.gov.sk.e-form+xml' | 'application/vnd.gov.sk.e-form+zip' | 'application/vnd.gov.sk.xmldatacontainer+xml' | 'application/vnd.gpxsee.map+xml' | 'application/vnd.grafeq' | 'application/vnd.gridmp' | 'application/vnd.groove-account' | 'application/vnd.groove-help' | 'application/vnd.groove-identity-message' | 'application/vnd.groove-injector' | 'application/vnd.groove-tool-message' | 'application/vnd.groove-tool-template' | 'application/vnd.groove-vcard' | 'application/vnd.hal+json' | 'application/vnd.hal+xml' | 'application/vnd.HandHeld-Entertainment+xml' | 'application/vnd.hbci' | 'application/vnd.hc+json' | 'application/vnd.hcl-bireports' | 'application/vnd.hdt' | 'application/vnd.heroku+json' | 'application/vnd.hhe.lesson-player' | 'application/vnd.hp-HPGL' | 'application/vnd.hp-hpid' | 'application/vnd.hp-hps' | 'application/vnd.hp-jlyt' | 'application/vnd.hp-PCL' | 'application/vnd.hp-PCLXL' | 'application/vnd.hsl' | 'application/vnd.httphone' | 'application/vnd.hydrostatix.sof-data' | 'application/vnd.hyper-item+json' | 'application/vnd.hyper+json' | 'application/vnd.hyperdrive+json' | 'application/vnd.hzn-3d-crossword' | 'application/vnd.ibm.afplinedata' | 'application/vnd.ibm.electronic-media' | 'application/vnd.ibm.MiniPay' | 'application/vnd.ibm.modcap' | 'application/vnd.ibm.rights-management' | 'application/vnd.ibm.secure-container' | 'application/vnd.iccprofile' | 'application/vnd.ieee.1905' | 'application/vnd.igloader' | 'application/vnd.imagemeter.folder+zip' | 'application/vnd.imagemeter.image+zip' | 'application/vnd.immervision-ivp' | 'application/vnd.immervision-ivu' | 'application/vnd.ims.imsccv1p1' | 'application/vnd.ims.imsccv1p2' | 'application/vnd.ims.imsccv1p3' | 'application/vnd.ims.lis.v2.result+json' | 'application/vnd.ims.lti.v2.toolconsumerprofile+json' | 'application/vnd.ims.lti.v2.toolproxy.id+json' | 'application/vnd.ims.lti.v2.toolproxy+json' | 'application/vnd.ims.lti.v2.toolsettings+json' | 'application/vnd.ims.lti.v2.toolsettings.simple+json' | 'application/vnd.informedcontrol.rms+xml' | 'application/vnd.infotech.project' | 'application/vnd.infotech.project+xml' | 'application/vnd.informix-visionary' | 'application/vnd.innopath.wamp.notification' | 'application/vnd.insors.igm' | 'application/vnd.intercon.formnet' | 'application/vnd.intergeo' | 'application/vnd.intertrust.digibox' | 'application/vnd.intertrust.nncp' | 'application/vnd.intu.qbo' | 'application/vnd.intu.qfx' | 'application/vnd.ipfs.ipns-record' | 'application/vnd.ipld.car' | 'application/vnd.ipld.dag-cbor' | 'application/vnd.ipld.dag-json' | 'application/vnd.ipld.raw' | 'application/vnd.iptc.g2.catalogitem+xml' | 'application/vnd.iptc.g2.conceptitem+xml' | 'application/vnd.iptc.g2.knowledgeitem+xml' | 'application/vnd.iptc.g2.newsitem+xml' | 'application/vnd.iptc.g2.newsmessage+xml' | 'application/vnd.iptc.g2.packageitem+xml' | 'application/vnd.iptc.g2.planningitem+xml' | 'application/vnd.ipunplugged.rcprofile' | 'application/vnd.irepository.package+xml' | 'application/vnd.is-xpr' | 'application/vnd.isac.fcs' | 'application/vnd.jam' | 'application/vnd.iso11783-10+zip' | 'application/vnd.japannet-directory-service' | 'application/vnd.japannet-jpnstore-wakeup' | 'application/vnd.japannet-payment-wakeup' | 'application/vnd.japannet-registration' | 'application/vnd.japannet-registration-wakeup' | 'application/vnd.japannet-setstore-wakeup' | 'application/vnd.japannet-verification' | 'application/vnd.japannet-verification-wakeup' | 'application/vnd.jcp.javame.midlet-rms' | 'application/vnd.jisp' | 'application/vnd.joost.joda-archive' | 'application/vnd.jsk.isdn-ngn' | 'application/vnd.kahootz' | 'application/vnd.kde.karbon' | 'application/vnd.kde.kchart' | 'application/vnd.kde.kformula' | 'application/vnd.kde.kivio' | 'application/vnd.kde.kontour' | 'application/vnd.kde.kpresenter' | 'application/vnd.kde.kspread' | 'application/vnd.kde.kword' | 'application/vnd.kenameaapp' | 'application/vnd.kidspiration' | 'application/vnd.Kinar' | 'application/vnd.koan' | 'application/vnd.kodak-descriptor' | 'application/vnd.las' | 'application/vnd.las.las+json' | 'application/vnd.las.las+xml' | 'application/vnd.laszip' | 'application/vnd.ldev.productlicensing' | 'application/vnd.leap+json' | 'application/vnd.liberty-request+xml' | 'application/vnd.llamagraphics.life-balance.desktop' | 'application/vnd.llamagraphics.life-balance.exchange+xml' | 'application/vnd.logipipe.circuit+zip' | 'application/vnd.loom' | 'application/vnd.lotus-1-2-3' | 'application/vnd.lotus-approach' | 'application/vnd.lotus-freelance' | 'application/vnd.lotus-notes' | 'application/vnd.lotus-organizer' | 'application/vnd.lotus-screencam' | 'application/vnd.lotus-wordpro' | 'application/vnd.macports.portpkg' | 'application/vnd.mapbox-vector-tile' | 'application/vnd.marlin.drm.actiontoken+xml' | 'application/vnd.marlin.drm.conftoken+xml' | 'application/vnd.marlin.drm.license+xml' | 'application/vnd.marlin.drm.mdcf' | 'application/vnd.mason+json' | 'application/vnd.maxar.archive.3tz+zip' | 'application/vnd.maxmind.maxmind-db' | 'application/vnd.mcd' | 'application/vnd.mdl' | 'application/vnd.mdl-mbsdf' | 'application/vnd.medcalcdata' | 'application/vnd.mediastation.cdkey' | 'application/vnd.medicalholodeck.recordxr' | 'application/vnd.meridian-slingshot' | 'application/vnd.mermaid' | 'application/vnd.MFER' | 'application/vnd.mfmp' | 'application/vnd.micro+json' | 'application/vnd.micrografx.flo' | 'application/vnd.micrografx.igx' | 'application/vnd.microsoft.portable-executable' | 'application/vnd.microsoft.windows.thumbnail-cache' | 'application/vnd.miele+json' | 'application/vnd.mif' | 'application/vnd.minisoft-hp3000-save' | 'application/vnd.mitsubishi.misty-guard.trustweb' | 'application/vnd.Mobius.DAF' | 'application/vnd.Mobius.DIS' | 'application/vnd.Mobius.MBK' | 'application/vnd.Mobius.MQY' | 'application/vnd.Mobius.MSL' | 'application/vnd.Mobius.PLC' | 'application/vnd.Mobius.TXF' | 'application/vnd.modl' | 'application/vnd.mophun.application' | 'application/vnd.mophun.certificate' | 'application/vnd.motorola.flexsuite' | 'application/vnd.motorola.flexsuite.adsi' | 'application/vnd.motorola.flexsuite.fis' | 'application/vnd.motorola.flexsuite.gotap' | 'application/vnd.motorola.flexsuite.kmr' | 'application/vnd.motorola.flexsuite.ttc' | 'application/vnd.motorola.flexsuite.wem' | 'application/vnd.motorola.iprm' | 'application/vnd.mozilla.xul+xml' | 'application/vnd.ms-artgalry' | 'application/vnd.ms-asf' | 'application/vnd.ms-cab-compressed' | 'application/vnd.ms-3mfdocument' | 'application/vnd.ms-excel' | 'application/vnd.ms-excel.addin.macroEnabled.12' | 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' | 'application/vnd.ms-excel.sheet.macroEnabled.12' | 'application/vnd.ms-excel.template.macroEnabled.12' | 'application/vnd.ms-fontobject' | 'application/vnd.ms-htmlhelp' | 'application/vnd.ms-ims' | 'application/vnd.ms-lrm' | 'application/vnd.ms-office.activeX+xml' | 'application/vnd.ms-officetheme' | 'application/vnd.ms-playready.initiator+xml' | 'application/vnd.ms-powerpoint' | 'application/vnd.ms-powerpoint.addin.macroEnabled.12' | 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' | 'application/vnd.ms-powerpoint.slide.macroEnabled.12' | 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' | 'application/vnd.ms-powerpoint.template.macroEnabled.12' | 'application/vnd.ms-PrintDeviceCapabilities+xml' | 'application/vnd.ms-PrintSchemaTicket+xml' | 'application/vnd.ms-project' | 'application/vnd.ms-tnef' | 'application/vnd.ms-windows.devicepairing' | 'application/vnd.ms-windows.nwprinting.oob' | 'application/vnd.ms-windows.printerpairing' | 'application/vnd.ms-windows.wsd.oob' | 'application/vnd.ms-wmdrm.lic-chlg-req' | 'application/vnd.ms-wmdrm.lic-resp' | 'application/vnd.ms-wmdrm.meter-chlg-req' | 'application/vnd.ms-wmdrm.meter-resp' | 'application/vnd.ms-word.document.macroEnabled.12' | 'application/vnd.ms-word.template.macroEnabled.12' | 'application/vnd.ms-works' | 'application/vnd.ms-wpl' | 'application/vnd.ms-xpsdocument' | 'application/vnd.msa-disk-image' | 'application/vnd.mseq' | 'application/vnd.msign' | 'application/vnd.multiad.creator' | 'application/vnd.multiad.creator.cif' | 'application/vnd.musician' | 'application/vnd.music-niff' | 'application/vnd.muvee.style' | 'application/vnd.mynfc' | 'application/vnd.nacamar.ybrid+json' | 'application/vnd.nato.bindingdataobject+cbor' | 'application/vnd.nato.bindingdataobject+json' | 'application/vnd.nato.bindingdataobject+xml' | 'application/vnd.nato.openxmlformats-package.iepd+zip' | 'application/vnd.ncd.control' | 'application/vnd.ncd.reference' | 'application/vnd.nearst.inv+json' | 'application/vnd.nebumind.line' | 'application/vnd.nervana' | 'application/vnd.netfpx' | 'application/vnd.neurolanguage.nlu' | 'application/vnd.nimn' | 'application/vnd.nintendo.snes.rom' | 'application/vnd.nintendo.nitro.rom' | 'application/vnd.nitf' | 'application/vnd.noblenet-directory' | 'application/vnd.noblenet-sealer' | 'application/vnd.noblenet-web' | 'application/vnd.nokia.catalogs' | 'application/vnd.nokia.conml+wbxml' | 'application/vnd.nokia.conml+xml' | 'application/vnd.nokia.iptv.config+xml' | 'application/vnd.nokia.iSDS-radio-presets' | 'application/vnd.nokia.landmark+wbxml' | 'application/vnd.nokia.landmark+xml' | 'application/vnd.nokia.landmarkcollection+xml' | 'application/vnd.nokia.ncd' | 'application/vnd.nokia.n-gage.ac+xml' | 'application/vnd.nokia.n-gage.data' | 'application/vnd.nokia.n-gage.symbian.install' | 'application/vnd.nokia.pcd+wbxml' | 'application/vnd.nokia.pcd+xml' | 'application/vnd.nokia.radio-preset' | 'application/vnd.nokia.radio-presets' | 'application/vnd.novadigm.EDM' | 'application/vnd.novadigm.EDX' | 'application/vnd.novadigm.EXT' | 'application/vnd.ntt-local.content-share' | 'application/vnd.ntt-local.file-transfer' | 'application/vnd.ntt-local.ogw_remote-access' | 'application/vnd.ntt-local.sip-ta_remote' | 'application/vnd.ntt-local.sip-ta_tcp_stream' | 'application/vnd.oai.workflows' | 'application/vnd.oai.workflows+json' | 'application/vnd.oai.workflows+yaml' | 'application/vnd.oasis.opendocument.base' | 'application/vnd.oasis.opendocument.chart' | 'application/vnd.oasis.opendocument.chart-template' | 'application/vnd.oasis.opendocument.database' | 'application/vnd.oasis.opendocument.formula' | 'application/vnd.oasis.opendocument.formula-template' | 'application/vnd.oasis.opendocument.graphics' | 'application/vnd.oasis.opendocument.graphics-template' | 'application/vnd.oasis.opendocument.image' | 'application/vnd.oasis.opendocument.image-template' | 'application/vnd.oasis.opendocument.presentation' | 'application/vnd.oasis.opendocument.presentation-template' | 'application/vnd.oasis.opendocument.spreadsheet' | 'application/vnd.oasis.opendocument.spreadsheet-template' | 'application/vnd.oasis.opendocument.text' | 'application/vnd.oasis.opendocument.text-master' | 'application/vnd.oasis.opendocument.text-master-template' | 'application/vnd.oasis.opendocument.text-template' | 'application/vnd.oasis.opendocument.text-web' | 'application/vnd.obn' | 'application/vnd.ocf+cbor' | 'application/vnd.oci.image.manifest.v1+json' | 'application/vnd.oftn.l10n+json' | 'application/vnd.oipf.contentaccessdownload+xml' | 'application/vnd.oipf.contentaccessstreaming+xml' | 'application/vnd.oipf.cspg-hexbinary' | 'application/vnd.oipf.dae.svg+xml' | 'application/vnd.oipf.dae.xhtml+xml' | 'application/vnd.oipf.mippvcontrolmessage+xml' | 'application/vnd.oipf.pae.gem' | 'application/vnd.oipf.spdiscovery+xml' | 'application/vnd.oipf.spdlist+xml' | 'application/vnd.oipf.ueprofile+xml' | 'application/vnd.oipf.userprofile+xml' | 'application/vnd.olpc-sugar' | 'application/vnd.oma.bcast.associated-procedure-parameter+xml' | 'application/vnd.oma.bcast.drm-trigger+xml' | 'application/vnd.oma.bcast.imd+xml' | 'application/vnd.oma.bcast.ltkm' | 'application/vnd.oma.bcast.notification+xml' | 'application/vnd.oma.bcast.provisioningtrigger' | 'application/vnd.oma.bcast.sgboot' | 'application/vnd.oma.bcast.sgdd+xml' | 'application/vnd.oma.bcast.sgdu' | 'application/vnd.oma.bcast.simple-symbol-container' | 'application/vnd.oma.bcast.smartcard-trigger+xml' | 'application/vnd.oma.bcast.sprov+xml' | 'application/vnd.oma.bcast.stkm' | 'application/vnd.oma.cab-address-book+xml' | 'application/vnd.oma.cab-feature-handler+xml' | 'application/vnd.oma.cab-pcc+xml' | 'application/vnd.oma.cab-subs-invite+xml' | 'application/vnd.oma.cab-user-prefs+xml' | 'application/vnd.oma.dcd' | 'application/vnd.oma.dcdc' | 'application/vnd.oma.dd2+xml' | 'application/vnd.oma.drm.risd+xml' | 'application/vnd.oma.group-usage-list+xml' | 'application/vnd.oma.lwm2m+cbor' | 'application/vnd.oma.lwm2m+json' | 'application/vnd.oma.lwm2m+tlv' | 'application/vnd.oma.pal+xml' | 'application/vnd.oma.poc.detailed-progress-report+xml' | 'application/vnd.oma.poc.final-report+xml' | 'application/vnd.oma.poc.groups+xml' | 'application/vnd.oma.poc.invocation-descriptor+xml' | 'application/vnd.oma.poc.optimized-progress-report+xml' | 'application/vnd.oma.push' | 'application/vnd.oma.scidm.messages+xml' | 'application/vnd.oma.xcap-directory+xml' | 'application/vnd.omads-email+xml' | 'application/vnd.omads-file+xml' | 'application/vnd.omads-folder+xml' | 'application/vnd.omaloc-supl-init' | 'application/vnd.oma-scws-config' | 'application/vnd.oma-scws-http-request' | 'application/vnd.oma-scws-http-response' | 'application/vnd.onepager' | 'application/vnd.onepagertamp' | 'application/vnd.onepagertamx' | 'application/vnd.onepagertat' | 'application/vnd.onepagertatp' | 'application/vnd.onepagertatx' | 'application/vnd.onvif.metadata' | 'application/vnd.openblox.game-binary' | 'application/vnd.openblox.game+xml' | 'application/vnd.openeye.oeb' | 'application/vnd.openstreetmap.data+xml' | 'application/vnd.opentimestamps.ots' | 'application/vnd.openxmlformats-officedocument.custom-properties+xml' | 'application/vnd.openxmlformats-officedocument.customXmlProperties+xml' | 'application/vnd.openxmlformats-officedocument.drawing+xml' | 'application/vnd.openxmlformats-officedocument.drawingml.chart+xml' | 'application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml' | 'application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml' | 'application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml' | 'application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml' | 'application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml' | 'application/vnd.openxmlformats-officedocument.extended-properties+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.comments+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.handoutMaster+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.notesMaster+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.notesSlide+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.presentation' | 'application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.presProps+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.slide' | 'application/vnd.openxmlformats-officedocument.presentationml.slide+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.slideLayout+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.slideMaster+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' | 'application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.slideUpdateInfo+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.tableStyles+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.tags+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.template' | 'application/vnd.openxmlformats-officedocument.presentationml.template.main+xml' | 'application/vnd.openxmlformats-officedocument.presentationml.viewProps+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml' | 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml' | 'application/vnd.openxmlformats-officedocument.theme+xml' | 'application/vnd.openxmlformats-officedocument.themeOverride+xml' | 'application/vnd.openxmlformats-officedocument.vmlDrawing' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml' | 'application/vnd.openxmlformats-package.core-properties+xml' | 'application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml' | 'application/vnd.openxmlformats-package.relationships+xml' | 'application/vnd.oracle.resource+json' | 'application/vnd.orange.indata' | 'application/vnd.osa.netdeploy' | 'application/vnd.osgeo.mapguide.package' | 'application/vnd.osgi.bundle' | 'application/vnd.osgi.dp' | 'application/vnd.osgi.subsystem' | 'application/vnd.otps.ct-kip+xml' | 'application/vnd.oxli.countgraph' | 'application/vnd.pagerduty+json' | 'application/vnd.palm' | 'application/vnd.panoply' | 'application/vnd.paos.xml' | 'application/vnd.patentdive' | 'application/vnd.patientecommsdoc' | 'application/vnd.pawaafile' | 'application/vnd.pcos' | 'application/vnd.pg.format' | 'application/vnd.pg.osasli' | 'application/vnd.piaccess.application-licence' | 'application/vnd.picsel' | 'application/vnd.pmi.widget' | 'application/vnd.poc.group-advertisement+xml' | 'application/vnd.pocketlearn' | 'application/vnd.powerbuilder6' | 'application/vnd.powerbuilder6-s' | 'application/vnd.powerbuilder7' | 'application/vnd.powerbuilder75' | 'application/vnd.powerbuilder75-s' | 'application/vnd.powerbuilder7-s' | 'application/vnd.preminet' | 'application/vnd.previewsystems.box' | 'application/vnd.proteus.magazine' | 'application/vnd.psfs' | 'application/vnd.pt.mundusmundi' | 'application/vnd.publishare-delta-tree' | 'application/vnd.pvi.ptid1' | 'application/vnd.pwg-multiplexed' | 'application/vnd.pwg-xhtml-print+xml' | 'application/vnd.qualcomm.brew-app-res' | 'application/vnd.quarantainenet' | 'application/vnd.Quark.QuarkXPress' | 'application/vnd.quobject-quoxdocument' | 'application/vnd.radisys.moml+xml' | 'application/vnd.radisys.msml-audit-conf+xml' | 'application/vnd.radisys.msml-audit-conn+xml' | 'application/vnd.radisys.msml-audit-dialog+xml' | 'application/vnd.radisys.msml-audit-stream+xml' | 'application/vnd.radisys.msml-audit+xml' | 'application/vnd.radisys.msml-conf+xml' | 'application/vnd.radisys.msml-dialog-base+xml' | 'application/vnd.radisys.msml-dialog-fax-detect+xml' | 'application/vnd.radisys.msml-dialog-fax-sendrecv+xml' | 'application/vnd.radisys.msml-dialog-group+xml' | 'application/vnd.radisys.msml-dialog-speech+xml' | 'application/vnd.radisys.msml-dialog-transform+xml' | 'application/vnd.radisys.msml-dialog+xml' | 'application/vnd.radisys.msml+xml' | 'application/vnd.rainstor.data' | 'application/vnd.rapid' | 'application/vnd.rar' | 'application/vnd.realvnc.bed' | 'application/vnd.recordare.musicxml' | 'application/vnd.recordare.musicxml+xml' | 'application/vnd.relpipe' | 'application/vnd.RenLearn.rlprint' | 'application/vnd.resilient.logic' | 'application/vnd.restful+json' | 'application/vnd.rig.cryptonote' | 'application/vnd.route66.link66+xml' | 'application/vnd.rs-274x' | 'application/vnd.ruckus.download' | 'application/vnd.s3sms' | 'application/vnd.sailingtracker.track' | 'application/vnd.sar' | 'application/vnd.sbm.cid' | 'application/vnd.sbm.mid2' | 'application/vnd.scribus' | 'application/vnd.sealed.3df' | 'application/vnd.sealed.csf' | 'application/vnd.sealed.doc' | 'application/vnd.sealed.eml' | 'application/vnd.sealed.mht' | 'application/vnd.sealed.net' | 'application/vnd.sealed.ppt' | 'application/vnd.sealed.tiff' | 'application/vnd.sealed.xls' | 'application/vnd.sealedmedia.softseal.html' | 'application/vnd.sealedmedia.softseal.pdf' | 'application/vnd.seemail' | 'application/vnd.seis+json' | 'application/vnd.sema' | 'application/vnd.semd' | 'application/vnd.semf' | 'application/vnd.shade-save-file' | 'application/vnd.shana.informed.formdata' | 'application/vnd.shana.informed.formtemplate' | 'application/vnd.shana.informed.interchange' | 'application/vnd.shana.informed.package' | 'application/vnd.shootproof+json' | 'application/vnd.shopkick+json' | 'application/vnd.shp' | 'application/vnd.shx' | 'application/vnd.sigrok.session' | 'application/vnd.SimTech-MindMapper' | 'application/vnd.siren+json' | 'application/vnd.smaf' | 'application/vnd.smart.notebook' | 'application/vnd.smart.teacher' | 'application/vnd.smintio.portals.archive' | 'application/vnd.snesdev-page-table' | 'application/vnd.software602.filler.form+xml' | 'application/vnd.software602.filler.form-xml-zip' | 'application/vnd.solent.sdkm+xml' | 'application/vnd.spotfire.dxp' | 'application/vnd.spotfire.sfs' | 'application/vnd.sqlite3' | 'application/vnd.sss-cod' | 'application/vnd.sss-dtf' | 'application/vnd.sss-ntf' | 'application/vnd.stepmania.package' | 'application/vnd.stepmania.stepchart' | 'application/vnd.street-stream' | 'application/vnd.sun.wadl+xml' | 'application/vnd.sus-calendar' | 'application/vnd.svd' | 'application/vnd.swiftview-ics' | 'application/vnd.sybyl.mol2' | 'application/vnd.sycle+xml' | 'application/vnd.syft+json' | 'application/vnd.syncml.dm.notification' | 'application/vnd.syncml.dmddf+xml' | 'application/vnd.syncml.dmtnds+wbxml' | 'application/vnd.syncml.dmtnds+xml' | 'application/vnd.syncml.dmddf+wbxml' | 'application/vnd.syncml.dm+wbxml' | 'application/vnd.syncml.dm+xml' | 'application/vnd.syncml.ds.notification' | 'application/vnd.syncml+xml' | 'application/vnd.tableschema+json' | 'application/vnd.tao.intent-module-archive' | 'application/vnd.tcpdump.pcap' | 'application/vnd.think-cell.ppttc+json' | 'application/vnd.tml' | 'application/vnd.tmd.mediaflex.api+xml' | 'application/vnd.tmobile-livetv' | 'application/vnd.tri.onesource' | 'application/vnd.trid.tpt' | 'application/vnd.triscape.mxs' | 'application/vnd.trueapp' | 'application/vnd.truedoc' | 'application/vnd.ubisoft.webplayer' | 'application/vnd.ufdl' | 'application/vnd.uiq.theme' | 'application/vnd.umajin' | 'application/vnd.unity' | 'application/vnd.uoml+xml' | 'application/vnd.uplanet.alert' | 'application/vnd.uplanet.alert-wbxml' | 'application/vnd.uplanet.bearer-choice' | 'application/vnd.uplanet.bearer-choice-wbxml' | 'application/vnd.uplanet.cacheop' | 'application/vnd.uplanet.cacheop-wbxml' | 'application/vnd.uplanet.channel' | 'application/vnd.uplanet.channel-wbxml' | 'application/vnd.uplanet.list' | 'application/vnd.uplanet.listcmd' | 'application/vnd.uplanet.listcmd-wbxml' | 'application/vnd.uplanet.list-wbxml' | 'application/vnd.uri-map' | 'application/vnd.uplanet.signal' | 'application/vnd.valve.source.material' | 'application/vnd.vcx' | 'application/vnd.vd-study' | 'application/vnd.vectorworks' | 'application/vnd.vel+json' | 'application/vnd.verimatrix.vcas' | 'application/vnd.veritone.aion+json' | 'application/vnd.veryant.thin' | 'application/vnd.ves.encrypted' | 'application/vnd.vidsoft.vidconference' | 'application/vnd.visio' | 'application/vnd.visionary' | 'application/vnd.vividence.scriptfile' | 'application/vnd.vsf' | 'application/vnd.wap.sic' | 'application/vnd.wap.slc' | 'application/vnd.wap.wbxml' | 'application/vnd.wap.wmlc' | 'application/vnd.wap.wmlscriptc' | 'application/vnd.wasmflow.wafl' | 'application/vnd.webturbo' | 'application/vnd.wfa.dpp' | 'application/vnd.wfa.p2p' | 'application/vnd.wfa.wsc' | 'application/vnd.windows.devicepairing' | 'application/vnd.wmc' | 'application/vnd.wmf.bootstrap' | 'application/vnd.wolfram.mathematica' | 'application/vnd.wolfram.mathematica.package' | 'application/vnd.wolfram.player' | 'application/vnd.wordlift' | 'application/vnd.wordperfect' | 'application/vnd.wqd' | 'application/vnd.wrq-hp3000-labelled' | 'application/vnd.wt.stf' | 'application/vnd.wv.csp+xml' | 'application/vnd.wv.csp+wbxml' | 'application/vnd.wv.ssp+xml' | 'application/vnd.xacml+json' | 'application/vnd.xara' | 'application/vnd.xecrets-encrypted' | 'application/vnd.xfdl' | 'application/vnd.xfdl.webform' | 'application/vnd.xmi+xml' | 'application/vnd.xmpie.cpkg' | 'application/vnd.xmpie.dpkg' | 'application/vnd.xmpie.plan' | 'application/vnd.xmpie.ppkg' | 'application/vnd.xmpie.xlim' | 'application/vnd.yamaha.hv-dic' | 'application/vnd.yamaha.hv-script' | 'application/vnd.yamaha.hv-voice' | 'application/vnd.yamaha.openscoreformat.osfpvg+xml' | 'application/vnd.yamaha.openscoreformat' | 'application/vnd.yamaha.remote-setup' | 'application/vnd.yamaha.smaf-audio' | 'application/vnd.yamaha.smaf-phrase' | 'application/vnd.yamaha.through-ngn' | 'application/vnd.yamaha.tunnel-udpencap' | 'application/vnd.yaoweme' | 'application/vnd.yellowriver-custom-menu' | 'application/vnd.youtube.yt' | 'application/vnd.zul' | 'application/vnd.zzazz.deck+xml' | 'application/voicexml+xml' | 'application/voucher-cms+json' | 'application/vq-rtcpxr' | 'application/wasm' | 'application/watcherinfo+xml' | 'application/webpush-options+json' | 'application/whoispp-query' | 'application/whoispp-response' | 'application/widget' | 'application/wita' | 'application/wordperfect5.1' | 'application/wsdl+xml' | 'application/wspolicy+xml' | 'application/x-pki-message' | 'application/x-www-form-urlencoded' | 'application/x-x509-ca-cert' | 'application/x-x509-ca-ra-cert' | 'application/x-x509-next-ca-cert' | 'application/x400-bp' | 'application/xacml+xml' | 'application/xcap-att+xml' | 'application/xcap-caps+xml' | 'application/xcap-diff+xml' | 'application/xcap-el+xml' | 'application/xcap-error+xml' | 'application/xcap-ns+xml' | 'application/xcon-conference-info-diff+xml' | 'application/xcon-conference-info+xml' | 'application/xenc+xml' | 'application/xfdf' | 'application/xhtml+xml' | 'application/xliff+xml' | 'application/xml' | 'application/xml-dtd' | 'application/xml-external-parsed-entity' | 'application/xml-patch+xml' | 'application/xmpp+xml' | 'application/xop+xml' | 'application/xslt+xml' | 'application/xv+xml' | 'application/yaml' | 'application/yang' | 'application/yang-data+cbor' | 'application/yang-data+json' | 'application/yang-data+xml' | 'application/yang-patch+json' | 'application/yang-patch+xml' | 'application/yin+xml' | 'application/zip' | 'application/zlib' | 'application/zstd' | 'audio/1d-interleaved-parityfec' | 'audio/32kadpcm' | 'audio/3gpp' | 'audio/3gpp2' | 'audio/aac' | 'audio/ac3' | 'audio/AMR' | 'audio/AMR-WB' | 'audio/amr-wb+' | 'audio/aptx' | 'audio/asc' | 'audio/ATRAC-ADVANCED-LOSSLESS' | 'audio/ATRAC-X' | 'audio/ATRAC3' | 'audio/basic' | 'audio/BV16' | 'audio/BV32' | 'audio/clearmode' | 'audio/CN' | 'audio/DAT12' | 'audio/dls' | 'audio/dsr-es201108' | 'audio/dsr-es202050' | 'audio/dsr-es202211' | 'audio/dsr-es202212' | 'audio/DV' | 'audio/DVI4' | 'audio/eac3' | 'audio/encaprtp' | 'audio/EVRC' | 'audio/EVRC-QCP' | 'audio/EVRC0' | 'audio/EVRC1' | 'audio/EVRCB' | 'audio/EVRCB0' | 'audio/EVRCB1' | 'audio/EVRCNW' | 'audio/EVRCNW0' | 'audio/EVRCNW1' | 'audio/EVRCWB' | 'audio/EVRCWB0' | 'audio/EVRCWB1' | 'audio/EVS' | 'audio/example' | 'audio/flexfec' | 'audio/fwdred' | 'audio/G711-0' | 'audio/G719' | 'audio/G7221' | 'audio/G722' | 'audio/G723' | 'audio/G726-16' | 'audio/G726-24' | 'audio/G726-32' | 'audio/G726-40' | 'audio/G728' | 'audio/G729' | 'audio/G7291' | 'audio/G729D' | 'audio/G729E' | 'audio/GSM' | 'audio/GSM-EFR' | 'audio/GSM-HR-08' | 'audio/iLBC' | 'audio/ip-mr_v2.5' | 'audio/L8' | 'audio/L16' | 'audio/L20' | 'audio/L24' | 'audio/LPC' | 'audio/matroska' | 'audio/MELP' | 'audio/MELP600' | 'audio/MELP1200' | 'audio/MELP2400' | 'audio/mhas' | 'audio/mobile-xmf' | 'audio/MPA' | 'audio/mp4' | 'audio/MP4A-LATM' | 'audio/mpa-robust' | 'audio/mpeg' | 'audio/mpeg4-generic' | 'audio/ogg' | 'audio/opus' | 'audio/parityfec' | 'audio/PCMA' | 'audio/PCMA-WB' | 'audio/PCMU' | 'audio/PCMU-WB' | 'audio/prs.sid' | 'audio/QCELP' | 'audio/raptorfec' | 'audio/RED' | 'audio/rtp-enc-aescm128' | 'audio/rtploopback' | 'audio/rtp-midi' | 'audio/rtx' | 'audio/scip' | 'audio/SMV' | 'audio/SMV0' | 'audio/SMV-QCP' | 'audio/sofa' | 'audio/sp-midi' | 'audio/speex' | 'audio/t140c' | 'audio/t38' | 'audio/telephone-event' | 'audio/TETRA_ACELP' | 'audio/TETRA_ACELP_BB' | 'audio/tone' | 'audio/TSVCIS' | 'audio/UEMCLIP' | 'audio/ulpfec' | 'audio/usac' | 'audio/VDVI' | 'audio/VMR-WB' | 'audio/vnd.3gpp.iufp' | 'audio/vnd.4SB' | 'audio/vnd.audiokoz' | 'audio/vnd.CELP' | 'audio/vnd.cisco.nse' | 'audio/vnd.cmles.radio-events' | 'audio/vnd.cns.anp1' | 'audio/vnd.cns.inf1' | 'audio/vnd.dece.audio' | 'audio/vnd.digital-winds' | 'audio/vnd.dlna.adts' | 'audio/vnd.dolby.heaac.1' | 'audio/vnd.dolby.heaac.2' | 'audio/vnd.dolby.mlp' | 'audio/vnd.dolby.mps' | 'audio/vnd.dolby.pl2' | 'audio/vnd.dolby.pl2x' | 'audio/vnd.dolby.pl2z' | 'audio/vnd.dolby.pulse.1' | 'audio/vnd.dra' | 'audio/vnd.dts' | 'audio/vnd.dts.hd' | 'audio/vnd.dts.uhd' | 'audio/vnd.dvb.file' | 'audio/vnd.everad.plj' | 'audio/vnd.hns.audio' | 'audio/vnd.lucent.voice' | 'audio/vnd.ms-playready.media.pya' | 'audio/vnd.nokia.mobile-xmf' | 'audio/vnd.nortel.vbk' | 'audio/vnd.nuera.ecelp4800' | 'audio/vnd.nuera.ecelp7470' | 'audio/vnd.nuera.ecelp9600' | 'audio/vnd.octel.sbc' | 'audio/vnd.presonus.multitrack' | 'audio/vnd.qcelp' | 'audio/vnd.rhetorex.32kadpcm' | 'audio/vnd.rip' | 'audio/vnd.sealedmedia.softseal.mpeg' | 'audio/vnd.vmx.cvsd' | 'audio/vorbis' | 'audio/vorbis-config' | 'font/collection' | 'font/otf' | 'font/sfnt' | 'font/ttf' | 'font/woff' | 'font/woff2' | 'image/aces' | 'image/apng' | 'image/avci' | 'image/avcs' | 'image/avif' | 'image/bmp' | 'image/cgm' | 'image/dicom-rle' | 'image/dpx' | 'image/emf' | 'image/example' | 'image/fits' | 'image/g3fax' | 'image/heic' | 'image/heic-sequence' | 'image/heif' | 'image/heif-sequence' | 'image/hej2k' | 'image/hsj2' | 'image/j2c' | 'image/jls' | 'image/jp2' | 'image/jph' | 'image/jphc' | 'image/jpm' | 'image/jpx' | 'image/jxr' | 'image/jxrA' | 'image/jxrS' | 'image/jxs' | 'image/jxsc' | 'image/jxsi' | 'image/jxss' | 'image/ktx' | 'image/ktx2' | 'image/naplps' | 'image/png' | 'image/prs.btif' | 'image/prs.pti' | 'image/pwg-raster' | 'image/svg+xml' | 'image/t38' | 'image/tiff' | 'image/tiff-fx' | 'image/vnd.adobe.photoshop' | 'image/vnd.airzip.accelerator.azv' | 'image/vnd.cns.inf2' | 'image/vnd.dece.graphic' | 'image/vnd.djvu' | 'image/vnd.dwg' | 'image/vnd.dxf' | 'image/vnd.dvb.subtitle' | 'image/vnd.fastbidsheet' | 'image/vnd.fpx' | 'image/vnd.fst' | 'image/vnd.fujixerox.edmics-mmr' | 'image/vnd.fujixerox.edmics-rlc' | 'image/vnd.globalgraphics.pgb' | 'image/vnd.microsoft.icon' | 'image/vnd.mix' | 'image/vnd.ms-modi' | 'image/vnd.mozilla.apng' | 'image/vnd.net-fpx' | 'image/vnd.pco.b16' | 'image/vnd.radiance' | 'image/vnd.sealed.png' | 'image/vnd.sealedmedia.softseal.gif' | 'image/vnd.sealedmedia.softseal.jpg' | 'image/vnd.svf' | 'image/vnd.tencent.tap' | 'image/vnd.valve.source.texture' | 'image/vnd.wap.wbmp' | 'image/vnd.xiff' | 'image/vnd.zbrush.pcx' | 'image/webp' | 'image/wmf' | 'image/emf' | 'image/wmf' | 'message/bhttp' | 'message/CPIM' | 'message/delivery-status' | 'message/disposition-notification' | 'message/example' | 'message/feedback-report' | 'message/global' | 'message/global-delivery-status' | 'message/global-disposition-notification' | 'message/global-headers' | 'message/http' | 'message/imdn+xml' | 'message/mls' | 'message/news' | 'message/ohttp-req' | 'message/ohttp-res' | 'message/s-http' | 'message/sip' | 'message/sipfrag' | 'message/tracking-status' | 'message/vnd.si.simp' | 'message/vnd.wfa.wsc' | 'model/3mf' | 'model/e57' | 'model/example' | 'model/gltf-binary' | 'model/gltf+json' | 'model/JT' | 'model/iges' | 'model/mtl' | 'model/obj' | 'model/prc' | 'model/step' | 'model/step+xml' | 'model/step+zip' | 'model/step-xml+zip' | 'model/stl' | 'model/u3d' | 'model/vnd.bary' | 'model/vnd.cld' | 'model/vnd.collada+xml' | 'model/vnd.dwf' | 'model/vnd.flatland.3dml' | 'model/vnd.gdl' | 'model/vnd.gs-gdl' | 'model/vnd.gtw' | 'model/vnd.moml+xml' | 'model/vnd.mts' | 'model/vnd.opengex' | 'model/vnd.parasolid.transmit.binary' | 'model/vnd.parasolid.transmit.text' | 'model/vnd.pytha.pyox' | 'model/vnd.rosette.annotated-data-model' | 'model/vnd.sap.vds' | 'model/vnd.usda' | 'model/vnd.usdz+zip' | 'model/vnd.valve.source.compiled-map' | 'model/vnd.vtu' | 'model/x3d-vrml' | 'model/x3d+fastinfoset' | 'model/x3d+xml' | 'multipart/appledouble' | 'multipart/byteranges' | 'multipart/encrypted' | 'multipart/example' | 'multipart/form-data' | 'multipart/header-set' | 'multipart/multilingual' | 'multipart/related' | 'multipart/report' | 'multipart/signed' | 'multipart/vnd.bint.med-plus' | 'multipart/voice-message' | 'multipart/x-mixed-replace' | 'text/1d-interleaved-parityfec' | 'text/cache-manifest' | 'text/calendar' | 'text/cql' | 'text/cql-expression' | 'text/cql-identifier' | 'text/css' | 'text/csv' | 'text/csv-schema' | 'text/directory' | 'text/dns' | 'text/ecmascript' | 'text/encaprtp' | 'text/example' | 'text/fhirpath' | 'text/flexfec' | 'text/fwdred' | 'text/gff3' | 'text/grammar-ref-list' | 'text/hl7v2' | 'text/html' | 'text/javascript' | 'text/jcr-cnd' | 'text/markdown' | 'text/mizar' | 'text/n3' | 'text/parameters' | 'text/parityfec' | 'text/provenance-notation' | 'text/prs.fallenstein.rst' | 'text/prs.lines.tag' | 'text/prs.prop.logic' | 'text/prs.texi' | 'text/raptorfec' | 'text/RED' | 'text/rfc822-headers' | 'text/rtf' | 'text/rtp-enc-aescm128' | 'text/rtploopback' | 'text/rtx' | 'text/SGML' | 'text/shaclc' | 'text/shex' | 'text/spdx' | 'text/strings' | 'text/t140' | 'text/tab-separated-values' | 'text/troff' | 'text/turtle' | 'text/ulpfec' | 'text/uri-list' | 'text/vcard' | 'text/vnd.a' | 'text/vnd.abc' | 'text/vnd.ascii-art' | 'text/vnd.curl' | 'text/vnd.debian.copyright' | 'text/vnd.DMClientScript' | 'text/vnd.dvb.subtitle' | 'text/vnd.esmertec.theme-descriptor' | 'text/vnd.exchangeable' | 'text/vnd.familysearch.gedcom' | 'text/vnd.ficlab.flt' | 'text/vnd.fly' | 'text/vnd.fmi.flexstor' | 'text/vnd.gml' | 'text/vnd.graphviz' | 'text/vnd.hans' | 'text/vnd.hgl' | 'text/vnd.in3d.3dml' | 'text/vnd.in3d.spot' | 'text/vnd.IPTC.NewsML' | 'text/vnd.IPTC.NITF' | 'text/vnd.latex-z' | 'text/vnd.motorola.reflex' | 'text/vnd.ms-mediapackage' | 'text/vnd.net2phone.commcenter.command' | 'text/vnd.radisys.msml-basic-layout' | 'text/vnd.senx.warpscript' | 'text/vnd.si.uricatalogue' | 'text/vnd.sun.j2me.app-descriptor' | 'text/vnd.sosi' | 'text/vnd.trolltech.linguist' | 'text/vnd.wap.si' | 'text/vnd.wap.sl' | 'text/vnd.wap.wml' | 'text/vnd.wap.wmlscript' | 'text/vtt' | 'text/wgsl' | 'text/xml' | 'text/xml-external-parsed-entity' | 'video/1d-interleaved-parityfec' | 'video/3gpp' | 'video/3gpp2' | 'video/3gpp-tt' | 'video/AV1' | 'video/BMPEG' | 'video/BT656' | 'video/CelB' | 'video/DV' | 'video/encaprtp' | 'video/example' | 'video/FFV1' | 'video/flexfec' | 'video/H261' | 'video/H263' | 'video/H263-1998' | 'video/H263-2000' | 'video/H264' | 'video/H264-RCDO' | 'video/H264-SVC' | 'video/H265' | 'video/H266' | 'video/iso.segment' | 'video/JPEG' | 'video/jpeg2000' | 'video/jxsv' | 'video/matroska' | 'video/matroska-3d' | 'video/mj2' | 'video/MP1S' | 'video/MP2P' | 'video/MP2T' | 'video/mp4' | 'video/MP4V-ES' | 'video/MPV' | 'video/mpeg4-generic' | 'video/nv' | 'video/ogg' | 'video/parityfec' | 'video/pointer' | 'video/quicktime' | 'video/raptorfec' | 'video/raw' | 'video/rtp-enc-aescm128' | 'video/rtploopback' | 'video/rtx' | 'video/scip' | 'video/smpte291' | 'video/SMPTE292M' | 'video/ulpfec' | 'video/vc1' | 'video/vc2' | 'video/vnd.CCTV' | 'video/vnd.dece.hd' | 'video/vnd.dece.mobile' | 'video/vnd.dece.mp4' | 'video/vnd.dece.pd' | 'video/vnd.dece.sd' | 'video/vnd.dece.video' | 'video/vnd.directv.mpeg' | 'video/vnd.directv.mpeg-tts' | 'video/vnd.dlna.mpeg-tts' | 'video/vnd.dvb.file' | 'video/vnd.fvt' | 'video/vnd.hns.video' | 'video/vnd.iptvforum.1dparityfec-1010' | 'video/vnd.iptvforum.1dparityfec-2005' | 'video/vnd.iptvforum.2dparityfec-1010' | 'video/vnd.iptvforum.2dparityfec-2005' | 'video/vnd.iptvforum.ttsavc' | 'video/vnd.iptvforum.ttsmpeg2' | 'video/vnd.motorola.video' | 'video/vnd.motorola.videop' | 'video/vnd.mpegurl' | 'video/vnd.ms-playready.media.pyv' | 'video/vnd.nokia.interleaved-multimedia' | 'video/vnd.nokia.mp4vr' | 'video/vnd.nokia.videovoip' | 'video/vnd.objectvideo' | 'video/vnd.radgamettools.bink' | 'video/vnd.radgamettools.smacker' | 'video/vnd.sealed.mpeg1' | 'video/vnd.sealed.mpeg4' | 'video/vnd.sealed.swf' | 'video/vnd.sealedmedia.softseal.mov' | 'video/vnd.uvvu.mp4' | 'video/vnd.youtube.yt' | 'video/vnd.vivo' | 'video/VP8' | 'video/VP9' | AnyString;
197
198type RequestHeaders = Partial<Record<HTTPHeaderName, string | undefined>>;
199type _HTTPHeaderName = "WWW-Authenticate" | "Authorization" | "Proxy-Authenticate" | "Proxy-Authorization" | "Age" | "Cache-Control" | "Clear-Site-Data" | "Expires" | "Pragma" | "Accept-CH" | "Critical-CH" | "Sec-CH-UA" | "Sec-CH-UA-Arch" | "Sec-CH-UA-Bitness" | "Sec-CH-UA-Full-Version-List" | "Sec-CH-UA-Mobile" | "Sec-CH-UA-Model" | "Sec-CH-UA-Platform" | "Sec-CH-UA-Platform-Version" | "Sec-CH-UA-Prefers-Color-Scheme" | "Sec-CH-UA-Prefers-Reduced-Motion" | "Downlink" | "ECT" | "RTT" | "Save-Data" | "Last-Modified" | "ETag" | "If-Match" | "If-None-Match" | "If-Modified-Since" | "If-Unmodified-Since" | "Vary" | "Connection" | "Keep-Alive" | "Accept" | "Accept-Encoding" | "Accept-Language" | "Expect" | "Max-Forwards" | "Cookie" | "Set-Cookie" | "Access-Control-Allow-Origin" | "Access-Control-Allow-Credentials" | "Access-Control-Allow-Headers" | "Access-Control-Allow-Methods" | "Access-Control-Expose-Headers" | "Access-Control-Max-Age" | "Access-Control-Request-Headers" | "Access-Control-Request-Method" | "Origin" | "Timing-Allow-Origin" | "Content-Disposition" | "Content-Length" | "Content-Type" | "Content-Encoding" | "Content-Language" | "Content-Location" | "Forwarded" | "X-Forwarded-For" | "X-Forwarded-Host" | "X-Forwarded-Proto" | "Via" | "Location" | "Refresh" | "From" | "Host" | "Referer" | "Referrer-Policy" | "User-Agent" | "Allow" | "Server" | "Accept-Ranges" | "Range" | "If-Range" | "Content-Range" | "Cross-Origin-Embedder-Policy" | "Cross-Origin-Opener-Policy" | "Cross-Origin-Resource-Policy" | "Content-Security-Policy" | "Content-Security-Policy-Report-Only" | "Expect-CT" | "Origin-Isolation" | "Permissions-Policy" | "Strict-Transport-Security" | "Upgrade-Insecure-Requests" | "X-Content-Type-Options" | "X-Frame-Options" | "X-Permitted-Cross-Domain-Policies" | "X-Powered-By" | "X-XSS-Protection" | "Sec-Fetch-Site" | "Sec-Fetch-Mode" | "Sec-Fetch-User" | "Sec-Fetch-Dest" | "Sec-Purpose" | "Service-Worker-Navigation-Preload" | "Last-Event-ID" | "NEL" | "Ping-From" | "Ping-To" | "Report-To" | "Transfer-Encoding" | "TE" | "Trailer" | "Sec-WebSocket-Key" | "Sec-WebSocket-Extensions" | "Sec-WebSocket-Accept" | "Sec-WebSocket-Protocol" | "Sec-WebSocket-Version" | "Accept-Push-Policy" | "Accept-Signature" | "Alt-Svc" | "Alt-Used" | "Date" | "Early-Data" | "Link" | "Push-Policy" | "Retry-After" | "Signature" | "Signed-Headers" | "Server-Timing" | "Service-Worker-Allowed" | "SourceMap" | "Upgrade" | "X-DNS-Prefetch-Control" | "X-Pingback" | "X-Requested-With" | "X-Robots-Tag";
200type HTTPHeaderName = _HTTPHeaderName | Lowercase<_HTTPHeaderName> | (string & {});
201type ClientHint = "Sec-CH-UA" | "Sec-CH-UA-Arch" | "Sec-CH-UA-Bitness" | "Sec-CH-UA-Full-Version-List" | "Sec-CH-UA-Full-Version" | "Sec-CH-UA-Mobile" | "Sec-CH-UA-Model" | "Sec-CH-UA-Platform" | "Sec-CH-UA-Platform-Version" | "Sec-CH-Prefers-Reduced-Motion" | "Sec-CH-Prefers-Color-Scheme" | "Device-Memory" | "Width" | "Viewport-Width" | "Save-Data" | "Downlink" | "ECT" | "RTT" | AnyString;
202type TypedHeaders = Partial<Record<HTTPHeaderName, unknown>> & Partial<{
203 host: string;
204 location: string;
205 referrer: string;
206 origin: "null" | AnyString;
207 from: string;
208 "alt-used": string;
209 "content-location": string;
210 sourcemap: string;
211 "content-length": number;
212 "access-control-max-age": number;
213 "retry-after": number;
214 rtt: number;
215 age: number;
216 "max-forwards": number;
217 downlink: number;
218 "device-memory": 0.25 | 0.5 | 1 | 2 | 4 | 8 | AnyNumber;
219 accept: MimeType | MimeType[] | `${MimeType};q=${number}`[];
220 "content-type": MimeType;
221 "accept-ch": ClientHint | ClientHint[];
222 "keep-alive": `timeout=${number}, max=${number}` | AnyString;
223 "access-control-allow-credentials": "true" | AnyString;
224 "access-control-allow-headers": "*" | HTTPHeaderName[] | AnyString;
225 "access-control-allow-methods": "*" | HTTPMethod[] | AnyString;
226 "access-control-allow-origin": "*" | "null" | AnyString;
227 "access-control-expose-headers": "*" | HTTPHeaderName[] | AnyString;
228 "access-control-request-headers": HTTPHeaderName[] | AnyString;
229 "access-control-request-method": HTTPMethod | AnyString;
230 "early-data": 1;
231 "upgrade-insecure-requests": 1;
232 "accept-ranges": "bytes" | "none" | AnyString;
233 connection: "keep-alive" | "close" | "upgrade" | AnyString;
234 ect: "slow-2g" | "2g" | "3g" | "4g" | AnyString;
235 expect: "100-continue" | AnyString;
236 "save-data": `on` | `off` | AnyString;
237 "sec-ch-prefers-reduced-motion": "no-preference" | "reduce" | AnyString;
238 "sec-ch-prefers-reduced-transparency": "no-preference" | "reduce" | AnyString;
239 "sec-ch-ua-mobile": `?1` | `?0` | AnyString;
240 "origin-agent-cluster": `?1` | `?0` | AnyString;
241 "sec-fetch-user": "?1" | AnyString;
242 "sec-purpose": "prefetch" | AnyString;
243 "x-content-type-options": "nosniff" | AnyString;
244 "x-dns-prefetch-control": "on" | "off" | AnyString;
245 "x-frame-options": "DENY" | "SAMEORIGIN" | AnyString;
246 "sec-ch-ua-arch": "x86" | "ARM" | "[arm64-v8a, armeabi-v7a, armeabi]" | AnyString;
247 "sec-fetch-site": "cross-site" | "same-origin" | "same-site" | "none" | AnyString;
248 "sec-ch-prefers-color-scheme": "dark" | "light" | AnyString;
249 "sec-ch-ua-bitness": "64" | "32" | AnyString;
250 "sec-fetch-mode": "cors" | "navigate" | "no-cors" | "same-origin" | "websocket" | AnyString;
251 "cross-origin-embedder-policy": "unsafe-none" | "require-corp" | "credentialless" | AnyString;
252 "cross-origin-opener-policy": "unsafe-none" | "same-origin-allow-popups" | "same-origin" | AnyString;
253 "cross-origin-resource-policy": "same-site" | "same-origin" | "cross-origin" | AnyString;
254 "sec-ch-ua-platform": "Android" | "Chrome OS" | "Chromium OS" | "iOS" | "Linux" | "macOS" | "Windows" | "Unknown" | AnyString;
255 "referrer-policy": "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url" | AnyString;
256 "sec-fetch-dest": "audio" | "audioworklet" | "document" | "embed" | "empty" | "font" | "frame" | "iframe" | "image" | "manifest" | "object" | "paintworklet" | "report" | "script" | "serviceworker" | "sharedworker" | "style" | "track" | "video" | "worker" | "xslt" | AnyString;
257}>;
258
259type HTTPMethod = "GET" | "HEAD" | "PATCH" | "POST" | "PUT" | "DELETE" | "CONNECT" | "OPTIONS" | "TRACE";
260type Encoding = false | "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex";
261type StatusCode = 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 428 | 429 | 431 | 444 | 450 | 451 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 506 | 507 | 508 | 509 | 510 | 511 | 521 | 522 | 523 | 525 | 530 | 599 | AnyNumber;
262interface H3EventContext extends Record<string, any> {
263 params?: Record<string, string>;
264 /**
265 * Matched router Node
266 *
267 * @experimental The object structure may change in non-major version.
268 */
269 matchedRoute?: RouteNode;
270 sessions?: Record<string, Session>;
271 clientAddress?: string;
272}
273type EventHandlerResponse<T = any> = T | Promise<T>;
274interface EventHandlerRequest {
275 body?: any;
276 query?: QueryObject;
277 routerParams?: Record<string, string>;
278}
279type InferEventInput<Key extends keyof EventHandlerRequest, Event extends H3Event, T> = void extends T ? (Event extends H3Event<infer E> ? E[Key] : never) : T;
280type MaybePromise<T> = T | Promise<T>;
281type EventHandlerResolver = (path: string) => MaybePromise<undefined | {
282 route?: string;
283 handler: EventHandler;
284}>;
285interface EventHandler<Request extends EventHandlerRequest = EventHandlerRequest, Response extends EventHandlerResponse = EventHandlerResponse> {
286 __is_handler__?: true;
287 __resolve__?: EventHandlerResolver;
288 __websocket__?: Partial<Hooks>;
289 (event: H3Event<Request>): Response;
290}
291type _RequestMiddleware<Request extends EventHandlerRequest = EventHandlerRequest> = (event: H3Event<Request>) => void | Promise<void>;
292type _ResponseMiddleware<Request extends EventHandlerRequest = EventHandlerRequest, Response extends EventHandlerResponse = EventHandlerResponse> = (event: H3Event<Request>, response: {
293 body?: Awaited<Response>;
294}) => void | Promise<void>;
295type EventHandlerObject<Request extends EventHandlerRequest = EventHandlerRequest, Response extends EventHandlerResponse = EventHandlerResponse> = {
296 onRequest?: _RequestMiddleware<Request> | _RequestMiddleware<Request>[];
297 onBeforeResponse?: _ResponseMiddleware<Request, Response> | _ResponseMiddleware<Request, Response>[];
298 /** @experimental */
299 websocket?: Partial<Hooks>;
300 handler: EventHandler<Request, Response>;
301};
302type LazyEventHandler = () => EventHandler | Promise<EventHandler>;
303
304/**
305 * H3 Runtime Error
306 * @class
307 * @extends Error
308 * @property {number} statusCode - An integer indicating the HTTP response status code.
309 * @property {string} statusMessage - A string representing the HTTP status message.
310 * @property {boolean} fatal - Indicates if the error is a fatal error.
311 * @property {boolean} unhandled - Indicates if the error was unhandled and auto captured.
312 * @property {DataT} data - An extra data that will be included in the response.
313 * This can be used to pass additional information about the error.
314 * @property {boolean} internal - Setting this property to `true` will mark the error as an internal error.
315 */
316declare class H3Error<DataT = unknown> extends Error {
317 static __h3_error__: boolean;
318 statusCode: number;
319 fatal: boolean;
320 unhandled: boolean;
321 statusMessage?: string;
322 data?: DataT;
323 cause?: unknown;
324 constructor(message: string, opts?: {
325 cause?: unknown;
326 });
327 toJSON(): Pick<H3Error<DataT>, "data" | "statusCode" | "statusMessage" | "message">;
328}
329/**
330 * Creates a new `Error` that can be used to handle both internal and runtime errors.
331 *
332 * @param input {string | (Partial<H3Error> & { status?: number; statusText?: string })} - The error message or an object containing error properties.
333 * If a string is provided, it will be used as the error `message`.
334 *
335 * @example
336 * // String error where `statusCode` defaults to `500`
337 * throw createError("An error occurred");
338 * // Object error
339 * throw createError({
340 * statusCode: 400,
341 * statusMessage: "Bad Request",
342 * message: "Invalid input",
343 * data: { field: "email" }
344 * });
345 *
346 *
347 * @return {H3Error} - An instance of H3Error.
348 *
349 * @remarks
350 * - Typically, `message` contains a brief, human-readable description of the error, while `statusMessage` is specific to HTTP responses and describes
351 * the status text related to the response status code.
352 * - In a client-server context, using a short `statusMessage` is recommended because it can be accessed on the client side. Otherwise, a `message`
353 * passed to `createError` on the server will not propagate to the client.
354 * - Consider avoiding putting dynamic user input in the `message` to prevent potential security issues.
355 */
356declare function createError<DataT = unknown>(input: string | (Partial<H3Error<DataT>> & {
357 status?: number;
358 statusText?: string;
359})): H3Error<DataT>;
360/**
361 * Receives an error and returns the corresponding response.
362 * H3 internally uses this function to handle unhandled errors.
363 * Note that calling this function will close the connection and no other data will be sent to the client afterwards.
364 *
365 * @param event {H3Event} - H3 event or req passed by h3 handler.
366 * @param error {Error | H3Error} - The raised error.
367 * @param debug {boolean} - Whether the application is in debug mode.
368 * In the debug mode, the stack trace of errors will be returned in the response.
369 */
370declare function sendError(event: H3Event, error: Error | H3Error, debug?: boolean): void;
371/**
372 * Checks if the given input is an instance of H3Error.
373 *
374 * @param input {*} - The input to check.
375 * @return {boolean} - Returns true if the input is an instance of H3Error, false otherwise.
376 */
377declare function isError<DataT = unknown>(input: any): input is H3Error<DataT>;
378
379interface Layer {
380 route: string;
381 match?: Matcher;
382 handler: EventHandler;
383}
384type Stack = Layer[];
385interface InputLayer {
386 route?: string;
387 match?: Matcher;
388 handler: EventHandler;
389 lazy?: boolean;
390}
391type InputStack = InputLayer[];
392type Matcher = (url: string, event?: H3Event) => boolean;
393interface AppUse {
394 (route: string | string[], handler: EventHandler | EventHandler[], options?: Partial<InputLayer>): App;
395 (handler: EventHandler | EventHandler[], options?: Partial<InputLayer>): App;
396 (options: InputLayer): App;
397}
398type WebSocketOptions = AdapterOptions;
399interface AppOptions {
400 debug?: boolean;
401 onError?: (error: H3Error, event: H3Event) => any;
402 onRequest?: (event: H3Event) => void | Promise<void>;
403 onBeforeResponse?: (event: H3Event, response: {
404 body?: unknown;
405 }) => void | Promise<void>;
406 onAfterResponse?: (event: H3Event, response?: {
407 body?: unknown;
408 }) => void | Promise<void>;
409 websocket?: WebSocketOptions;
410}
411interface App {
412 stack: Stack;
413 handler: EventHandler;
414 options: AppOptions;
415 use: AppUse;
416 resolve: EventHandlerResolver;
417 readonly websocket: WebSocketOptions;
418}
419/**
420 * Create a new H3 app instance.
421 */
422declare function createApp(options?: AppOptions): App;
423declare function use(app: App, arg1: string | EventHandler | InputLayer | InputLayer[], arg2?: Partial<InputLayer> | EventHandler | EventHandler[], arg3?: Partial<InputLayer>): App;
424declare function createAppEventHandler(stack: Stack, options: AppOptions): EventHandler<EventHandlerRequest, Promise<void>>;
425
426/**
427 * Prefixes and executes a handler with a base path.
428 *
429 * @example
430 * const app = createApp();
431 * const router = createRouter();
432 *
433 * const apiRouter = createRouter().get(
434 * "/hello",
435 * defineEventHandler((event) => {
436 * return "Hello API!";
437 * }),
438 * );
439 *
440 * router.use("/api/**", useBase("/api", apiRouter.handler));
441 *
442 * app.use(router.handler);
443 *
444 * @param base The base path to prefix. When set to an empty string, the handler will be run as is.
445 * @param handler The event handler to use with the adapted path.
446 */
447declare function useBase(base: string, handler: EventHandler): EventHandler;
448
449interface MultiPartData {
450 data: Buffer;
451 name?: string;
452 filename?: string;
453 type?: string;
454}
455
456/**
457 * Reads body of the request and returns encoded raw string (default), or `Buffer` if encoding is falsy.
458 *
459 * @example
460 * export default defineEventHandler(async (event) => {
461 * const body = await readRawBody(event, "utf-8");
462 * });
463 *
464 * @param event {H3Event} H3 event or req passed by h3 handler
465 * @param encoding {Encoding} encoding="utf-8" - The character encoding to use.
466 *
467 * @return {String|Buffer} Encoded raw string or raw Buffer of the body
468 */
469declare function readRawBody<E extends Encoding = "utf8">(event: H3Event, encoding?: E): E extends false ? Promise<Buffer | undefined> : Promise<string | undefined>;
470/**
471 * Reads request body and tries to safely parse using [destr](https://github.com/unjs/destr).
472 *
473 * @example
474 * export default defineEventHandler(async (event) => {
475 * const body = await readBody(event);
476 * });
477 *
478 * @param event H3 event passed by h3 handler
479 * @param encoding The character encoding to use, defaults to 'utf-8'.
480 *
481 * @return {*} The `Object`, `Array`, `String`, `Number`, `Boolean`, or `null` value corresponding to the request JSON body
482 */
483declare function readBody<T, Event extends H3Event = H3Event, _T = InferEventInput<"body", Event, T>>(event: Event, options?: {
484 strict?: boolean;
485}): Promise<_T>;
486/**
487 * Tries to read the request body via `readBody`, then uses the provided validation function and either throws a validation error or returns the result.
488 *
489 * You can use a simple function to validate the body or use a library like `zod` to define a schema.
490 *
491 * @example
492 * export default defineEventHandler(async (event) => {
493 * const body = await readValidatedBody(event, (body) => {
494 * return typeof body === "object" && body !== null;
495 * });
496 * });
497 * @example
498 * import { z } from "zod";
499 *
500 * export default defineEventHandler(async (event) => {
501 * const objectSchema = z.object();
502 * const body = await readValidatedBody(event, objectSchema.safeParse);
503 * });
504 *
505 * @param event The H3Event passed by the handler.
506 * @param validate The function to use for body validation. It will be called passing the read request body. If the result is not false, the parsed body will be returned.
507 * @throws If the validation function returns `false` or throws, a validation error will be thrown.
508 * @return {*} The `Object`, `Array`, `String`, `Number`, `Boolean`, or `null` value corresponding to the request JSON body.
509 * @see {readBody}
510 */
511declare function readValidatedBody<T, Event extends H3Event = H3Event, _T = InferEventInput<"body", Event, T>>(event: Event, validate: ValidateFunction<_T>): Promise<_T>;
512/**
513 * Tries to read and parse the body of a an H3Event as multipart form.
514 *
515 * @example
516 * export default defineEventHandler(async (event) => {
517 * const formData = await readMultipartFormData(event);
518 * // The result could look like:
519 * // [
520 * // {
521 * // "data": "other",
522 * // "name": "baz",
523 * // },
524 * // {
525 * // "data": "something",
526 * // "name": "some-other-data",
527 * // },
528 * // ];
529 * });
530 *
531 * @param event The H3Event object to read multipart form from.
532 *
533 * @return The parsed form data. If no form could be detected because the content type is not multipart/form-data or no boundary could be found.
534 */
535declare function readMultipartFormData(event: H3Event): Promise<MultiPartData[] | undefined>;
536/**
537 * Constructs a FormData object from an event, after converting it to a a web request.
538 *
539 * @example
540 * export default defineEventHandler(async (event) => {
541 * const formData = await readFormData(event);
542 * const email = formData.get("email");
543 * const password = formData.get("password");
544 * });
545 *
546 * @param event The H3Event object to read the form data from.
547 */
548declare function readFormData(event: H3Event): Promise<FormData>;
549/**
550 * Captures a stream from a request.
551 * @param event The H3Event object containing the request information.
552 * @returns Undefined if the request can't transport a payload, otherwise a ReadableStream of the request body.
553 */
554declare function getRequestWebStream(event: H3Event): undefined | ReadableStream;
555
556interface CacheConditions {
557 modifiedTime?: string | Date;
558 maxAge?: number;
559 etag?: string;
560 cacheControls?: string[];
561}
562/**
563 * Check request caching headers (`If-Modified-Since`) and add caching headers (Last-Modified, Cache-Control)
564 * Note: `public` cache control will be added by default
565 * @returns `true` when cache headers are matching. When `true` is returned, no response should be sent anymore
566 */
567declare function handleCacheHeaders(event: H3Event, opts: CacheConditions): boolean;
568
569declare const MIMES: {
570 readonly html: "text/html";
571 readonly json: "application/json";
572};
573
574interface H3CorsOptions {
575 origin?: "*" | "null" | (string | RegExp)[] | ((origin: string) => boolean);
576 methods?: "*" | HTTPMethod[];
577 allowHeaders?: "*" | string[];
578 exposeHeaders?: "*" | string[];
579 credentials?: boolean;
580 maxAge?: string | false;
581 preflight?: {
582 statusCode?: number;
583 };
584}
585
586/**
587 * Handle CORS for the incoming request.
588 *
589 * If the incoming request is a CORS preflight request, it will append the CORS preflight headers and send a 204 response.
590 *
591 * If return value is `true`, the request is handled and no further action is needed.
592 *
593 * @example
594 * const app = createApp();
595 * const router = createRouter();
596 * router.use('/',
597 * defineEventHandler(async (event) => {
598 * const didHandleCors = handleCors(event, {
599 * origin: '*',
600 * preflight: {
601 * statusCode: 204,
602 * },
603 * methods: '*',
604 * });
605 * if (didHandleCors) {
606 * return;
607 * }
608 * // Your code here
609 * })
610 * );
611 */
612declare function handleCors(event: H3Event, options: H3CorsOptions): boolean;
613
614/**
615 * Get query the params object from the request URL parsed with [unjs/ufo](https://ufo.unjs.io).
616 *
617 * @example
618 * export default defineEventHandler((event) => {
619 * const query = getQuery(event); // { key: "value", key2: ["value1", "value2"] }
620 * });
621 */
622declare function getQuery<T, Event extends H3Event = H3Event, _T = Exclude<InferEventInput<"query", Event, T>, undefined>>(event: Event): _T;
623/**
624 * Get the query param from the request URL parsed with [unjs/ufo](https://ufo.unjs.io) and validated with validate function.
625 *
626 * You can use a simple function to validate the query object or a library like `zod` to define a schema.
627 *
628 * @example
629 * export default defineEventHandler((event) => {
630 * const query = getValidatedQuery(event, (data) => {
631 * return "key" in data && typeof data.key === "string";
632 * });
633 * });
634 * @example
635 * import { z } from "zod";
636 *
637 * export default defineEventHandler((event) => {
638 * const query = getValidatedQuery(
639 * event,
640 * z.object({
641 * key: z.string(),
642 * }),
643 * );
644 * });
645 */
646declare function getValidatedQuery<T, Event extends H3Event = H3Event, _T = InferEventInput<"query", Event, T>>(event: Event, validate: ValidateFunction<_T>): Promise<_T>;
647/**
648 * Get matched route params.
649 *
650 * If `decode` option is `true`, it will decode the matched route params using `decodeURI`.
651 *
652 * @example
653 * export default defineEventHandler((event) => {
654 * const params = getRouterParams(event); // { key: "value" }
655 * });
656 */
657declare function getRouterParams(event: H3Event, opts?: {
658 decode?: boolean;
659}): NonNullable<H3Event["context"]["params"]>;
660/**
661 * Get matched route params and validate with validate function.
662 *
663 * If `decode` option is `true`, it will decode the matched route params using `decodeURI`.
664 *
665 * You can use a simple function to validate the params object or a library like `zod` to define a schema.
666 *
667 * @example
668 * export default defineEventHandler((event) => {
669 * const params = getValidatedRouterParams(event, (data) => {
670 * return "key" in data && typeof data.key === "string";
671 * });
672 * });
673 * @example
674 * import { z } from "zod";
675 *
676 * export default defineEventHandler((event) => {
677 * const params = getValidatedRouterParams(
678 * event,
679 * z.object({
680 * key: z.string(),
681 * }),
682 * );
683 * });
684 */
685declare function getValidatedRouterParams<T, Event extends H3Event = H3Event, _T = InferEventInput<"routerParams", Event, T>>(event: Event, validate: ValidateFunction<_T>, opts?: {
686 decode?: boolean;
687}): Promise<_T>;
688/**
689 * Get a matched route param by name.
690 *
691 * If `decode` option is `true`, it will decode the matched route param using `decodeURI`.
692 *
693 * @example
694 * export default defineEventHandler((event) => {
695 * const param = getRouterParam(event, "key");
696 * });
697 */
698declare function getRouterParam(event: H3Event, name: string, opts?: {
699 decode?: boolean;
700}): string | undefined;
701/**
702 * @deprecated Directly use `event.method` instead.
703 */
704declare function getMethod(event: H3Event, defaultMethod?: HTTPMethod): HTTPMethod;
705/**
706 *
707 * Checks if the incoming request method is of the expected type.
708 *
709 * If `allowHead` is `true`, it will allow `HEAD` requests to pass if the expected method is `GET`.
710 *
711 * @example
712 * export default defineEventHandler((event) => {
713 * if (isMethod(event, "GET")) {
714 * // Handle GET request
715 * } else if (isMethod(event, ["POST", "PUT"])) {
716 * // Handle POST or PUT request
717 * }
718 * });
719 */
720declare function isMethod(event: H3Event, expected: HTTPMethod | HTTPMethod[], allowHead?: boolean): boolean;
721/**
722 * Asserts that the incoming request method is of the expected type using `isMethod`.
723 *
724 * If the method is not allowed, it will throw a 405 error with the message "HTTP method is not allowed".
725 *
726 * If `allowHead` is `true`, it will allow `HEAD` requests to pass if the expected method is `GET`.
727 *
728 * @example
729 * export default defineEventHandler((event) => {
730 * assertMethod(event, "GET");
731 * // Handle GET request, otherwise throw 405 error
732 * });
733 */
734declare function assertMethod(event: H3Event, expected: HTTPMethod | HTTPMethod[], allowHead?: boolean): void;
735/**
736 * Get the request headers object.
737 *
738 * Array headers are joined with a comma.
739 *
740 * @example
741 * export default defineEventHandler((event) => {
742 * const headers = getRequestHeaders(event); // { "content-type": "application/json", "x-custom-header": "value" }
743 * });
744 */
745declare function getRequestHeaders(event: H3Event): RequestHeaders;
746/**
747 * Alias for `getRequestHeaders`.
748 */
749declare const getHeaders: typeof getRequestHeaders;
750/**
751 * Get a request header by name.
752 *
753 * @example
754 * export default defineEventHandler((event) => {
755 * const contentType = getRequestHeader(event, "content-type"); // "application/json"
756 * });
757 */
758declare function getRequestHeader(event: H3Event, name: HTTPHeaderName): RequestHeaders[string];
759/**
760 * Alias for `getRequestHeader`.
761 */
762declare const getHeader: typeof getRequestHeader;
763/**
764 * Get the request hostname.
765 *
766 * If `xForwardedHost` is `true`, it will use the `x-forwarded-host` header if it exists.
767 *
768 * If no host header is found, it will default to "localhost".
769 *
770 * @example
771 * export default defineEventHandler((event) => {
772 * const host = getRequestHost(event); // "example.com"
773 * });
774 */
775declare function getRequestHost(event: H3Event, opts?: {
776 xForwardedHost?: boolean;
777}): string;
778/**
779 * Get the request protocol.
780 *
781 * If `x-forwarded-proto` header is set to "https", it will return "https". You can disable this behavior by setting `xForwardedProto` to `false`.
782 *
783 * If protocol cannot be determined, it will default to "http".
784 *
785 * @example
786 * export default defineEventHandler((event) => {
787 * const protocol = getRequestProtocol(event); // "https"
788 * });
789 */
790declare function getRequestProtocol(event: H3Event, opts?: {
791 xForwardedProto?: boolean;
792}): "https" | "http";
793/** @deprecated Use `event.path` instead */
794declare function getRequestPath(event: H3Event): string;
795/**
796 * Generated the full incoming request URL using `getRequestProtocol`, `getRequestHost` and `event.path`.
797 *
798 * If `xForwardedHost` is `true`, it will use the `x-forwarded-host` header if it exists.
799 *
800 * If `xForwardedProto` is `false`, it will not use the `x-forwarded-proto` header.
801 *
802 * @example
803 * export default defineEventHandler((event) => {
804 * const url = getRequestURL(event); // "https://example.com/path"
805 * });
806 */
807declare function getRequestURL(event: H3Event, opts?: {
808 xForwardedHost?: boolean;
809 xForwardedProto?: boolean;
810}): URL;
811/**
812 * Convert the H3Event to a WebRequest object.
813 *
814 * **NOTE:** This function is not stable and might have edge cases that are not handled properly.
815 */
816declare function toWebRequest(event: H3Event): Request;
817/**
818 * Try to get the client IP address from the incoming request.
819 *
820 * If `xForwardedFor` is `true`, it will use the `x-forwarded-for` header if it exists.
821 *
822 * If IP cannot be determined, it will default to `undefined`.
823 *
824 * @example
825 * export default defineEventHandler((event) => {
826 * const ip = getRequestIP(event); // "192.0.2.0"
827 * });
828 */
829declare function getRequestIP(event: H3Event, opts?: {
830 /**
831 * Use the X-Forwarded-For HTTP header set by proxies.
832 *
833 * Note: Make sure that this header can be trusted (your application running behind a CDN or reverse proxy) before enabling.
834 */
835 xForwardedFor?: boolean;
836}): string | undefined;
837
838/**
839 * Check if the incoming request is a CORS preflight request.
840 */
841declare function isPreflightRequest(event: H3Event): boolean;
842/**
843 * Check if the incoming request is a CORS request.
844 */
845declare function isCorsOriginAllowed(origin: ReturnType<typeof getRequestHeaders>["origin"], options: H3CorsOptions): boolean;
846/**
847 * Append CORS preflight headers to the response.
848 */
849declare function appendCorsPreflightHeaders(event: H3Event, options: H3CorsOptions): void;
850/**
851 * Append CORS headers to the response.
852 */
853declare function appendCorsHeaders(event: H3Event, options: H3CorsOptions): void;
854
855/**
856 * Parse the request to get HTTP Cookie header string and returning an object of all cookie name-value pairs.
857 * @param event {H3Event} H3 event or req passed by h3 handler
858 * @returns Object of cookie name-value pairs
859 * ```ts
860 * const cookies = parseCookies(event)
861 * ```
862 */
863declare function parseCookies(event: H3Event): Record<string, string>;
864/**
865 * Get a cookie value by name.
866 * @param event {H3Event} H3 event or req passed by h3 handler
867 * @param name Name of the cookie to get
868 * @returns {*} Value of the cookie (String or undefined)
869 * ```ts
870 * const authorization = getCookie(request, 'Authorization')
871 * ```
872 */
873declare function getCookie(event: H3Event, name: string): string | undefined;
874/**
875 * Set a cookie value by name.
876 * @param event {H3Event} H3 event or res passed by h3 handler
877 * @param name Name of the cookie to set
878 * @param value Value of the cookie to set
879 * @param serializeOptions {CookieSerializeOptions} Options for serializing the cookie
880 * ```ts
881 * setCookie(res, 'Authorization', '1234567')
882 * ```
883 */
884declare function setCookie(event: H3Event, name: string, value: string, serializeOptions?: CookieSerializeOptions): void;
885/**
886 * Remove a cookie by name.
887 * @param event {H3Event} H3 event or res passed by h3 handler
888 * @param name Name of the cookie to delete
889 * @param serializeOptions {CookieSerializeOptions} Cookie options
890 * ```ts
891 * deleteCookie(res, 'SessionId')
892 * ```
893 */
894declare function deleteCookie(event: H3Event, name: string, serializeOptions?: CookieSerializeOptions): void;
895/**
896 * Set-Cookie header field-values are sometimes comma joined in one string.
897 *
898 * This splits them without choking on commas that are within a single set-cookie field-value, such as in the Expires portion.
899 * This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2
900 * Node.js does this for every header _except_ set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128
901 * Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25
902 * Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation
903 * @source https://github.com/nfriedly/set-cookie-parser/blob/3eab8b7d5d12c8ed87832532861c1a35520cf5b3/lib/set-cookie.js#L144
904 *
905 * @internal
906 */
907declare function splitCookiesString(cookiesString: string | string[]): string[];
908
909interface RequestFingerprintOptions {
910 /** @default SHA-1 */
911 hash?: false | "SHA-1";
912 /** @default `true` */
913 ip?: boolean;
914 /** @default `false` */
915 xForwardedFor?: boolean;
916 /** @default `false` */
917 method?: boolean;
918 /** @default `false` */
919 path?: boolean;
920 /** @default `false` */
921 userAgent?: boolean;
922}
923/**
924 *
925 * Get a unique fingerprint for the incoming request.
926 *
927 * @experimental Behavior of this utility might change in the future versions
928 */
929declare function getRequestFingerprint(event: H3Event, opts?: RequestFingerprintOptions): Promise<string | null>;
930
931type Duplex = "half" | "full";
932interface ProxyOptions {
933 headers?: RequestHeaders | HeadersInit;
934 fetchOptions?: RequestInit & {
935 duplex?: Duplex;
936 } & {
937 ignoreResponseError?: boolean;
938 };
939 fetch?: typeof fetch;
940 sendStream?: boolean;
941 streamRequest?: boolean;
942 cookieDomainRewrite?: string | Record<string, string>;
943 cookiePathRewrite?: string | Record<string, string>;
944 onResponse?: (event: H3Event, response: Response) => void;
945}
946/**
947 * Proxy the incoming request to a target URL.
948 */
949declare function proxyRequest(event: H3Event, target: string, opts?: ProxyOptions): Promise<any>;
950/**
951 * Make a proxy request to a target URL and send the response back to the client.
952 */
953declare function sendProxy(event: H3Event, target: string, opts?: ProxyOptions): Promise<any>;
954/**
955 * Get the request headers object without headers known to cause issues when proxying.
956 */
957declare function getProxyRequestHeaders(event: H3Event): any;
958/**
959 * Make a fetch request with the event's context and headers.
960 */
961declare function fetchWithEvent<T = unknown, _R = any, F extends (req: RequestInfo | URL, opts?: any) => any = typeof fetch>(event: H3Event, req: RequestInfo | URL, init?: RequestInit & {
962 context?: H3EventContext;
963}, options?: {
964 fetch: F;
965}): unknown extends T ? ReturnType<F> : T;
966
967type IterationSource<Val, Ret = Val> = Iterable<Val> | AsyncIterable<Val> | Iterator<Val, Ret | undefined> | AsyncIterator<Val, Ret | undefined> | (() => Iterator<Val, Ret | undefined> | AsyncIterator<Val, Ret | undefined>);
968type SendableValue = string | Buffer | Uint8Array;
969type IteratorSerializer<Value> = (value: Value) => SendableValue | undefined;
970
971/**
972 * Directly send a response to the client.
973 *
974 * **Note:** This function should be used only when you want to send a response directly without using the `h3` event.
975 * Normally you can directly `return` a value inside event handlers.
976 */
977declare function send(event: H3Event, data?: any, type?: MimeType): Promise<void>;
978/**
979 * Respond with an empty payload.<br>
980 *
981 * Note that calling this function will close the connection and no other data can be sent to the client afterwards.
982 *
983 * @example
984 * export default defineEventHandler((event) => {
985 * return sendNoContent(event);
986 * });
987 * @example
988 * export default defineEventHandler((event) => {
989 * sendNoContent(event); // Close the connection
990 * console.log("This will not be executed");
991 * });
992 *
993 * @param event H3 event
994 * @param code status code to be send. By default, it is `204 No Content`.
995 */
996declare function sendNoContent(event: H3Event, code?: StatusCode): void;
997/**
998 * Set the response status code and message.
999 *
1000 * @example
1001 * export default defineEventHandler((event) => {
1002 * setResponseStatus(event, 404, "Not Found");
1003 * return "Not Found";
1004 * });
1005 */
1006declare function setResponseStatus(event: H3Event, code?: StatusCode, text?: string): void;
1007/**
1008 * Get the current response status code.
1009 *
1010 * @example
1011 * export default defineEventHandler((event) => {
1012 * const status = getResponseStatus(event);
1013 * return `Status: ${status}`;
1014 * });
1015 */
1016declare function getResponseStatus(event: H3Event): number;
1017/**
1018 * Get the current response status message.
1019 *
1020 * @example
1021 * export default defineEventHandler((event) => {
1022 * const statusText = getResponseStatusText(event);
1023 * return `Status: ${statusText}`;
1024 * });
1025 */
1026declare function getResponseStatusText(event: H3Event): string;
1027/**
1028 * Set the response status code and message.
1029 */
1030declare function defaultContentType(event: H3Event, type?: MimeType): void;
1031/**
1032 * Send a redirect response to the client.
1033 *
1034 * It adds the `location` header to the response and sets the status code to 302 by default.
1035 *
1036 * In the body, it sends a simple HTML page with a meta refresh tag to redirect the client in case the headers are ignored.
1037 *
1038 * @example
1039 * export default defineEventHandler((event) => {
1040 * return sendRedirect(event, "https://example.com");
1041 * });
1042 *
1043 * @example
1044 * export default defineEventHandler((event) => {
1045 * return sendRedirect(event, "https://example.com", 301); // Permanent redirect
1046 * });
1047 */
1048declare function sendRedirect(event: H3Event, location: string, code?: StatusCode): Promise<void>;
1049/**
1050 * Get the response headers object.
1051 *
1052 * @example
1053 * export default defineEventHandler((event) => {
1054 * const headers = getResponseHeaders(event);
1055 * });
1056 */
1057declare function getResponseHeaders(event: H3Event): ReturnType<H3Event["node"]["res"]["getHeaders"]>;
1058/**
1059 * Alias for `getResponseHeaders`.
1060 *
1061 * @example
1062 * export default defineEventHandler((event) => {
1063 * const contentType = getResponseHeader(event, "content-type"); // Get the response content-type header
1064 * });
1065 */
1066declare function getResponseHeader(event: H3Event, name: HTTPHeaderName): ReturnType<H3Event["node"]["res"]["getHeader"]>;
1067/**
1068 * Set the response headers.
1069 *
1070 * @example
1071 * export default defineEventHandler((event) => {
1072 * setResponseHeaders(event, {
1073 * "content-type": "text/html",
1074 * "cache-control": "no-cache",
1075 * });
1076 * });
1077 */
1078declare function setResponseHeaders(event: H3Event, headers: TypedHeaders): void;
1079/**
1080 * Alias for `setResponseHeaders`.
1081 */
1082declare const setHeaders: typeof setResponseHeaders;
1083/**
1084 * Set a response header by name.
1085 *
1086 * @example
1087 * export default defineEventHandler((event) => {
1088 * setResponseHeader(event, "content-type", "text/html");
1089 * });
1090 */
1091declare function setResponseHeader<T extends HTTPHeaderName>(event: H3Event, name: T, value: TypedHeaders[Lowercase<T>]): void;
1092/**
1093 * Alias for `setResponseHeader`.
1094 */
1095declare const setHeader: typeof setResponseHeader;
1096/**
1097 * Append the response headers.
1098 *
1099 * @example
1100 * export default defineEventHandler((event) => {
1101 * appendResponseHeaders(event, {
1102 * "content-type": "text/html",
1103 * "cache-control": "no-cache",
1104 * });
1105 * });
1106 */
1107declare function appendResponseHeaders(event: H3Event, headers: TypedHeaders): void;
1108/**
1109 * Alias for `appendResponseHeaders`.
1110 */
1111declare const appendHeaders: typeof appendResponseHeaders;
1112/**
1113 * Append a response header by name.
1114 *
1115 * @example
1116 * export default defineEventHandler((event) => {
1117 * appendResponseHeader(event, "content-type", "text/html");
1118 * });
1119 */
1120declare function appendResponseHeader<T extends HTTPHeaderName>(event: H3Event, name: T, value: TypedHeaders[Lowercase<T>]): void;
1121/**
1122 * Alias for `appendResponseHeader`.
1123 */
1124declare const appendHeader: typeof appendResponseHeader;
1125/**
1126 * Remove all response headers, or only those specified in the headerNames array.
1127 *
1128 * @example
1129 * export default defineEventHandler((event) => {
1130 * clearResponseHeaders(event, ["content-type", "cache-control"]); // Remove content-type and cache-control headers
1131 * });
1132 *
1133 * @param event H3 event
1134 * @param headerNames Array of header names to remove
1135 */
1136declare function clearResponseHeaders(event: H3Event, headerNames?: HTTPHeaderName[]): void;
1137/**
1138 * Remove a response header by name.
1139 *
1140 * @example
1141 * export default defineEventHandler((event) => {
1142 * removeResponseHeader(event, "content-type"); // Remove content-type header
1143 * });
1144 */
1145declare function removeResponseHeader(event: H3Event, name: HTTPHeaderName): void;
1146/**
1147 * Checks if the data is a stream. (Node.js Readable Stream, React Pipeable Stream, or Web Stream)
1148 */
1149declare function isStream(data: any): data is Readable | ReadableStream;
1150/**
1151 * Checks if the data is a Response object.
1152 */
1153declare function isWebResponse(data: any): data is Response;
1154/**
1155 * Send a stream response to the client.
1156 *
1157 * Note: You can directly `return` a stream value inside event handlers alternatively which is recommended.
1158 */
1159declare function sendStream(event: H3Event, stream: Readable | ReadableStream): Promise<void>;
1160/**
1161 * Write `HTTP/1.1 103 Early Hints` to the client.
1162 */
1163declare function writeEarlyHints(event: H3Event, hints: string | string[] | Record<string, string | string[]>, cb?: () => void): void;
1164/**
1165 * Send a Response object to the client.
1166 */
1167declare function sendWebResponse(event: H3Event, response: Response): void | Promise<void>;
1168/**
1169 * Iterate a source of chunks and send back each chunk in order.
1170 * Supports mixing async work together with emitting chunks.
1171 *
1172 * Each chunk must be a string or a buffer.
1173 *
1174 * For generator (yielding) functions, the returned value is treated the same as yielded values.
1175 *
1176 * @param event - H3 event
1177 * @param iterable - Iterator that produces chunks of the response.
1178 * @param serializer - Function that converts values from the iterable into stream-compatible values.
1179 * @template Value - Test
1180 *
1181 * @example
1182 * sendIterable(event, work());
1183 * async function* work() {
1184 * // Open document body
1185 * yield "<!DOCTYPE html>\n<html><body><h1>Executing...</h1><ol>\n";
1186 * // Do work ...
1187 * for (let i = 0; i < 1000) {
1188 * await delay(1000);
1189 * // Report progress
1190 * yield `<li>Completed job #`;
1191 * yield i;
1192 * yield `</li>\n`;
1193 * }
1194 * // Close out the report
1195 * return `</ol></body></html>`;
1196 * }
1197 * async function delay(ms) {
1198 * return new Promise(resolve => setTimeout(resolve, ms));
1199 * }
1200 */
1201declare function sendIterable<Value = unknown, Return = unknown>(event: H3Event, iterable: IterationSource<Value, Return>, options?: {
1202 serializer: IteratorSerializer<Value | Return>;
1203}): Promise<void>;
1204
1205/**
1206 * Make sure the status message is safe to use in a response.
1207 *
1208 * Allowed characters: horizontal tabs, spaces or visible ascii characters: https://www.rfc-editor.org/rfc/rfc7230#section-3.1.2
1209 */
1210declare function sanitizeStatusMessage(statusMessage?: string): string;
1211/**
1212 * Make sure the status code is a valid HTTP status code.
1213 */
1214declare function sanitizeStatusCode(statusCode?: string | number, defaultStatusCode?: number): number;
1215
1216interface EventStreamOptions {
1217 /**
1218 * Automatically close the writable stream when the request is closed
1219 *
1220 * Default is `true`
1221 */
1222 autoclose?: boolean;
1223}
1224/**
1225 * See https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#fields
1226 */
1227interface EventStreamMessage {
1228 id?: string;
1229 event?: string;
1230 retry?: number;
1231 data: string;
1232}
1233
1234/**
1235 * A helper class for [server sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#event_stream_format)
1236 */
1237declare class EventStream$1 {
1238 private readonly _h3Event;
1239 private readonly _transformStream;
1240 private readonly _writer;
1241 private readonly _encoder;
1242 private _writerIsClosed;
1243 private _paused;
1244 private _unsentData;
1245 private _disposed;
1246 private _handled;
1247 constructor(event: H3Event, opts?: EventStreamOptions);
1248 /**
1249 * Publish new event(s) for the client
1250 */
1251 push(message: string): Promise<void>;
1252 push(message: string[]): Promise<void>;
1253 push(message: EventStreamMessage): Promise<void>;
1254 push(message: EventStreamMessage[]): Promise<void>;
1255 private _sendEvent;
1256 private _sendEvents;
1257 pause(): void;
1258 get isPaused(): boolean;
1259 resume(): Promise<void>;
1260 flush(): Promise<void>;
1261 /**
1262 * Close the stream and the connection if the stream is being sent to the client
1263 */
1264 close(): Promise<void>;
1265 /**
1266 * Triggers callback when the writable stream is closed.
1267 * It is also triggered after calling the `close()` method.
1268 */
1269 onClosed(cb: () => any): void;
1270 send(): Promise<void>;
1271}
1272
1273/**
1274 * Initialize an EventStream instance for creating [server sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)
1275 *
1276 * @experimental This function is experimental and might be unstable in some environments.
1277 *
1278 * @example
1279 *
1280 * ```ts
1281 * import { createEventStream, sendEventStream } from "h3";
1282 *
1283 * eventHandler((event) => {
1284 * const eventStream = createEventStream(event);
1285 *
1286 * // Send a message every second
1287 * const interval = setInterval(async () => {
1288 * await eventStream.push("Hello world");
1289 * }, 1000);
1290 *
1291 * // cleanup the interval and close the stream when the connection is terminated
1292 * eventStream.onClosed(async () => {
1293 * console.log("closing SSE...");
1294 * clearInterval(interval);
1295 * await eventStream.close();
1296 * });
1297 *
1298 * return eventStream.send();
1299 * });
1300 * ```
1301 */
1302declare function createEventStream(event: H3Event, opts?: EventStreamOptions): EventStream$1;
1303type EventStream = ReturnType<typeof createEventStream>;
1304
1305interface StaticAssetMeta {
1306 type?: string;
1307 etag?: string;
1308 mtime?: number | string | Date;
1309 path?: string;
1310 size?: number;
1311 encoding?: string;
1312}
1313interface ServeStaticOptions {
1314 /**
1315 * This function should resolve asset meta
1316 */
1317 getMeta: (id: string) => StaticAssetMeta | undefined | Promise<StaticAssetMeta | undefined>;
1318 /**
1319 * This function should resolve asset content
1320 */
1321 getContents: (id: string) => unknown | Promise<unknown>;
1322 /**
1323 * Map of supported encodings (compressions) and their file extensions.
1324 *
1325 * Each extension will be appended to the asset path to find the compressed version of the asset.
1326 *
1327 * @example { gzip: ".gz", br: ".br" }
1328 */
1329 encodings?: Record<string, string>;
1330 /**
1331 * Default index file to serve when the path is a directory
1332 *
1333 * @default ["/index.html"]
1334 */
1335 indexNames?: string[];
1336 /**
1337 * When set to true, the function will not throw 404 error when the asset meta is not found or meta validation failed
1338 */
1339 fallthrough?: boolean;
1340}
1341/**
1342 * Dynamically serve static assets based on the request path.
1343 */
1344declare function serveStatic(event: H3Event, options: ServeStaticOptions): Promise<void | false>;
1345
1346/**
1347 * Define WebSocket hooks.
1348 *
1349 * @see https://h3.unjs.io/guide/websocket
1350 */
1351declare function defineWebSocket(hooks: Partial<Hooks>): Partial<Hooks>;
1352/**
1353 * Define WebSocket event handler.
1354 *
1355 * @see https://h3.unjs.io/guide/websocket
1356 */
1357declare function defineWebSocketHandler(hooks: Partial<Hooks>): EventHandler<EventHandlerRequest, never>;
1358
1359/** @experimental */
1360type WebHandler = (request: Request, context?: Record<string, unknown>) => Promise<Response>;
1361/** @experimental */
1362declare function toWebHandler(app: App): WebHandler;
1363/** @experimental */
1364declare function fromWebHandler(handler: WebHandler): EventHandler<EventHandlerRequest, Promise<Response>>;
1365
1366interface PlainRequest {
1367 _eventOverrides?: Partial<H3Event>;
1368 context?: Record<string, unknown>;
1369 method: string;
1370 path: string;
1371 headers: HeadersInit;
1372 body?: null | BodyInit;
1373}
1374interface PlainResponse {
1375 status: number;
1376 statusText: string;
1377 headers: [string, string][];
1378 body?: unknown;
1379}
1380type PlainHandler = (request: PlainRequest) => Promise<PlainResponse>;
1381/** @experimental */
1382declare function toPlainHandler(app: App): PlainHandler;
1383/** @experimental */
1384declare function fromPlainHandler(handler: PlainHandler): EventHandler<EventHandlerRequest, Promise<unknown>>;
1385
1386export { type AddRouteShortcuts, type App, type AppOptions, type AppUse, type CacheConditions, type CreateRouterOptions, type Duplex, type DynamicEventHandler, type Encoding, type EventHandler, type EventHandlerObject, type EventHandlerRequest, type EventHandlerResolver, type EventHandlerResponse, type EventStream, type EventStreamMessage, type EventStreamOptions, type H3CorsOptions, H3Error, H3Event, type H3EventContext, H3Headers, H3Response, type HTTPHeaderName, type HTTPMethod, type InferEventInput, type InputLayer, type InputStack, type Layer, type LazyEventHandler, MIMES, type Matcher, type MimeType, type MultiPartData, type NodeEventContext, type NodeListener, type NodeMiddleware, type NodePromisifiedHandler, type PlainHandler, type PlainRequest, type PlainResponse, type ProxyOptions, type RequestFingerprintOptions, type RequestHeaders, type RouteNode, type Router, type RouterMethod, type RouterUse, type ServeStaticOptions, type Session, type SessionConfig, type SessionData, type Stack, type StaticAssetMeta, type StatusCode, type TypedHeaders, type ValidateFunction, type ValidateResult, type WebEventContext, type WebHandler, type WebSocketOptions, type _RequestMiddleware, type _ResponseMiddleware, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, use, useBase, useSession, writeEarlyHints };
1387
\No newline at end of file