* inline stylesheets when loaded
* set empty link elements to loaded by default
* Clean up stylesheet manager
* Remove attribute mutation code
* Update packages/rrweb/test/record.test.ts
* Update packages/rrweb/test/record.test.ts
* Update packages/rrweb/test/record.test.ts
* Update packages/rrweb/scripts/repl.js
* Update packages/rrweb/test/record.test.ts
* Update packages/rrweb/src/record/index.ts
* Add todo
* Move require out of time sensitive assert
* Add waitForRAF, its more reliable than waitForTimeout
* Remove flaky tests
* Add recording stylesheets in iframes
* Remove variability from flaky test
* Make test more robust
* Fix naming
* Add test cases for inlineImages
* Add test cases for inlineImages
* Record iframe mutations cross page
* Test: should record images inside iframe with blob url after iframe was reloaded
* Handle negative ids in rrdom correctly
When iframes get inserted they create untracked elements, both on the dom and rrdom side.
Because they are untracked they generate negative numbers when fetching the id from mirror.
This creates a problem when comparing and fetching ids across mirrors.
This commit tries to get away from using negative ids as much as possible in rrdom's comparisons
* Update packages/rrdom/src/diff.ts
Co-authored-by: Yun Feng <yun.feng@anu.edu.au>
* Start unserialized nodes at -2
This way we don't accidentally think of them as mirror misses
* Set unserialized id starting number at -2
* Remove duplication
Co-authored-by: Yun Feng <yun.feng@anu.edu.au>
* refactor: eliminate eslint errors as many as I can
* refactor: fix more eslint errors in the record module
* LINT: fix @typescript-eslint/unbound-method
* LINT: fix all eslint errors in source code
* LINT: fix as many eslint warnings as possible
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* 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>