Commit Graph

19 Commits

Author SHA1 Message Date
Yanzhen Yu
86beabd2bb resolve #1 add ignore and block strategy for privacy purpose 2026-04-01 12:00:00 +08:00
Yanzhen Yu
09f30d2a81 return stopper function as the result of record 2026-04-01 12:00:00 +08:00
Yanzhen Yu
20f27a3822 improve prevent default event when replay 2026-04-01 12:00:00 +08:00
Yanzhen Yu
fdcf1d0bb2 update dependencies
In this commit, we updated rrweb-snapshot to 0.6.0 which including
a breaking change in data structure.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
7a57784daf Implement #2: simulate hover event 2026-04-01 12:00:00 +08:00
Yanzhen Yu
c18626bf5a fix mutation filter in recorder and change the order of apply mutations in replayer
This change include two critical fix for both recorder and replayer.

In the recorder, previously we filter text and attribute mutations by check its target id,
but this was a wrong approach because removed node also has id at the callback moment.
We corrected this by checking whether the mirror map still has the target id in its keys.

In the replayer side, the issue was we got exceptions when calling insertBefore which says
the ref node was not the child node of the caller node. This will happen when the previous
or next sibling has been removed in the same callback but the previousId or nextId was
recorded.
After apply remove node mutations before add node mutations, we can make sure the removed
siblings will not exist in the mirror map when apply add node mutations. When we get node
from mirror map with an removed id, we will get null and pass it to insertBefore which
is valid.
As a side note, this apply order is safe because we ensured all the remove node mutations
do not include removing newly added nodes in the same callback.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
6ce32f7994 filter text and attributes mutations which target tot a removed node 2026-04-01 12:00:00 +08:00
Yanzhen Yu
7c35cb2f49 check added nodes from removed nodes and dropped nodes 2026-04-01 12:00:00 +08:00
Yanzhen Yu
aa3e2f02ed rewrite mutation observer handler with lazy child list calculation 2026-04-01 12:00:00 +08:00
Yanzhen Yu
487f1d0c9a add meta event and fix childList observer, also update related replayer 2026-04-01 12:00:00 +08:00
Yanzhen Yu
e040ae76c5 align id map by skip extra added nodes 2026-04-01 12:00:00 +08:00
Yanzhen Yu
4446e27899 fix scroll value and record viewport when loaded 2026-04-01 12:00:00 +08:00
Yanzhen Yu
41b9861fbf improve record method and bump 0.2.0 2026-04-01 12:00:00 +08:00
Yanzhen Yu
c96052d8a4 add input event observer and hook the value setter 2026-04-01 12:00:00 +08:00
Yanzhen Yu
ad2ac811a3 serialize newly added nodes and update id node map when childList changed 2026-04-01 12:00:00 +08:00
Yanzhen Yu
ee4fc3ce7e add scroll and viewport resize observers 2026-04-01 12:00:00 +08:00
Yanzhen Yu
7078ce2f2a add mouse interactions observer 2026-04-01 12:00:00 +08:00
Yanzhen Yu
61312a0ad0 add mouse movement observer 2026-04-01 12:00:00 +08:00
Yanzhen Yu
d2175eae87 change observed mutations into serializable records 2026-04-01 12:00:00 +08:00