Commit Graph

16 Commits

Author SHA1 Message Date
re-fort
a0d82589b7 Enable to mask texts (#73)
* chore: reorder options

* feat: enable to mask texts

* feat: add the default mask function

* refactor: rename options to identify the difference between  mask text and mask input

* test: add tests about masking
2021-04-22 15:34:36 +08:00
Yanzhen Yu
9d6696befd add isShadow flag if a node is under shadow root 2021-03-28 17:49:41 +08:00
Eoghan Murray
14bdd67459 Add ability to reset the mapping id, to facilitate destructor in rrweb (rrwebRecord.stop) (#49) 2020-10-24 16:10:51 +08:00
Eoghan Murray
6728d12b3c Add a slimDOM option to strip out unnecessary parts of the DOM (#36)
* Add a `slimDOM` option to strip out unnecessary parts of the DOM in terms of replay

 - <script> tags in the <head> take up unnecessary storage space and are often injected semi randomly to become a source of unnecessary variation between recordings of the same thing
 - comment tags can be stripped out without affecting display
 - future: this option could also turn on more aggressive stripping, e.g. elements that are hidden by CSS (assuming we can handle them becoming visible after mutation events)

* Mark nodes ignored due to slimDOM option, so that they can also be ignored by the mutation observer in rrweb

* Introducing the `ignored` attribute violates the `serializedNodeWithId` type

* slimDOM: Strip out whitespace nodes from <head> element as they have no effect but take up space

 - these would otherwise have to be merged after <script> elements are removed; for statcounter usecase, removing
   <script> elements is no good if there is still a trace of their presence due to the white space (and hence a variant <head> node is still produced)
 - I explored a more radical stripping of all white space nodes, but there is a problem if parent node is <pre> or otherwise rendered with `white-space: pre` and similar.
   detecting applied styles with getComputedStyle would be very expensive (I haven't measured it though)

* Export IGNORED_NODE as a constant instead of relying on the hard-to-grok `-2`

* Remove <link rel=preload as=script> which are similarly as useless as <script> tags

* Make slimDOM configurable with the expecations that `slimDOMOptions: true` will only enable non-destructive options (so not all options may be turned on)

* Expand slimDOM to add options to remove more elements from the <head> that should not be necessary in the replayer context
2020-09-20 13:00:44 +08:00
Yanzhen Yu
3c406bd49f rename visit to visitSnapshot 2020-08-22 15:43:50 +08:00
Yanzhen Yu
9bf1ced656 add visit function for snapshot 2020-08-22 15:43:50 +08:00
Yanzhen Yu
2af6e7af7f export the transform attribute method 2019-11-09 15:28:04 +08:00
Yanzhen Yu
7ab5456b3e export add hover class method 2019-09-19 12:40:51 +08:00
Benoît Zugmeyer
5697c689d9 reuse serialized nodes ids (#12)
* reuse serialized nodes ids

With this patch, each DOM node keeps its id during its existence. This
allows to apply RRWeb events to previous snapshots if needed.

`resetId` has been removed because it loses its meaning: calling it
would not reset the existing nodes ids anymore, only the new ones.

Since we don't reset the id anymore, we may exhaust the available ids
quicker, but Number.MAX_SAFE_INTEGER (2 ** 53 - 1) is pretty large, so I
doubt this'll cause any problem.

* improv TS typing

The `nAsINode` variable was not very elegant.  Simplify this by removing
the cast, and make the INode interface compatible with Node.

* update typings
2019-05-21 17:55:43 +08:00
Yanzhen Yu
508bbdfc26 refactor rebuild implementation which mount DOM onto the target document object 2018-10-22 10:34:23 +08:00
Yanzhen Yu
43b2290f5f export reset id function 2018-10-18 16:13:59 +08:00
Yanzhen Yu
d59ba817cb export serializeNodeWithId so rrweb could serialize newly added nodes 2018-10-09 10:51:30 +08:00
Yanzhen Yu
978e12b089 add strict null check and fix codes 2018-10-08 11:20:48 +08:00
Yanzhen Yu
3edd364c3b basic rebuild implementation 2018-09-30 15:26:00 +08:00
Yanzhen Yu
819cf3062e basic snapshot implementation 2018-09-30 13:44:13 +08:00
Yanzhen Yu
3c6e07117a init the repo 2018-09-30 10:32:44 +08:00