* first commit
* rrvideo v0.1.0
First version of rrvideo.
1. Use as a Node.JS lib.
2. Use as a CLI.
Features are implemented via puppeteer, ffmpeg and rrweb-player.
* add readme
* update publish script
* add node env in cli file and change package.json bin to same like README (#4)
Co-authored-by: Xu Yinjie <xuyinjie@xiaobangtouzi.com>
* release 0.2.0
* fix#6 avoid assign undefined to config
* Fix: Solve the inconsistency between rrvideo and the real recorded page rendering when rendering the page with a headless browser (https://github.com/rrweb-io/rrvideo/pull/26)
Author: xujiujiu <906784584@qq.com>
---------
Co-authored-by: xujiujiu <906784584@qq.com>
* refactor rrvideo
1. refactor code
2. change monorepo config
3. remove separate TS dependencies
* add changeset
* fix: eslint errors
---------
Co-authored-by: Yanzhen Yu <yanzhen@smartx.com>
Co-authored-by: xyj <593500664@qq.com>
Co-authored-by: Xu Yinjie <xuyinjie@xiaobangtouzi.com>
Co-authored-by: xujiujiu <906784584@qq.com>
* Fix: processed-node-manager is created even in the environment that doesn't need a recorder
* apply Justin's suggestion
End the RAF loop when the recorder stops
* feat: Ensure password inputs are masked when switching type
Apply formatting changes
use data- attribute
ref: Ensure type is always lowercased
add changeset
* extract into util
* Apply formatting changes
* Extend the suppression of warnings to take account that a prior removal may not have been against the immediate parent of a subsequent removal, but rather some anscestor
* Create proud-experts-jam.md
* Apply formatting changes
* improve: mutation.ts, loop use Set replace Array
* improve: add a try-catch to utils.ts to make it robust
* Create yellow-mails-cheat.md
---------
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* feat: Ignore `autoplay` attribute on video/auto elements
This element leads to weird issues when replaying, so it's better to strip this out.
* add changeset
* fix check
fix typo
* Apply formatting changes
---------
Co-authored-by: mydea <mydea@users.noreply.github.com>
* Set userTriggered to false on Input attribute modifications
- the fact we are intercepting them via hook rather than an event suggests to me that they could well be programmatic
* Create young-timers-grow.md
* fix: Explicitly handle removed attributes
The attribute `value` can be null when a mutation observer triggers due to a removed attribute. This is currently not reflected by types and code.
* Apply formatting changes
* fix
* add changeset
* fix the statement which is getting changed by microbundle
* Create chatty-cherries-train.md
* fix formatting.
* fix position of comment
---------
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* Firefox fix: Allow the <head> and <body> to be added in two stages so that (presumably) stylesheet rules are ready to be applied when the body appears
The css which triggered the bug was simply
{
margin-left: 220px;
transition: margin-left .448s;
}
* Add a test case which can only be appreciated if you record against this file://, save the events to a html file, and then open the file in Firefox (without this PR applied)
* Apply formatting changes
* Ensure we don't apply this branch when using rrdom, where it is not necessary
* Apply formatting changes
* Rewrite insertion in order to be compatible with rrdom
Also easier to understand
* Delete transition.html
* Create grumpy-ways-own.md
---------
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* fix: Exclude `modulepreload` as well
We were only excluding `<link rel="preload" as="script" />` but we should include `rel="modulepreload"` as well
* Apply formatting changes
* Bump up all package versions together whenever any one version changes.
Keeps everything in sync to make it easy to see if you have the correct dependencies.
https://github.com/changesets/changesets/blob/main/docs/fixed-packages.md
* Empty changeset as this changes nothing for the packages them selves
* Bring @rrweb/web-extension version inline with other packages
* separate the extension version from package.json's to avoid errors
---------
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* add more check to rrdom to make diff algorithm more robust
* fix: selector match in iframe is case-insensitive
add try catch to some fragile points
* test: increase timeout value for Jest
* improve code style
* fix: failed to execute insertBefore on Node in the diff function
this happens when ids of doctype or html element are changed in the virtual dom
also improve the code quality
* refactor diff function to make the code cleaner
* fix: virtual nodes are passed to plugin's onBuild function
* refactor the diff function and adjust the order of diff work.
* call afterAppend hook in a consistent traversal order
* improve the performance of the "contains" function
reduce the complexity from O(n) to O(logn)
a specific benchmark is needed to add further
* add a real events for benchmark
* refactor: change the data structure of childNodes from array to linked list
* remove legacy code in rrweb package
* update unit tests
* update change log
* feat: add rrweb web-extension package
* refactor: make the extension suitable for manifest v3
* update tsconfig.json
* use version_name rather than recorder_version in manifest.json
* update manifest.json
* enable to keep recording after changing tabs
* enable to record between tabs and urls
* fix CI error
* try to fix CI error
* feat: add pause and resume buttons
* feat: add a link to new session after recording
* improve session list
* refactor: migrate session storage from chrome local storage to indexedDB
* feat: add pagination to session list
* fix: multiple recorders are started after pausing and resuming process
* fix: can't stop recording on firefox browser
* update type import of 'eventWithTime'
* fix CI error
* doc: add readme
* Apply suggestions from Justin's code review
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* refactor: make use of webNavigation API to implement recording consistent during page navigation
* fix firefox compatibility issue and add title to pages
* add mouseleave listener to enhance the recording liability
* fix firefox compatibility issue and improve the experience of recording resume after closing tabs
* update tsconfig
* upgrade vite-plugin-web-extension config to fix some bugs on facebook web page
* update import links
* refactor: cross tab recording mechanism
apply Justin's suggestion
* refactor: slipt util/index.ts into multiple files
* implement cross-origin iframe recording
* fix: regression of issue: ShadowHost can't be a string (issue 941)
* refactor shadow dom recording to make tests cover key code
* Apply formatting changes
* increase the node memory limitation to avoid CI failure
* Create lovely-pears-cross.md
* Apply formatting changes
* Update packages/web-extension/package.json
* Update .changeset/lovely-pears-cross.md
* update change logs
* delete duplicated property
---------
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* fix: duplicated elements in shadow doms
clean observers before taking new full snapshots
* add checker for replayer to make it stable when data has duplicated nodes
* apply review suggestions
* add change log
* Apply formatting changes
* update prettier to fit the master branch
---------
Co-authored-by: Mark-Fenng <Mark-Fenng@users.noreply.github.com>
1. When some same-origin iframes are nested in cross-origin iframes, their `rootId`s are wrong.
2. The property `rootId` is missing in serialized cross-origin iframes
* fix: error data while recording some websites are integrated with stripe
These websites will usually have an iframe with src "https://js.stripe.com/v3/m-outer-xxx.html"
* add test case for the bug
* fix: recordCrossOriginIframes: true does not work with pack/unpack fn
1. bugfix
2. add test case
3. add rrweb-all.js to the result of command: bundle:browser
4. make puppeteer headless in CI by default to increase the speed and stability
* Add test cases for bugs
* Fix shadow dom recording
When moving an element containing shadow dom
When adding an element to shadow dom before its attached to the dom
* Apply formatting changes
* Refactor in dom checking code
* Nodes don't get processed in more than one mutation buffer
* Constrain node mutations to one mutation buffer per request animation frame
* Make tests less flaky under heavy load
* Apply suggestions from code review
* Update packages/rrweb-snapshot/test/rebuild.test.ts
* Remove unused nodeSet
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* fix: adoptedStyleSheets in shadow doms are missed when a full snapshot is checked out after recording has started
* fix: avoid removing monkey patch of all existed shadow doms when take a new full snapshot
* Apply formatting changes
* Update packages/rrweb/test/record.test.ts
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* fix typo
* update outdated snapshot
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* fix: module error
refactor all suffix of bundled scripts with commonjs module from 'js' to cjs
error:
ReferenceError: exports is not defined in ES module scope
This file is being treated as an ES module because it has a '.js' file extension and '.../rrweb/package.json' contains "type": "module". To treat it as a CommonJS script, rename it to use the '.cjs' file extension.
* update jest config files