UNPKG

@worker-tools/parsed-html-rewriter

Version:

A DOM-based implementation of Cloudflare Worker's HTMLRewriter.

178 lines 8.98 kB
var _ParsedHTMLRewriterNode_node, _ParsedHTMLRewriterNode_doc, _ParsedHTMLRewriterElement_node, _ParsedHTMLRewriterText_text, _ParsedHTMLRewriterText_done, _ParsedHTMLRewriterComment_comm, _ParsedHTMLRewriterDocumentType_doctype, _ParsedHTMLRewriterEnd_doc; import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib"; export function append(m, k, v) { var _a; const vs = (_a = m.get(k)) !== null && _a !== void 0 ? _a : []; vs.push(v); return m.set(k, vs); } export async function* promiseToAsyncIterable(promise) { yield await promise; } export function* treeWalkerToIter(walker) { let node = walker.nextNode(); while (node) { yield node; node = walker.nextNode(); } } /** Fragment form string function that works with linkedom. */ function fragmentFromString(document, html) { const temp = document.createElement('template'); temp.innerHTML = html; return temp.content; } function replace(document, node, content, opts) { node === null || node === void 0 ? void 0 : node.replaceWith(...(opts === null || opts === void 0 ? void 0 : opts.html) ? fragmentFromString(document, content).childNodes // depends on DOM.Iterable : [content]); } export class ParsedHTMLRewriterNode { constructor(node, document) { _ParsedHTMLRewriterNode_node.set(this, void 0); _ParsedHTMLRewriterNode_doc.set(this, void 0); __classPrivateFieldSet(this, _ParsedHTMLRewriterNode_node, node, "f"); __classPrivateFieldSet(this, _ParsedHTMLRewriterNode_doc, document, "f"); } get removed() { return !__classPrivateFieldGet(this, _ParsedHTMLRewriterNode_doc, "f").contains(__classPrivateFieldGet(this, _ParsedHTMLRewriterNode_node, "f")); } before(content, opts) { var _a, _b; const before = __classPrivateFieldGet(this, _ParsedHTMLRewriterNode_doc, "f").createComment(''); (_b = (_a = __classPrivateFieldGet(this, _ParsedHTMLRewriterNode_node, "f")) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.insertBefore(before, __classPrivateFieldGet(this, _ParsedHTMLRewriterNode_node, "f")); replace(__classPrivateFieldGet(this, _ParsedHTMLRewriterNode_doc, "f"), before, content, opts); return this; } after(content, opts) { var _a, _b; const after = __classPrivateFieldGet(this, _ParsedHTMLRewriterNode_doc, "f").createComment(''); (_b = (_a = __classPrivateFieldGet(this, _ParsedHTMLRewriterNode_node, "f")) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.insertBefore(after, __classPrivateFieldGet(this, _ParsedHTMLRewriterNode_node, "f").nextSibling); replace(__classPrivateFieldGet(this, _ParsedHTMLRewriterNode_doc, "f"), after, content, opts); return this; } replace(content, opts) { replace(__classPrivateFieldGet(this, _ParsedHTMLRewriterNode_doc, "f"), __classPrivateFieldGet(this, _ParsedHTMLRewriterNode_node, "f"), content, opts); return this; } remove() { var _a; (_a = __classPrivateFieldGet(this, _ParsedHTMLRewriterNode_node, "f")) === null || _a === void 0 ? void 0 : _a.remove(); return this; } } _ParsedHTMLRewriterNode_node = new WeakMap(), _ParsedHTMLRewriterNode_doc = new WeakMap(); export class ParsedHTMLRewriterElement extends ParsedHTMLRewriterNode { constructor(node, document) { super(node, document); _ParsedHTMLRewriterElement_node.set(this, void 0); __classPrivateFieldSet(this, _ParsedHTMLRewriterElement_node, node, "f"); } get tagName() { return __classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f").tagName.toLowerCase(); } get attributes() { return [...__classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f").attributes].map(attr => [attr.name, attr.value]); } get namespaceURI() { return __classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f").namespaceURI; } getAttribute(name) { return __classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f").getAttribute(name); } hasAttribute(name) { return __classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f").hasAttribute(name); } setAttribute(name, value) { __classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f").setAttribute(name, value); return this; } removeAttribute(name) { __classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f").removeAttribute(name); return this; } prepend(content, opts) { return this.before(content, opts); } append(content, opts) { return this.after(content, opts); } setInnerContent(content, opts) { __classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f")[(opts === null || opts === void 0 ? void 0 : opts.html) ? 'innerHTML' : 'textContent'] = content; return this; } removeAndKeepContent() { var _a; (_a = __classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f")) === null || _a === void 0 ? void 0 : _a.replaceWith(...__classPrivateFieldGet(this, _ParsedHTMLRewriterElement_node, "f").childNodes); return this; } } _ParsedHTMLRewriterElement_node = new WeakMap(); export class ParsedHTMLRewriterText extends ParsedHTMLRewriterNode { constructor(text, document) { super(text, document); _ParsedHTMLRewriterText_text.set(this, void 0); _ParsedHTMLRewriterText_done.set(this, void 0); __classPrivateFieldSet(this, _ParsedHTMLRewriterText_text, text, "f"); __classPrivateFieldSet(this, _ParsedHTMLRewriterText_done, text === null, "f"); } get text() { var _a, _b; return (_b = (_a = __classPrivateFieldGet(this, _ParsedHTMLRewriterText_text, "f")) === null || _a === void 0 ? void 0 : _a.textContent) !== null && _b !== void 0 ? _b : ''; } get lastInTextNode() { return __classPrivateFieldGet(this, _ParsedHTMLRewriterText_done, "f"); } } _ParsedHTMLRewriterText_text = new WeakMap(), _ParsedHTMLRewriterText_done = new WeakMap(); export class ParsedHTMLRewriterComment extends ParsedHTMLRewriterNode { constructor(comm, document) { super(comm, document); _ParsedHTMLRewriterComment_comm.set(this, void 0); __classPrivateFieldSet(this, _ParsedHTMLRewriterComment_comm, comm, "f"); } get text() { var _a; return (_a = __classPrivateFieldGet(this, _ParsedHTMLRewriterComment_comm, "f").textContent) !== null && _a !== void 0 ? _a : ''; } set text(value) { __classPrivateFieldGet(this, _ParsedHTMLRewriterComment_comm, "f").textContent = value; } } _ParsedHTMLRewriterComment_comm = new WeakMap(); export class ParsedHTMLRewriterDocumentType { constructor(doctype) { _ParsedHTMLRewriterDocumentType_doctype.set(this, void 0); __classPrivateFieldSet(this, _ParsedHTMLRewriterDocumentType_doctype, doctype, "f"); } get name() { return __classPrivateFieldGet(this, _ParsedHTMLRewriterDocumentType_doctype, "f").name; } get publicId() { return __classPrivateFieldGet(this, _ParsedHTMLRewriterDocumentType_doctype, "f").publicId; } get systemId() { return __classPrivateFieldGet(this, _ParsedHTMLRewriterDocumentType_doctype, "f").systemId; } } _ParsedHTMLRewriterDocumentType_doctype = new WeakMap(); export class ParsedHTMLRewriterEnd { constructor(document) { _ParsedHTMLRewriterEnd_doc.set(this, void 0); __classPrivateFieldSet(this, _ParsedHTMLRewriterEnd_doc, document, "f"); } append(content, opts) { const after = __classPrivateFieldGet(this, _ParsedHTMLRewriterEnd_doc, "f").createComment(''); __classPrivateFieldGet(this, _ParsedHTMLRewriterEnd_doc, "f").insertBefore(after, null); replace(__classPrivateFieldGet(this, _ParsedHTMLRewriterEnd_doc, "f"), after, content, opts); return this; } } _ParsedHTMLRewriterEnd_doc = new WeakMap(); // function* ancestors(el: Node) { // while (el.parentElement) { // yield el.parentElement // el = el.parentElement // } // } // function root(el: Node): globalThis.HTMLElement | undefined { // const ancs = [...ancestors(el)] // return ancs[ancs.length - 1]; // } // function* zip<X, Y>(xs: Iterable<X>, ys: Iterable<Y>): IterableIterator<[X, Y]> { // const xit = xs[Symbol.iterator](); // const yit = ys[Symbol.iterator](); // while (true) { // const [xr, yr] = [xit.next(), yit.next()]; // if (xr.done || yr.done) break; // yield [xr.value, yr.value]; // } // } // /* Checks if this element or any of its parents matches a given `selector`. */ // function matchesAncestors(el: Element | null, selector: string): Element | null { // let curr = el; // while (curr != null) { // if (curr.matches(selector)) return curr; // curr = curr.parentElement; // } // return null; // } //# sourceMappingURL=support.js.map