├── .cache └── .gitkeep ├── .changeset ├── README.md ├── angry-turtles-provide.md ├── attribute-text-reductions.md ├── beige-olives-roll.md ├── blank-cherries-laugh.md ├── blank-dev-changset.md ├── brave-numbers-joke.md ├── breezy-cats-heal.md ├── breezy-mice-breathe.md ├── bright-socks-clap.md ├── calm-bulldogs-speak.md ├── calm-oranges-sin.md ├── chatty-cherries-train.md ├── chilled-penguins-sin.md ├── clean-plants-play.md ├── clean-shrimps-lay.md ├── cold-eyes-hunt.md ├── cold-hounds-teach.md ├── config.json ├── controller-finish-flag.md ├── cool-grapes-hug.md ├── cool-horses-bow.md ├── cuddly-bikes-fail.md ├── cuddly-readers-warn.md ├── curvy-apples-lay.md ├── curvy-balloons-brake.md ├── date-now-guard.md ├── dirty-pets-fly.md ├── dirty-rules-dress.md ├── efficiently-splitCssText-1603.md ├── efficiently-splitCssText-1640.md ├── eight-terms-hunt.md ├── eighty-teachers-smash.md ├── eleven-bobcats-peel.md ├── eleven-toys-vanish.md ├── empty-bikes-cheer.md ├── eslint-camelcase-devonly.md ├── event-single-wrap.md ├── fair-dragons-greet.md ├── fair-ducks-clean.md ├── famous-bobcats-push.md ├── fast-chefs-smell.md ├── fast-pets-exist.md ├── few-rockets-travel.md ├── few-turkeys-reflect.md ├── five-peas-lay.md ├── fix-adapt-css.md ├── fluffy-planes-retire.md ├── format-head-prettier.md ├── forty-elephants-attack.md ├── four-panthers-fly.md ├── fresh-cars-impress.md ├── fresh-spoons-drive.md ├── friendly-numbers-leave.md ├── fuzzy-mugs-march.md ├── giant-rats-chew.md ├── gold-apples-joke.md ├── gold-experts-type.md ├── gold-terms-look.md ├── great-cows-camp.md ├── grumpy-ways-own.md ├── happy-carrots-hide.md ├── hip-worms-relax.md ├── hungry-dodos-taste.md ├── inlineImage-maybeNot-crossOrigin.md ├── itchy-dryers-double.md ├── itchy-tables-compete.md ├── khaki-dots-bathe.md ├── kind-kids-design.md ├── large-ants-prove.md ├── last-jest-to-vitest.md ├── lazy-squids-draw.md ├── lazy-toes-confess.md ├── lemon-lamps-switch.md ├── light-fireants-exercise.md ├── little-radios-thank.md ├── little-suits-leave.md ├── loud-seals-raise.md ├── lovely-files-sparkle.md ├── lovely-pears-cross.md ├── lovely-students-boil.md ├── lucky-donuts-hammer.md ├── mean-tips-impress.md ├── metal-mugs-mate.md ├── mighty-ads-worry.md ├── mighty-bulldogs-begin.md ├── mighty-frogs-sparkle.md ├── modern-doors-watch.md ├── moody-dots-refuse.md ├── moody-experts-build.md ├── nasty-scissors-reply.md ├── nervous-buses-pump.md ├── nervous-kiwis-nail.md ├── nervous-mirrors-perform.md ├── nervous-poets-grin.md ├── nervous-tables-travel.md ├── new-snakes-call.md ├── nice-pugs-reply.md ├── no-neg-lookbehind.md ├── odd-onions-brush.md ├── old-dryers-hide.md ├── perfect-bulldogs-punch.md ├── perfect-dolls-grab.md ├── polite-olives-wave.md ├── pre.json ├── pretty-meals-flash.md ├── pretty-plums-rescue.md ├── pretty-schools-remember.md ├── proud-clocks-hope.md ├── proud-experts-jam.md ├── purple-carrots-film.md ├── rare-adults-sneeze.md ├── real-masks-explode.md ├── real-trains-switch.md ├── red-peaches-explode.md ├── rich-crews-protect.md ├── rich-dots-lay.md ├── rich-jars-remember.md ├── rotten-spies-enjoy.md ├── serious-ants-juggle.md ├── serious-eggs-greet.md ├── shadow-dom-unbusify.md ├── short-hounds-confess.md ├── shy-countries-rhyme.md ├── silent-plants-perform.md ├── silly-knives-chew.md ├── silver-pots-sit.md ├── silver-windows-float.md ├── simplifify-hover-replacement.md ├── single-style-capture.md ├── six-llamas-brush.md ├── sixty-impalas-laugh.md ├── skip-mask-check-on-leaf-elements.md ├── slimy-eagles-grow.md ├── small-hats-kneel.md ├── small-olives-arrive.md ├── smart-ears-refuse.md ├── smart-geckos-cover.md ├── smooth-papayas-boil.md ├── smooth-poems-bake.md ├── soft-worms-tan.md ├── spotty-bees-destroy.md ├── stupid-ghosts-help.md ├── swift-dancers-rest.md ├── swift-peas-film.md ├── swift-pots-search.md ├── textarea-inner-html.md ├── thin-vans-applaud.md ├── thirty-baboons-punch.md ├── three-baboons-bow.md ├── tidy-swans-repair.md ├── tidy-yaks-joke.md ├── tiny-buckets-love.md ├── tiny-candles-whisper.md ├── tiny-chairs-build.md ├── title-deanimate-option.md ├── tricky-panthers-guess.md ├── twenty-goats-kneel.md ├── twenty-lies-switch.md ├── twenty-planets-repeat.md ├── two-boats-boil.md ├── unlucky-mirrors-invite.md ├── violet-melons-itch.md ├── violet-zebras-cry.md ├── wicked-dolphins-tie.md ├── wicked-lions-return.md ├── wise-spiders-jog.md ├── witty-kids-talk.md ├── yellow-mails-cheat.md └── young-timers-grow.md ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ └── feature_request.yml ├── config.yml └── workflows │ ├── ci-cd.yml │ ├── release.yml │ └── style-check.yml ├── .gitignore ├── .markdownlint.yml ├── .npmignore ├── .prettierignore ├── .prettierrc ├── .puppeteerrc.cjs ├── .release-it.json ├── .vscode └── rrweb-monorepo.code-workspace ├── .yarn └── releases │ └── yarn-1.23.0-20220130.1630.cjs ├── .yarnrc.yml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── README.zh_CN.md ├── docs ├── development │ └── coding-style.md ├── observer.md ├── observer.zh_CN.md ├── recipes │ ├── canvas.md │ ├── canvas.zh_CN.md │ ├── console.md │ ├── console.zh_CN.md │ ├── cross-origin-iframes.md │ ├── cross-origin-iframes.zh_CN.md │ ├── custom-event.md │ ├── custom-event.zh_CN.md │ ├── customize-replayer.md │ ├── customize-replayer.zh_CN.md │ ├── dive-into-event.md │ ├── dive-into-event.zh_CN.md │ ├── export-to-video.md │ ├── export-to-video.zh_CN.md │ ├── index.md │ ├── index.zh_CN.md │ ├── interaction.md │ ├── interaction.zh_CN.md │ ├── live-mode.md │ ├── live-mode.zh_CN.md │ ├── optimize-storage.md │ ├── optimize-storage.zh_CN.md │ ├── pagination.md │ ├── pagination.zh_CN.md │ ├── plugin.md │ ├── plugin.zh_CN.md │ ├── record-and-replay.md │ └── record-and-replay.zh_CN.md ├── replay.md ├── replay.zh_CN.md ├── sandbox.md ├── sandbox.zh_CN.md ├── serialization.md ├── serialization.zh_CN.md └── styleguide.md ├── guide.md ├── guide.zh_CN.md ├── package.json ├── packages ├── all │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.ts │ ├── test │ │ ├── __snapshots__ │ │ │ └── cross-origin-iframe-packer.test.ts.snap │ │ ├── cross-origin-iframe-packer.test.ts │ │ ├── html │ │ │ └── blank.html │ │ └── utils.ts │ ├── tsconfig.json │ ├── vite.config.ts │ └── vitest.config.ts ├── packer │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── pack │ │ └── package.json │ ├── package.json │ ├── src │ │ ├── base.ts │ │ ├── index.ts │ │ ├── pack.ts │ │ └── unpack.ts │ ├── test │ │ ├── __snapshots__ │ │ │ └── packer.test.ts.snap │ │ └── packer.test.ts │ ├── tsconfig.json │ ├── unpack │ │ └── package.json │ └── vite.config.ts ├── plugins │ ├── rrweb-plugin-canvas-webrtc-record │ │ ├── CHANGELOG.md │ │ ├── Readme.md │ │ ├── package.json │ │ ├── src │ │ │ ├── index.ts │ │ │ ├── simple-peer-light.d.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── rrweb-plugin-canvas-webrtc-replay │ │ ├── CHANGELOG.md │ │ ├── Readme.md │ │ ├── package.json │ │ ├── src │ │ │ ├── index.ts │ │ │ ├── simple-peer-light.d.ts │ │ │ └── types.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── rrweb-plugin-console-record │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ ├── error-stack-parser.ts │ │ │ ├── index.ts │ │ │ └── stringify.ts │ │ ├── test │ │ │ ├── __snapshots__ │ │ │ │ └── index.test.ts.snap │ │ │ ├── html │ │ │ │ ├── index.ts │ │ │ │ └── log.html │ │ │ ├── index.test.ts │ │ │ └── stringify.test.ts │ │ ├── tsconfig.json │ │ ├── vite.config.ts │ │ └── vitest.config.ts │ ├── rrweb-plugin-console-replay │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── rrweb-plugin-sequential-id-record │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ └── rrweb-plugin-sequential-id-replay │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts ├── record │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.ts │ ├── test │ │ └── record.test.ts │ ├── tsconfig.json │ ├── vite.config.ts │ └── vitest.config.ts ├── replay │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.ts │ ├── test │ │ └── replay.test.ts │ ├── tsconfig.json │ ├── vite.config.ts │ └── vitest.config.ts ├── rrdom-nodejs │ ├── .gitignore │ ├── .vscode │ │ ├── extensions.json │ │ └── launch.json │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── document-nodejs.ts │ │ ├── index.ts │ │ └── polyfill.ts │ ├── test │ │ ├── document-nodejs.test.ts │ │ └── polyfill.test.ts │ ├── tsconfig.json │ ├── vite.config.js │ └── vitest.config.ts ├── rrdom │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── jest.config.js │ ├── package.json │ ├── src │ │ ├── diff.ts │ │ ├── document.ts │ │ ├── index.ts │ │ └── style.ts │ ├── test │ │ ├── __snapshots__ │ │ │ └── virtual-dom.test.ts.snap │ │ ├── diff.test.ts │ │ ├── diff │ │ │ └── dialog.test.ts │ │ ├── document.test.ts │ │ ├── html │ │ │ ├── iframe.html │ │ │ ├── main.html │ │ │ └── shadow-dom.html │ │ └── virtual-dom.test.ts │ ├── tsconfig.json │ ├── vite.config.js │ └── vitest.config.ts ├── rrvideo │ ├── CHANGELOG.md │ ├── README.md │ ├── README.zh_CN.md │ ├── demo │ │ └── demo.gif │ ├── jest.config.js │ ├── package.json │ ├── rrvideo.config.example.json │ ├── src │ │ ├── cli.ts │ │ └── index.ts │ ├── test │ │ ├── cli.test.ts │ │ ├── events │ │ │ └── example.ts │ │ └── tsconfig.json │ └── tsconfig.json ├── rrweb-player │ ├── .eslintignore │ ├── .eslintrc.cjs │ ├── .gitignore │ ├── .prettierignore │ ├── .release-it.json │ ├── .svelte-kit │ │ ├── ambient.d.ts │ │ ├── generated │ │ │ └── client │ │ │ │ ├── app.js │ │ │ │ ├── matchers.js │ │ │ │ └── nodes │ │ │ │ ├── 0.js │ │ │ │ └── 1.js │ │ ├── non-ambient.d.ts │ │ └── tsconfig.json │ ├── CHANGELOG.md │ ├── README.md │ ├── index.html │ ├── package.json │ ├── public │ │ ├── events.js │ │ └── global.css │ ├── src │ │ ├── Controller.svelte │ │ ├── Player.svelte │ │ ├── components │ │ │ └── Switch.svelte │ │ ├── main.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── svelte.config.js │ ├── tsconfig.json │ ├── tsconfig.node.json │ ├── vite-env.d.ts │ └── vite.config.ts ├── rrweb-snapshot │ ├── .gitignore │ ├── .release-it.json │ ├── CHANGELOG.md │ ├── README.md │ ├── jsr.json │ ├── package.json │ ├── src │ │ ├── css.ts │ │ ├── index.ts │ │ ├── rebuild.ts │ │ ├── snapshot.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── test │ │ ├── __snapshots__ │ │ │ └── integration.test.ts.snap │ │ ├── alt-css │ │ │ └── alt-style.css │ │ ├── css.test.ts │ │ ├── css │ │ │ ├── benchmark.css │ │ │ ├── style-with-import.css │ │ │ └── style.css │ │ ├── html │ │ │ ├── about-mozilla.html │ │ │ ├── background-clip-text.html │ │ │ ├── basic.html │ │ │ ├── block-element.html │ │ │ ├── compat-mode.html │ │ │ ├── cors-style-sheet.html │ │ │ ├── dialog.html │ │ │ ├── dynamic-stylesheet.html │ │ │ ├── form-fields.html │ │ │ ├── hover.html │ │ │ ├── iframe-inner.html │ │ │ ├── iframe.html │ │ │ ├── invalid-attribute.html │ │ │ ├── invalid-doctype.html │ │ │ ├── invalid-tagname.html │ │ │ ├── mask-text.html │ │ │ ├── monkey-patched-elements.html │ │ │ ├── picture-blob-in-frame.html │ │ │ ├── picture-blob.html │ │ │ ├── picture-in-frame.html │ │ │ ├── picture-with-inline-onload.html │ │ │ ├── picture.html │ │ │ ├── preload.html │ │ │ ├── shadow-dom.html │ │ │ ├── svg.html │ │ │ ├── video.html │ │ │ ├── with-relative-res.html │ │ │ ├── with-script.html │ │ │ ├── with-style-sheet-with-import.html │ │ │ └── with-style-sheet.html │ │ ├── iframe-html │ │ │ ├── frame1.html │ │ │ ├── frame2.html │ │ │ └── main.html │ │ ├── images │ │ │ ├── compat-bottom.png │ │ │ ├── compat-top-left.png │ │ │ ├── compat-top-right.png │ │ │ ├── robot.png │ │ │ ├── rrweb-favicon-20x20.png │ │ │ └── symbol-defs.svg │ │ ├── integration.test.ts │ │ ├── js │ │ │ └── a.js │ │ ├── rebuild.test.ts │ │ ├── snapshot.test.ts │ │ ├── stringify-stylesheet.bench.ts │ │ ├── utils.test.ts │ │ └── utils.ts │ ├── tsconfig.json │ ├── vite.config.js │ └── vitest.config.ts ├── rrweb │ ├── .gitignore │ ├── .release-it.json │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── rollup.config.js │ ├── rrweb-record │ │ └── package.json │ ├── rrweb-replay │ │ └── package.json │ ├── scripts │ │ ├── repl.js │ │ ├── stream.js │ │ └── utils.js │ ├── src │ │ ├── entries │ │ │ ├── record.ts │ │ │ └── replay.ts │ │ ├── index.ts │ │ ├── record │ │ │ ├── cross-origin-iframe-mirror.ts │ │ │ ├── error-handler.ts │ │ │ ├── iframe-manager.ts │ │ │ ├── index.ts │ │ │ ├── mutation.ts │ │ │ ├── observer.ts │ │ │ ├── observers │ │ │ │ └── canvas │ │ │ │ │ ├── 2d.ts │ │ │ │ │ ├── canvas-manager.ts │ │ │ │ │ ├── canvas.ts │ │ │ │ │ ├── serialize-args.ts │ │ │ │ │ └── webgl.ts │ │ │ ├── processed-node-manager.ts │ │ │ ├── shadow-dom-manager.ts │ │ │ ├── stylesheet-manager.ts │ │ │ └── workers │ │ │ │ ├── image-bitmap-data-url-worker.ts │ │ │ │ └── tsconfig.json │ │ ├── replay │ │ │ ├── canvas │ │ │ │ ├── 2d.ts │ │ │ │ ├── deserialize-args.ts │ │ │ │ ├── index.ts │ │ │ │ └── webgl.ts │ │ │ ├── dialog │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── machine.ts │ │ │ ├── media │ │ │ │ └── index.ts │ │ │ ├── smoothscroll.ts │ │ │ ├── styles │ │ │ │ ├── inject-style.ts │ │ │ │ └── style.css │ │ │ └── timer.ts │ │ ├── types.ts │ │ └── utils.ts │ ├── test │ │ ├── __snapshots__ │ │ │ ├── integration.test.ts.snap │ │ │ ├── record.test.ts.snap │ │ │ └── replayer.test.ts.snap │ │ ├── benchmark │ │ │ ├── dom-mutation.test.ts │ │ │ └── replay-fast-forward.test.ts │ │ ├── e2e │ │ │ ├── __image_snapshots__ │ │ │ │ ├── webgl-test-ts-test-e-2-e-webgl-test-ts-e-2-e-webgl-will-record-and-replay-a-webgl-image-1-snap.png │ │ │ │ └── webgl-test-ts-test-e-2-e-webgl-test-ts-e-2-e-webgl-will-record-and-replay-a-webgl-square-1-snap.png │ │ │ └── webgl.test.ts │ │ ├── events │ │ │ ├── adopted-style-sheet-modification.ts │ │ │ ├── adopted-style-sheet.ts │ │ │ ├── bad-style.ts │ │ │ ├── bad-textarea.ts │ │ │ ├── canvas-in-iframe.ts │ │ │ ├── custom-element-define-class.ts │ │ │ ├── dialog-playback.ts │ │ │ ├── document-replacement.ts │ │ │ ├── hover.ts │ │ │ ├── iframe-shadowdom-hover.ts │ │ │ ├── iframe.ts │ │ │ ├── input.ts │ │ │ ├── ordering.ts │ │ │ ├── scroll-with-parent-styles.ts │ │ │ ├── scroll.ts │ │ │ ├── selection.ts │ │ │ ├── shadow-dom.ts │ │ │ ├── style-sheet-rule-events.ts │ │ │ ├── style-sheet-text-mutation.ts │ │ │ ├── video-playback-on-full-snapshot.ts │ │ │ ├── video-playback.ts │ │ │ └── webgl.ts │ │ ├── html │ │ │ ├── assets │ │ │ │ ├── 1-minute-of-silence.mp3 │ │ │ │ ├── bunny-video.webm │ │ │ │ ├── robot.png │ │ │ │ ├── style.css │ │ │ │ └── webgl-utils.js │ │ │ ├── audio.html │ │ │ ├── benchmark-dom-mutation-add-and-move.html │ │ │ ├── benchmark-dom-mutation-add-and-remove.html │ │ │ ├── benchmark-dom-mutation-attributes.html │ │ │ ├── benchmark-dom-mutation-deep-nested.html │ │ │ ├── benchmark-dom-mutation-multiple-descendant-add.html │ │ │ ├── benchmark-dom-mutation.html │ │ │ ├── blank.html │ │ │ ├── block.html │ │ │ ├── blocked-unblocked.html │ │ │ ├── canvas-webgl-image.html │ │ │ ├── canvas-webgl-shader.html │ │ │ ├── canvas-webgl-square.html │ │ │ ├── canvas-webgl.html │ │ │ ├── canvas.html │ │ │ ├── dialog.html │ │ │ ├── empty.html │ │ │ ├── form.html │ │ │ ├── frame-image-blob-url.html │ │ │ ├── frame1.html │ │ │ ├── frame2.html │ │ │ ├── hello-world.html │ │ │ ├── ignore.html │ │ │ ├── image-blob-url.html │ │ │ ├── link.html │ │ │ ├── main.html │ │ │ ├── mask-text.html │ │ │ ├── move-node.html │ │ │ ├── mutation-observer.html │ │ │ ├── password.html │ │ │ ├── polyfilled-shadowdom-mutation.html │ │ │ ├── react-styled-components.html │ │ │ ├── select2.html │ │ │ ├── shadow-dom.html │ │ │ ├── shuffle.html │ │ │ ├── style.html │ │ │ └── video.html │ │ ├── integration.test.ts │ │ ├── machine.test.ts │ │ ├── record.test.ts │ │ ├── record │ │ │ ├── __snapshots__ │ │ │ │ ├── cross-origin-iframes.test.ts.snap │ │ │ │ ├── cross-origin-iframes.test.ts.snap.extra │ │ │ │ ├── dialog.test.ts.snap │ │ │ │ └── webgl.test.ts.snap │ │ │ ├── cross-origin-iframes.test.ts │ │ │ ├── dialog.test.ts │ │ │ ├── error-handler.test.ts │ │ │ ├── serialize-args.test.ts │ │ │ └── webgl.test.ts │ │ ├── replay │ │ │ ├── 2d-mutation.test.ts │ │ │ ├── __image_snapshots__ │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-closed-dialogs-show-nothing-1-snap.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-should-add-an-opened-dialog-with-show-modal-in-incremental-snapshot-alternative.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-should-add-an-opened-dialog-with-show-modal-in-incremental-snapshot.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-should-close-dialog-again-when-open-attribute-gets-removed.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-should-open-dialog-with-show-in-full-snapshot.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-should-open-dialog-with-show-modal-in-full-snapshot.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-should-open-dialog-with-show-modal.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-should-switch-between-show-and-show-modal.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-should-switch-between-show-modal-and-show.png │ │ │ │ ├── dialog-test-ts-test-replay-dialog-test-ts-dialog-show-the-dialog-when-open-attribute-gets-added.png │ │ │ │ ├── hover-test-ts-test-replay-hover-test-ts-replayer-hover-should-trigger-hover-on-mouse-down-1-snap.png │ │ │ │ ├── video-test-ts-test-replay-video-test-ts-video-will-be-paused-when-the-player-wasnt-started-yet-1-snap.png │ │ │ │ ├── video-test-ts-test-replay-video-test-ts-video-will-play-from-the-correct-moment-1-snap.png │ │ │ │ ├── video-test-ts-test-replay-video-test-ts-video-will-seek-to-the-correct-moment-1-snap.png │ │ │ │ ├── video-test-ts-test-replay-video-test-ts-video-will-seek-to-the-correct-moment-without-media-interaction-events-1-snap.png │ │ │ │ └── webgl-test-ts-test-replay-webgl-test-ts-replayer-webgl-should-output-simple-webgl-object-1-snap.png │ │ │ ├── deserialize-args.test.ts │ │ │ ├── dialog.test.ts │ │ │ ├── hover.test.ts │ │ │ ├── preload-all-images.test.ts │ │ │ ├── video.test.ts │ │ │ ├── webgl-mutation.test.ts │ │ │ └── webgl.test.ts │ │ ├── replayer.test.ts │ │ ├── rrdom.test.ts │ │ ├── util.test.ts │ │ └── utils.ts │ ├── tsconfig.json │ ├── vite.config.entries.js │ ├── vite.config.js │ └── vitest.config.ts ├── types │ ├── .gitignore │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ └── vite.config.js ├── utils │ ├── CHANGELOG.md │ ├── Readme.md │ ├── package.json │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ └── vite.config.js └── web-extension │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src │ ├── background │ │ └── index.ts │ ├── components │ │ ├── CircleButton.tsx │ │ └── SidebarWithHeader.tsx │ ├── content │ │ ├── index.ts │ │ └── inject.ts │ ├── manifest.json │ ├── options │ │ ├── App.tsx │ │ ├── index.html │ │ └── index.tsx │ ├── pages │ │ ├── App.tsx │ │ ├── Player.tsx │ │ ├── SessionList.tsx │ │ ├── index.html │ │ └── index.tsx │ ├── popup │ │ ├── App.tsx │ │ ├── Timer.tsx │ │ ├── index.tsx │ │ └── popup.html │ ├── public │ │ ├── icon128.png │ │ ├── icon16.png │ │ └── icon48.png │ ├── types.ts │ └── utils │ │ ├── channel.ts │ │ ├── index.ts │ │ └── storage.ts │ ├── tsconfig.json │ └── vite.config.ts ├── scripts └── lint-packages.sh ├── tsconfig.base.json ├── tsconfig.eslint.json ├── tsconfig.json ├── turbo.json ├── vite.config.default.ts ├── vitest.config.ts ├── vitest.workspace.ts └── yarn.lock /.cache/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rrweb-io/rrweb/fd9d2747c6a236975055a69165ccce640b029015/.cache/.gitkeep -------------------------------------------------------------------------------- /.changeset/README.md: -------------------------------------------------------------------------------- 1 | # Changesets 2 | 3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 | with multi-package repos, or single-package repos to help you version and publish your code. You can 5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 | 7 | We have a quick list of common questions to get you started engaging with this project in 8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) 9 | -------------------------------------------------------------------------------- /.changeset/angry-turtles-provide.md: -------------------------------------------------------------------------------- 1 | --- 2 | "rrweb-snapshot": patch 3 | --- 4 | 5 | Handle exceptions thrown from postcss when calling adaptCssForReplay 6 | -------------------------------------------------------------------------------- /.changeset/attribute-text-reductions.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb': patch 3 | --- 4 | 5 | Don't include redundant data from text/attribute mutations on just-added nodes 6 | -------------------------------------------------------------------------------- /.changeset/beige-olives-roll.md: -------------------------------------------------------------------------------- 1 | --- 2 | "rrweb-snapshot": patch 3 | "rrweb": patch 4 | --- 5 | 6 | Fix that the optional `maskInputFn` was being accidentally ignored during the creation of the full snapshot 7 | -------------------------------------------------------------------------------- /.changeset/blank-cherries-laugh.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/blank-dev-changset.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/brave-numbers-joke.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/breezy-cats-heal.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb': patch 3 | --- 4 | 5 | fix: createImageBitmap throws DOMException if source is 0 width or height 6 | -------------------------------------------------------------------------------- /.changeset/breezy-mice-breathe.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb': patch 3 | --- 4 | 5 | safely capture BigInt values with the console log plugin" 6 | -------------------------------------------------------------------------------- /.changeset/bright-socks-clap.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/calm-bulldogs-speak.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/calm-oranges-sin.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb': patch 3 | --- 4 | 5 | fix: Fix checking for `patchTarget` in `initAdoptedStyleSheetObserver` 6 | -------------------------------------------------------------------------------- /.changeset/chatty-cherries-train.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb': patch 3 | --- 4 | 5 | Fix the statement which is getting changed by Microbundle 6 | -------------------------------------------------------------------------------- /.changeset/chilled-penguins-sin.md: -------------------------------------------------------------------------------- 1 | --- 2 | "rrdom": patch 3 | --- 4 | 5 | Ignore invalid DOM attributes when diffing 6 | -------------------------------------------------------------------------------- /.changeset/clean-plants-play.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb': patch 3 | '@rrweb/types': patch 4 | --- 5 | 6 | Compact style mutation fixes and improvements 7 | 8 | - fixes when style updates contain a 'var()' on a shorthand property #1246 9 | - further ensures that style mutations are compact by reverting to string method if it is shorter 10 | -------------------------------------------------------------------------------- /.changeset/clean-shrimps-lay.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb': patch 3 | --- 4 | 5 | feat: Add `ignoreSelector` option 6 | 7 | Similar to ignoreClass, but accepts a CSS selector so that you can use any CSS selector. 8 | -------------------------------------------------------------------------------- /.changeset/cold-eyes-hunt.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrdom': patch 3 | --- 4 | 5 | Fix: rrdom bugs 6 | 7 | 1. Fix a bug in the diff algorithm. 8 | 2. Omit the 'srcdoc' attribute of iframes to avoid overwriting content. 9 | -------------------------------------------------------------------------------- /.changeset/cold-hounds-teach.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json", 3 | "changelog": ["@changesets/changelog-github", { "repo": "rrweb-io/rrweb" }], 4 | "commit": false, 5 | "fixed": [ 6 | [ 7 | "rrweb", 8 | "rrweb-snapshot", 9 | "rrdom", 10 | "rrdom-nodejs", 11 | "rrweb-player", 12 | "@rrweb/all", 13 | "@rrweb/replay", 14 | "@rrweb/record", 15 | "@rrweb/types", 16 | "@rrweb/packer", 17 | "@rrweb/utils", 18 | "@rrweb/web-extension", 19 | "rrvideo", 20 | "@rrweb/rrweb-plugin-console-record", 21 | "@rrweb/rrweb-plugin-console-replay", 22 | "@rrweb/rrweb-plugin-sequential-id-record", 23 | "@rrweb/rrweb-plugin-sequential-id-replay", 24 | "@rrweb/rrweb-plugin-canvas-webrtc-record", 25 | "@rrweb/rrweb-plugin-canvas-webrtc-replay" 26 | ] 27 | ], 28 | "linked": [], 29 | "access": "public", 30 | "baseBranch": "master", 31 | "updateInternalDependencies": "patch", 32 | "ignore": [] 33 | } 34 | -------------------------------------------------------------------------------- /.changeset/controller-finish-flag.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb-player': patch 3 | 'rrweb': patch 4 | --- 5 | 6 | Reset the finished flag in Controller `goto` instead of `handleProgressClick` so that it is properly handled if `goto` is called directly. 7 | -------------------------------------------------------------------------------- /.changeset/cool-grapes-hug.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrdom': patch 3 | --- 4 | 5 | Support `loop` in `RRMediaElement` 6 | -------------------------------------------------------------------------------- /.changeset/cool-horses-bow.md: -------------------------------------------------------------------------------- 1 | --- 2 | "@rrweb/rrweb-plugin-canvas-webrtc-record": patch 3 | "@rrweb/rrweb-plugin-canvas-webrtc-replay": patch 4 | "@rrweb/rrweb-plugin-sequential-id-record": patch 5 | "@rrweb/rrweb-plugin-sequential-id-replay": patch 6 | "@rrweb/rrweb-plugin-console-record": patch 7 | "@rrweb/rrweb-plugin-console-replay": patch 8 | "@rrweb/packer": patch 9 | "@rrweb/record": patch 10 | "@rrweb/replay": patch 11 | "@rrweb/all": patch 12 | --- 13 | 14 | Keep package version in sync with other packages 15 | -------------------------------------------------------------------------------- /.changeset/cuddly-bikes-fail.md: -------------------------------------------------------------------------------- 1 | --- 2 | "rrweb-snapshot": patch 3 | "rrweb": patch 4 | --- 5 | 6 | fix: duplicate textContent for style elements cause incremental style mutations to be invalid 7 | -------------------------------------------------------------------------------- /.changeset/cuddly-readers-warn.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/curvy-apples-lay.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb-snapshot': patch 3 | 'rrweb': patch 4 | --- 5 | 6 | Extend to run fixBrowserCompatibilityIssuesInCSS over inline stylesheets 7 | -------------------------------------------------------------------------------- /.changeset/curvy-balloons-brake.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/date-now-guard.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb': patch 3 | --- 4 | 5 | Guard against presence of older 3rd party javascript libraries which redefine Date.now() 6 | -------------------------------------------------------------------------------- /.changeset/dirty-pets-fly.md: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | -------------------------------------------------------------------------------- /.changeset/dirty-rules-dress.md: -------------------------------------------------------------------------------- 1 | --- 2 | 'rrweb-snapshot': minor 3 | --- 4 | 5 | Video and Audio elements now also capture `playbackRate`, `muted`, `loop`, `volume`. 6 | -------------------------------------------------------------------------------- /.changeset/efficiently-splitCssText-1603.md: -------------------------------------------------------------------------------- 1 | --- 2 | "rrweb-snapshot": patch 3 | "rrweb": patch 4 | --- 5 | 6 | Improve performance of splitCssText for 24 | 25 |
26 |This is a paragraph
33 | 34 |