* Update live-mode.md
`play` is superior in the case that there are existing events as it will utilize `discardPriorSnapshots` to skip unnecessary things.
* Apply formatting changes
* Update live-mode.md
tweak
Co-authored-by: eoghanmurray <eoghanmurray@users.noreply.github.com>
* Use config.liveMode to turn on liveMode in the timer
* Discussion of `startLive(1500)` was incorrect as startLive is based on timestamps, not playback offsets. Also reorder to introduce `addEvent` earlier
Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
* 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
* Use turbo instead of lerna
* Skip benchmark as it is unreliable when executed in parallel
* Strip port number from serialization, it can vary
* Add settimeout to virtual dom test
* Remove console.log and refactor blob:url serialization
* Include references in tsconfig to indicate which monorepo packages are being used
* Add stream setup
* Migrate project to es module
* Add reference to rrweb from rrdom
* Move jest config to ESM
* Setup basic WebRTC canvas streaming
* Cleanup and refactor WebRTC streaming
* Remove ? which isn't propper javascript
* Yarn lock
* Remove webrtc code from rrweb
* Add plugin hooks
Record/Replay plugins
`.getMirror` exposes the mirror to plugins
Replay plugins
`.onBuild` called whenever a node was added to the dom
* Expose plugins with server
* Use unminified version for tests
* Don't include simple-peer in rrweb main project
* Add canvas webrtc plugin
Streams contents of canvas via webrtc
* ignore tsconfig.tsbuildinfo
* Cleanup unused code
* type definition files are no longer committed
* Devtools off by default
* Extract .css into its own file
* Refactor plugin apis and fix multi canvas streaming support
* Add readme to rrweb canvas webrtc plugin
* Reference canvas-webrtc plugin in documentation
* Forbidden non-null assertion
* Remove linting of each project, yarn lint:report will do this
* Remove test code
* Cut down line length
* fix CI failure and improve the zh_CN doc
* Update packages/rrweb/src/plugins/canvas-webrtc/replay/index.ts
Co-authored-by: Yun Feng <yun.feng@anu.edu.au>
* Cleaner styling of replay
Co-authored-by: Yun Feng <yun.feng@anu.edu.au>
* Clean up stream.js based on @Mark-Fenng's feedback
* Remove duplicate send
Co-authored-by: Yun Feng <yun.feng@anu.edu.au>
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* CI: add a prettier GitHub action to format code automatically
* improve GitHub Action config and format some files
* Apply formatting changes
* CI: make the prettier action a standalone action
* Apply formatting changes
* CI: add push as new trigger event
Co-authored-by: Mark-Fenng <Mark-Fenng@users.noreply.github.com>
* Only record canvas when recordCanvas is true
* All should be compiled first
Makes recompiling+debugging a lot faster
* Add support for compiling web workes
Replaces @rollup/plugin-typescript for rollup-plugin-typescript2 as the former is incompatible with rollup-plugin-web-worker-loader
* Update yarn.lock
* Upgrade to typescript 4.5.5
* add support for replay of ImageBitmap in 2d canvas
* Snapshot canvases in a web-worker on FPS basis
* Fix performance of canvas recording and playback
* Wait for all images to be preloaded before checking results
* flatten base64 strings, as encoding isn't consistent
* Cleanup
* Add serializing to 2d canvases as well
* Disable blob serialize test
We don't have any code for it yet
* Upgrade @rollup/plugin-commonjs to 21.0.2
Fixes
https://linguinecode.com/post/import-export-appear-at-the-top-level
* Move canvas recording options to `sampling`
Based on: https://github.com/rrweb-io/rrweb/pull/859#discussion_r846582146
In this commit we switched the sandbox strategy to use iframe's
sandbox attribute. Indeed we do not need delegate event anymore,
but need to add some styles into the iframe.
The details were documented in the sandbox part of internal design.