UNPKG

@cto.af/http-headers

Version:

Parse HTTP headers from RFC 9110 (and a bunch of others) using the full ABNF.

1,084 lines (922 loc) 29.6 kB
export interface Header<Name extends string> { kind: Name; // Lowercase value: string; name?: string; // Original, if parsed as a full header } export interface UnknownHeader { kind: string; // Lowercase value: string; name: string; // Original, if parsed as a full header unknown: true; } export interface Parameters { [name: string]: string; } export interface MediaRange { type: string; subtype: string; parameters: Parameters; weight: number; } export interface Accept extends Header<'accept'> { ranges: MediaRange[]; } export interface Accept_CH extends Header<'accept-ch'> { hints: string[]; } export interface Charset { charset: string; weight: number; } export interface Accept_Charset extends Header<'accept-charset'> { charsets: Charset[]; } export interface Encoding { coding: string; weight: number; } export interface Accept_Encoding extends Header<'accept-encoding'> { encodings: Encoding[]; } export interface Language { range: string[]; weight: number; } export interface Accept_Language extends Header<'accept-language'> { languages: Language[]; } export interface Accept_Ranges extends Header<'accept-ranges'> { ranges: string[]; } export interface Access_Control_Allow_Credentials extends Header<'access-control-allow-credentials'> { allow: boolean; } export interface Access_Control_Allow_Headers extends Header<'access-control-allow-headers'> { fields: string[]; } export interface Access_Control_Allow_Methods extends Header<'access-control-allow-methods'> { methods: string[]; } export interface Access_Control_Allow_Origin extends Header<'access-control_allow-origin'> { origin: string; } export interface Access_Control_Expose_Headers extends Header<'access-control-expose-headers'> { fields: string[]; } export interface Access_Control_Max_Age extends Header<'access-control-max-age'> { age: number; } export interface Access_Control_Request_Headers extends Header<'access-control-request-headers'> { fields: string[]; } export interface Access_Control_Request_Method extends Header<'access-control-request-method'> { method: string; } export interface Age extends Header<'age'> { secs: number; } export interface Allow extends Header<'allow'> { methods: string[]; } export interface ALPN extends Header<'alpn'> { protocols: string[]; } export interface Service { protocol: string; authority: string; parameters: Parameters; } export interface Alt_Svc extends Header<'alt-svc'> { services?: Service[]; clear?: true; } export interface AuthParam { name: string; value: string; } export interface Authentication_Info extends Header<'authentication-info'> { params: AuthParam[]; } export interface Authorization extends Header<'authorization'> { scheme: string; params?: AuthParam[]; token68?: string; } export type CacheDirective = [ name: string, value: string | string[] | number | null, ]; export interface Cache_Control extends Header<'cache-control'> { controls: CacheDirective[]; } export interface Connection extends Header<'connection'> { opts: string[]; } export interface LanguageTag { language: string | null; script: string | null; region: string | null; variant: string[]; extension: string[]; privateuse: string | null; } export interface Content_Language extends Header<'content-language'> { tags: LanguageTag[]; } export interface Content_Length extends Header<'content-length'> { length: number; } export interface Content_Location extends Header<'content-location'> { uri: string; absolute: boolean; } export interface Content_Range extends Header<'content-range'> { units: string; complete: number; // NaN if unknown first?: number; last?: number; unsatisfied?: boolean; // True if no first/last } export interface CSPValue { kind: 'scheme' | 'keyword' | 'nonce' | 'hash' | 'host' | 'token' | 'unknown'; value: string; } export interface CSPDirective { name: string; values: CSPValue[]; unknown?: true; } export interface Content_Security_Policy extends Header<'content-security-policy'> { directives: CSPDirective[]; } export interface Content_Security_Policy_Report_Only extends Header<'content-security-policy-report-only'> { directives: CSPDirective[]; } export interface Content_Type extends Header<'content-type'> { type: string; subtype: string; parameters: Parameters; } export interface CoopPolicyItem { item: string; params?: { [name: string]: string; }; } export interface Cross_Origin_Embedder_Policy extends Header<'cross-origin-embedder-policy'> { policy: CoopPolicyItem; } export interface Cross_Origin_Embedder_Policy_Report_Only extends Header<'cross-origin-embedder-policy-report-only'> { policy: CoopPolicyItem; } export interface Cross_Origin_Opener_Policy extends Header<'cross-origin-opener-policy'> { policy: CoopPolicyItem; } export interface Cross_Origin_Opener_Policy_Report_Only extends Header<'cross-origin-opener-policy-report-only'> { policy: CoopPolicyItem; } export interface Cross_Origin_Resource_Policy extends Header<'cross-origin-resource-policy'> { policy: string; } export interface Date extends Header<'date'> { date: Date; } export interface ETag extends Header<'etag'> { etag: string; } export interface Expectation { token: string; // Mostly 100-continue value?: string; // Not used yet to my knowledge parameters?: Parameters; // Not used yet to my knowledge } export interface Expect extends Header<'expect'> { expectations: Expectation[]; } export interface Expires extends Header<'expires'> { date: Date; } export interface From extends Header<'from'> { address: string; } export interface Host extends Header<'host'> { host: string; port: number | null; } export interface If_Match extends Header<'if-match'> { etags: string[]; } export interface If_Modified_Since extends Header<'if-modified-since'> { date: Date; } export interface If_None_Match extends Header<'if-none-match'> { etags: string[]; } export interface If_Range extends Header<'if-range'> { etag?: string; date?: Date; } export interface If_Unmodified_Since extends Header<'if-unmodified-since'> { date: Date; } export interface Last_Modified extends Header<'last-modified'> { date: Date; } export interface LinkValue { uri: URL; params: { [name: string]: string; }; } export interface Link extends Header<'link'> { links: LinkValue[]; } export interface Location extends Header<'location'> { uri: string; } export interface Max_Forwards extends Header<'max-forwards'> { max: number; } export interface NEL extends Header<'nel'> { json: unknown[]; } export interface PermissionsPolicyItem { item?: string; params?: { [name: string]: string; }; } export interface PermissionsPolicyItems { items: PermissionsPolicyItem[]; params?: { [name: string]: string; }; } export interface Permissions_Policy extends Header<'permissions-policy'> { directives: [name: string, items: PermissionsPolicyItems][]; } export interface Challenge { scheme: string; params?: AuthParam[]; token68?: string; } export interface Proxy_Authenticate extends Header<'proxy-authenticate'> { challenges: Challenge[]; } export interface Proxy_Authentication_Info extends Header<'proxy-authentication-info'> { params: AuthParam[]; } export interface Proxy_Authorization extends Header<'proxy-authorization'> { scheme: string; params?: AuthParam[]; token68?: string; } export interface RangeSpec { first?: number | null; last?: number | null; other?: string; } export interface Range extends Header<'range'> { units: string; ranges: RangeSpec[]; } export interface Referer extends Header<'referer'> { uri: string; absolute: boolean; } export interface Referrer_Policy extends Header<'referer-policy'> { tokens: string[]; } export interface Reporting_Endpoints extends Header<'reporting-endpoints'> { endpoints: [name: string, uri: string][]; } export interface Retry_After extends Header<'retry-after'> { date?: Date; seconds?: number; } export interface Product { product: string; version: string; } export interface Comment { comment: string; } export interface Server extends Header<'server'> { products: (Product | Comment)[]; } export interface TimingMetric { metric: string; params: { [name: string]: string; }; } export interface Server_Timing extends Header<'server-timing'> { metrics: TimingMetric[]; } export type CookieAttribute = [ name: string, value: string | number | Date | null, ]; export interface Set_Cookie extends Header<'set-cookie'> { cookieName: string; cookieValue: string; attributes: CookieAttribute[]; } export type STSDirective = [ name: string, value: string | number | null, ]; export interface Strict_Transport_Security extends Header<'strict-transport-security'> { directives: STSDirective[]; } export interface TransferEncoding { encoding: string; parameters: Parameters; weight: number; } export interface TE extends Header<'te'> { trailers: boolean; codings: TransferEncoding[]; } export interface Trailer extends Header<'trailer'> { fields: string[]; } export interface Protocol { name: string; version: string | null; } export interface Upgrade extends Header<'upgrade'> { protocols: Protocol[]; } export interface User_Agent extends Header<'user-agent'> { products: (Product | Comment)[]; } export interface Vary extends Header<'vary'> { fields: string[]; } export interface Path { protocol: string | null; version: string; name: string; port: number | null; } export interface Via extends Header<'via'> { path: Path[]; } export interface WWW_Authenticate extends Header<'www-authenticate'> { challenges: Challenge[]; } export type AnyHeader = Accept | Accept_CH | Accept_Charset | Accept_Encoding | Accept_Language | Accept_Ranges | Access_Control_Allow_Credentials | Access_Control_Allow_Headers | Access_Control_Allow_Methods | Access_Control_Allow_Origin | Access_Control_Expose_Headers | Access_Control_Max_Age | Access_Control_Request_Headers | Access_Control_Request_Method | Age | Allow | ALPN | Alt_Svc | Authentication_Info | Authorization | Cache_Control | Connection | Content_Encoding | Content_Language | Content_Length | Content_Location | Content_Range | Content_Security_Policy | Content_Security_Policy_Report_Only | Content_Type | Cross_Origin_Embedder_Policy | Cross_Origin_Embedder_Policy_Report_Only | Cross_Origin_Opener_Policy | Cross_Origin_Opener_Policy_Report_Only | Cross_Origin_Resource_Policy | Date | ETag | Expect | Expires | From | Host | If_Match | If_Modified_Since | If_None_Match | If_Range | If_Unmodified_Since | Last_Modified | Link | Location | Max_Forwards | NEL | Permissions_Policy | Proxy_Authenticate | Proxy_Authentication_Info | Proxy_Authorization | Range | Referer | Referrer_Policy | Reporting_Endpoints | Retry_After | Server | Server_Timing | Set_Cookie | Strict_Transport_Security | TE | Trailer | Upgrade | User_Agent | Vary | Via | WWW_Authenticate | UnknownHeader; export type Headers = AnyHeader[]; /** Provides information pointing to a location within a source. */ export interface Location { /** Line in the parsed source (1-based). */ readonly line: number; /** Column in the parsed source (1-based). */ readonly column: number; /** Offset in the parsed source (0-based). */ readonly offset: number; } /** * Anything that can successfully be converted to a string with `String()` * so that it can be used in error messages. * * The GrammarLocation class in Peggy is a good example. */ export interface GrammarSourceObject { readonly toString: () => string; /** * If specified, allows the grammar source to be embedded in a larger file * at some offset. */ readonly offset?: undefined | ((loc: Location) => Location); } /** * Most often, you just use a string with the file name. */ export type GrammarSource = string | GrammarSourceObject; /** The `start` and `end` position's of an object within the source. */ export interface LocationRange { /** * A string or object that was supplied to the `parse()` call as the * `grammarSource` option. */ readonly source: GrammarSource; /** Position at the beginning of the expression. */ readonly start: Location; /** Position after the end of the expression. */ readonly end: Location; } /** * Expected a literal string, like `"foo"i`. */ export interface LiteralExpectation { readonly type: "literal"; readonly text: string; readonly ignoreCase: boolean; } /** * Range of characters, like `a-z` */ export type ClassRange = [ start: string, end: string, ] export interface ClassParts extends Array<string | ClassRange> { } /** * Expected a class, such as `[^acd-gz]i` */ export interface ClassExpectation { readonly type: "class"; readonly parts: ClassParts; readonly inverted: boolean; readonly ignoreCase: boolean; } /** * Expected any character, with `.` */ export interface AnyExpectation { readonly type: "any"; } /** * Expected the end of input. */ export interface EndExpectation { readonly type: "end"; } /** * Expected some other input. These are specified with a rule's * "human-readable name", or with the `expected(message, location)` * function. */ export interface OtherExpectation { readonly type: "other"; readonly description: string; } export type Expectation = | AnyExpectation | ClassExpectation | EndExpectation | LiteralExpectation | OtherExpectation; /** * Pass an array of these into `SyntaxError.prototype.format()` */ export interface SourceText { /** * Identifier of an input that was used as a grammarSource in parse(). */ readonly source: GrammarSource; /** Source text of the input. */ readonly text: string; } export declare class SyntaxError extends globalThis.SyntaxError { /** * Constructs the human-readable message from the machine representation. * * @param expected Array of expected items, generated by the parser * @param found Any text that will appear as found in the input instead of * expected */ static buildMessage(expected: Expectation[], found?: string | null | undefined): string; readonly expected: Expectation[]; readonly found: string | null | undefined; readonly location: LocationRange; readonly name: string; constructor( message: string, expected: Expectation[], found: string | null, location: LocationRange, ); /** * With good sources, generates a feature-rich error message pointing to the * error in the input. * @param sources List of {source, text} objects that map to the input. */ format(sources: SourceText[]): string; } /** * Trace execution of the parser. */ export interface ParserTracer { trace: (event: ParserTracerEvent) => void; } export type ParserTracerEvent = { readonly type: "rule.enter"; readonly rule: string; readonly location: LocationRange } | { readonly type: "rule.fail"; readonly rule: string; readonly location: LocationRange } | { readonly type: "rule.match"; readonly rule: string; readonly location: LocationRange /** Return value from the rule. */ readonly result: unknown; }; export type StartRuleNames = "Headers" | "Headers_Loose" | "Header" | "Accept" | "Accept_CH" | "Accept_Charset" | "Accept_Encoding" | "Accept_Language" | "Accept_Ranges" | "Access_Control_Allow_Credentials" | "Access_Control_Allow_Headers" | "Access_Control_Allow_Methods" | "Access_Control_Allow_Origin" | "Access_Control_Expose_Headers" | "Access_Control_Max_Age" | "Access_Control_Request_Headers" | "Access_Control_Request_Method" | "Age" | "Allow" | "ALPN" | "Alt_Svc" | "Authentication_Info" | "Authorization" | "Cache_Control" | "Connection" | "Content_Encoding" | "Content_Language" | "Content_Length" | "Content_Location" | "Content_Range" | "Content_Security_Policy" | "Content_Security_Policy_Report_Only" | "Content_Type" | "Cross_Origin_Embedder_Policy" | "Cross_Origin_Embedder_Policy_Report_Only" | "Cross_Origin_Opener_Policy" | "Cross_Origin_Opener_Policy_Report_Only" | "Cross_Origin_Resource_Policy" | "Date" | "ETag" | "Expect" | "Expires" | "From" | "Host" | "If_Match" | "If_Modified_Since" | "If_None_Match" | "If_Range" | "If_Unmodified_Since" | "Last_Modified" | "Location" | "Link" | "Max_Forwards" | "NEL" | "Permissions_Policy" | "Proxy_Authenticate" | "Proxy_Authentication_Info" | "Proxy_Authorization" | "Range" | "Referer" | "Referrer_Policy" | "Retry_After" | "Reporting_Endpoints" | "Server" | "Server_Timing" | "Set_Cookie" | "Strict_Transport_Security" | "TE" | "Trailer" | "Upgrade" | "User_Agent" | "Vary" | "Via" | "WWW_Authenticate" | "Unknown_Header"; export interface ParseOptions<T extends StartRuleNames = "Headers"> { /** * String or object that will be attached to the each `LocationRange` object * created by the parser. For example, this can be path to the parsed file * or even the File object. */ readonly grammarSource?: GrammarSource; readonly startRule?: T; readonly tracer?: ParserTracer; // Internal use only: readonly peg$library?: boolean; // Internal use only: peg$currPos?: number; // Internal use only: peg$silentFails?: number; // Internal use only: peg$maxFailExpected?: Expectation[]; // Extra application-specific properties [key: string]: unknown; } export declare const StartRules: StartRuleNames[]; export declare const parse: typeof ParseFunction; // Overload of ParseFunction for each allowedStartRule declare function ParseFunction<Options extends ParseOptions<"Headers">>( input: string, options?: Options, ): Headers; declare function ParseFunction<Options extends ParseOptions<"Headers_Loose">>( input: string, options?: Options, ): Headers; declare function ParseFunction<Options extends ParseOptions<"Header">>( input: string, options?: Options, ): AnyHeader; declare function ParseFunction<Options extends ParseOptions<"Accept">>( input: string, options?: Options, ): Accept; declare function ParseFunction<Options extends ParseOptions<"Accept_CH">>( input: string, options?: Options, ): Accept_CH; declare function ParseFunction<Options extends ParseOptions<"Accept_Charset">>( input: string, options?: Options, ): Accept_Charset; declare function ParseFunction<Options extends ParseOptions<"Accept_Encoding">>( input: string, options?: Options, ): Accept_Encoding; declare function ParseFunction<Options extends ParseOptions<"Accept_Language">>( input: string, options?: Options, ): Accept_Language; declare function ParseFunction<Options extends ParseOptions<"Accept_Ranges">>( input: string, options?: Options, ): Accept_Ranges; declare function ParseFunction<Options extends ParseOptions<"Access_Control_Allow_Credentials">>( input: string, options?: Options, ): Access_Control_Allow_Credentials; declare function ParseFunction<Options extends ParseOptions<"Access_Control_Allow_Headers">>( input: string, options?: Options, ): Access_Control_Allow_Headers; declare function ParseFunction<Options extends ParseOptions<"Access_Control_Allow_Methods">>( input: string, options?: Options, ): Access_Control_Allow_Methods; declare function ParseFunction<Options extends ParseOptions<"Access_Control_Allow_Origin">>( input: string, options?: Options, ): Access_Control_Allow_Origin; declare function ParseFunction<Options extends ParseOptions<"Access_Control_Expose_Headers">>( input: string, options?: Options, ): Access_Control_Expose_Headers; declare function ParseFunction<Options extends ParseOptions<"Access_Control_Max_Age">>( input: string, options?: Options, ): Access_Control_Max_Age; declare function ParseFunction<Options extends ParseOptions<"Access_Control_Request_Headers">>( input: string, options?: Options, ): Access_Control_Request_Headers; declare function ParseFunction<Options extends ParseOptions<"Access_Control_Request_Method">>( input: string, options?: Options, ): Access_Control_Request_Method; declare function ParseFunction<Options extends ParseOptions<"Age">>( input: string, options?: Options, ): Age; declare function ParseFunction<Options extends ParseOptions<"Allow">>( input: string, options?: Options, ): Allow; declare function ParseFunction<Options extends ParseOptions<"ALPN">>( input: string, options?: Options, ): ALPN; declare function ParseFunction<Options extends ParseOptions<"Alt_Svc">>( input: string, options?: Options, ): any; declare function ParseFunction<Options extends ParseOptions<"Authentication_Info">>( input: string, options?: Options, ): Authentication_Info; declare function ParseFunction<Options extends ParseOptions<"Authorization">>( input: string, options?: Options, ): Authorization; declare function ParseFunction<Options extends ParseOptions<"Cache_Control">>( input: string, options?: Options, ): Cache_Control; declare function ParseFunction<Options extends ParseOptions<"Connection">>( input: string, options?: Options, ): Connection; declare function ParseFunction<Options extends ParseOptions<"Content_Encoding">>( input: string, options?: Options, ): Content_Encoding; declare function ParseFunction<Options extends ParseOptions<"Content_Language">>( input: string, options?: Options, ): Content_Language; declare function ParseFunction<Options extends ParseOptions<"Content_Length">>( input: string, options?: Options, ): Content_Length; declare function ParseFunction<Options extends ParseOptions<"Content_Location">>( input: string, options?: Options, ): Content_Location; declare function ParseFunction<Options extends ParseOptions<"Content_Range">>( input: string, options?: Options, ): Content_Range; declare function ParseFunction<Options extends ParseOptions<"Content_Security_Policy">>( input: string, options?: Options, ): Content_Security_Policy; declare function ParseFunction<Options extends ParseOptions<"Content_Security_Policy_Report_Only">>( input: string, options?: Options, ): Content_Security_Policy_Report_Only; declare function ParseFunction<Options extends ParseOptions<"Content_Type">>( input: string, options?: Options, ): Content_Type; declare function ParseFunction<Options extends ParseOptions<"Cross_Origin_Embedder_Policy">>( input: string, options?: Options, ): Cross_Origin_Embedder_Policy; declare function ParseFunction<Options extends ParseOptions<"Cross_Origin_Embedder_Policy_Report_Only">>( input: string, options?: Options, ): Cross_Origin_Embedder_Policy_Report_Only; declare function ParseFunction<Options extends ParseOptions<"Cross_Origin_Opener_Policy">>( input: string, options?: Options, ): Cross_Origin_Opener_Policy; declare function ParseFunction<Options extends ParseOptions<"Cross_Origin_Opener_Policy_Report_Only">>( input: string, options?: Options, ): Cross_Origin_Opener_Policy_Report_Only; declare function ParseFunction<Options extends ParseOptions<"Cross_Origin_Resource_Policy">>( input: string, options?: Options, ): Cross_Origin_Resource_Policy; declare function ParseFunction<Options extends ParseOptions<"Date">>( input: string, options?: Options, ): Date; declare function ParseFunction<Options extends ParseOptions<"ETag">>( input: string, options?: Options, ): ETag; declare function ParseFunction<Options extends ParseOptions<"Expect">>( input: string, options?: Options, ): Expect; declare function ParseFunction<Options extends ParseOptions<"Expires">>( input: string, options?: Options, ): Expires; declare function ParseFunction<Options extends ParseOptions<"From">>( input: string, options?: Options, ): From; declare function ParseFunction<Options extends ParseOptions<"Host">>( input: string, options?: Options, ): Host; declare function ParseFunction<Options extends ParseOptions<"If_Match">>( input: string, options?: Options, ): If_Match; declare function ParseFunction<Options extends ParseOptions<"If_Modified_Since">>( input: string, options?: Options, ): If_Modified_Since; declare function ParseFunction<Options extends ParseOptions<"If_None_Match">>( input: string, options?: Options, ): If_None_Match; declare function ParseFunction<Options extends ParseOptions<"If_Range">>( input: string, options?: Options, ): If_Range; declare function ParseFunction<Options extends ParseOptions<"If_Unmodified_Since">>( input: string, options?: Options, ): If_Unmodified_Since; declare function ParseFunction<Options extends ParseOptions<"Last_Modified">>( input: string, options?: Options, ): Last_Modified; declare function ParseFunction<Options extends ParseOptions<"Location">>( input: string, options?: Options, ): Location; declare function ParseFunction<Options extends ParseOptions<"Link">>( input: string, options?: Options, ): Link; declare function ParseFunction<Options extends ParseOptions<"Max_Forwards">>( input: string, options?: Options, ): Max_Forwards; declare function ParseFunction<Options extends ParseOptions<"NEL">>( input: string, options?: Options, ): NEL; declare function ParseFunction<Options extends ParseOptions<"Permissions_Policy">>( input: string, options?: Options, ): Permissions_Policy; declare function ParseFunction<Options extends ParseOptions<"Proxy_Authenticate">>( input: string, options?: Options, ): Proxy_Authenticate; declare function ParseFunction<Options extends ParseOptions<"Proxy_Authentication_Info">>( input: string, options?: Options, ): Proxy_Authentication_Info; declare function ParseFunction<Options extends ParseOptions<"Proxy_Authorization">>( input: string, options?: Options, ): Proxy_Authorization; declare function ParseFunction<Options extends ParseOptions<"Range">>( input: string, options?: Options, ): Range; declare function ParseFunction<Options extends ParseOptions<"Referer">>( input: string, options?: Options, ): Referer; declare function ParseFunction<Options extends ParseOptions<"Referrer_Policy">>( input: string, options?: Options, ): Referrer_Policy; declare function ParseFunction<Options extends ParseOptions<"Retry_After">>( input: string, options?: Options, ): Retry_After; declare function ParseFunction<Options extends ParseOptions<"Reporting_Endpoints">>( input: string, options?: Options, ): Reporting_Endpoints; declare function ParseFunction<Options extends ParseOptions<"Server">>( input: string, options?: Options, ): Server; declare function ParseFunction<Options extends ParseOptions<"Server_Timing">>( input: string, options?: Options, ): Server_Timing; declare function ParseFunction<Options extends ParseOptions<"Set_Cookie">>( input: string, options?: Options, ): Set_Cookie; declare function ParseFunction<Options extends ParseOptions<"Strict_Transport_Security">>( input: string, options?: Options, ): Strict_Transport_Security; declare function ParseFunction<Options extends ParseOptions<"TE">>( input: string, options?: Options, ): TE; declare function ParseFunction<Options extends ParseOptions<"Trailer">>( input: string, options?: Options, ): Trailer; declare function ParseFunction<Options extends ParseOptions<"Upgrade">>( input: string, options?: Options, ): Upgrade; declare function ParseFunction<Options extends ParseOptions<"User_Agent">>( input: string, options?: Options, ): User_Agent; declare function ParseFunction<Options extends ParseOptions<"Vary">>( input: string, options?: Options, ): Vary; declare function ParseFunction<Options extends ParseOptions<"Via">>( input: string, options?: Options, ): Via; declare function ParseFunction<Options extends ParseOptions<"WWW_Authenticate">>( input: string, options?: Options, ): WWW_Authenticate; declare function ParseFunction<Options extends ParseOptions<"Unknown_Header">>( input: string, options?: Options, ): Unknown_Header; declare function ParseFunction<Options extends ParseOptions<StartRuleNames>>( input: string, options?: Options, ): Headers | AnyHeader | Accept | Accept_CH | Accept_Charset | Accept_Encoding | Accept_Language | Accept_Ranges | Access_Control_Allow_Credentials | Access_Control_Allow_Headers | Access_Control_Allow_Methods | Access_Control_Allow_Origin | Access_Control_Expose_Headers | Access_Control_Max_Age | Access_Control_Request_Headers | Access_Control_Request_Method | Age | Allow | ALPN | any | Authentication_Info | Authorization | Cache_Control | Connection | Content_Encoding | Content_Language | Content_Length | Content_Location | Content_Range | Content_Security_Policy | Content_Security_Policy_Report_Only | Content_Type | Cross_Origin_Embedder_Policy | Cross_Origin_Embedder_Policy_Report_Only | Cross_Origin_Opener_Policy | Cross_Origin_Opener_Policy_Report_Only | Cross_Origin_Resource_Policy | Date | ETag | Expect | Expires | From | Host | If_Match | If_Modified_Since | If_None_Match | If_Range | If_Unmodified_Since | Last_Modified | Location | Link | Max_Forwards | NEL | Permissions_Policy | Proxy_Authenticate | Proxy_Authentication_Info | Proxy_Authorization | Range | Referer | Referrer_Policy | Retry_After | Reporting_Endpoints | Server | Server_Timing | Set_Cookie | Strict_Transport_Security | TE | Trailer | Upgrade | User_Agent | Vary | Via | WWW_Authenticate | Unknown_Header;