From 6f022c330d11d382577e4e66f1d93b16dba7a39b Mon Sep 17 00:00:00 2001 From: Kevin Townsend Date: Mon, 3 Feb 2025 12:46:04 -0500 Subject: [PATCH 1/6] added blockElementFn --- packages/rrweb/src/record/index.ts | 13 ++-- packages/rrweb/src/record/mutation.ts | 47 ++++++++++++-- packages/rrweb/src/record/observer.ts | 61 ++++++++++++++++--- .../rrweb/src/record/observers/canvas/2d.ts | 12 +++- .../record/observers/canvas/canvas-manager.ts | 33 ++++++++-- .../src/record/observers/canvas/canvas.ts | 12 +++- .../src/record/observers/canvas/webgl.ts | 13 +++- packages/rrweb/src/types.ts | 4 ++ packages/rrweb/src/utils.ts | 27 +++++--- packages/types/src/index.ts | 1 + 10 files changed, 185 insertions(+), 38 deletions(-) diff --git a/packages/rrweb/src/record/index.ts b/packages/rrweb/src/record/index.ts index 1308c378a6..d3f6d16330 100644 --- a/packages/rrweb/src/record/index.ts +++ b/packages/rrweb/src/record/index.ts @@ -70,6 +70,7 @@ function record( checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', + blockElementFn = null, blockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, @@ -157,8 +158,8 @@ function record( password: true, } : _maskInputOptions !== undefined - ? _maskInputOptions - : { password: true }; + ? _maskInputOptions + : { password: true }; const slimDOMOptions: SlimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all' @@ -178,8 +179,8 @@ function record( headTitleMutations: _slimDOMOptions === 'all', } : _slimDOMOptions - ? _slimDOMOptions - : {}; + ? _slimDOMOptions + : {}; polyfill(); @@ -321,6 +322,7 @@ function record( mutationCb: wrappedCanvasMutationEmit, win: window, blockClass, + blockElementFn, blockSelector, mirror, sampling: sampling.canvas, @@ -332,6 +334,7 @@ function record( scrollCb: wrappedScrollEmit, bypassOptions: { blockClass, + blockElementFn, blockSelector, maskTextClass, maskTextSelector, @@ -378,6 +381,7 @@ function record( const node = snapshot(document, { mirror, blockClass, + blockElementFn, blockSelector, maskTextClass, maskTextSelector, @@ -543,6 +547,7 @@ function record( maskInputFn, maskTextFn, keepIframeSrcFn, + blockElementFn, blockSelector, slimDOMOptions, dataURLOptions, diff --git a/packages/rrweb/src/record/mutation.ts b/packages/rrweb/src/record/mutation.ts index 42170b4940..ac3b8018b3 100644 --- a/packages/rrweb/src/record/mutation.ts +++ b/packages/rrweb/src/record/mutation.ts @@ -173,6 +173,7 @@ export default class MutationBuffer { private mutationCb: observerParam['mutationCb']; private blockClass: observerParam['blockClass']; + private blockElementFn: observerParam['blockElementFn']; private blockSelector: observerParam['blockSelector']; private maskTextClass: observerParam['maskTextClass']; private maskTextSelector: observerParam['maskTextSelector']; @@ -199,6 +200,7 @@ export default class MutationBuffer { [ 'mutationCb', 'blockClass', + 'blockElementFn', 'blockSelector', 'maskTextClass', 'maskTextSelector', @@ -316,6 +318,7 @@ export default class MutationBuffer { doc: this.doc, mirror: this.mirror, blockClass: this.blockClass, + blockElementFn: this.blockElementFn, blockSelector: this.blockSelector, maskTextClass: this.maskTextClass, maskTextSelector: this.maskTextSelector, @@ -548,7 +551,13 @@ export default class MutationBuffer { const value = dom.textContent(m.target); if ( - !isBlocked(m.target, this.blockClass, this.blockSelector, false) && + !isBlocked( + m.target, + this.blockClass, + this.blockSelector, + this.blockElementFn, + false, + ) && value !== m.oldValue ) { this.texts.push({ @@ -586,7 +595,13 @@ export default class MutationBuffer { }); } if ( - isBlocked(m.target, this.blockClass, this.blockSelector, false) || + isBlocked( + m.target, + this.blockClass, + this.blockSelector, + this.blockElementFn, + false, + ) || value === m.oldValue ) { return; @@ -687,7 +702,15 @@ export default class MutationBuffer { /** * Parent is blocked, ignore all child mutations */ - if (isBlocked(m.target, this.blockClass, this.blockSelector, true)) + if ( + isBlocked( + m.target, + this.blockClass, + this.blockSelector, + this.blockElementFn, + true, + ) + ) return; if ((m.target as Element).tagName === 'TEXTAREA') { @@ -703,7 +726,13 @@ export default class MutationBuffer { ? this.mirror.getId(dom.host(m.target)) : this.mirror.getId(m.target); if ( - isBlocked(m.target, this.blockClass, this.blockSelector, false) || + isBlocked( + m.target, + this.blockClass, + this.blockSelector, + this.blockElementFn, + false, + ) || isIgnored(n, this.mirror, this.slimDOMOptions) || !isSerialized(n, this.mirror) ) { @@ -782,7 +811,15 @@ export default class MutationBuffer { // if this node is blocked `serializeNode` will turn it into a placeholder element // but we have to remove it's children otherwise they will be added as placeholders too - if (!isBlocked(n, this.blockClass, this.blockSelector, false)) { + if ( + !isBlocked( + n, + this.blockClass, + this.blockSelector, + this.blockElementFn, + false, + ) + ) { dom.childNodes(n).forEach((childN) => this.genAdds(childN)); if (hasShadowRoot(n)) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion diff --git a/packages/rrweb/src/record/observer.ts b/packages/rrweb/src/record/observer.ts index 7e3aab3fff..c49f7a3763 100644 --- a/packages/rrweb/src/record/observer.ts +++ b/packages/rrweb/src/record/observer.ts @@ -168,8 +168,8 @@ function initMoveObserver({ typeof DragEvent !== 'undefined' && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent - ? IncrementalSource.MouseMove - : IncrementalSource.TouchMove, + ? IncrementalSource.MouseMove + : IncrementalSource.TouchMove, ); }), threshold, @@ -194,6 +194,7 @@ function initMouseInteractionObserver({ mirror, blockClass, blockSelector, + blockElementFn, sampling, }: observerParam): listenerHandler { if (sampling.mouseInteraction === false) { @@ -212,7 +213,7 @@ function initMouseInteractionObserver({ const getHandler = (eventKey: keyof typeof MouseInteractions) => { return (event: MouseEvent | TouchEvent | PointerEvent) => { const target = getEventTarget(event) as Node; - if (isBlocked(target, blockClass, blockSelector, true)) { + if (isBlocked(target, blockClass, blockSelector, blockElementFn, true)) { return; } let pointerType: PointerTypes | null = null; @@ -313,10 +314,17 @@ export function initScrollObserver({ mirror, blockClass, blockSelector, + blockElementFn, sampling, }: Pick< observerParam, - 'scrollCb' | 'doc' | 'mirror' | 'blockClass' | 'blockSelector' | 'sampling' + | 'scrollCb' + | 'doc' + | 'mirror' + | 'blockClass' + | 'blockSelector' + | 'blockElementFn' + | 'sampling' >): listenerHandler { const updatePosition = callbackWrapper( throttle( @@ -324,7 +332,13 @@ export function initScrollObserver({ const target = getEventTarget(evt); if ( !target || - isBlocked(target as Node, blockClass, blockSelector, true) + isBlocked( + target as Node, + blockClass, + blockSelector, + blockElementFn, + true, + ) ) { return; } @@ -384,6 +398,7 @@ function initInputObserver({ mirror, blockClass, blockSelector, + blockElementFn, ignoreClass, ignoreSelector, maskInputOptions, @@ -407,7 +422,7 @@ function initInputObserver({ !target || !tagName || INPUT_TAGS.indexOf(tagName) < 0 || - isBlocked(target as Node, blockClass, blockSelector, true) + isBlocked(target as Node, blockClass, blockSelector, blockElementFn, true) ) { return; } @@ -1017,6 +1032,7 @@ function initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, + blockElementFn, mirror, sampling, doc, @@ -1027,7 +1043,13 @@ function initMediaInteractionObserver({ const target = getEventTarget(event); if ( !target || - isBlocked(target as Node, blockClass, blockSelector, true) + isBlocked( + target as Node, + blockClass, + blockSelector, + blockElementFn, + true, + ) ) { return; } @@ -1120,7 +1142,14 @@ function initFontObserver({ fontCb, doc }: observerParam): listenerHandler { } function initSelectionObserver(param: observerParam): listenerHandler { - const { doc, mirror, blockClass, blockSelector, selectionCb } = param; + const { + doc, + mirror, + blockClass, + blockSelector, + blockElementFn, + selectionCb, + } = param; let collapsed = true; const updateSelection = callbackWrapper(() => { @@ -1139,8 +1168,20 @@ function initSelectionObserver(param: observerParam): listenerHandler { const { startContainer, startOffset, endContainer, endOffset } = range; const blocked = - isBlocked(startContainer, blockClass, blockSelector, true) || - isBlocked(endContainer, blockClass, blockSelector, true); + isBlocked( + startContainer, + blockClass, + blockSelector, + blockElementFn, + true, + ) || + isBlocked( + endContainer, + blockClass, + blockSelector, + blockElementFn, + true, + ); if (blocked) continue; diff --git a/packages/rrweb/src/record/observers/canvas/2d.ts b/packages/rrweb/src/record/observers/canvas/2d.ts index d6090a6728..db90421f07 100644 --- a/packages/rrweb/src/record/observers/canvas/2d.ts +++ b/packages/rrweb/src/record/observers/canvas/2d.ts @@ -1,5 +1,6 @@ import { type blockClass, + type BlockElementFn, CanvasContext, type canvasManagerMutationCallback, type IWindow, @@ -12,6 +13,7 @@ export default function initCanvas2DMutationObserver( cb: canvasManagerMutationCallback, win: IWindow, blockClass: blockClass, + blockElementFn: BlockElementFn | null, blockSelector: string | null, ): listenerHandler { const handlers: listenerHandler[] = []; @@ -40,7 +42,15 @@ export default function initCanvas2DMutationObserver( this: CanvasRenderingContext2D, ...args: Array ) { - if (!isBlocked(this.canvas, blockClass, blockSelector, true)) { + if ( + !isBlocked( + this.canvas, + blockClass, + blockSelector, + blockElementFn, + true, + ) + ) { // Using setTimeout as toDataURL can be heavy // and we'd rather not block the main thread setTimeout(() => { diff --git a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts index 82c756ba24..062118b547 100644 --- a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts +++ b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts @@ -1,6 +1,7 @@ import type { ICanvas, Mirror } from 'rrweb-snapshot'; import type { blockClass, + BlockElementFn, canvasManagerMutationCallback, canvasMutationCallback, canvasMutationCommand, @@ -61,6 +62,7 @@ export class CanvasManager { mutationCb: canvasMutationCallback; win: IWindow; blockClass: blockClass; + blockElementFn: BlockElementFn | null; blockSelector: string | null; mirror: Mirror; sampling?: 'all' | number; @@ -70,6 +72,7 @@ export class CanvasManager { sampling = 'all', win, blockClass, + blockElementFn, blockSelector, recordCanvas, dataURLOptions, @@ -78,11 +81,23 @@ export class CanvasManager { this.mirror = options.mirror; if (recordCanvas && sampling === 'all') - this.initCanvasMutationObserver(win, blockClass, blockSelector); + this.initCanvasMutationObserver( + win, + blockClass, + blockSelector, + blockElementFn, + ); if (recordCanvas && typeof sampling === 'number') - this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, { - dataURLOptions, - }); + this.initCanvasFPSObserver( + sampling, + win, + blockClass, + blockSelector, + blockElementFn, + { + dataURLOptions, + }, + ); } private processMutation: canvasManagerMutationCallback = ( @@ -107,6 +122,7 @@ export class CanvasManager { win: IWindow, blockClass: blockClass, blockSelector: string | null, + blockElementFn: BlockElementFn | null, options: { dataURLOptions: DataURLOptions; }, @@ -115,6 +131,7 @@ export class CanvasManager { win, blockClass, blockSelector, + blockElementFn, true, ); const snapshotInProgressMap: Map = new Map(); @@ -163,7 +180,9 @@ export class CanvasManager { const getCanvas = (): HTMLCanvasElement[] => { const matchedCanvas: HTMLCanvasElement[] = []; win.document.querySelectorAll('canvas').forEach((canvas) => { - if (!isBlocked(canvas, blockClass, blockSelector, true)) { + if ( + !isBlocked(canvas, blockClass, blockSelector, blockElementFn, true) + ) { matchedCanvas.push(canvas); } }); @@ -241,6 +260,7 @@ export class CanvasManager { win: IWindow, blockClass: blockClass, blockSelector: string | null, + blockElementFn: BlockElementFn | null, ): void { this.startRAFTimestamping(); this.startPendingCanvasMutationFlusher(); @@ -249,6 +269,7 @@ export class CanvasManager { win, blockClass, blockSelector, + blockElementFn, false, ); const canvas2DReset = initCanvas2DMutationObserver( @@ -256,6 +277,7 @@ export class CanvasManager { win, blockClass, blockSelector, + blockElementFn, ); const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver( @@ -263,6 +285,7 @@ export class CanvasManager { win, blockClass, blockSelector, + blockElementFn, ); this.resetObservers = () => { diff --git a/packages/rrweb/src/record/observers/canvas/canvas.ts b/packages/rrweb/src/record/observers/canvas/canvas.ts index 4f6b30fc36..0a397c26b8 100644 --- a/packages/rrweb/src/record/observers/canvas/canvas.ts +++ b/packages/rrweb/src/record/observers/canvas/canvas.ts @@ -1,5 +1,10 @@ import type { ICanvas } from 'rrweb-snapshot'; -import type { blockClass, IWindow, listenerHandler } from '@rrweb/types'; +import type { + blockClass, + BlockElementFn, + IWindow, + listenerHandler, +} from '@rrweb/types'; import { isBlocked, patch } from '../../../utils'; function getNormalizedContextName(contextType: string) { @@ -9,6 +14,7 @@ function getNormalizedContextName(contextType: string) { export default function initCanvasContextObserver( win: IWindow, blockClass: blockClass, + blockElementFn: BlockElementFn | null, blockSelector: string | null, setPreserveDrawingBufferToTrue: boolean, ): listenerHandler { @@ -29,7 +35,9 @@ export default function initCanvasContextObserver( contextType: string, ...args: Array ) { - if (!isBlocked(this, blockClass, blockSelector, true)) { + if ( + !isBlocked(this, blockClass, blockSelector, blockElementFn, true) + ) { const ctxName = getNormalizedContextName(contextType); if (!('__context' in this)) (this as ICanvas).__context = ctxName; diff --git a/packages/rrweb/src/record/observers/canvas/webgl.ts b/packages/rrweb/src/record/observers/canvas/webgl.ts index 59218afb5c..e5f42a9072 100644 --- a/packages/rrweb/src/record/observers/canvas/webgl.ts +++ b/packages/rrweb/src/record/observers/canvas/webgl.ts @@ -1,5 +1,6 @@ import { type blockClass, + type BlockElementFn, CanvasContext, type canvasManagerMutationCallback, type canvasMutationWithType, @@ -15,6 +16,7 @@ function patchGLPrototype( cb: canvasManagerMutationCallback, blockClass: blockClass, blockSelector: string | null, + blockElementFn: BlockElementFn | null, win: IWindow, ): listenerHandler[] { const handlers: listenerHandler[] = []; @@ -49,7 +51,13 @@ function patchGLPrototype( saveWebGLVar(result, win, this); if ( 'tagName' in this.canvas && - !isBlocked(this.canvas, blockClass, blockSelector, true) + !isBlocked( + this.canvas, + blockClass, + blockSelector, + blockElementFn, + true, + ) ) { const recordArgs = serializeArgs(args, win, this); const mutation: canvasMutationWithType = { @@ -91,6 +99,7 @@ export default function initCanvasWebGLMutationObserver( win: IWindow, blockClass: blockClass, blockSelector: string | null, + blockElementFn: BlockElementFn | null, ): listenerHandler { const handlers: listenerHandler[] = []; @@ -101,6 +110,7 @@ export default function initCanvasWebGLMutationObserver( cb, blockClass, blockSelector, + blockElementFn, win, ), ); @@ -113,6 +123,7 @@ export default function initCanvasWebGLMutationObserver( cb, blockClass, blockSelector, + blockElementFn, win, ), ); diff --git a/packages/rrweb/src/types.ts b/packages/rrweb/src/types.ts index a03e326b6f..fa5136aadf 100644 --- a/packages/rrweb/src/types.ts +++ b/packages/rrweb/src/types.ts @@ -15,6 +15,7 @@ import type { DataURLOptions, addedNodeMutation, blockClass, + BlockElementFn, canvasMutationCallback, customElementCallback, eventWithTime, @@ -46,6 +47,7 @@ export type recordOptions = { checkoutEveryNth?: number; checkoutEveryNms?: number; blockClass?: blockClass; + blockElementFn?: BlockElementFn; blockSelector?: string; ignoreClass?: string; ignoreSelector?: string; @@ -86,6 +88,7 @@ export type observerParam = { mediaInteractionCb: mediaInteractionCallback; selectionCb: selectionCallback; blockClass: blockClass; + blockElementFn: BlockElementFn | null; blockSelector: string | null; ignoreClass: string; ignoreSelector: string | null; @@ -132,6 +135,7 @@ export type MutationBufferParam = Pick< observerParam, | 'mutationCb' | 'blockClass' + | 'blockElementFn' | 'blockSelector' | 'maskTextClass' | 'maskTextSelector' diff --git a/packages/rrweb/src/utils.ts b/packages/rrweb/src/utils.ts index ecf72d05ea..14445ac479 100644 --- a/packages/rrweb/src/utils.ts +++ b/packages/rrweb/src/utils.ts @@ -3,6 +3,7 @@ import type { listenerHandler, hookResetter, blockClass, + BlockElementFn, addedNodeMutation, DocumentDimension, IWindow, @@ -185,19 +186,19 @@ export function getWindowScroll(win: Window) { left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== undefined - ? win.pageXOffset - : doc.documentElement.scrollLeft || - (doc?.body && dom.parentElement(doc.body)?.scrollLeft) || - doc?.body?.scrollLeft || - 0, + ? win.pageXOffset + : doc.documentElement.scrollLeft || + (doc?.body && dom.parentElement(doc.body)?.scrollLeft) || + doc?.body?.scrollLeft || + 0, top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== undefined - ? win.pageYOffset - : doc?.documentElement.scrollTop || - (doc?.body && dom.parentElement(doc.body)?.scrollTop) || - doc?.body?.scrollTop || - 0, + ? win.pageYOffset + : doc?.documentElement.scrollTop || + (doc?.body && dom.parentElement(doc.body)?.scrollTop) || + doc?.body?.scrollTop || + 0, }; } @@ -239,12 +240,14 @@ export function closestElementOfNode(node: Node | null): HTMLElement | null { * @param node - node to check * @param blockClass - class name to check * @param blockSelector - css selectors to check + * @param blockElementFn - callback function to manually check node * @param checkAncestors - whether to search through parent nodes for the block class * @returns true/false if the node was blocked or not */ export function isBlocked( node: Node | null, blockClass: blockClass, + blockElementFn: BlockElementFn | null, blockSelector: string | null, checkAncestors: boolean, ): boolean { @@ -257,6 +260,10 @@ export function isBlocked( return false; } + if (blockElementFn) { + return blockElementFn(el); + } + try { if (typeof blockClass === 'string') { if (el.classList.contains(blockClass)) return true; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index bba276e483..77b6f43396 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -182,6 +182,7 @@ export type canvasEventWithTime = eventWithTime & { }; export type blockClass = string | RegExp; +export type BlockElementFn = (element: HTMLElement) => boolean; export type maskTextClass = string | RegExp; From c18dce9d482286f86a3aeca3a294685a899f508e Mon Sep 17 00:00:00 2001 From: Kevin Townsend Date: Mon, 3 Feb 2025 13:57:10 -0500 Subject: [PATCH 2/6] uupdates to tests --- guide.md | 4 +- .../rrweb-player/.svelte-kit/ambient.d.ts | 614 +++++++----------- packages/rrweb-snapshot/src/snapshot.ts | 36 +- packages/rrweb-snapshot/test/snapshot.test.ts | 16 +- 4 files changed, 273 insertions(+), 397 deletions(-) diff --git a/guide.md b/guide.md index 764e359fb4..acd3557d23 100644 --- a/guide.md +++ b/guide.md @@ -137,7 +137,8 @@ The parameter of `rrweb.record` accepts the following options. | checkoutEveryNth | - | take a full snapshot after every N events
refer to the [checkout](#checkout) chapter | | checkoutEveryNms | - | take a full snapshot after every N ms
refer to the [checkout](#checkout) chapter | | blockClass | 'rr-block' | Use a string or RegExp to configure which elements should be blocked, refer to the [privacy](#privacy) chapter | -| blockSelector | null | Use a string to configure which selector should be blocked, refer to the [privacy](#privacy) chapter | +| blockElementFN | null | Use a string to configure which selector should be blocked, refer to the [privacy](#privacy) chapter | +| blockSelector | null | Manually determine what element should be blocked, refer to the [privacy](#privacy) chapter | | ignoreClass | 'rr-ignore' | Use a string or RegExp to configure which elements should be ignored, refer to the [privacy](#privacy) chapter | | ignoreSelector | null | Use a string to configure which selector should be ignored, refer to the [privacy](#privacy) chapter | | ignoreCSSAttributes | null | array of CSS attributes that should be ignored | @@ -171,6 +172,7 @@ You may find some contents on the webpage which are not willing to be recorded, - All text of elements with the class name `.rr-mask` and their children will be masked. - `input[type="password"]` will be masked by default. - Mask options to mask the content in input elements. +- `blockElementFN` takes precedence over `blockSelector` and `blockClass`, this callback function is passed a single argument: the elment to block. #### Checkout diff --git a/packages/rrweb-player/.svelte-kit/ambient.d.ts b/packages/rrweb-player/.svelte-kit/ambient.d.ts index 436172dd51..8ca94f106c 100644 --- a/packages/rrweb-player/.svelte-kit/ambient.d.ts +++ b/packages/rrweb-player/.svelte-kit/ambient.d.ts @@ -26,219 +26,138 @@ * ``` */ declare module '$env/static/private' { - export const GITHUB_STATE: string; - export const GIT_CLONE_PROTECTION_ACTIVE: string; + export const npm_package_exports___node_polyfills_types: string; + export const KEVIN_PSI_KEY: string; export const npm_package_scripts_test_cross_platform_build: string; - export const npm_package_devDependencies_rollup: string; - export const npm_package_devDependencies__types_node: string; - export const STATS_TRP: string; - export const DEPLOYMENT_BASEPATH: string; - export const DOTNET_NOLOGO: string; - export const npm_package_devDependencies_vitest: string; - export const USER: string; - export const npm_package_bin_svelte_kit: string; - export const npm_package_dependencies_sirv: string; - export const npm_package_dependencies_sade: string; - export const npm_package_dependencies_mrmime: string; - export const npm_package_dependencies_magic_string: string; - export const npm_config_version_commit_hooks: string; - export const npm_config_user_agent: string; - export const CI: string; - export const npm_package_scripts_generate_version: string; - export const npm_package_dependencies__types_cookie: string; - export const npm_config_bin_links: string; - export const RUNNER_ENVIRONMENT: string; - export const GITHUB_ENV: string; - export const PIPX_HOME: string; - export const npm_node_execpath: string; - export const npm_package_devDependencies_vite: string; - export const npm_package_devDependencies__sveltejs_vite_plugin_svelte: string; - export const npm_config_init_version: string; - export const JAVA_HOME_8_X64: string; - export const SHLVL: string; - export const npm_package_exports___node_types: string; - export const npm_package_files_0: string; - export const HOME: string; - export const npm_package_files_1: string; - export const npm_package_repository_directory: string; - export const RUNNER_TEMP: string; - export const GITHUB_EVENT_PATH: string; - export const npm_package_files_2: string; - export const JAVA_HOME_11_X64: string; - export const PIPX_BIN_DIR: string; - export const GITHUB_REPOSITORY_OWNER: string; - export const npm_package_engines_node: string; + export const TERM_PROGRAM: string; export const npm_package_exports___vite_import: string; - export const npm_package_files_3: string; - export const npm_package_devDependencies_svelte_preprocess: string; - export const npm_config_init_license: string; - export const GRADLE_HOME: string; - export const ANDROID_NDK_LATEST_HOME: string; - export const JAVA_HOME_21_X64: string; - export const STATS_RDCL: string; - export const GITHUB_RETENTION_DAYS: string; - export const npm_package_files_4: string; - export const npm_config_version_tag_prefix: string; - export const GITHUB_REPOSITORY_OWNER_ID: string; - export const POWERSHELL_DISTRIBUTION_CHANNEL: string; - export const AZURE_EXTENSION_DIR: string; - export const GITHUB_HEAD_REF: string; - export const npm_package_scripts_check: string; - export const npm_package_files_5: string; - export const npm_package_dependencies_tiny_glob: string; - export const SYSTEMD_EXEC_PID: string; - export const npm_package_scripts_postinstall: string; - export const npm_package_files_6: string; - export const GITHUB_GRAPHQL_URL: string; + export const npm_package_exports___hooks_import: string; + export const NODE: string; + export const npm_package_dependencies_sade: string; + export const INIT_CWD: string; export const npm_package_devDependencies_typescript: string; - export const npm_package_devDependencies__types_connect: string; - export const npm_package_description: string; - export const GOROOT_1_20_X64: string; - export const NVM_DIR: string; - export const npm_package_readmeFilename: string; - export const npm_package_types: string; export const npm_package_homepage: string; - export const DOTNET_SKIP_FIRST_TIME_EXPERIENCE: string; - export const GOROOT_1_21_X64: string; - export const JAVA_HOME_17_X64: string; - export const ImageVersion: string; - export const npm_package_exports___hooks_types: string; - export const npm_package_devDependencies__playwright_test: string; - export const RUNNER_OS: string; - export const GITHUB_API_URL: string; - export const GOROOT_1_22_X64: string; - export const SWIFT_PATH: string; - export const npm_package_type: string; - export const RUNNER_USER: string; - export const STATS_V3PS: string; - export const CHROMEWEBDRIVER: string; - export const JOURNAL_STREAM: string; - export const GITHUB_WORKFLOW: string; - export const _: string; + export const npm_config_version_git_tag: string; + export const SHELL: string; + export const TERM: string; + export const npm_package_devDependencies_vite: string; + export const CLICOLOR: string; + export const npm_package_dependencies_devalue: string; + export const TMPDIR: string; export const npm_package_scripts_lint: string; + export const npm_config_init_license: string; + export const TERM_PROGRAM_VERSION: string; + export const npm_package_dependencies_set_cookie_parser: string; + export const npm_package_dependencies_cookie: string; + export const TERM_SESSION_ID: string; + export const npm_package_devDependencies_svelte_preprocess: string; export const npm_config_registry: string; - export const ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE: string; - export const STATS_D: string; - export const GITHUB_RUN_ID: string; - export const STATS_VMFE: string; - export const GITHUB_REF_TYPE: string; - export const BOOTSTRAP_HASKELL_NONINTERACTIVE: string; - export const GITHUB_WORKFLOW_SHA: string; - export const GITHUB_BASE_REF: string; - export const ImageOS: string; - export const npm_package_exports___import: string; - export const npm_package_devDependencies_dts_buddy: string; - export const npm_package_dependencies_kleur: string; - export const npm_package_dependencies_devalue: string; - export const npm_config_ignore_scripts: string; - export const GITHUB_WORKFLOW_REF: string; - export const PERFLOG_LOCATION_SETTING: string; - export const GITHUB_ACTION_REPOSITORY: string; + export const npm_package_dependencies_import_meta_resolve: string; + export const npm_package_repository_url: string; + export const npm_package_readmeFilename: string; + export const USER: string; + export const N_PREFIX: string; + export const npm_package_exports___node_import: string; + export const npm_package_description: string; export const npm_package_exports___package_json: string; - export const npm_package_peerDependencies_svelte: string; + export const npm_package_dependencies_esm_env: string; + export const npm_package_license: string; + export const REACT_EDITOR: string; + export const WEBFLOW_TOKEN: string; + export const npm_package_exports___import: string; + export const npm_package_repository_directory: string; + export const SSH_AUTH_SOCK: string; + export const TERMCAP: string; + export const __CF_USER_TEXT_ENCODING: string; + export const npm_package_bin_svelte_kit: string; + export const USERNAME: string; + export const npm_execpath: string; + export const npm_package_devDependencies__types_sade: string; + export const npm_package_peerDependencies__sveltejs_vite_plugin_svelte: string; + export const npm_package_devDependencies_svelte: string; + export const LSCOLORS: string; + export const YARN_IGNORE_PATH: string; export const PATH: string; - export const NODE: string; - export const ANT_HOME: string; - export const DOTNET_MULTILEVEL_LOOKUP: string; - export const RUNNER_TRACKING_ID: string; - export const INVOCATION_ID: string; - export const RUNNER_TOOL_CACHE: string; + export const npm_config_argv: string; + export const npm_package_scripts_postinstall: string; + export const STY: string; + export const npm_package_devDependencies_rollup: string; + export const npm_package_dependencies_magic_string: string; + export const _: string; + export const __CFBundleIdentifier: string; + export const PWD: string; + export const DISABLE_ESLINT_PLUGIN: string; + export const npm_lifecycle_event: string; + export const LANG: string; + export const npm_package_types: string; + export const npm_package_devDependencies__sveltejs_vite_plugin_svelte: string; export const npm_package_repository_type: string; export const npm_package_name: string; - export const GITHUB_ACTION: string; - export const GITHUB_RUN_NUMBER: string; - export const GITHUB_TRIGGERING_ACTOR: string; - export const RUNNER_ARCH: string; - export const XDG_RUNTIME_DIR: string; - export const AGENT_TOOLSDIRECTORY: string; + export const npm_package_scripts_generate_types: string; export const npm_package_scripts_test_integration: string; + export const npm_package_devDependencies__types_connect: string; + export const npm_config_script_shell: string; export const npm_package_exports___node_polyfills_import: string; - export const npm_package_devDependencies__types_set_cookie_parser: string; - export const npm_package_scripts_test_unit: string; - export const npm_package_exports___vite_types: string; - export const npm_config_ignore_path: string; - export const LANG: string; - export const VCPKG_INSTALLATION_ROOT: string; - export const CONDA: string; - export const RUNNER_NAME: string; - export const XDG_CONFIG_HOME: string; - export const STATS_VMD: string; - export const GITHUB_REF_NAME: string; - export const GITHUB_REPOSITORY: string; - export const STATS_D_D: string; - export const npm_lifecycle_script: string; + export const npm_package_exports___types: string; + export const npm_config_version_commit_hooks: string; + export const XPC_FLAGS: string; + export const USERLEAP_HOME: string; export const npm_package_scripts_test_cross_platform_dev: string; - export const STATS_UE: string; - export const ANDROID_NDK_ROOT: string; - export const GITHUB_ACTION_REF: string; - export const DEBIAN_FRONTEND: string; - export const npm_package_scripts_test: string; - export const npm_package_dependencies_esm_env: string; - export const npm_config_version_git_message: string; - export const GITHUB_REPOSITORY_ID: string; - export const GITHUB_ACTIONS: string; - export const npm_lifecycle_event: string; - export const npm_package_repository_url: string; + export const npm_package_devDependencies_vitest: string; + export const npm_package_dependencies_tiny_glob: string; + export const npm_config_bin_links: string; + export const npm_package_engines_node: string; + export const npm_package_dependencies_sirv: string; + export const XPC_SERVICE_NAME: string; export const npm_package_version: string; - export const GITHUB_REF_PROTECTED: string; - export const npm_config_argv: string; - export const npm_package_scripts_generate_types: string; + export const HOME: string; + export const SHLVL: string; + export const npm_package_type: string; + export const npm_package_scripts_generate_version: string; + export const npm_package_scripts_test: string; export const npm_package_scripts_check_all: string; - export const npm_package_devDependencies_svelte: string; - export const npm_package_dependencies_cookie: string; - export const GITHUB_WORKSPACE: string; - export const ACCEPT_EULA: string; - export const GITHUB_JOB: string; - export const RUNNER_PERFLOG: string; - export const YARN_IGNORE_PATH: string; - export const npm_package_exports___node_import: string; - export const GITHUB_SHA: string; - export const GITHUB_RUN_ATTEMPT: string; - export const npm_package_devDependencies__types_sade: string; - export const npm_config_version_git_tag: string; - export const npm_config_version_git_sign: string; - export const GITHUB_REF: string; - export const GITHUB_ACTOR: string; - export const ANDROID_SDK_ROOT: string; - export const npm_package_license: string; + export const GREP_OPTIONS: string; + export const TSC_COMPILE_ON_ERROR: string; + export const npm_package_exports___vite_types: string; + export const npm_package_exports___hooks_types: string; + export const npm_config_save_prefix: string; export const npm_config_strict_ssl: string; - export const LEIN_HOME: string; + export const npm_config_version_git_message: string; + export const SPRIG_HOME: string; + export const LOGNAME: string; export const npm_package_scripts_format: string; - export const GITHUB_PATH: string; - export const JAVA_HOME: string; - export const PWD: string; - export const GITHUB_ACTOR_ID: string; - export const RUNNER_WORKSPACE: string; - export const npm_execpath: string; - export const npm_package_dependencies_set_cookie_parser: string; - export const HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS: string; - export const STATS_TIS: string; - export const GITHUB_EVENT_NAME: string; - export const HOMEBREW_NO_AUTO_UPDATE: string; - export const ANDROID_HOME: string; - export const GITHUB_SERVER_URL: string; - export const GECKOWEBDRIVER: string; - export const LEIN_JAR: string; - export const GHCUP_INSTALL_BASE_PREFIX: string; - export const GITHUB_OUTPUT: string; - export const npm_package_exports___types: string; - export const EDGEWEBDRIVER: string; - export const STATS_EXT: string; export const npm_package_peerDependencies_vite: string; - export const npm_package_peerDependencies__sveltejs_vite_plugin_svelte: string; - export const npm_config_save_prefix: string; + export const WINDOW: string; + export const npm_lifecycle_script: string; + export const npm_package_peerDependencies_svelte: string; + export const npm_config_ignore_path: string; + export const npm_package_devDependencies__types_set_cookie_parser: string; + export const GITHUB_TOKEN: string; + export const npm_package_files_3: string; + export const npm_package_dependencies__types_cookie: string; + export const npm_config_version_git_sign: string; + export const npm_config_ignore_scripts: string; + export const npm_config_user_agent: string; + export const npm_package_files_2: string; + export const npm_package_devDependencies__types_node: string; + export const npm_package_devDependencies__playwright_test: string; + export const npm_package_files_1: string; + export const npm_package_devDependencies_dts_buddy: string; + export const npm_package_files_0: string; + export const npm_package_dependencies_mrmime: string; + export const npm_package_dependencies_kleur: string; + export const npm_config_init_version: string; export const npm_config_ignore_optional: string; - export const ANDROID_NDK: string; - export const SGX_AESM_ADDR: string; - export const CHROME_BIN: string; - export const SELENIUM_JAR_PATH: string; - export const STATS_EXTP: string; - export const npm_package_exports___node_polyfills_types: string; - export const INIT_CWD: string; - export const ANDROID_NDK_HOME: string; - export const GITHUB_STEP_SUMMARY: string; - export const npm_package_exports___hooks_import: string; - export const npm_package_dependencies_import_meta_resolve: string; + export const npm_package_exports___node_types: string; + export const npm_package_files_6: string; + export const CLICKHOUSE_PASSWORD_STAGING: string; + export const npm_package_scripts_check: string; + export const npm_package_files_5: string; + export const npm_node_execpath: string; + export const npm_package_scripts_test_unit: string; + export const npm_package_files_4: string; + export const npm_config_version_tag_prefix: string; + export const npm_config_prefix: string; } /** @@ -270,219 +189,138 @@ declare module '$env/static/public' { */ declare module '$env/dynamic/private' { export const env: { - GITHUB_STATE: string; - GIT_CLONE_PROTECTION_ACTIVE: string; + npm_package_exports___node_polyfills_types: string; + KEVIN_PSI_KEY: string; npm_package_scripts_test_cross_platform_build: string; - npm_package_devDependencies_rollup: string; - npm_package_devDependencies__types_node: string; - STATS_TRP: string; - DEPLOYMENT_BASEPATH: string; - DOTNET_NOLOGO: string; - npm_package_devDependencies_vitest: string; - USER: string; - npm_package_bin_svelte_kit: string; - npm_package_dependencies_sirv: string; - npm_package_dependencies_sade: string; - npm_package_dependencies_mrmime: string; - npm_package_dependencies_magic_string: string; - npm_config_version_commit_hooks: string; - npm_config_user_agent: string; - CI: string; - npm_package_scripts_generate_version: string; - npm_package_dependencies__types_cookie: string; - npm_config_bin_links: string; - RUNNER_ENVIRONMENT: string; - GITHUB_ENV: string; - PIPX_HOME: string; - npm_node_execpath: string; - npm_package_devDependencies_vite: string; - npm_package_devDependencies__sveltejs_vite_plugin_svelte: string; - npm_config_init_version: string; - JAVA_HOME_8_X64: string; - SHLVL: string; - npm_package_exports___node_types: string; - npm_package_files_0: string; - HOME: string; - npm_package_files_1: string; - npm_package_repository_directory: string; - RUNNER_TEMP: string; - GITHUB_EVENT_PATH: string; - npm_package_files_2: string; - JAVA_HOME_11_X64: string; - PIPX_BIN_DIR: string; - GITHUB_REPOSITORY_OWNER: string; - npm_package_engines_node: string; + TERM_PROGRAM: string; npm_package_exports___vite_import: string; - npm_package_files_3: string; - npm_package_devDependencies_svelte_preprocess: string; - npm_config_init_license: string; - GRADLE_HOME: string; - ANDROID_NDK_LATEST_HOME: string; - JAVA_HOME_21_X64: string; - STATS_RDCL: string; - GITHUB_RETENTION_DAYS: string; - npm_package_files_4: string; - npm_config_version_tag_prefix: string; - GITHUB_REPOSITORY_OWNER_ID: string; - POWERSHELL_DISTRIBUTION_CHANNEL: string; - AZURE_EXTENSION_DIR: string; - GITHUB_HEAD_REF: string; - npm_package_scripts_check: string; - npm_package_files_5: string; - npm_package_dependencies_tiny_glob: string; - SYSTEMD_EXEC_PID: string; - npm_package_scripts_postinstall: string; - npm_package_files_6: string; - GITHUB_GRAPHQL_URL: string; + npm_package_exports___hooks_import: string; + NODE: string; + npm_package_dependencies_sade: string; + INIT_CWD: string; npm_package_devDependencies_typescript: string; - npm_package_devDependencies__types_connect: string; - npm_package_description: string; - GOROOT_1_20_X64: string; - NVM_DIR: string; - npm_package_readmeFilename: string; - npm_package_types: string; npm_package_homepage: string; - DOTNET_SKIP_FIRST_TIME_EXPERIENCE: string; - GOROOT_1_21_X64: string; - JAVA_HOME_17_X64: string; - ImageVersion: string; - npm_package_exports___hooks_types: string; - npm_package_devDependencies__playwright_test: string; - RUNNER_OS: string; - GITHUB_API_URL: string; - GOROOT_1_22_X64: string; - SWIFT_PATH: string; - npm_package_type: string; - RUNNER_USER: string; - STATS_V3PS: string; - CHROMEWEBDRIVER: string; - JOURNAL_STREAM: string; - GITHUB_WORKFLOW: string; - _: string; + npm_config_version_git_tag: string; + SHELL: string; + TERM: string; + npm_package_devDependencies_vite: string; + CLICOLOR: string; + npm_package_dependencies_devalue: string; + TMPDIR: string; npm_package_scripts_lint: string; + npm_config_init_license: string; + TERM_PROGRAM_VERSION: string; + npm_package_dependencies_set_cookie_parser: string; + npm_package_dependencies_cookie: string; + TERM_SESSION_ID: string; + npm_package_devDependencies_svelte_preprocess: string; npm_config_registry: string; - ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE: string; - STATS_D: string; - GITHUB_RUN_ID: string; - STATS_VMFE: string; - GITHUB_REF_TYPE: string; - BOOTSTRAP_HASKELL_NONINTERACTIVE: string; - GITHUB_WORKFLOW_SHA: string; - GITHUB_BASE_REF: string; - ImageOS: string; - npm_package_exports___import: string; - npm_package_devDependencies_dts_buddy: string; - npm_package_dependencies_kleur: string; - npm_package_dependencies_devalue: string; - npm_config_ignore_scripts: string; - GITHUB_WORKFLOW_REF: string; - PERFLOG_LOCATION_SETTING: string; - GITHUB_ACTION_REPOSITORY: string; + npm_package_dependencies_import_meta_resolve: string; + npm_package_repository_url: string; + npm_package_readmeFilename: string; + USER: string; + N_PREFIX: string; + npm_package_exports___node_import: string; + npm_package_description: string; npm_package_exports___package_json: string; - npm_package_peerDependencies_svelte: string; + npm_package_dependencies_esm_env: string; + npm_package_license: string; + REACT_EDITOR: string; + WEBFLOW_TOKEN: string; + npm_package_exports___import: string; + npm_package_repository_directory: string; + SSH_AUTH_SOCK: string; + TERMCAP: string; + __CF_USER_TEXT_ENCODING: string; + npm_package_bin_svelte_kit: string; + USERNAME: string; + npm_execpath: string; + npm_package_devDependencies__types_sade: string; + npm_package_peerDependencies__sveltejs_vite_plugin_svelte: string; + npm_package_devDependencies_svelte: string; + LSCOLORS: string; + YARN_IGNORE_PATH: string; PATH: string; - NODE: string; - ANT_HOME: string; - DOTNET_MULTILEVEL_LOOKUP: string; - RUNNER_TRACKING_ID: string; - INVOCATION_ID: string; - RUNNER_TOOL_CACHE: string; + npm_config_argv: string; + npm_package_scripts_postinstall: string; + STY: string; + npm_package_devDependencies_rollup: string; + npm_package_dependencies_magic_string: string; + _: string; + __CFBundleIdentifier: string; + PWD: string; + DISABLE_ESLINT_PLUGIN: string; + npm_lifecycle_event: string; + LANG: string; + npm_package_types: string; + npm_package_devDependencies__sveltejs_vite_plugin_svelte: string; npm_package_repository_type: string; npm_package_name: string; - GITHUB_ACTION: string; - GITHUB_RUN_NUMBER: string; - GITHUB_TRIGGERING_ACTOR: string; - RUNNER_ARCH: string; - XDG_RUNTIME_DIR: string; - AGENT_TOOLSDIRECTORY: string; + npm_package_scripts_generate_types: string; npm_package_scripts_test_integration: string; + npm_package_devDependencies__types_connect: string; + npm_config_script_shell: string; npm_package_exports___node_polyfills_import: string; - npm_package_devDependencies__types_set_cookie_parser: string; - npm_package_scripts_test_unit: string; - npm_package_exports___vite_types: string; - npm_config_ignore_path: string; - LANG: string; - VCPKG_INSTALLATION_ROOT: string; - CONDA: string; - RUNNER_NAME: string; - XDG_CONFIG_HOME: string; - STATS_VMD: string; - GITHUB_REF_NAME: string; - GITHUB_REPOSITORY: string; - STATS_D_D: string; - npm_lifecycle_script: string; + npm_package_exports___types: string; + npm_config_version_commit_hooks: string; + XPC_FLAGS: string; + USERLEAP_HOME: string; npm_package_scripts_test_cross_platform_dev: string; - STATS_UE: string; - ANDROID_NDK_ROOT: string; - GITHUB_ACTION_REF: string; - DEBIAN_FRONTEND: string; - npm_package_scripts_test: string; - npm_package_dependencies_esm_env: string; - npm_config_version_git_message: string; - GITHUB_REPOSITORY_ID: string; - GITHUB_ACTIONS: string; - npm_lifecycle_event: string; - npm_package_repository_url: string; + npm_package_devDependencies_vitest: string; + npm_package_dependencies_tiny_glob: string; + npm_config_bin_links: string; + npm_package_engines_node: string; + npm_package_dependencies_sirv: string; + XPC_SERVICE_NAME: string; npm_package_version: string; - GITHUB_REF_PROTECTED: string; - npm_config_argv: string; - npm_package_scripts_generate_types: string; + HOME: string; + SHLVL: string; + npm_package_type: string; + npm_package_scripts_generate_version: string; + npm_package_scripts_test: string; npm_package_scripts_check_all: string; - npm_package_devDependencies_svelte: string; - npm_package_dependencies_cookie: string; - GITHUB_WORKSPACE: string; - ACCEPT_EULA: string; - GITHUB_JOB: string; - RUNNER_PERFLOG: string; - YARN_IGNORE_PATH: string; - npm_package_exports___node_import: string; - GITHUB_SHA: string; - GITHUB_RUN_ATTEMPT: string; - npm_package_devDependencies__types_sade: string; - npm_config_version_git_tag: string; - npm_config_version_git_sign: string; - GITHUB_REF: string; - GITHUB_ACTOR: string; - ANDROID_SDK_ROOT: string; - npm_package_license: string; + GREP_OPTIONS: string; + TSC_COMPILE_ON_ERROR: string; + npm_package_exports___vite_types: string; + npm_package_exports___hooks_types: string; + npm_config_save_prefix: string; npm_config_strict_ssl: string; - LEIN_HOME: string; + npm_config_version_git_message: string; + SPRIG_HOME: string; + LOGNAME: string; npm_package_scripts_format: string; - GITHUB_PATH: string; - JAVA_HOME: string; - PWD: string; - GITHUB_ACTOR_ID: string; - RUNNER_WORKSPACE: string; - npm_execpath: string; - npm_package_dependencies_set_cookie_parser: string; - HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS: string; - STATS_TIS: string; - GITHUB_EVENT_NAME: string; - HOMEBREW_NO_AUTO_UPDATE: string; - ANDROID_HOME: string; - GITHUB_SERVER_URL: string; - GECKOWEBDRIVER: string; - LEIN_JAR: string; - GHCUP_INSTALL_BASE_PREFIX: string; - GITHUB_OUTPUT: string; - npm_package_exports___types: string; - EDGEWEBDRIVER: string; - STATS_EXT: string; npm_package_peerDependencies_vite: string; - npm_package_peerDependencies__sveltejs_vite_plugin_svelte: string; - npm_config_save_prefix: string; + WINDOW: string; + npm_lifecycle_script: string; + npm_package_peerDependencies_svelte: string; + npm_config_ignore_path: string; + npm_package_devDependencies__types_set_cookie_parser: string; + GITHUB_TOKEN: string; + npm_package_files_3: string; + npm_package_dependencies__types_cookie: string; + npm_config_version_git_sign: string; + npm_config_ignore_scripts: string; + npm_config_user_agent: string; + npm_package_files_2: string; + npm_package_devDependencies__types_node: string; + npm_package_devDependencies__playwright_test: string; + npm_package_files_1: string; + npm_package_devDependencies_dts_buddy: string; + npm_package_files_0: string; + npm_package_dependencies_mrmime: string; + npm_package_dependencies_kleur: string; + npm_config_init_version: string; npm_config_ignore_optional: string; - ANDROID_NDK: string; - SGX_AESM_ADDR: string; - CHROME_BIN: string; - SELENIUM_JAR_PATH: string; - STATS_EXTP: string; - npm_package_exports___node_polyfills_types: string; - INIT_CWD: string; - ANDROID_NDK_HOME: string; - GITHUB_STEP_SUMMARY: string; - npm_package_exports___hooks_import: string; - npm_package_dependencies_import_meta_resolve: string; + npm_package_exports___node_types: string; + npm_package_files_6: string; + CLICKHOUSE_PASSWORD_STAGING: string; + npm_package_scripts_check: string; + npm_package_files_5: string; + npm_node_execpath: string; + npm_package_scripts_test_unit: string; + npm_package_files_4: string; + npm_config_version_tag_prefix: string; + npm_config_prefix: string; [key: `PUBLIC_${string}`]: undefined; [key: `${string}`]: string | undefined; } diff --git a/packages/rrweb-snapshot/src/snapshot.ts b/packages/rrweb-snapshot/src/snapshot.ts index 0e8ec68be9..4c4623fbe4 100644 --- a/packages/rrweb-snapshot/src/snapshot.ts +++ b/packages/rrweb-snapshot/src/snapshot.ts @@ -16,6 +16,7 @@ import type { attributes, mediaAttributes, DataURLOptions, + BlockElementFn, } from '@rrweb/types'; import { Mirror, @@ -219,8 +220,12 @@ export function _isBlockedElement( element: HTMLElement, blockClass: string | RegExp, blockSelector: string | null, + blockElementFn: BlockElementFn | null, ): boolean { try { + if (blockElementFn) { + return blockElementFn(element); + } if (typeof blockClass === 'string') { if (element.classList.contains(blockClass)) { return true; @@ -392,6 +397,7 @@ function serializeNode( doc: Document; mirror: Mirror; blockClass: string | RegExp; + blockElementFn: BlockElementFn | null; blockSelector: string | null; needsMask: boolean; inlineStylesheet: boolean; @@ -413,6 +419,7 @@ function serializeNode( doc, mirror, blockClass, + blockElementFn, blockSelector, needsMask, inlineStylesheet, @@ -454,6 +461,7 @@ function serializeNode( return serializeElementNode(n as HTMLElement, { doc, blockClass, + blockElementFn, blockSelector, inlineStylesheet, maskInputOptions, @@ -544,6 +552,7 @@ function serializeElementNode( options: { doc: Document; blockClass: string | RegExp; + blockElementFn: BlockElementFn | null; blockSelector: string | null; inlineStylesheet: boolean; maskInputOptions: MaskInputOptions; @@ -562,6 +571,7 @@ function serializeElementNode( const { doc, blockClass, + blockElementFn, blockSelector, inlineStylesheet, maskInputOptions = {}, @@ -573,7 +583,12 @@ function serializeElementNode( newlyAddedElement = false, rootId, } = options; - const needBlock = _isBlockedElement(n, blockClass, blockSelector); + const needBlock = _isBlockedElement( + n, + blockClass, + blockSelector, + blockElementFn, + ); const tagName = getValidTagName(n); let attributes: attributes = {}; const len = n.attributes.length; @@ -976,6 +991,7 @@ export function serializeNodeWithId( doc, mirror, blockClass, + blockElementFn, blockSelector, needsMask, inlineStylesheet, @@ -1047,6 +1063,7 @@ export function serializeNodeWithId( doc, mirror, blockClass, + blockElementFn, blockSelector, needsMask, maskTextClass, @@ -1123,6 +1140,7 @@ export function serializeNodeWithId( doc: iframeDoc, mirror, blockClass, + blockElementFn, blockSelector, needsMask, maskTextClass, @@ -1175,6 +1193,7 @@ export function serializeNodeWithId( doc, mirror, blockClass, + blockElementFn, blockSelector, needsMask, maskTextClass, @@ -1217,6 +1236,7 @@ function snapshot( options?: { mirror?: Mirror; blockClass?: string | RegExp; + blockElementFn?: BlockElementFn; blockSelector?: string | null; maskTextClass?: string | RegExp; maskTextSelector?: string | null; @@ -1246,6 +1266,7 @@ function snapshot( const { mirror = new Mirror(), blockClass = 'rr-block', + blockElementFn = null, blockSelector = null, maskTextClass = 'rr-mask', maskTextSelector = null, @@ -1286,10 +1307,10 @@ function snapshot( password: true, } : maskAllInputs === false - ? { - password: true, - } - : maskAllInputs; + ? { + password: true, + } + : maskAllInputs; const slimDOMOptions: SlimDOMOptions = slimDOM === true || slimDOM === 'all' ? // if true: set of sensible options that should not throw away any information @@ -1306,12 +1327,13 @@ function snapshot( headMetaVerification: true, } : slimDOM === false - ? {} - : slimDOM; + ? {} + : slimDOM; return serializeNodeWithId(n, { doc: n, mirror, blockClass, + blockElementFn, blockSelector, maskTextClass, maskTextSelector, diff --git a/packages/rrweb-snapshot/test/snapshot.test.ts b/packages/rrweb-snapshot/test/snapshot.test.ts index 5778eb0aff..7a2ce70606 100644 --- a/packages/rrweb-snapshot/test/snapshot.test.ts +++ b/packages/rrweb-snapshot/test/snapshot.test.ts @@ -16,6 +16,7 @@ const serializeNode = (node: Node): serializedNodeWithId | null => { doc: document, mirror: new Mirror(), blockClass: 'blockblock', + blockElementFn: null, blockSelector: null, maskTextClass: 'maskmask', maskTextSelector: null, @@ -129,7 +130,12 @@ describe('absolute url to stylesheet', () => { describe('isBlockedElement()', () => { const subject = (html: string, opt: any = {}) => - _isBlockedElement(render(html), 'rr-block', opt.blockSelector); + _isBlockedElement( + render(html), + 'rr-block', + opt.blockSelector, + opt.blockElementFn, + ); const render = (html: string): HTMLElement => JSDOM.fragment(html).querySelector('div')!; @@ -151,6 +157,14 @@ describe('isBlockedElement()', () => { subject('
', { blockSelector: '[data-rr-block]' }), ).toEqual(true); }); + + it('blocks with blockElementFn', () => { + expect( + subject('
', { + blockElementFn: (e: HTMLElement) => e.matches('div.special'), + }), + ).toEqual(true); + }); }); describe('style elements', () => { From c6865925c8f4dc7f1dee6c7be9c6a85baaada6e3 Mon Sep 17 00:00:00 2001 From: Kevin Townsend Date: Mon, 3 Feb 2025 14:00:59 -0500 Subject: [PATCH 3/6] this should not change --- .../rrweb-player/.svelte-kit/ambient.d.ts | 614 +++++++++++------- 1 file changed, 388 insertions(+), 226 deletions(-) diff --git a/packages/rrweb-player/.svelte-kit/ambient.d.ts b/packages/rrweb-player/.svelte-kit/ambient.d.ts index 8ca94f106c..436172dd51 100644 --- a/packages/rrweb-player/.svelte-kit/ambient.d.ts +++ b/packages/rrweb-player/.svelte-kit/ambient.d.ts @@ -26,138 +26,219 @@ * ``` */ declare module '$env/static/private' { - export const npm_package_exports___node_polyfills_types: string; - export const KEVIN_PSI_KEY: string; + export const GITHUB_STATE: string; + export const GIT_CLONE_PROTECTION_ACTIVE: string; export const npm_package_scripts_test_cross_platform_build: string; - export const TERM_PROGRAM: string; - export const npm_package_exports___vite_import: string; - export const npm_package_exports___hooks_import: string; - export const NODE: string; + export const npm_package_devDependencies_rollup: string; + export const npm_package_devDependencies__types_node: string; + export const STATS_TRP: string; + export const DEPLOYMENT_BASEPATH: string; + export const DOTNET_NOLOGO: string; + export const npm_package_devDependencies_vitest: string; + export const USER: string; + export const npm_package_bin_svelte_kit: string; + export const npm_package_dependencies_sirv: string; export const npm_package_dependencies_sade: string; - export const INIT_CWD: string; + export const npm_package_dependencies_mrmime: string; + export const npm_package_dependencies_magic_string: string; + export const npm_config_version_commit_hooks: string; + export const npm_config_user_agent: string; + export const CI: string; + export const npm_package_scripts_generate_version: string; + export const npm_package_dependencies__types_cookie: string; + export const npm_config_bin_links: string; + export const RUNNER_ENVIRONMENT: string; + export const GITHUB_ENV: string; + export const PIPX_HOME: string; + export const npm_node_execpath: string; + export const npm_package_devDependencies_vite: string; + export const npm_package_devDependencies__sveltejs_vite_plugin_svelte: string; + export const npm_config_init_version: string; + export const JAVA_HOME_8_X64: string; + export const SHLVL: string; + export const npm_package_exports___node_types: string; + export const npm_package_files_0: string; + export const HOME: string; + export const npm_package_files_1: string; + export const npm_package_repository_directory: string; + export const RUNNER_TEMP: string; + export const GITHUB_EVENT_PATH: string; + export const npm_package_files_2: string; + export const JAVA_HOME_11_X64: string; + export const PIPX_BIN_DIR: string; + export const GITHUB_REPOSITORY_OWNER: string; + export const npm_package_engines_node: string; + export const npm_package_exports___vite_import: string; + export const npm_package_files_3: string; + export const npm_package_devDependencies_svelte_preprocess: string; + export const npm_config_init_license: string; + export const GRADLE_HOME: string; + export const ANDROID_NDK_LATEST_HOME: string; + export const JAVA_HOME_21_X64: string; + export const STATS_RDCL: string; + export const GITHUB_RETENTION_DAYS: string; + export const npm_package_files_4: string; + export const npm_config_version_tag_prefix: string; + export const GITHUB_REPOSITORY_OWNER_ID: string; + export const POWERSHELL_DISTRIBUTION_CHANNEL: string; + export const AZURE_EXTENSION_DIR: string; + export const GITHUB_HEAD_REF: string; + export const npm_package_scripts_check: string; + export const npm_package_files_5: string; + export const npm_package_dependencies_tiny_glob: string; + export const SYSTEMD_EXEC_PID: string; + export const npm_package_scripts_postinstall: string; + export const npm_package_files_6: string; + export const GITHUB_GRAPHQL_URL: string; export const npm_package_devDependencies_typescript: string; + export const npm_package_devDependencies__types_connect: string; + export const npm_package_description: string; + export const GOROOT_1_20_X64: string; + export const NVM_DIR: string; + export const npm_package_readmeFilename: string; + export const npm_package_types: string; export const npm_package_homepage: string; - export const npm_config_version_git_tag: string; - export const SHELL: string; - export const TERM: string; - export const npm_package_devDependencies_vite: string; - export const CLICOLOR: string; - export const npm_package_dependencies_devalue: string; - export const TMPDIR: string; + export const DOTNET_SKIP_FIRST_TIME_EXPERIENCE: string; + export const GOROOT_1_21_X64: string; + export const JAVA_HOME_17_X64: string; + export const ImageVersion: string; + export const npm_package_exports___hooks_types: string; + export const npm_package_devDependencies__playwright_test: string; + export const RUNNER_OS: string; + export const GITHUB_API_URL: string; + export const GOROOT_1_22_X64: string; + export const SWIFT_PATH: string; + export const npm_package_type: string; + export const RUNNER_USER: string; + export const STATS_V3PS: string; + export const CHROMEWEBDRIVER: string; + export const JOURNAL_STREAM: string; + export const GITHUB_WORKFLOW: string; + export const _: string; export const npm_package_scripts_lint: string; - export const npm_config_init_license: string; - export const TERM_PROGRAM_VERSION: string; - export const npm_package_dependencies_set_cookie_parser: string; - export const npm_package_dependencies_cookie: string; - export const TERM_SESSION_ID: string; - export const npm_package_devDependencies_svelte_preprocess: string; export const npm_config_registry: string; - export const npm_package_dependencies_import_meta_resolve: string; - export const npm_package_repository_url: string; - export const npm_package_readmeFilename: string; - export const USER: string; - export const N_PREFIX: string; - export const npm_package_exports___node_import: string; - export const npm_package_description: string; - export const npm_package_exports___package_json: string; - export const npm_package_dependencies_esm_env: string; - export const npm_package_license: string; - export const REACT_EDITOR: string; - export const WEBFLOW_TOKEN: string; + export const ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE: string; + export const STATS_D: string; + export const GITHUB_RUN_ID: string; + export const STATS_VMFE: string; + export const GITHUB_REF_TYPE: string; + export const BOOTSTRAP_HASKELL_NONINTERACTIVE: string; + export const GITHUB_WORKFLOW_SHA: string; + export const GITHUB_BASE_REF: string; + export const ImageOS: string; export const npm_package_exports___import: string; - export const npm_package_repository_directory: string; - export const SSH_AUTH_SOCK: string; - export const TERMCAP: string; - export const __CF_USER_TEXT_ENCODING: string; - export const npm_package_bin_svelte_kit: string; - export const USERNAME: string; - export const npm_execpath: string; - export const npm_package_devDependencies__types_sade: string; - export const npm_package_peerDependencies__sveltejs_vite_plugin_svelte: string; - export const npm_package_devDependencies_svelte: string; - export const LSCOLORS: string; - export const YARN_IGNORE_PATH: string; + export const npm_package_devDependencies_dts_buddy: string; + export const npm_package_dependencies_kleur: string; + export const npm_package_dependencies_devalue: string; + export const npm_config_ignore_scripts: string; + export const GITHUB_WORKFLOW_REF: string; + export const PERFLOG_LOCATION_SETTING: string; + export const GITHUB_ACTION_REPOSITORY: string; + export const npm_package_exports___package_json: string; + export const npm_package_peerDependencies_svelte: string; export const PATH: string; - export const npm_config_argv: string; - export const npm_package_scripts_postinstall: string; - export const STY: string; - export const npm_package_devDependencies_rollup: string; - export const npm_package_dependencies_magic_string: string; - export const _: string; - export const __CFBundleIdentifier: string; - export const PWD: string; - export const DISABLE_ESLINT_PLUGIN: string; - export const npm_lifecycle_event: string; - export const LANG: string; - export const npm_package_types: string; - export const npm_package_devDependencies__sveltejs_vite_plugin_svelte: string; + export const NODE: string; + export const ANT_HOME: string; + export const DOTNET_MULTILEVEL_LOOKUP: string; + export const RUNNER_TRACKING_ID: string; + export const INVOCATION_ID: string; + export const RUNNER_TOOL_CACHE: string; export const npm_package_repository_type: string; export const npm_package_name: string; - export const npm_package_scripts_generate_types: string; + export const GITHUB_ACTION: string; + export const GITHUB_RUN_NUMBER: string; + export const GITHUB_TRIGGERING_ACTOR: string; + export const RUNNER_ARCH: string; + export const XDG_RUNTIME_DIR: string; + export const AGENT_TOOLSDIRECTORY: string; export const npm_package_scripts_test_integration: string; - export const npm_package_devDependencies__types_connect: string; - export const npm_config_script_shell: string; export const npm_package_exports___node_polyfills_import: string; - export const npm_package_exports___types: string; - export const npm_config_version_commit_hooks: string; - export const XPC_FLAGS: string; - export const USERLEAP_HOME: string; + export const npm_package_devDependencies__types_set_cookie_parser: string; + export const npm_package_scripts_test_unit: string; + export const npm_package_exports___vite_types: string; + export const npm_config_ignore_path: string; + export const LANG: string; + export const VCPKG_INSTALLATION_ROOT: string; + export const CONDA: string; + export const RUNNER_NAME: string; + export const XDG_CONFIG_HOME: string; + export const STATS_VMD: string; + export const GITHUB_REF_NAME: string; + export const GITHUB_REPOSITORY: string; + export const STATS_D_D: string; + export const npm_lifecycle_script: string; export const npm_package_scripts_test_cross_platform_dev: string; - export const npm_package_devDependencies_vitest: string; - export const npm_package_dependencies_tiny_glob: string; - export const npm_config_bin_links: string; - export const npm_package_engines_node: string; - export const npm_package_dependencies_sirv: string; - export const XPC_SERVICE_NAME: string; - export const npm_package_version: string; - export const HOME: string; - export const SHLVL: string; - export const npm_package_type: string; - export const npm_package_scripts_generate_version: string; + export const STATS_UE: string; + export const ANDROID_NDK_ROOT: string; + export const GITHUB_ACTION_REF: string; + export const DEBIAN_FRONTEND: string; export const npm_package_scripts_test: string; + export const npm_package_dependencies_esm_env: string; + export const npm_config_version_git_message: string; + export const GITHUB_REPOSITORY_ID: string; + export const GITHUB_ACTIONS: string; + export const npm_lifecycle_event: string; + export const npm_package_repository_url: string; + export const npm_package_version: string; + export const GITHUB_REF_PROTECTED: string; + export const npm_config_argv: string; + export const npm_package_scripts_generate_types: string; export const npm_package_scripts_check_all: string; - export const GREP_OPTIONS: string; - export const TSC_COMPILE_ON_ERROR: string; - export const npm_package_exports___vite_types: string; - export const npm_package_exports___hooks_types: string; - export const npm_config_save_prefix: string; + export const npm_package_devDependencies_svelte: string; + export const npm_package_dependencies_cookie: string; + export const GITHUB_WORKSPACE: string; + export const ACCEPT_EULA: string; + export const GITHUB_JOB: string; + export const RUNNER_PERFLOG: string; + export const YARN_IGNORE_PATH: string; + export const npm_package_exports___node_import: string; + export const GITHUB_SHA: string; + export const GITHUB_RUN_ATTEMPT: string; + export const npm_package_devDependencies__types_sade: string; + export const npm_config_version_git_tag: string; + export const npm_config_version_git_sign: string; + export const GITHUB_REF: string; + export const GITHUB_ACTOR: string; + export const ANDROID_SDK_ROOT: string; + export const npm_package_license: string; export const npm_config_strict_ssl: string; - export const npm_config_version_git_message: string; - export const SPRIG_HOME: string; - export const LOGNAME: string; + export const LEIN_HOME: string; export const npm_package_scripts_format: string; + export const GITHUB_PATH: string; + export const JAVA_HOME: string; + export const PWD: string; + export const GITHUB_ACTOR_ID: string; + export const RUNNER_WORKSPACE: string; + export const npm_execpath: string; + export const npm_package_dependencies_set_cookie_parser: string; + export const HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS: string; + export const STATS_TIS: string; + export const GITHUB_EVENT_NAME: string; + export const HOMEBREW_NO_AUTO_UPDATE: string; + export const ANDROID_HOME: string; + export const GITHUB_SERVER_URL: string; + export const GECKOWEBDRIVER: string; + export const LEIN_JAR: string; + export const GHCUP_INSTALL_BASE_PREFIX: string; + export const GITHUB_OUTPUT: string; + export const npm_package_exports___types: string; + export const EDGEWEBDRIVER: string; + export const STATS_EXT: string; export const npm_package_peerDependencies_vite: string; - export const WINDOW: string; - export const npm_lifecycle_script: string; - export const npm_package_peerDependencies_svelte: string; - export const npm_config_ignore_path: string; - export const npm_package_devDependencies__types_set_cookie_parser: string; - export const GITHUB_TOKEN: string; - export const npm_package_files_3: string; - export const npm_package_dependencies__types_cookie: string; - export const npm_config_version_git_sign: string; - export const npm_config_ignore_scripts: string; - export const npm_config_user_agent: string; - export const npm_package_files_2: string; - export const npm_package_devDependencies__types_node: string; - export const npm_package_devDependencies__playwright_test: string; - export const npm_package_files_1: string; - export const npm_package_devDependencies_dts_buddy: string; - export const npm_package_files_0: string; - export const npm_package_dependencies_mrmime: string; - export const npm_package_dependencies_kleur: string; - export const npm_config_init_version: string; + export const npm_package_peerDependencies__sveltejs_vite_plugin_svelte: string; + export const npm_config_save_prefix: string; export const npm_config_ignore_optional: string; - export const npm_package_exports___node_types: string; - export const npm_package_files_6: string; - export const CLICKHOUSE_PASSWORD_STAGING: string; - export const npm_package_scripts_check: string; - export const npm_package_files_5: string; - export const npm_node_execpath: string; - export const npm_package_scripts_test_unit: string; - export const npm_package_files_4: string; - export const npm_config_version_tag_prefix: string; - export const npm_config_prefix: string; + export const ANDROID_NDK: string; + export const SGX_AESM_ADDR: string; + export const CHROME_BIN: string; + export const SELENIUM_JAR_PATH: string; + export const STATS_EXTP: string; + export const npm_package_exports___node_polyfills_types: string; + export const INIT_CWD: string; + export const ANDROID_NDK_HOME: string; + export const GITHUB_STEP_SUMMARY: string; + export const npm_package_exports___hooks_import: string; + export const npm_package_dependencies_import_meta_resolve: string; } /** @@ -189,138 +270,219 @@ declare module '$env/static/public' { */ declare module '$env/dynamic/private' { export const env: { - npm_package_exports___node_polyfills_types: string; - KEVIN_PSI_KEY: string; + GITHUB_STATE: string; + GIT_CLONE_PROTECTION_ACTIVE: string; npm_package_scripts_test_cross_platform_build: string; - TERM_PROGRAM: string; - npm_package_exports___vite_import: string; - npm_package_exports___hooks_import: string; - NODE: string; + npm_package_devDependencies_rollup: string; + npm_package_devDependencies__types_node: string; + STATS_TRP: string; + DEPLOYMENT_BASEPATH: string; + DOTNET_NOLOGO: string; + npm_package_devDependencies_vitest: string; + USER: string; + npm_package_bin_svelte_kit: string; + npm_package_dependencies_sirv: string; npm_package_dependencies_sade: string; - INIT_CWD: string; + npm_package_dependencies_mrmime: string; + npm_package_dependencies_magic_string: string; + npm_config_version_commit_hooks: string; + npm_config_user_agent: string; + CI: string; + npm_package_scripts_generate_version: string; + npm_package_dependencies__types_cookie: string; + npm_config_bin_links: string; + RUNNER_ENVIRONMENT: string; + GITHUB_ENV: string; + PIPX_HOME: string; + npm_node_execpath: string; + npm_package_devDependencies_vite: string; + npm_package_devDependencies__sveltejs_vite_plugin_svelte: string; + npm_config_init_version: string; + JAVA_HOME_8_X64: string; + SHLVL: string; + npm_package_exports___node_types: string; + npm_package_files_0: string; + HOME: string; + npm_package_files_1: string; + npm_package_repository_directory: string; + RUNNER_TEMP: string; + GITHUB_EVENT_PATH: string; + npm_package_files_2: string; + JAVA_HOME_11_X64: string; + PIPX_BIN_DIR: string; + GITHUB_REPOSITORY_OWNER: string; + npm_package_engines_node: string; + npm_package_exports___vite_import: string; + npm_package_files_3: string; + npm_package_devDependencies_svelte_preprocess: string; + npm_config_init_license: string; + GRADLE_HOME: string; + ANDROID_NDK_LATEST_HOME: string; + JAVA_HOME_21_X64: string; + STATS_RDCL: string; + GITHUB_RETENTION_DAYS: string; + npm_package_files_4: string; + npm_config_version_tag_prefix: string; + GITHUB_REPOSITORY_OWNER_ID: string; + POWERSHELL_DISTRIBUTION_CHANNEL: string; + AZURE_EXTENSION_DIR: string; + GITHUB_HEAD_REF: string; + npm_package_scripts_check: string; + npm_package_files_5: string; + npm_package_dependencies_tiny_glob: string; + SYSTEMD_EXEC_PID: string; + npm_package_scripts_postinstall: string; + npm_package_files_6: string; + GITHUB_GRAPHQL_URL: string; npm_package_devDependencies_typescript: string; + npm_package_devDependencies__types_connect: string; + npm_package_description: string; + GOROOT_1_20_X64: string; + NVM_DIR: string; + npm_package_readmeFilename: string; + npm_package_types: string; npm_package_homepage: string; - npm_config_version_git_tag: string; - SHELL: string; - TERM: string; - npm_package_devDependencies_vite: string; - CLICOLOR: string; - npm_package_dependencies_devalue: string; - TMPDIR: string; + DOTNET_SKIP_FIRST_TIME_EXPERIENCE: string; + GOROOT_1_21_X64: string; + JAVA_HOME_17_X64: string; + ImageVersion: string; + npm_package_exports___hooks_types: string; + npm_package_devDependencies__playwright_test: string; + RUNNER_OS: string; + GITHUB_API_URL: string; + GOROOT_1_22_X64: string; + SWIFT_PATH: string; + npm_package_type: string; + RUNNER_USER: string; + STATS_V3PS: string; + CHROMEWEBDRIVER: string; + JOURNAL_STREAM: string; + GITHUB_WORKFLOW: string; + _: string; npm_package_scripts_lint: string; - npm_config_init_license: string; - TERM_PROGRAM_VERSION: string; - npm_package_dependencies_set_cookie_parser: string; - npm_package_dependencies_cookie: string; - TERM_SESSION_ID: string; - npm_package_devDependencies_svelte_preprocess: string; npm_config_registry: string; - npm_package_dependencies_import_meta_resolve: string; - npm_package_repository_url: string; - npm_package_readmeFilename: string; - USER: string; - N_PREFIX: string; - npm_package_exports___node_import: string; - npm_package_description: string; - npm_package_exports___package_json: string; - npm_package_dependencies_esm_env: string; - npm_package_license: string; - REACT_EDITOR: string; - WEBFLOW_TOKEN: string; + ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE: string; + STATS_D: string; + GITHUB_RUN_ID: string; + STATS_VMFE: string; + GITHUB_REF_TYPE: string; + BOOTSTRAP_HASKELL_NONINTERACTIVE: string; + GITHUB_WORKFLOW_SHA: string; + GITHUB_BASE_REF: string; + ImageOS: string; npm_package_exports___import: string; - npm_package_repository_directory: string; - SSH_AUTH_SOCK: string; - TERMCAP: string; - __CF_USER_TEXT_ENCODING: string; - npm_package_bin_svelte_kit: string; - USERNAME: string; - npm_execpath: string; - npm_package_devDependencies__types_sade: string; - npm_package_peerDependencies__sveltejs_vite_plugin_svelte: string; - npm_package_devDependencies_svelte: string; - LSCOLORS: string; - YARN_IGNORE_PATH: string; + npm_package_devDependencies_dts_buddy: string; + npm_package_dependencies_kleur: string; + npm_package_dependencies_devalue: string; + npm_config_ignore_scripts: string; + GITHUB_WORKFLOW_REF: string; + PERFLOG_LOCATION_SETTING: string; + GITHUB_ACTION_REPOSITORY: string; + npm_package_exports___package_json: string; + npm_package_peerDependencies_svelte: string; PATH: string; - npm_config_argv: string; - npm_package_scripts_postinstall: string; - STY: string; - npm_package_devDependencies_rollup: string; - npm_package_dependencies_magic_string: string; - _: string; - __CFBundleIdentifier: string; - PWD: string; - DISABLE_ESLINT_PLUGIN: string; - npm_lifecycle_event: string; - LANG: string; - npm_package_types: string; - npm_package_devDependencies__sveltejs_vite_plugin_svelte: string; + NODE: string; + ANT_HOME: string; + DOTNET_MULTILEVEL_LOOKUP: string; + RUNNER_TRACKING_ID: string; + INVOCATION_ID: string; + RUNNER_TOOL_CACHE: string; npm_package_repository_type: string; npm_package_name: string; - npm_package_scripts_generate_types: string; + GITHUB_ACTION: string; + GITHUB_RUN_NUMBER: string; + GITHUB_TRIGGERING_ACTOR: string; + RUNNER_ARCH: string; + XDG_RUNTIME_DIR: string; + AGENT_TOOLSDIRECTORY: string; npm_package_scripts_test_integration: string; - npm_package_devDependencies__types_connect: string; - npm_config_script_shell: string; npm_package_exports___node_polyfills_import: string; - npm_package_exports___types: string; - npm_config_version_commit_hooks: string; - XPC_FLAGS: string; - USERLEAP_HOME: string; + npm_package_devDependencies__types_set_cookie_parser: string; + npm_package_scripts_test_unit: string; + npm_package_exports___vite_types: string; + npm_config_ignore_path: string; + LANG: string; + VCPKG_INSTALLATION_ROOT: string; + CONDA: string; + RUNNER_NAME: string; + XDG_CONFIG_HOME: string; + STATS_VMD: string; + GITHUB_REF_NAME: string; + GITHUB_REPOSITORY: string; + STATS_D_D: string; + npm_lifecycle_script: string; npm_package_scripts_test_cross_platform_dev: string; - npm_package_devDependencies_vitest: string; - npm_package_dependencies_tiny_glob: string; - npm_config_bin_links: string; - npm_package_engines_node: string; - npm_package_dependencies_sirv: string; - XPC_SERVICE_NAME: string; - npm_package_version: string; - HOME: string; - SHLVL: string; - npm_package_type: string; - npm_package_scripts_generate_version: string; + STATS_UE: string; + ANDROID_NDK_ROOT: string; + GITHUB_ACTION_REF: string; + DEBIAN_FRONTEND: string; npm_package_scripts_test: string; + npm_package_dependencies_esm_env: string; + npm_config_version_git_message: string; + GITHUB_REPOSITORY_ID: string; + GITHUB_ACTIONS: string; + npm_lifecycle_event: string; + npm_package_repository_url: string; + npm_package_version: string; + GITHUB_REF_PROTECTED: string; + npm_config_argv: string; + npm_package_scripts_generate_types: string; npm_package_scripts_check_all: string; - GREP_OPTIONS: string; - TSC_COMPILE_ON_ERROR: string; - npm_package_exports___vite_types: string; - npm_package_exports___hooks_types: string; - npm_config_save_prefix: string; + npm_package_devDependencies_svelte: string; + npm_package_dependencies_cookie: string; + GITHUB_WORKSPACE: string; + ACCEPT_EULA: string; + GITHUB_JOB: string; + RUNNER_PERFLOG: string; + YARN_IGNORE_PATH: string; + npm_package_exports___node_import: string; + GITHUB_SHA: string; + GITHUB_RUN_ATTEMPT: string; + npm_package_devDependencies__types_sade: string; + npm_config_version_git_tag: string; + npm_config_version_git_sign: string; + GITHUB_REF: string; + GITHUB_ACTOR: string; + ANDROID_SDK_ROOT: string; + npm_package_license: string; npm_config_strict_ssl: string; - npm_config_version_git_message: string; - SPRIG_HOME: string; - LOGNAME: string; + LEIN_HOME: string; npm_package_scripts_format: string; + GITHUB_PATH: string; + JAVA_HOME: string; + PWD: string; + GITHUB_ACTOR_ID: string; + RUNNER_WORKSPACE: string; + npm_execpath: string; + npm_package_dependencies_set_cookie_parser: string; + HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS: string; + STATS_TIS: string; + GITHUB_EVENT_NAME: string; + HOMEBREW_NO_AUTO_UPDATE: string; + ANDROID_HOME: string; + GITHUB_SERVER_URL: string; + GECKOWEBDRIVER: string; + LEIN_JAR: string; + GHCUP_INSTALL_BASE_PREFIX: string; + GITHUB_OUTPUT: string; + npm_package_exports___types: string; + EDGEWEBDRIVER: string; + STATS_EXT: string; npm_package_peerDependencies_vite: string; - WINDOW: string; - npm_lifecycle_script: string; - npm_package_peerDependencies_svelte: string; - npm_config_ignore_path: string; - npm_package_devDependencies__types_set_cookie_parser: string; - GITHUB_TOKEN: string; - npm_package_files_3: string; - npm_package_dependencies__types_cookie: string; - npm_config_version_git_sign: string; - npm_config_ignore_scripts: string; - npm_config_user_agent: string; - npm_package_files_2: string; - npm_package_devDependencies__types_node: string; - npm_package_devDependencies__playwright_test: string; - npm_package_files_1: string; - npm_package_devDependencies_dts_buddy: string; - npm_package_files_0: string; - npm_package_dependencies_mrmime: string; - npm_package_dependencies_kleur: string; - npm_config_init_version: string; + npm_package_peerDependencies__sveltejs_vite_plugin_svelte: string; + npm_config_save_prefix: string; npm_config_ignore_optional: string; - npm_package_exports___node_types: string; - npm_package_files_6: string; - CLICKHOUSE_PASSWORD_STAGING: string; - npm_package_scripts_check: string; - npm_package_files_5: string; - npm_node_execpath: string; - npm_package_scripts_test_unit: string; - npm_package_files_4: string; - npm_config_version_tag_prefix: string; - npm_config_prefix: string; + ANDROID_NDK: string; + SGX_AESM_ADDR: string; + CHROME_BIN: string; + SELENIUM_JAR_PATH: string; + STATS_EXTP: string; + npm_package_exports___node_polyfills_types: string; + INIT_CWD: string; + ANDROID_NDK_HOME: string; + GITHUB_STEP_SUMMARY: string; + npm_package_exports___hooks_import: string; + npm_package_dependencies_import_meta_resolve: string; [key: `PUBLIC_${string}`]: undefined; [key: `${string}`]: string | undefined; } From 70903137b4d1bd5b32b32963b79569789b1a572c Mon Sep 17 00:00:00 2001 From: Kevin Townsend Date: Mon, 3 Feb 2025 14:21:21 -0500 Subject: [PATCH 4/6] fixed the order of args --- packages/rrweb-snapshot/src/snapshot.ts | 4 +++- packages/rrweb/src/record/observers/canvas/2d.ts | 2 +- packages/rrweb/src/record/observers/canvas/canvas.ts | 2 +- packages/rrweb/src/utils.ts | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/rrweb-snapshot/src/snapshot.ts b/packages/rrweb-snapshot/src/snapshot.ts index 4c4623fbe4..1a138d4d0d 100644 --- a/packages/rrweb-snapshot/src/snapshot.ts +++ b/packages/rrweb-snapshot/src/snapshot.ts @@ -918,6 +918,7 @@ export function serializeNodeWithId( doc: Document; mirror: Mirror; blockClass: string | RegExp; + blockElementFn: BlockElementFn | null; blockSelector: string | null; maskTextClass: string | RegExp; maskTextSelector: string | null; @@ -952,6 +953,7 @@ export function serializeNodeWithId( doc, mirror, blockClass, + blockElementFn, blockSelector, maskTextClass, maskTextSelector, @@ -1236,7 +1238,7 @@ function snapshot( options?: { mirror?: Mirror; blockClass?: string | RegExp; - blockElementFn?: BlockElementFn; + blockElementFn?: BlockElementFn | null; blockSelector?: string | null; maskTextClass?: string | RegExp; maskTextSelector?: string | null; diff --git a/packages/rrweb/src/record/observers/canvas/2d.ts b/packages/rrweb/src/record/observers/canvas/2d.ts index db90421f07..b8f7c2361a 100644 --- a/packages/rrweb/src/record/observers/canvas/2d.ts +++ b/packages/rrweb/src/record/observers/canvas/2d.ts @@ -13,8 +13,8 @@ export default function initCanvas2DMutationObserver( cb: canvasManagerMutationCallback, win: IWindow, blockClass: blockClass, - blockElementFn: BlockElementFn | null, blockSelector: string | null, + blockElementFn: BlockElementFn | null, ): listenerHandler { const handlers: listenerHandler[] = []; const props2D = Object.getOwnPropertyNames( diff --git a/packages/rrweb/src/record/observers/canvas/canvas.ts b/packages/rrweb/src/record/observers/canvas/canvas.ts index 0a397c26b8..0ae14d7367 100644 --- a/packages/rrweb/src/record/observers/canvas/canvas.ts +++ b/packages/rrweb/src/record/observers/canvas/canvas.ts @@ -14,8 +14,8 @@ function getNormalizedContextName(contextType: string) { export default function initCanvasContextObserver( win: IWindow, blockClass: blockClass, - blockElementFn: BlockElementFn | null, blockSelector: string | null, + blockElementFn: BlockElementFn | null, setPreserveDrawingBufferToTrue: boolean, ): listenerHandler { const handlers: listenerHandler[] = []; diff --git a/packages/rrweb/src/utils.ts b/packages/rrweb/src/utils.ts index 14445ac479..7dabdc1571 100644 --- a/packages/rrweb/src/utils.ts +++ b/packages/rrweb/src/utils.ts @@ -247,8 +247,8 @@ export function closestElementOfNode(node: Node | null): HTMLElement | null { export function isBlocked( node: Node | null, blockClass: blockClass, - blockElementFn: BlockElementFn | null, blockSelector: string | null, + blockElementFn: BlockElementFn | null, checkAncestors: boolean, ): boolean { if (!node) { From b55844e59aa382e2a84f7136489059a69001f3a8 Mon Sep 17 00:00:00 2001 From: Kevin Townsend Date: Mon, 3 Feb 2025 16:33:31 -0500 Subject: [PATCH 5/6] changeset --- .changeset/silver-pianos-attack.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/silver-pianos-attack.md diff --git a/.changeset/silver-pianos-attack.md b/.changeset/silver-pianos-attack.md new file mode 100644 index 0000000000..594e32c84b --- /dev/null +++ b/.changeset/silver-pianos-attack.md @@ -0,0 +1,7 @@ +--- +"rrweb-snapshot": patch +"rrweb": patch +"@rrweb/types": patch +--- + +Adds `blockElementFN` to record options to allow consumer finer-grained element blocking. From 655a23ae22ea2eaf394908e97cc6942d0f9cd327 Mon Sep 17 00:00:00 2001 From: Kevin Townsend Date: Mon, 3 Feb 2025 16:59:31 -0500 Subject: [PATCH 6/6] prettier --- packages/rrweb-snapshot/src/snapshot.ts | 12 ++++++------ packages/rrweb/src/record/index.ts | 8 ++++---- packages/rrweb/src/record/observer.ts | 4 ++-- packages/rrweb/src/utils.ts | 20 ++++++++++---------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/rrweb-snapshot/src/snapshot.ts b/packages/rrweb-snapshot/src/snapshot.ts index 1a138d4d0d..42a26daa0b 100644 --- a/packages/rrweb-snapshot/src/snapshot.ts +++ b/packages/rrweb-snapshot/src/snapshot.ts @@ -1309,10 +1309,10 @@ function snapshot( password: true, } : maskAllInputs === false - ? { - password: true, - } - : maskAllInputs; + ? { + password: true, + } + : maskAllInputs; const slimDOMOptions: SlimDOMOptions = slimDOM === true || slimDOM === 'all' ? // if true: set of sensible options that should not throw away any information @@ -1329,8 +1329,8 @@ function snapshot( headMetaVerification: true, } : slimDOM === false - ? {} - : slimDOM; + ? {} + : slimDOM; return serializeNodeWithId(n, { doc: n, mirror, diff --git a/packages/rrweb/src/record/index.ts b/packages/rrweb/src/record/index.ts index d3f6d16330..bf5560438a 100644 --- a/packages/rrweb/src/record/index.ts +++ b/packages/rrweb/src/record/index.ts @@ -158,8 +158,8 @@ function record( password: true, } : _maskInputOptions !== undefined - ? _maskInputOptions - : { password: true }; + ? _maskInputOptions + : { password: true }; const slimDOMOptions: SlimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all' @@ -179,8 +179,8 @@ function record( headTitleMutations: _slimDOMOptions === 'all', } : _slimDOMOptions - ? _slimDOMOptions - : {}; + ? _slimDOMOptions + : {}; polyfill(); diff --git a/packages/rrweb/src/record/observer.ts b/packages/rrweb/src/record/observer.ts index c49f7a3763..885dc117c7 100644 --- a/packages/rrweb/src/record/observer.ts +++ b/packages/rrweb/src/record/observer.ts @@ -168,8 +168,8 @@ function initMoveObserver({ typeof DragEvent !== 'undefined' && evt instanceof DragEvent ? IncrementalSource.Drag : evt instanceof MouseEvent - ? IncrementalSource.MouseMove - : IncrementalSource.TouchMove, + ? IncrementalSource.MouseMove + : IncrementalSource.TouchMove, ); }), threshold, diff --git a/packages/rrweb/src/utils.ts b/packages/rrweb/src/utils.ts index 7dabdc1571..fdf2f972ea 100644 --- a/packages/rrweb/src/utils.ts +++ b/packages/rrweb/src/utils.ts @@ -186,19 +186,19 @@ export function getWindowScroll(win: Window) { left: doc.scrollingElement ? doc.scrollingElement.scrollLeft : win.pageXOffset !== undefined - ? win.pageXOffset - : doc.documentElement.scrollLeft || - (doc?.body && dom.parentElement(doc.body)?.scrollLeft) || - doc?.body?.scrollLeft || - 0, + ? win.pageXOffset + : doc.documentElement.scrollLeft || + (doc?.body && dom.parentElement(doc.body)?.scrollLeft) || + doc?.body?.scrollLeft || + 0, top: doc.scrollingElement ? doc.scrollingElement.scrollTop : win.pageYOffset !== undefined - ? win.pageYOffset - : doc?.documentElement.scrollTop || - (doc?.body && dom.parentElement(doc.body)?.scrollTop) || - doc?.body?.scrollTop || - 0, + ? win.pageYOffset + : doc?.documentElement.scrollTop || + (doc?.body && dom.parentElement(doc.body)?.scrollTop) || + doc?.body?.scrollTop || + 0, }; }