* create rrdom package * test(rrdom): add unit tests for polyfill.ts * fix(rrweb snapshot): type check errors Errors are caused by the declaration similarity of @types/mocha and @types/jest if we install both of them in the whole project. * Set tagNames to upper case by default This mirrors the `Element.tagName` implementation: ``` For DOM trees which represent HTML documents, the returned tag name is always in the canonical upper-case form. For example, tagName called on a <div> element returns "DIV". ``` https://developer.mozilla.org/en-US/docs/Web/API/Element/tagName * Add workspace file * VSCode settings for rrdom tests * Add basic test for RRDocument * Only setup jest tests for rrdom * mock Node type and Event type for nodejs environment * test(rrdom): add snapshot for document.test.ts * fix issue of nwsapi import and add unit tests for rrdom * fix: querySelectorAll returns nothing when querying elements with ids and classNames * fix: error of unit test for Event polyfill Since Event class is built in nodejs after v15.0.0 * add a dummy implementation of canvas * add style element support * add unit test for style element Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
20 lines
582 B
TypeScript
20 lines
582 B
TypeScript
import { RRIframeElement, RRNode } from '../src/document-nodejs';
|
|
|
|
/**
|
|
* Print the RRDom as a string.
|
|
* @param rootNode the root node of the RRDom tree
|
|
* @returns printed string
|
|
*/
|
|
export function printRRDom(rootNode: RRNode) {
|
|
return walk(rootNode, '');
|
|
}
|
|
|
|
function walk(node: RRNode, blankSpace: string) {
|
|
let printText = `${blankSpace}${node.toString()}\n`;
|
|
for (const child of node.childNodes)
|
|
printText += walk(child, blankSpace + ' ');
|
|
if (node instanceof RRIframeElement)
|
|
printText += walk(node.contentDocument, blankSpace + ' ');
|
|
return printText;
|
|
}
|