2025-03-29 15:51:03 -04:00

148 lines
4.4 KiB
TypeScript

export declare enum ResultType {
BOM = 0,
PASSED = 1,
XML_PREFIX = 2,
META_TAG = 3,
XML_ENCODING = 4,
DEFAULT = 5
}
export declare const STRINGS: {
UTF8_BOM: Uint8Array;
UTF16LE_BOM: Uint8Array;
UTF16BE_BOM: Uint8Array;
UTF16LE_XML_PREFIX: Uint8Array;
UTF16BE_XML_PREFIX: Uint8Array;
XML_DECLARATION: Uint8Array;
ENCODING: Uint8Array;
META: Uint8Array;
HTTP_EQUIV: Uint8Array;
CONTENT: Uint8Array;
CONTENT_TYPE: Uint8Array;
CHARSET: Uint8Array;
COMMENT_START: Uint8Array;
COMMENT_END: Uint8Array;
};
export interface SnifferOptions {
/**
* The maximum number of bytes to sniff.
*
* @default 1024
*/
maxBytes?: number;
/**
* The encoding specified by the user.
*/
userEncoding?: string;
/**
* The encoding specified by the transport layer.
*/
transportLayerEncodingLabel?: string;
/**
* The default encoding to use.
*
* @default "windows-1252"
*/
defaultEncoding?: string;
}
export declare class Sniffer {
/** The maximum number of bytes to sniff. */
private readonly maxBytes;
/** The offset of the previous buffers. */
private offset;
private state;
private sectionIndex;
private attribType;
/**
* Indicates if the `http-equiv` is `content-type`.
*
* Initially `null`, a boolean when a value is found.
*/
private gotPragma;
private needsPragma;
private inMetaTag;
encoding: string;
resultType: ResultType;
private setResult;
constructor({ maxBytes, userEncoding, transportLayerEncodingLabel, defaultEncoding, }?: SnifferOptions);
private stateBegin;
private stateBeginLT;
private stateUTF16BE_XML_PREFIX;
private stateUTF16LE_XML_PREFIX;
private stateBOM16LE;
private stateBOM16BE;
private stateBOM8;
private stateBeforeTag;
/**
* We have seen a `<`, and now have to figure out what to do.
*
* Options:
* - `<meta`
* - Any other tag
* - A closing tag
* - `<!--`
* - An XML declaration
*
*/
private stateBeforeTagName;
private stateBeforeCloseTagName;
private stateCommentStart;
private stateCommentEnd;
/**
* Any section starting with `<!`, `<?`, `</`, without being a closing tag or comment.
*/
private stateWeirdTag;
/**
* Advances the section, ignoring upper/lower case.
*
* Make sure the section has left-over characters before calling.
*
* @returns `false` if we did not match the section.
*/
private advanceSectionIC;
/**
* Advances the section.
*
* Make sure the section has left-over characters before calling.
*
* @returns `false` if we did not match the section.
*/
private advanceSection;
private stateTagNameMeta;
private stateTagNameOther;
private stateBeforeAttribute;
private handleMetaAttrib;
private stateMetaAttribHttpEquiv;
private stateMetaAttribC;
private stateMetaAttribCharset;
private stateMetaAttribContent;
private stateMetaAttribAfterName;
private stateAnyAttribName;
private stateAfterAttributeName;
private quoteCharacter;
private readonly attributeValue;
private stateBeforeAttributeValue;
private stateMetaAttribHttpEquivValue;
private handleMetaContentValue;
private handleAttributeValue;
private stateAttributeValueUnquoted;
private findMetaContentEncoding;
private stateMetaContentValueUnquotedBeforeEncoding;
private stateMetaContentValueUnquotedBeforeValue;
private stateMetaContentValueUnquotedValueQuoted;
private stateMetaContentValueUnquotedValueUnquoted;
private stateMetaContentValueQuotedValueUnquoted;
private stateMetaContentValueQuotedValueQuoted;
private stateMetaContentValueQuotedBeforeEncoding;
private stateMetaContentValueQuotedAfterEncoding;
private stateMetaContentValueQuotedBeforeValue;
private stateAttributeValueQuoted;
private stateXMLDeclaration;
private stateXMLDeclarationBeforeEncoding;
private stateXMLDeclarationAfterEncoding;
private stateXMLDeclarationBeforeValue;
private stateXMLDeclarationValue;
write(buffer: Uint8Array): void;
}
/** Get the encoding for the passed buffer. */
export declare function getEncoding(buffer: Uint8Array, options?: SnifferOptions): string;
//# sourceMappingURL=sniffer.d.ts.map