-
-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support Salesforce LWC HTML Shadow DOM web component recording #118
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* Add support for capturing media attributes in rrweb-snapshot * Add loop to mediaInteractionParam * Add support for loop in RRMediaElement * Add support for recording loop attribute on media elements * Update video playback and fix bugs * Update cross-origin iframe media attributes and player state
* Fix known issues * Run format * Fix linting errors * Add comment in code for source of match logic * Add changeset
…xt" (#1369) * Add "types" field to fix error when using "moduleResolution": "NodeNext". * Add changeset.
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* better splitting of selectors - overlapping with #1401 * Add test from example at PostHog/posthog#21427 * ignore brackets inside selector strings * Add another test as noticed that it's possible to escape strings * Ensure we are ignoring commas within strings Co-authored-by: Eoghan Murray <[email protected]>
…sion (#1441) performance: remove a nested function call and an object clone during event emission - rename `event` to `eventWithoutTime`, but maintain backwards compatibility - `eventWithTime` (with time) could be renamed to `event` in a future version This is an extension of PR #1339 authored by: mydea <[email protected]>
* Ensure there is separation of timestamps so mutations can be evaluated separately - was failing in the github build process probably due to higher perf * Remove space from test file * Create curvy-balloons-brake.md --------- Co-authored-by: Justin Halsall <[email protected]>
perf(snapshot): avoid costly generation of <a> element on each call to `getHref`, instead cache an anchor element and reuse it's href attributed --------- Co-authored-by: Eoghan Murray <[email protected]>
…later modified (#1467) * Fix that blob urls persist on the shared anchor element and can't be later modified * Create nervous-kiwis-nail.md
Some dev improvements: * Add .editorconfig config file https://editorconfig.org/ * move the singleQuote spec into .editorconfig and add old .changesets/*.md to .prettierignore so that we don't incorrectly reformat new changeset files to single quote from the double quote which they can be autogenerated with in github * .gitignore Ignore emacs chaff files * Add `yarn format:head` a convenience command to run prettier against just those files in the head commit * Some mention of `yarn format` in the docs * Fix some test html closing tags; authoring mistakes, rather than deliberately malformed html — picked up by an explicit `yarn prettier --write '**/*.html'`
* Fix that the `.replace()` function only replaces the first occurrence * This should have been included in #1174 * Create fast-pets-exist.md
This work is to try to provide support where rrweb might be included in applications with various tools that might override Array.from so that the 2nd parameter (the map function) will always work for rrweb. Co-authored-by: Michael Dellanoce <[email protected]>
* Fix and test for bug #1457 (Uncaught SyntaxError: Regular expression too large) - see test case which is extracted from a real world css file; the selector regex was able to traverse the curly brace as when looking for quotes, it wasn't taking into account that the start quote could be escaped * Apply formatting changes * Create fair-ducks-clean.md * Fix @import regex bit which was stopping consumption in the middle of a url - need to consume quotes. Thanks [email protected] for reporting and isolating this case --------- Co-authored-by: eoghanmurray <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
…(#1468) Setting of the `crossorigin` attribute is not necessary for same-origin images, and causes an immediate image reload (albeit from cache) necessitating the use of a load event listener which subsequently mutates the snapshot. This change allows us to avoid the mutation of the snapshot for the same-origin case. * Modify inlineImages test to remove delay and show that we can inline images without mutation * Add an explicit test for when the `image.crossOrigin = 'anonymous';` method is necessary. Uses a combination of about:blank and our test server to simulate a cross-origin context * Other test changes: there were some spurious rrweb mutations being generated by the addition of the crossorigin attribute that are now elimnated from the rrweb/__snapshots__/integration.test.ts.snap after this PR - this is good
fix for options `recordCanvas: true`: * replace document.createElement with doc.createElement in rrweb-snapshot code * Eoghan: add a regression test to prevent future accidental use of `document` instead of `doc`. This test can be excised if a new feature can only be run in the browser and not in the jsdom environment
* Older versions of Safari 16 don't support lookbehind assertions - https://caniuse.com/js-regexp-lookbehind * Refactor to show the similarity between these two regexes * Apply formatting changes * Create no-neg-lookbehind.md --------- Co-authored-by: eoghanmurray <[email protected]>
* Refactor to preclude the need for a continuous raf loop * Apply formatting changes * Create shadow-dom-unbusify.md --------- Co-authored-by: eoghanmurray <[email protected]>
…ure (#1489) * perf(mutation): add deep tree benchmark * perf(mutation): use iterative procedure * perf(mutation): run formatter * perf(mutation): add changeset
* Chore: Add move most types from rrweb to @rrweb/types package * Split off type imports * Split off type import to its own line * Get vite to generate type definitions * Apply formatting changes * noEmit not allowed in tsconfig, moved it to build step * Migrate rrdom-nodejs build to vite * Apply formatting changes * Migrate rrweb-snapshot to vite * Unify configs * Chore: Migrate rrdom to vite Turns out what we where doing by overwriting `public textContent: string | undefined` as a getter in a subclass is something that isn't allowed in typescript. Because we where using `// @ts-ignore` to hide this error our bundler chose to allow the overwrite. Vite choses to disallow the overwrite making all subclasses' `textContent` undefined. To mitigate this we're using an abstract class, which does allow sub classes to decide if they wan't to use getters or not. * Chore: Migrate rrweb to vite WIP * build:browser was removed (for now) * BREAKING: moved rrweb-plugin-console to its own npm module This removes console from rrweb-all.js * Support cjs files in startServer * Move canvas-webrtc plugin to its own package * Chore: move sequential-id plugin to its own package * Chore: Configure rrweb's vite bundling * `Id` had lowercase `d` before, making it lowercase again * Test: Move console tests to their own package * remove unused utils from rrdom * pull in latest version of master something when wrong earlier when resolving merge conflicts, this should be correct * Fix type casting issue in diff.ts * Fix typo * Fix duplicate entries in package.json and tsconfig.json * Apply formatting changes * Update dependencies in package.json files * Update dependencies to use Vite 5.2.8 in package.json files * Get tests passing for rrdom `apply virtual style rules to node` tests need to be moved to rrweb to avoid circular dependencies * Fix image loading issue in integration tests * Move pack/unpack to its own @rrweb/packer module * Get tests to work in rrdom-nodejs * Port tests in rrweb-snapshot to vitest and fix them * Fix tests for rrweb-plugin-console-record * Add @rrweb/all package * Fix publint and attw errors for rrdom and @rrweb/types * Use shared vitest.config.ts in rrweb-snapshot package * Fix publint and attw issues for rrweb-snapshot * Export `ReplayPlugin` type directly from rrweb * Fix publint and attw issues for packages * Fix publint & attw issue. I was bumping into this issue: https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/3729bc2a3ca2ef7dda5c22fef81f89e1abe5dacf/docs/problems/NoResolution.md And had to choose one of these three methods described here: https://github.com/andrewbranch/example-subpath-exports-ts-compat?tab=readme-ov-file#typescript-friendly-strategies-for-packagejson-subpath-exports-compatibility And I ended up going for the method described here: https://github.com/andrewbranch/example-subpath-exports-ts-compat/tree/1ffe3425b0a7ad8ecdf3c373f76f431ee341366b/examples/node_modules/package-json-redirects#package-json-redirects The redirect method seemed the least invasive and most effective. * Fix publint & attw issue. I was bumping into this issue: https://github.com/arethetypeswrong/arethetypeswrong.github.io/blob/3729bc2a3ca2ef7dda5c22fef81f89e1abe5dacf/docs/problems/NoResolution.md And had to choose one of these three methods described here: https://github.com/andrewbranch/example-subpath-exports-ts-compat?tab=readme-ov-file#typescript-friendly-strategies-for-packagejson-subpath-exports-compatibility And I ended up going for the method described here: https://github.com/andrewbranch/example-subpath-exports-ts-compat/tree/1ffe3425b0a7ad8ecdf3c373f76f431ee341366b/examples/node_modules/package-json-redirects#package-json-redirects The redirect method seemed the least invasive and most effective. * move some rrdom tests that require rrweb to rrweb package * Use pre-jest 29 syntax for snapshotting * get rrweb passing publint and attw * const enum does not work with isolated modules flag * Fix script tag type in webgl.test.ts.snap and update rrweb.umd.cjs path in webgl.test.ts * Fix paths * Move tests for console record plugin and fix bundle path * Fix tests for rrweb * pack integration tests were moved to @rrweb/all * Update rrweb bundle path in test files * Fix flaky scroll emit from test * Migrate rrweb's tests over to vitest and make them pass * Make sure benchmarks & updating tests work * Remove jest from rrweb * Fix paths * always use rrweb's own cssom * Update tsconfig.json for rrweb-plugin-sequential-id-record Fixes this error: Error: @rrweb/rrweb-plugin-sequential-id-record:prepublish: tsconfig.json(9,5): error TS6377: Cannot write file '/home/runner/work/rrweb/rrweb/tsconfig.tsbuildinfo' because it will overwrite '.tsbuildinfo' file generated by referenced project '/home/runner/work/rrweb/rrweb/packages/rrweb' * Add tsbuildinfo config to extended tsconfig files * Move rrdom over to vitest * Apply formatting changes * Update rrweb imports to use the new package structure * extend rrweb-snapshot's tsconfig from monorepo base config * extend @rrweb/types's tsconfig from monorepo base config * extend rrdom's tsconfig from monorepo base config * extend rrdom-nodejs's tsconfig from monorepo base config * extend web-extension's tsconfig from monorepo base config * unify tsconfigs * Continue when tests fail * Add stricter type checking * Add check-types global command * remove jest * Remove unused code * Add check-types command to build script * Fix linting issues * Add setup Chrome action for CI/CD workflow * Update puppeteer version in package.json for rrweb * Update Chrome setup in CI/CD workflow * Update Chrome setup in CI/CD workflow * Add Chrome setup and test cache location * Update CI/CD workflow to test chrome cache location * Add chrome installation step to CI/CD workflow * Update Puppeteer configuration for headless testing * Update dependencies and workflow configuration * Use same version of chrome on CI as is run locally * Use version of chrome that seems to work with rrdom tests * Try using puppeteerrc to define chrome version * Add .cache directory to .gitignore * Move global flag to vitest config * Update puppeteer version to 20.9.0 * Update console log messages in rrweb-plugin-console-record for new puppeteer version * Remove redundant Chrome setup from CI/CD workflow * Add minification and umd for all built files * Update import paths for rrweb dist files * Add @rrweb/replay and @rrweb/record * Add script to lint packages * Apply formatting changes * exclude styles export from typescript package type checking * WIP Move rrweb-player over to vite * Apply formatting changes * chore: Update rrweb plugin import paths * Remove rollup from rrweb-player * Fix typing issues * Fix typing issues * chore: Update rrweb-player to use vite for build process * Apply formatting changes * chore: Export Player class in rrweb-player/src/main.ts Makes attw happy * Apply formatting changes * Gets wiped by yarn workspaces-to-typescript-project-references * Add .eslintignore and .eslintrc.cjs files for rrweb-player package * Apply formatting changes * Update dependencies in rrweb-player/package.json * Apply formatting changes * chore: Update eslint configuration for rrweb-player package * Apply formatting changes * chore: Remove unused files from rrweb-player package * Apply formatting changes * chore: Update rrweb-player import path to use rrweb-player.cjs * chore: Update addEventListener signature in rrweb-player * Apply formatting changes * Add .eslintignore and update .gitignore files for to root * Apply formatting changes * Update documentation * Update @rrweb/types package description * Apply formatting changes * Update build and run commands in CONTRIBUTING.md * Apply formatting changes * Update package versions to 2.0.0-alpha.13 * Apply formatting changes * Apply formatting changes * Fix import statement in media/index.ts * Apply formatting changes * chore: Update .gitignore to exclude build and dist directories * Apply formatting changes * Apply formatting changes * Migrate setTimeout to vitest * Apply formatting changes * Apply formatting changes * Fix isNativeShadowDom function signature in utils.ts * try out jsr * Apply formatting changes * Update package versions to 2.0.0-alpha.14 * Apply formatting changes * Fix name of rrwebSnapshot object * Apply formatting changes * Remove unused lock files * Apply formatting changes * Update rrweb bundle path to use umd.cjs format * Apply formatting changes * Trigger tests to run again * Rename snapshots for vitest * Apply formatting changes * Ping CI * Apply formatting changes * Ping CI * Apply formatting changes * Ignore files generated by svelte-kit for prettier * Correct Player object
* fix: some nested cross-origin iframes can't be recorded * fix building error in rrweb-player * add test case for this special case * Apply formatting changes --------- Co-authored-by: YunFeng0817 <[email protected]>
* Add extra changeset describing changes of rrweb-io/rrweb#1033 * Apply formatting changes * chore: update changelog for PR 1033: Split plugins out of rrweb and move them into their own packages Split plugins out of rrweb and move them into their own packages: @rrweb/packer, @rrweb/rrweb-plugin-canvas-webrtc-record, @rrweb/rrweb-plugin-canvas-webrtc-replay, @rrweb/rrweb-plugin-sequential-id-record, @rrweb/rrweb-plugin-sequential-id-replay, @rrweb/rrweb-plugin-console-record, @rrweb/rrweb-plugin-console-replay. Check out the README of each package for more information or check out rrweb-io/rrweb#1033 to see the changes. * docs: describe changes to distributed files * Fix snapshot for vitest * Apply formatting changes * Make changeset about new bundled files clearer
…deo tests more stable (#1500) * Chore: Ignore generated files from .svelte-kit for prettier * Create serious-eggs-greet.md * Apply formatting changes * Trigger CI * Make video tests more stable * Apply formatting changes * Exclude ambient.d.ts from format as it isn't deterministic
* Update styleguilde.md add a note not to say 'just' * Apply formatting changes * Rename styleguilde.md to styleguide.md * Apply formatting changes * Create slimy-eagles-grow.md --------- Co-authored-by: eoghanmurray <[email protected]> Co-authored-by: Justin Halsall <[email protected]>
* Chore: upgrade turbo & fix yarn dev
* Chore: Delete unused lerna.json file * Chore: Remove lerna.json from turbo config * Create nasty-scissors-reply.md
* fix: extension doesn't work after vite bump
* Add option to block animation on <title> tag which can generate massive recordings on some websites (think scrolling title tag) * Add new option to slimDOMOptions type with tsdoc as suggested by Justin
…mutation invalid (#1417) fix style element corner case - historically we have recorded duplicated css content in certain cases (demonstrated by the attached replayer test). This fix ensures that the replayer doesn't doubly add the content, which can cause problems when further mutations occur --------- Review and further tests contributed by: Eoghan Murray <[email protected]>
* Added support for deprecated addRule & removeRule methods * Respect addRule default value
* Replace relative URLs with absolute URLs when stringifying stylesheets * Add test to show desired behavior for imported stylesheets from seperate directory * Rename `absoluteToStylesheet` to `absolutifyURLs` and call it once after stringifying imported stylesheet * Don't create the intermediary array of the spread operator * Formalize that `stringifyRule` should expect a sheet href * Ensure a <style> element can also import and gets it's url absolutized * Handle case where non imported stylesheet has relative urls that need to be absolutified * Clarify in test files where jpegs are expected to appear in absolutified urls * Move absolutifyURLs call for import rules out of trycatch * Add a benchmarking test for stringifyStylesheet * Avoid the duplication on how to fall back --------- Co-authored-by: Eoghan Murray <[email protected]> Co-authored-by: eoghanmurray <[email protected]>
* chore: its important to run `yarn build:all` before running `yarn dev` * feat: trigger showModal from rrdom and rrweb * feat: Add support for replaying modal and non modal dialog elements * chore: Update dev script to remove CLEAR_DIST_DIR flag * Get modal recording and replay working * DRY up dialog test and dedupe snapshot images * feat: Refactor dialog test to use updated attribute name * feat: Update dialog test to include rr_open attribute * chore: Add npm dependency [email protected] * Add more test cases for dialog * Clean up naming * Refactor dialog open code * Revert changed code that doesn't do anything * Add documentation for unimplemented type * chore: Remove unnecessary comments in dialog.test.ts * rename rr_open to rr_openMode * Replace todo with a skipped test * Add better logging for CI * Rename rr_openMode to rr_open_mode rrdom downcases all attribute names which made `rr_openMode` tricky to deal with * Remove unused images * Move after iframe append based on @YunFeng0817's comment rrweb-io/rrweb#1503 (comment) * Remove redundant dialog handling from rrdom. rrdom already handles dialog element creation it's self * Rename variables for dialog handling in rrweb replay module * Update packages/rrdom/src/document.ts --------- Co-authored-by: Eoghan Murray <[email protected]>
* Added session downloader for chrome extension - The session list now has a button to download sessions as .json files for use with rrweb-player - Improved styling for the delete and download buttons
* Get around monkey patched Nodes * inlineImages: Setting of `image.crossOrigin` is not always necessary (#1468) Setting of the `crossorigin` attribute is not necessary for same-origin images, and causes an immediate image reload (albeit from cache) necessitating the use of a load event listener which subsequently mutates the snapshot. This change allows us to avoid the mutation of the snapshot for the same-origin case. * Modify inlineImages test to remove delay and show that we can inline images without mutation * Add an explicit test for when the `image.crossOrigin = 'anonymous';` method is necessary. Uses a combination of about:blank and our test server to simulate a cross-origin context * Other test changes: there were some spurious rrweb mutations being generated by the addition of the crossorigin attribute that are now elimnated from the rrweb/__snapshots__/integration.test.ts.snap after this PR - this is good * Move `childNodes` to @rrweb/utils * Use non-monkey patched versions of the `childNodes`, `parentNode` `parentElement` `textContent` accessors * Add getRootNode and contains, and add comprehensive todo list * chore: Update turbo.json tasks for better build process * Update caniuse-lite * chore: Update eslint-plugin-compat to version 5.0.0 * chore: Bump @rrweb/utils version to 2.0.0-alpha.15 * delete unused yarn.lock files * Set correct @rrweb/utils version in package.json * Migrate over some accessors to reverse-monkey-patched version * Add missing functions * Fix illegal invocation error * Revert closer to what it was. This feels incorrect to me (Justin Halsall), but some of the tests break without it so I'm restoring this to be closer to its original here: https://github.com/rrweb-io/rrweb/blame/cfd686d488a9b88dba6b6f8880b5e4375dd8062c/packages/rrweb-snapshot/src/snapshot.ts#L1011 * Reverse monkey patch all methods LWC hijacks * Make tests more stable * Safely handle rrdom nodes in hasShadowRoot * Remove duplicated test * Use variable `serverURL` in test * Use monorepo default browserlist * Fix typing issue for new typescript * Remove unused package * Remove unused code * Add prefix to reverse-monkey-patched methods to make them more explicit * Add default exports to @rrweb/utils --------- Co-authored-by: Eoghan Murray <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
fd0747e
to
cd8d13a
Compare
parent 5992f03 author Vadim Korolik <[email protected]> 1608000413 -0700 committer Vadim Korolik <[email protected]> 1666033419 -0700 gpgsig -----BEGIN PGP SIGNATURE----- iQIyBAABCgAdFiEE5qJt+0KcVgDpzp9NmG2rb3pHHDQFAmNNpwsACgkQmG2rb3pH HDT+Qg/2Lwz671fehqmv/yC4LksqoSVdFH1JG0e61qKEaUqaCGST/c0GqUpHiI7D Y3yFTlhatbWqaDV+bpJ/9KzB3cRtOhV6URbw5xLrhsR3pGEzNqv4c+ZkaWR2U32k pSFidY7MZTJURbEosOR0cXc+WhHfiVEgzJ6/ny6e4r7zY6gBbE66DLVRNelhMwW7 wdpwzh4KcfLroOecA49skgvTj7xO3Bv3B5X2Ok2Rch18WzWiFDDVYFdIiArf7Kua /gIn1AybT6B6nb4kl99H763zATHLXKdWeLS9nFySGG73ILVpaefMS5cHZnmvmw10 6hltrcYpcZTbPJCV9npFUS+1ViSTK8FpegBVtlUZj5+ZhL3I+McBYyzjgrv/67vc fJKkVCgtgkEgbHHwouw4KnsyRZLcb4/0krOhyqdEKHxmEy+nNvIQ6OVyw4+vYW5B DN84bQ9wWC/p5wEdhJoEz7o42o2UYboGW9Gmzpsef7NaK0MUZr/XHMonOvwL9Yd+ STe9WjkVgWs3Ah6WQrXyYHDsxyn/PXCquSQK1qfnj5qSa3Aajrn1MHVYwNN1IdmL 4+Yn+JQe43Ahb3BEUVuD1w0V3cZs15UoHfKbNuc1VGKfmbvztu/48gwvUCE/BgkG E33iWf+6LcSjQJvEM8HHsBmMq64QOP2Tnsklfn/WJMZF41Pvbg== =P0Tg -----END PGP SIGNATURE----- add typings change change more changes to release change change try again try again try again try again change change change v0.9.12 change change added npm ignore change change chagne change change change change change Preprocess inactive segments Cleaned up code Renamed, and removed generated file changes change change change bump version delete old files change add typings change try again change another change change change change change Undef handling for intervals Another check Add custom build command (#21) Switch to version `1.0.4` of `rrweb-snapshot` (#23) Added support for inactive threshold (#20) * Added support for inactive threshold * Updated version num * Prettified * Fixed names * Fixed name * Renamed Missed an edge case where the last part of a session is inactive, and counted that as active. (#24) * Added support for inactive threshold * Updated version num * Prettified * Fixed names * Fixed name * Renamed * Cleaned code and added handling for edge cases * Updated package num Anthony/hig 156 change the color style of the cursor to (#25) * Added support for inactive threshold * Updated version num * Prettified * Fixed names * Fixed name * Renamed * Cleaned code and added handling for edge cases * Updated package num * More skip customize, changed cursor * Update package version * Changed to use webpack instead of rollup Co-authored-by: Jay Khatri <[email protected]> * Fixed files * Added missing styles from CDN Co-authored-by: Jay Khatri <[email protected]> Anthony/hig 190 move rrweb getactivityinterval logic (#27) * Added support for inactive threshold * Updated version num * Prettified * Fixed names * Fixed name * Renamed * Cleaned code and added handling for edge cases * Updated package num * More skip customize, changed cursor * Update package version * Changed to use webpack instead of rollup Co-authored-by: Jay Khatri <[email protected]> * Fixed files * Added missing styles from CDN * Moved activity intervals calculation * Updated version Co-authored-by: Jay Khatri <[email protected]> Anthony/hig 190 move rrweb getactivityinterval logic (#28) * Added support for inactive threshold * Updated version num * Prettified * Fixed names * Fixed name * Renamed * Cleaned code and added handling for edge cases * Updated package num * More skip customize, changed cursor * Update package version * Changed to use webpack instead of rollup Co-authored-by: Jay Khatri <[email protected]> * Fixed files * Added missing styles from CDN * Moved activity intervals calculation * Updated version * Only calculate intervals once * Updated version Co-authored-by: Jay Khatri <[email protected]> john/hig-231-block-recording-on-all-text-nodes (#30) * Adds text randomization * Update blocked styles * Add privacy mode * Don't record images * v0.10.0 * Rename flag to enableStrictPrivacy * Set redacted style on replayer side Consider allevents for inactivity (#31) * Consider allevents for inactivity * Remove log * skip inactive Don't record value attribute on password inputs (#32) * Don't record password * v0.10.2 Redact the value attribute on mutations (#33) * Redact the value attribute on mutations * v0.10.3 Added 2s delay (#34) * Added 2s delay * updated version * Changed back to fast_forwarding Update rrweb (#35) * fix: sometimes currentTime is smaller than the totalTime when player is finished (#445) plus: fix the problem that sometimes return value of getCurrentTime() is negative * Fix broken link to design docs * Update to fflate (#448) * Update to fflate * Update docs, bundler config * Scroll replayer iframe on firstFullsnapshot (#451) * upgrade snapshot * Release 0.9.12 * Protect against generation of no-change viewport resize events. (#454) I noticed 8 or 10 of these events being generated in a multi-tab browsing session on Chrome 87.0 on Win10. I'm speculating they were generated as a side effect of changing tabs but I can't recreate * fix #452 check isBlocked on add mutation's target * Release 0.9.13 * let mouse tail duration respect timer speed * clean addList when meet a corner case * fix #460 ignore added node that are not in document anymore * upgrade 0.9.14 * Release 0.9.14 * Tweaks to timings to get tests passing on my dev laptop (#466) * Tweaks to timings to get tests passing on my dev laptop - hopefully this makes tests more deterministic * Okay understand what's going on now that the test has run in the travis environment * fix #469 try to get original MutationObserver We found Angular's zone module will patch MutationObserver which make the browser hang in some scenarios. Reference: angular/angular#26948 * Discovered that the common case of mouse movement or scrolling happening during `takeFullSnapshot` was causing mutations to be immediately emitted, contrary to the goal of rrweb-io/rrweb#385 (#470) * Don't remove the style attributes altogether from tests; they are an important part of the mutations (#468) These were removed in rrweb-io/rrweb@8ed1c99 in order to smooth over differences in test environments so have maintained that by converting pixel values to 'Npx' (could also try rounding, but didn't attempt that) * read __rrMutationObserver from window * update guide (#483) * Fix RangeError: Maximum call stack size exceeded (#479) Saw this line cause issues in production, causing the following error: ``` RangeError Maximum call stack size exceeded ``` I believe this is caused by javascript engine max argument length - see note from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#using_apply_and_built-in_functions > The consequences of applying a function with too many arguments (that is, more than tens of thousands of arguments) varies across engines. (The JavaScriptCore engine has hard-coded argument limit of 65536. * Impl record iframe (#481) * Impl record iframe * iframe observe * temp: add bundle file to git * update bundle * update with pick * update bundle * fix fragment map remove * feat: add an option to determine whether to pause CSS animation when playback is paused (#428) set pauseAnimation to true by default * fix: elements would lose some states like scroll position because of "virtual parent" optimization (#427) * fix: elements would lose some state like scroll position because of "virtual parent" optimization * refactor: the bugfix code bug: elements would lose some state like scroll position because of "virtual parent" optimization * fix: an error occured at applyMutation(remove nodes part) error message: Uncaught (in promise) DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node * pick fixes * revert ignore file * re-impl iframe record * re-impl iframe replay * code housekeeping * move multi layer dimension calculation to replay side * update test cases * teardown test server * upgrade rrweb-snapshot with iframe load timeout Co-authored-by: Lucky Feng <[email protected]> * remove debugging warning (#486) I can't see a reason for the warning here so believe it's a debugging statement that crept in? * Add prettier as a dependency (#487) * start impl rrdom * upgrade rrweb-snapshot to 1.0.7 * Adding prepare npm statement (#490) * added prepare statement * using master rrweb snapshot Co-authored-by: filip slatinac <[email protected]> * Added mousemoveCallback threshold option to sampling config. (#492) * Added mousemoveCallback threshold option to sampling config. * Added mousemoveCallback to definitions file. * Add yarn support for installing unreleased rrweb as a dependency (#497) * Use prepack instead of prepare for yarn support * add prepare and prepack for yarn v1 & v2 compatibility * Create .npmignore * update guide * close #501 do not count attach iframe event in checkout * close #491 check whether link node is head * update test snapshot * fix lint errors * add hiring link * impl #507 export takeFullSnapshot as a public API * Update observer.md (#504) Fixed some grammatical errors * add an experiment config to set max speed in fast forward * Handle event undefined in initMoveObserver (#515) * fix: errors of replaying iframe records (#520) * fix: errors of replaying iframe records error1: HierarchyRequestError: Failed to execute 'appendChild' on 'Node': Nodes of type '#document' may not be inserted inside nodes of type '#document-fragment'. code: parent.appendChild(target) error2: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': Only one element on document allowed. code: parent.appendChild(target); * improve the comment for bugfix * rename node_modules in es bundle to ext * fix: inaccurate mouse position (#522) 1. Position of mouse was inaccurate when replaying and this PR will fix it. 2. Fix the bug that if one nested iframe has a scale transform and the position of mouse was inaccurate as well. * impl shadow DOM manager part of #38 1. observe DOM mutations in shadow DOM 2. rebuild DOM mutations in shadow DOM * Fix docs to point to correct event format (#523) * Fix docs to point to correct event attribute * Update customize-replayer.zh_CN.md * correct event object in guide * Update guide.zh_CN.md * Update snapshot to Release 1.1.1 Co-authored-by: Lucky Feng <[email protected]> Co-authored-by: Fanis Katsimpas <[email protected]> Co-authored-by: Lucky Feng <[email protected]> Co-authored-by: 101arrowz <[email protected]> Co-authored-by: Jarosław Salwa <[email protected]> Co-authored-by: Yanzhen Yu <[email protected]> Co-authored-by: Eoghan Murray <[email protected]> Co-authored-by: zzq0826 <[email protected]> Co-authored-by: Karl-Aksel Puulmann <[email protected]> Co-authored-by: Moji Izadmehr <[email protected]> Co-authored-by: Filip Slatinac <[email protected]> Co-authored-by: filip slatinac <[email protected]> Co-authored-by: Province Innovation <[email protected]> Co-authored-by: Justin Halsall <[email protected]> Co-authored-by: Season <[email protected]> Co-authored-by: arshabh-copods <[email protected]> Co-authored-by: Yakko Majuri <[email protected]> Disable onAddHoverClass and duplicate full snapshot (#36) * Don't rebuild full snapshot * Add config for hover class * Revert "Update rrweb (#35)" This reverts commit 5dc4ca2. * Bump version fix-rrweb-patch (#37) * Make check conditional * Update to 0.11.0 Bump (#38) Skip the first fullSnapshotBuild (#39) User events for inactivity calculation (#40) Make sure we publish a production build (#41) Pull in fix for #528 from rrweb (#42) Buffer modifications to virtual stylesheets (#43) Test rrweb 1.0.1 Co-authored-by: Lucky Feng <[email protected]> Co-authored-by: filip slatinac <[email protected]> Co-authored-by: zhaoziqiu <[email protected]> Co-authored-by: yz-yu <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Yash Kumar <[email protected]> Co-authored-by: Lucky Feng <[email protected]> Co-authored-by: Vladimir Milenko <[email protected]> Co-authored-by: Eoghan Murray <[email protected]> Co-authored-by: Fanis Katsimpas <[email protected]> Co-authored-by: Lucky Feng <[email protected]> Co-authored-by: 101arrowz <[email protected]> Co-authored-by: Jarosław Salwa <[email protected]> Co-authored-by: Yanzhen Yu <[email protected]> Co-authored-by: zzq0826 <[email protected]> Co-authored-by: Karl-Aksel Puulmann <[email protected]> Co-authored-by: Moji Izadmehr <[email protected]> Co-authored-by: Filip Slatinac <[email protected]> Co-authored-by: Province Innovation <[email protected]> Co-authored-by: Justin Halsall <[email protected]> Co-authored-by: Season <[email protected]> Co-authored-by: arshabh-copods <[email protected]> Co-authored-by: Yakko Majuri <[email protected]> Co-authored-by: re-fort <[email protected]> Co-authored-by: Ziqiu Zhao <[email protected]> Co-authored-by: yashkumar18 <[email protected]> Co-authored-by: bachmanity1 <[email protected]> Co-authored-by: Omair Nabiel <[email protected]> Copy rrweb-io/rrweb#630 for DragEvent errors (#45) Record and replay nested stylesheet rules (#46) john/hig-1014-2nd-attempt-at-stitches-fix-in-rrweb (#47) Apply nested styles refactor https://github.com/rrweb-io/rrweb/pull/667/files john/hig-1046-apply-rrweb-css-change (#48) Update Mirror to support null IDs John/hig-1121-add-rrweb-patch-for-element-blocking (#49) Set the blockClass background color to the same as the color (#51) John/hig-1053-strictprivacy-mode-is-injecting-random (#52) gc virtual style map when DOM has been removed (#53) Monkeypatch each iframe (#54) Update rrweb to 1.0.7 (#55) Pause animations on pseudo elements (#56) Add webgl recording and playback (#57) Webgl-patches (#58) * Add diffs * Add missing changes * Bump version Patch webgl support for older Safari browsers Make sure WebGL instance exists before saving More patches for webgl recording Update mouse cursor to make it visible on dark and light backgrounds Bump version Support loading CORS fonts through our proxy (#59) John/hig-1919-update-rrweb (#60) * Port over remaining webgl changes * More updates * https://github.com/rrweb-io/rrweb/pull/810/files * https://github.com/rrweb-io/rrweb/pull/720/files * Update package version Make sure text mutations respect strict privacy mode (#61) John/hig-1930-sync-rrweb-changes (#62) * Sync change * Port fix: an error when I stop the recording process Change click behavior/visual (#63) Silence the "please add custom even after start recording" (#64) John/hig-1984-pull-in-rrweb-sequential-id-pr (#65) * Add sequential IDs * rrweb-io/rrweb#840 * bump version Export sequential ID plugin Ignore recording rrweb internal click events for canvas elements John/hig-1998-apply-rrweb-commits (#66) [HIG-2114] add replace events function for use by chunking (#67) bump version (#68) https://github.com/rrweb-io/rrweb/pull/866/files (#69) remove promise to resolve immediately (#70) baseline time check should include offset to avoid replaying past events (#71) v1.1.20 fix rollup config (#72) fix the bundle script so that we can use rrweb directly from a <script/> tag for use in server-side rrweb rendering (HIG-2197). [HIG-2269] ensure invalid DOM nesting doesn't crash rrweb (#73) Replaying an app with invalid DOM nesting may crash rrweb. Print console warning instead of crashing. highlight: merge rrweb (#74) Update our fork based on [email protected] April 2022 Release https://github.com/rrweb-io/rrweb/releases/tag/rrdom%400.1.2 highlight: merge rrweb (#74) Update our fork based on [email protected] April 2022 Release https://github.com/rrweb-io/rrweb/releases/tag/rrdom%400.1.2 merge rrweb #903 performance improvements (#75) primarily to bring in Speed up snapshotting of many new dom nodes (#903) Co-authored-by: Yun Feng <[email protected]> Co-authored-by: Justin Halsall <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: yz-yu <[email protected]> Co-authored-by: Rahul Lingala <[email protected]> Co-authored-by: Dmytro Kozlovskyi <[email protected]> remove testing from github actions fix lerna publish step improve error handling in rrdom (#76) During live mode, we encounter rrdom errors related to the replay of iframes. Ensure we handle these errors correctly rather than crashing. integrate fix for live mode #923 (#77) [rrweb PR 923](rrweb-io/rrweb#923) revert error catching code merge rrweb PR #909 (#78) rrweb-io/rrweb#909 with follow-up fix rrweb-io/rrweb#926 set empty link elements to loaded by default Clean up stylesheet manager Remove attribute mutation code Update packages/rrweb/test/record.test.ts Update packages/rrweb/test/record.test.ts Update packages/rrweb/test/record.test.ts Bump minimist from 1.2.5 to 1.2.6 (#902) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](substack/[email protected]) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Speed up snapshotting of many new dom nodes (#903) * Speed up snapshotting of many new dom nodes By avoiding reflow we shave about 15-25% off our snapshotting time * Improve newlyAddedElement docs * Optimize needMaskingText by using el.closest and less recursion * Serve all rrweb dist files * Split serializeNode into smaller functions Makes it easier to profile * Slow down cpu enhance tracing on fast machines * Increase timeout * Perf: only loop through ancestors when they have something to compare to * Perf: `hasNode` is cheaper than `getMeta` * Perf: If parents where already checked, no need to do it again * Perf: reverse for loops are faster Because they only do the .lenght check once. In this case I don't think we'll see much performance gains if any * Clean up code * Perf: check ancestors once with isBlocked * guessing this might fixes canvas test * Update packages/rrweb/src/record/observers/canvas/webgl.ts Co-authored-by: yz-yu <[email protected]> * Fix #904 (#906) Properly remove crossorigin attribute * Bump minimist from 1.2.5 to 1.2.6 (#902) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) - [Commits](substack/[email protected]) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: yz-yu <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Move require out of time sensitive assert Update packages/rrweb/scripts/repl.js Update packages/rrweb/test/record.test.ts Update packages/rrweb/src/record/index.ts Add todo Add waitForRAF, its more reliable than waitForTimeout Remove flaky tests Add recording stylesheets in iframes Remove variability from flaky test Make test more robust Fix naming Update dive-into-event.md (#914) move browser-only rrdom features to the new rrdom package (#913) integrate turborepo in monorepo (#918) * integrate turborepo in monorepo * integrate turborepo in monorepo unify typescript version and rollup plugins (#921) Add test cases for inlineImages Add test cases for inlineImages Record iframe mutations cross page Test: should record images inside iframe with blob url after iframe was reloaded update rrweb-snapshot Handle negative ids in rrdom correctly When iframes get inserted they create untracked elements, both on the dom and rrdom side. Because they are untracked they generate negative numbers when fetching the id from mirror. This creates a problem when comparing and fetching ids across mirrors. This commit tries to get away from using negative ids as much as possible in rrdom's comparisons remove rrdom diff debug log statements fix rrweb canvas recording crash (#79) slow canvas loading can cause the canvas manager worker to crash. also fix a merge conflict in rrweb styles file. obfuscate text for highlight-mask class (#84) Use the `obfuscateText` function as a default masking transform for the `highlight-mask` css class. update versions update rrweb to #947 (#83) merge up to rrweb-io/rrweb#947 Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Halsall <[email protected]> Co-authored-by: Yun Feng <[email protected]> Co-authored-by: Yanzhen Yu <[email protected]> Co-authored-by: Jimmy Liu <[email protected]> Co-authored-by: Eoghan Murray <[email protected]> [HIG-2525] ensure highlight-mask blocks image src (#85) `highlight-mask` class should be evaluated during image snapshotting to drop the image src. publish rrweb [HIG-2525] v2.1.4 make highlight-mask obfuscate images (#86) `highlight-mask` class should hide images. remove accidental console log (#87) adds eslint rule to error on console logs fix highlight-mask image obfuscation (#88) fix how `highlight-mask` class obfuscates images ensure image obfuscation works for `inline-images` enabled. support canvas downsampling configuration (#89) canvas recording takes snapshots at full canvas resolution this is too slow to record at higher fps. allow specifying canvas manager ratio and quality so that the canvas can be imaged at lower quality and resolution to allow higher FPS recording we now support the following `record` parameters for canvas settings: * sampling.canvas.fps * sampling.canvas.resizeQuality * sampling.canvas.resizeFactor * sampling.canvas.maxSnapshotDimension sample recording @ 0.2 factor, low quality, 15 fps https://app.highlight.run/1/sessions/KnAGq8rRSnafG7zXwp8ahpzFAqFd fix client mutation observer check (#90) ensure the element on which `.contains()` is called is a node. Sort attributes to make `rr_*` attributes handled last `rr_dataURL` overwrites `src` attribute, because of this we need to evaluate `rr_dataURL` last so it doesn't accidentally get overwritten again. [HIG-2649] use yarn v3 workspace dependencies (#91) allows us to only publish `@highlight-run/rrweb` while using the rest of the workspace packages as internal dependencies. makes it easier to manage versions because it allows versioning `@highlight-run/rrweb` alone. fix rrweb publishing (#92) remove lerna since we only need to publish one package: `@highlight-run/rrweb` support for highlight yarn workspaces monorepo Apply formatting changes
* Fixes a bug in the `needsMask` processing that would stop recording children if `highlight-mask` was set on a div with `enableStrictPrivacy` set globally. * Adds source obfuscation for other media elements: video, audio, and source. Testing: before the fix - https://app.highlight.io/649/sessions/o5jfoC9BXXjBkxqwpVbNNDWK3hcI after the fix - https://app.highlight.io/649/sessions/9DR6a5arNtGacbkr2pwyPn5ENh3E
Removes the `passive:true` option which breaks `preventDefault` for drag and drop in angular. To reproduce, 1. Clone the angular example repo: ```shell git clone [email protected]:aptlin/angular-scratchpad.git rakesh ``` 2. Add ` "dev:rakesh": "yarn turbo run dev --filter rakesh... --filter frontend...",` to `scripts` and `rakesh` to `workspaces` in the highlight package.json 3. Run `yarn dev:rakesh` with and without this change.
- Adds a verbose logger for the canvas manager - Fixes issue with WebGL canvas elements not being recorded if they were not ready (context not ready) when recording started. - Fixes rrweb dev build (`yarn dev`)
local webcam video replay https://www.loom.com/share/c0a473d717d94b4f88ce010a440fb474 webcam image getting serialized  --------- Co-authored-by: Vadman97 <[email protected]>
webgl2 canvases created after highlight would start recording with the `preserveDrawingBuffer: false` setting would not record correctly because we would snapshot a transparent image of the canvas. instead of trying to clear the canvas, we should create a context with `preserveDrawingBuffer: true` to ensure that the canvas can be recorded (tested in babylon.js) https://app.highlight.io/1/sessions/n7P0x5XTItCqEN7B7pmtJVldUzJo
changes the `initialSnapshotDelay` to be applied per canvas from the time the canvas is first seen.
Recent snapshot improvements introduced debug logging that is noisy. This change defaults to no canvas web-worker logging but allows using the `debug` H.init setting to enable it.
cd8d13a
to
48f21b3
Compare
Add a privacy mode that will obfuscate personal identifiable data by default. Update the strict privacy policy to be part of the enum, rather than a boolean. See highlight/highlight#6846 for testing example. --------- Co-authored-by: SpennyNDaJets <[email protected]>
- More strictly obfuscate inputs in default privacy mode. - Allow inputs and text to record despite matching regex by passing in `data-hl-record` attribute - Update regex expressions to use space character (`\s`) correctly Implemented in monolith here: highlight/highlight#7200 --------- Co-authored-by: SpennyNDaJets <[email protected]>
48f21b3
to
a3aa0f4
Compare
Vadman97
added a commit
to highlight/highlight
that referenced
this pull request
Aug 8, 2024
## Summary Updates highlight/rrweb#118 to pull in latest LWC changes Corrects bug in the client causing multiple tabs to write to the same session ID. ## How did you test this change? validating [test session](https://app.highlight.io/87836/sessions/Yxa09Qs4PYng61oaiUNEq8p7K49o) in customer environment with new client ## Are there any deployment considerations? changeset, patch version as the rrweb changes are patch changes ## Does this work require review from our design team? no
manually merged |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes SUP-15