htmlrewriter
Version:
Use Cloudflare HTMLRewriter in Node.js, Browser, Next.js and more
93 lines (81 loc) • 2.95 kB
TypeScript
// https://github.com/cloudflare/html-rewriter-wasm/blob/de05e01f225e6d4c316b19b9aae8b9aa68db9524/src/html_rewriter.d.ts#L67
export interface ContentTypeOptions {
html?: boolean
}
export class Element {
before(content: string, options?: ContentTypeOptions): this
after(content: string, options?: ContentTypeOptions): this
replace(content: string, options?: ContentTypeOptions): this
remove(): this
getAttribute(name: string): string | null
hasAttribute(name: string): boolean
setAttribute(name: string, value: string): this
removeAttribute(name: string): this
prepend(content: string, options?: ContentTypeOptions): this
append(content: string, options?: ContentTypeOptions): this
setInnerContent(content: string, options?: ContentTypeOptions): this
removeAndKeepContent(): this
readonly attributes: IterableIterator<[string, string]>
readonly namespaceURI: string
readonly removed: boolean
tagName: string
onEndTag(
handler: (this: this, endTag: EndTag) => void | Promise<void>,
): void
}
export class EndTag {
before(content: string, options?: ContentTypeOptions): this
after(content: string, options?: ContentTypeOptions): this
remove(): this
name: string
}
export class Comment {
before(content: string, options?: ContentTypeOptions): this
after(content: string, options?: ContentTypeOptions): this
replace(content: string, options?: ContentTypeOptions): this
remove(): this
readonly removed: boolean
text: string
}
export class TextChunk {
before(content: string, options?: ContentTypeOptions): this
after(content: string, options?: ContentTypeOptions): this
replace(content: string, options?: ContentTypeOptions): this
remove(): this
readonly lastInTextNode: boolean
readonly removed: boolean
readonly text: string
}
export class Doctype {
readonly name: string | null
readonly publicId: string | null
readonly systemId: string | null
}
export class DocumentEnd {
append(content: string, options?: ContentTypeOptions): this
}
export interface ElementHandlers {
element?(element: Element): void | Promise<void>
comments?(comment: Comment): void | Promise<void>
text?(text: TextChunk): void | Promise<void>
}
export interface DocumentHandlers {
doctype?(doctype: Doctype): void | Promise<void>
comments?(comment: Comment): void | Promise<void>
text?(text: TextChunk): void | Promise<void>
end?(end: DocumentEnd): void | Promise<void>
}
export interface HTMLRewriterOptions {
enableEsiTags?: boolean
}
export class HTMLRewriter {
constructor(
outputSink: (chunk: Uint8Array) => void,
options?: HTMLRewriterOptions,
)
on(selector: string, handlers: ElementHandlers): this
onDocument(handlers: DocumentHandlers): this
write(chunk: Uint8Array): Promise<void>
end(): Promise<void>
free(): void
}