dom-serializer
Version:
render domhandler DOM nodes to a string
72 lines • 3.23 kB
TypeScript
import type { AnyNode } from "domhandler";
/**
* Options for DOM serialization.
*/
export interface DomSerializerOptions {
/**
* Print an empty attribute's value.
* @default xmlMode
* @example With <code>emptyAttrs: false</code>: <code><input checked></code>
* @example With <code>emptyAttrs: true</code>: <code><input checked=""></code>
*/
emptyAttrs?: boolean;
/**
* Print self-closing tags for tags without contents. If `xmlMode` is set,
* this will apply to all tags. Otherwise, only tags that are defined as
* self-closing in the HTML specification will be printed as such.
* @default xmlMode
* @example With <code>selfClosingTags: false</code>: <code><foo></foo><br></br></code>
* @example With <code>xmlMode: true</code> and <code>selfClosingTags: true</code>: <code><foo/><br/></code>
* @example With <code>xmlMode: false</code> and <code>selfClosingTags: true</code>: <code><foo></foo><br /></code>
*/
selfClosingTags?: boolean;
/**
* Treat the input as an XML document; enables the `emptyAttrs` and
* `selfClosingTags` options.
*
* If the value is `"foreign"`, it will try to correct mixed-case attribute
* names.
* @default false
*/
xmlMode?: boolean | "foreign";
/**
* Encode characters reserved in HTML or XML in text and attribute values.
*
* If `xmlMode` is set or the value is not `'utf8'`, characters outside the
* ASCII range will also be encoded as numeric entities.
*
* **Security:** Setting this to `false` disables encoding of `<`, `>`, `&`,
* and (in attribute values) `'` — only `"` in attribute values is escaped.
* This is safe for the round-trip case (DOM was parsed with
* `decodeEntities: false`, so any markup characters in text or attribute
* values exist only as entity references), and unsafe otherwise. If text
* or attribute values in the DOM contain raw `<`, `>`, or `&`, those
* characters will appear literally in the output.
* @default `decodeEntities`
*/
encodeEntities?: boolean | "utf8";
/**
* Default for `encodeEntities`. Named to match the parser option of the
* same name so a single options object can be threaded through parse and
* serialize for a faithful round-trip — for example, cheerio parses with
* `decodeEntities: false` to preserve entity references and passes the
* same option here so they are not re-encoded.
*
* Despite the name, on the serializer this option controls *encoding*.
* Setting it to `false` carries the same caveat as `encodeEntities: false`
* — see that option.
* @default true
*/
decodeEntities?: boolean;
}
/**
* Renders a DOM node or an array of DOM nodes to a string.
*
* Can be thought of as the equivalent of the `outerHTML` of the passed
* node(s).
* @param node Node to be rendered.
* @param options Changes serialization behavior
*/
export declare function render(node: AnyNode | ArrayLike<AnyNode>, options?: DomSerializerOptions): string;
export default render;
//# sourceMappingURL=index.d.ts.map