@@ -187,13 +187,23 @@ export function _isBlockedElement(
187187
188188function serializeNode (
189189 n : Node ,
190- doc : Document ,
191- blockClass : string | RegExp ,
192- blockSelector : string | null ,
193- inlineStylesheet : boolean ,
194- maskInputOptions : MaskInputOptions = { } ,
195- recordCanvas : boolean ,
190+ options : {
191+ doc : Document ;
192+ blockClass : string | RegExp ;
193+ blockSelector : string | null ;
194+ inlineStylesheet : boolean ;
195+ maskInputOptions : MaskInputOptions ;
196+ recordCanvas : boolean ;
197+ } ,
196198) : serializedNode | false {
199+ const {
200+ doc,
201+ blockClass,
202+ blockSelector,
203+ inlineStylesheet,
204+ maskInputOptions = { } ,
205+ recordCanvas,
206+ } = options ;
197207 switch ( n . nodeType ) {
198208 case n . DOCUMENT_NODE :
199209 return {
@@ -437,26 +447,39 @@ function slimDOMExcluded(
437447
438448export function serializeNodeWithId (
439449 n : Node | INode ,
440- doc : Document ,
441- map : idNodeMap ,
442- blockClass : string | RegExp ,
443- blockSelector : string | null ,
444- skipChild = false ,
445- inlineStylesheet = true ,
446- maskInputOptions ?: MaskInputOptions ,
447- slimDOMOptions : SlimDOMOptions = { } ,
448- recordCanvas ?: boolean ,
449- preserveWhiteSpace = true ,
450+ options : {
451+ doc : Document ;
452+ map : idNodeMap ;
453+ blockClass : string | RegExp ;
454+ blockSelector : string | null ;
455+ skipChild : boolean ;
456+ inlineStylesheet : boolean ;
457+ maskInputOptions ?: MaskInputOptions ;
458+ slimDOMOptions : SlimDOMOptions ;
459+ recordCanvas ?: boolean ;
460+ preserveWhiteSpace ?: boolean ;
461+ } ,
450462) : serializedNodeWithId | null {
451- const _serializedNode = serializeNode (
452- n ,
463+ const {
464+ doc,
465+ map,
466+ blockClass,
467+ blockSelector,
468+ skipChild = false ,
469+ inlineStylesheet = true ,
470+ maskInputOptions = { } ,
471+ slimDOMOptions,
472+ recordCanvas = false ,
473+ } = options ;
474+ let { preserveWhiteSpace = true } = options ;
475+ const _serializedNode = serializeNode ( n , {
453476 doc,
454477 blockClass,
455478 blockSelector,
456479 inlineStylesheet,
457480 maskInputOptions,
458- recordCanvas || false ,
459- ) ;
481+ recordCanvas,
482+ } ) ;
460483 if ( ! _serializedNode ) {
461484 // TODO: dev only
462485 console . warn ( n , 'not serialized' ) ;
@@ -504,8 +527,7 @@ export function serializeNodeWithId(
504527 preserveWhiteSpace = false ;
505528 }
506529 for ( const childN of Array . from ( n . childNodes ) ) {
507- const serializedChildNode = serializeNodeWithId (
508- childN ,
530+ const serializedChildNode = serializeNodeWithId ( childN , {
509531 doc,
510532 map,
511533 blockClass,
@@ -516,7 +538,7 @@ export function serializeNodeWithId(
516538 slimDOMOptions,
517539 recordCanvas,
518540 preserveWhiteSpace,
519- ) ;
541+ } ) ;
520542 if ( serializedChildNode ) {
521543 serializedNode . childNodes . push ( serializedChildNode ) ;
522544 }
@@ -527,16 +549,26 @@ export function serializeNodeWithId(
527549
528550function snapshot (
529551 n : Document ,
530- blockClass : string | RegExp = 'rr-block' ,
531- inlineStylesheet = true ,
532- maskAllInputsOrOptions : boolean | MaskInputOptions ,
533- slimDOMSensibleOrOptions : boolean | SlimDOMOptions ,
534- recordCanvas ?: boolean ,
535- blockSelector : string | null = null ,
552+ options ?: {
553+ blockClass ?: string | RegExp ;
554+ inlineStylesheet ?: boolean ;
555+ maskAllInputs ?: boolean | MaskInputOptions ;
556+ slimDOM ?: boolean | SlimDOMOptions ;
557+ recordCanvas ?: boolean ;
558+ blockSelector ?: string | null ;
559+ } ,
536560) : [ serializedNodeWithId | null , idNodeMap ] {
561+ const {
562+ blockClass = 'rr-block' ,
563+ inlineStylesheet = true ,
564+ recordCanvas = false ,
565+ blockSelector = null ,
566+ maskAllInputs = false ,
567+ slimDOM = false ,
568+ } = options || { } ;
537569 const idNodeMap : idNodeMap = { } ;
538570 const maskInputOptions : MaskInputOptions =
539- maskAllInputsOrOptions === true
571+ maskAllInputs === true
540572 ? {
541573 color : true ,
542574 date : true ,
@@ -554,40 +586,39 @@ function snapshot(
554586 textarea : true ,
555587 select : true ,
556588 }
557- : maskAllInputsOrOptions === false
589+ : maskAllInputs === false
558590 ? { }
559- : maskAllInputsOrOptions ;
591+ : maskAllInputs ;
560592 const slimDOMOptions : SlimDOMOptions =
561- slimDOMSensibleOrOptions === true || slimDOMSensibleOrOptions === 'all'
593+ slimDOM === true || slimDOM === 'all'
562594 ? // if true: set of sensible options that should not throw away any information
563595 {
564596 script : true ,
565597 comment : true ,
566598 headFavicon : true ,
567599 headWhitespace : true ,
568- headMetaDescKeywords : slimDOMSensibleOrOptions === 'all' , // destructive
600+ headMetaDescKeywords : slimDOM === 'all' , // destructive
569601 headMetaSocial : true ,
570602 headMetaRobots : true ,
571603 headMetaHttpEquiv : true ,
572604 headMetaAuthorship : true ,
573605 headMetaVerification : true ,
574606 }
575- : slimDOMSensibleOrOptions === false
607+ : slimDOM === false
576608 ? { }
577- : slimDOMSensibleOrOptions ;
609+ : slimDOM ;
578610 return [
579- serializeNodeWithId (
580- n ,
581- n ,
582- idNodeMap ,
611+ serializeNodeWithId ( n , {
612+ doc : n ,
613+ map : idNodeMap ,
583614 blockClass,
584615 blockSelector,
585- false ,
616+ skipChild : false ,
586617 inlineStylesheet,
587618 maskInputOptions,
588619 slimDOMOptions,
589620 recordCanvas,
590- ) ,
621+ } ) ,
591622 idNodeMap ,
592623 ] ;
593624}
0 commit comments