gitextract_di9qjh7g/ ├── .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 │ ├── brave-walls-shine.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-dolphins-approve.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 │ ├── docs-install-guidance.md │ ├── efficiently-splitCssText-1603.md │ ├── efficiently-splitCssText-1640.md │ ├── eight-terms-hunt.md │ ├── eight-years-hope.md │ ├── eighty-teachers-smash.md │ ├── eleven-bobcats-peel.md │ ├── eleven-toys-vanish.md │ ├── empty-bikes-cheer.md │ ├── empty-devonly-template.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 │ ├── healthy-glasses-shout.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-beans-destroy.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 │ ├── lucky-trainers-joke.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-actors-jam.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 │ ├── quiet-actors-mate.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 │ ├── rich-scissors-hide.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 │ ├── slimdom-defaults-refactor.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 │ ├── spotty-emus-listen.md │ ├── stupid-ghosts-help.md │ ├── swift-dancers-rest.md │ ├── swift-peas-film.md │ ├── swift-pots-search.md │ ├── tender-foxes-rest.md │ ├── textarea-inner-html.md │ ├── thin-vans-applaud.md │ ├── thirty-baboons-punch.md │ ├── thirty-shirts-grow.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-flies-attend.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 │ ├── wet-bottles-flash.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 │ ├── scripts/ │ │ ├── measure-bundle-sizes.js │ │ └── render-bundle-size-comment.js │ └── workflows/ │ ├── ci-cd.yml │ ├── eslint-check.yml │ ├── pr-checks-privileged.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 ├── SECURITY.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/ │ │ ├── .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/ │ │ │ │ └── dialog.test.ts │ │ │ ├── diff.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 │ ├── 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 │ ├── rrvideo/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── README.zh_CN.md │ │ ├── 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/ │ │ ├── .gitignore │ │ ├── .release-it.json │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── 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/ │ │ │ │ └── webgl.test.ts │ │ │ ├── events/ │ │ │ │ ├── adopted-style-sheet-empty-replace.ts │ │ │ │ ├── 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 │ │ │ │ ├── nested-style-declaration.ts │ │ │ │ ├── ordering.ts │ │ │ │ ├── scroll-with-parent-styles.ts │ │ │ │ ├── scroll.ts │ │ │ │ ├── selection.ts │ │ │ │ ├── shadow-dom.ts │ │ │ │ ├── style-declaration-missing-rule.ts │ │ │ │ ├── style-sheet-rule-events.ts │ │ │ │ ├── style-sheet-text-mutation.ts │ │ │ │ ├── video-playback-on-full-snapshot.ts │ │ │ │ ├── video-playback.ts │ │ │ │ └── webgl.ts │ │ │ ├── html/ │ │ │ │ ├── assets/ │ │ │ │ │ ├── bunny-video.webm │ │ │ │ │ ├── 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/ │ │ │ │ ├── __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 │ │ │ ├── record.test.ts │ │ │ ├── replay/ │ │ │ │ ├── 2d-mutation.test.ts │ │ │ │ ├── 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 │ ├── 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/ │ │ │ │ ├── benchmark.css │ │ │ │ ├── style-with-import.css │ │ │ │ └── style.css │ │ │ ├── css.test.ts │ │ │ ├── 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 │ │ │ ├── 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 │ ├── 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 │ │ ├── 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