@browserless.io/browserless 2.12.0-beta-3 → 2.12.0-beta-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/build/browsers/chromium.cdp.d.ts +1 -1
  2. package/build/browsers/chromium.cdp.js +2 -2
  3. package/build/browsers/chromium.playwright.d.ts +1 -1
  4. package/build/browsers/chromium.playwright.js +2 -2
  5. package/build/browsers/firefox.playwright.d.ts +1 -1
  6. package/build/browsers/firefox.playwright.js +2 -2
  7. package/build/browsers/index.d.ts +3 -2
  8. package/build/browsers/index.js +36 -17
  9. package/build/browsers/webkit.playwright.d.ts +1 -1
  10. package/build/browsers/webkit.playwright.js +4 -4
  11. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  12. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  13. package/build/routes/chrome/http/screenshot.post.body.json +8 -8
  14. package/build/routes/chromium/http/content.post.body.json +8 -8
  15. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  16. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  17. package/build/types.d.ts +1 -1
  18. package/extensions/ublock/_locales/eu/messages.json +4 -4
  19. package/extensions/ublock/_locales/hi/messages.json +5 -5
  20. package/extensions/ublock/_locales/kn/messages.json +11 -11
  21. package/extensions/ublock/_locales/nb/messages.json +2 -2
  22. package/extensions/ublock/_locales/no/messages.json +2 -2
  23. package/extensions/ublock/_locales/ro/messages.json +1 -1
  24. package/extensions/ublock/_locales/sv/messages.json +1 -1
  25. package/extensions/ublock/_locales/zh_CN/messages.json +2 -2
  26. package/extensions/ublock/assets/assets.json +3 -8
  27. package/extensions/ublock/assets/resources/scriptlets.js +128 -31
  28. package/extensions/ublock/assets/thirdparties/easylist/easylist.txt +4870 -3560
  29. package/extensions/ublock/assets/thirdparties/easylist/easyprivacy.txt +662 -173
  30. package/extensions/ublock/assets/thirdparties/pgl.yoyo.org/as/serverlist +10 -42
  31. package/extensions/ublock/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +241 -80
  32. package/extensions/ublock/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +2093 -1224
  33. package/extensions/ublock/assets/ublock/badlists.txt +2 -0
  34. package/extensions/ublock/assets/ublock/badware.min.txt +408 -287
  35. package/extensions/ublock/assets/ublock/filters.min.txt +947 -645
  36. package/extensions/ublock/assets/ublock/privacy.min.txt +43 -8
  37. package/extensions/ublock/assets/ublock/quick-fixes.min.txt +55 -93
  38. package/extensions/ublock/assets/ublock/unbreak.min.txt +52 -19
  39. package/extensions/ublock/css/1p-filters.css +2 -0
  40. package/extensions/ublock/css/codemirror.css +2 -2
  41. package/extensions/ublock/css/dashboard.css +2 -5
  42. package/extensions/ublock/css/epicker-ui.css +3 -3
  43. package/extensions/ublock/css/fa-icons.css +3 -0
  44. package/extensions/ublock/css/logger-ui-inspector.css +1 -0
  45. package/extensions/ublock/css/logger-ui.css +44 -32
  46. package/extensions/ublock/img/fontawesome/fontawesome-defs.svg +1 -0
  47. package/extensions/ublock/js/3p-filters.js +4 -5
  48. package/extensions/ublock/js/biditrie.js +16 -11
  49. package/extensions/ublock/js/cachestorage.js +37 -37
  50. package/extensions/ublock/js/contentscript-extra.js +0 -2
  51. package/extensions/ublock/js/contentscript.js +1 -6
  52. package/extensions/ublock/js/epicker-ui.js +28 -36
  53. package/extensions/ublock/js/fa-icons.js +1 -0
  54. package/extensions/ublock/js/hntrie.js +19 -13
  55. package/extensions/ublock/js/logger-ui-inspector.js +6 -13
  56. package/extensions/ublock/js/logger-ui.js +264 -264
  57. package/extensions/ublock/js/s14e-serializer.js +267 -264
  58. package/extensions/ublock/js/scriptlet-filtering.js +12 -18
  59. package/extensions/ublock/js/scriptlets/dom-inspector.js +1 -5
  60. package/extensions/ublock/js/scriptlets/epicker.js +53 -59
  61. package/extensions/ublock/js/start.js +0 -8
  62. package/extensions/ublock/js/storage.js +2 -9
  63. package/extensions/ublock/js/vapi-background.js +19 -20
  64. package/extensions/ublock/js/vapi-common.js +2 -7
  65. package/extensions/ublock/js/vapi.js +0 -4
  66. package/extensions/ublock/js/webext.js +23 -15
  67. package/extensions/ublock/logger-ui.html +24 -15
  68. package/extensions/ublock/manifest.json +2 -3
  69. package/package.json +2 -2
  70. package/src/browsers/chromium.cdp.ts +2 -2
  71. package/src/browsers/chromium.playwright.ts +2 -2
  72. package/src/browsers/firefox.playwright.ts +2 -3
  73. package/src/browsers/index.ts +49 -21
  74. package/src/browsers/webkit.playwright.ts +4 -4
  75. package/src/routes/chrome/tests/websocket.spec.ts +2 -2
  76. package/src/routes/chromium/tests/websocket.spec.ts +2 -2
  77. package/src/routes/firefox/tests/websocket.spec.ts +2 -4
  78. package/src/routes/webkit/tests/websocket.spec.ts +2 -3
  79. package/src/types.ts +1 -1
  80. package/src/utils.ts +1 -1
  81. package/static/docs/swagger.json +1 -1
  82. package/static/docs/swagger.min.json +1 -1
@@ -19,8 +19,6 @@
19
19
  Home: https://github.com/gorhill/uBlock
20
20
  */
21
21
 
22
- 'use strict';
23
-
24
22
  /*******************************************************************************
25
23
  *
26
24
  * Structured-Cloneable to Unicode-Only SERIALIZER
@@ -103,14 +101,14 @@ const { intToChar, intToCharCode, charCodeToInt } = (( ) => {
103
101
  const intToCharCode = [];
104
102
  const charCodeToInt = [];
105
103
  for ( let i = 0; i < NUMSAFECHARS; i++ ) {
106
- intToChar[i] = SAFECHARS.charAt(i);
107
- intToCharCode[i] = SAFECHARS.charCodeAt(i);
108
- charCodeToInt[i] = 0;
104
+ intToChar[i] = SAFECHARS.charAt(i);
105
+ intToCharCode[i] = SAFECHARS.charCodeAt(i);
106
+ charCodeToInt[i] = 0;
109
107
  }
110
108
  for ( let i = NUMSAFECHARS; i < 128; i++ ) {
111
- intToChar[i] = '';
112
- intToCharCode[i] = 0;
113
- charCodeToInt[i] = 0;
109
+ intToChar[i] = '';
110
+ intToCharCode[i] = 0;
111
+ charCodeToInt[i] = 0;
114
112
  }
115
113
  for ( let i = 0; i < SAFECHARS.length; i++ ) {
116
114
  charCodeToInt[SAFECHARS.charCodeAt(i)] = i;
@@ -287,6 +285,9 @@ const shouldCompress = (s, options) =>
287
285
  options.compressThreshold <= s.length
288
286
  );
289
287
 
288
+ const hasOwnProperty = (o, p) =>
289
+ Object.prototype.hasOwnProperty.call(o, p);
290
+
290
291
  /*******************************************************************************
291
292
  *
292
293
  * A large Uint is always a positive integer (can be zero), assumed to be
@@ -549,38 +550,38 @@ const _serialize = data => {
549
550
  }
550
551
  // Type name
551
552
  switch ( typeToSerializedInt[typeof data] ) {
552
- case I_STRING: {
553
- const length = data.length;
554
- if ( length < NUMSAFECHARS ) {
555
- writeBuffer.push(C_STRING_SMALL + intToChar[length], data);
556
- } else {
557
- writeBuffer.push(C_STRING_LARGE + strFromLargeUint(length), data);
558
- }
559
- return;
553
+ case I_STRING: {
554
+ const length = data.length;
555
+ if ( length < NUMSAFECHARS ) {
556
+ writeBuffer.push(C_STRING_SMALL + intToChar[length], data);
557
+ } else {
558
+ writeBuffer.push(C_STRING_LARGE + strFromLargeUint(length), data);
560
559
  }
561
- case I_NUMBER:
562
- if ( isInteger(data) ) {
563
- if ( data >= NUMSAFECHARS ) {
564
- writeBuffer.push(C_INTEGER_LARGE_POS + strFromLargeUint(data));
565
- } else if ( data > 0 ) {
566
- writeBuffer.push(C_INTEGER_SMALL_POS + intToChar[data]);
567
- } else if ( data > -NUMSAFECHARS ) {
568
- writeBuffer.push(C_INTEGER_SMALL_NEG + intToChar[-data]);
569
- } else {
570
- writeBuffer.push(C_INTEGER_LARGE_NEG + strFromLargeUint(-data));
571
- }
560
+ return;
561
+ }
562
+ case I_NUMBER:
563
+ if ( isInteger(data) ) {
564
+ if ( data >= NUMSAFECHARS ) {
565
+ writeBuffer.push(C_INTEGER_LARGE_POS + strFromLargeUint(data));
566
+ } else if ( data > 0 ) {
567
+ writeBuffer.push(C_INTEGER_SMALL_POS + intToChar[data]);
568
+ } else if ( data > -NUMSAFECHARS ) {
569
+ writeBuffer.push(C_INTEGER_SMALL_NEG + intToChar[-data]);
572
570
  } else {
573
- const s = `${data}`;
574
- writeBuffer.push(C_FLOAT + strFromLargeUint(s.length) + s);
571
+ writeBuffer.push(C_INTEGER_LARGE_NEG + strFromLargeUint(-data));
575
572
  }
576
- return;
577
- case I_BOOL:
578
- writeBuffer.push(data ? C_BOOL_TRUE : C_BOOL_FALSE);
579
- return;
580
- case I_OBJECT:
581
- break;
582
- default:
583
- return;
573
+ } else {
574
+ const s = `${data}`;
575
+ writeBuffer.push(C_FLOAT + strFromLargeUint(s.length) + s);
576
+ }
577
+ return;
578
+ case I_BOOL:
579
+ writeBuffer.push(data ? C_BOOL_TRUE : C_BOOL_FALSE);
580
+ return;
581
+ case I_OBJECT:
582
+ break;
583
+ default:
584
+ return;
584
585
  }
585
586
  const xtypeName = Object.prototype.toString.call(data);
586
587
  const xtypeInt = xtypeToSerializedInt[xtypeName];
@@ -604,90 +605,90 @@ const _serialize = data => {
604
605
  writeRefs.set(data, refCounter++);
605
606
  // Extended type name
606
607
  switch ( xtypeInt ) {
607
- case I_ARRAY: {
608
- const size = data.length;
609
- if ( size < NUMSAFECHARS ) {
610
- writeBuffer.push(C_ARRAY_SMALL + intToChar[size]);
611
- } else {
612
- writeBuffer.push(C_ARRAY_LARGE + strFromLargeUint(size));
613
- }
614
- for ( const v of data ) {
615
- _serialize(v);
616
- }
617
- return;
608
+ case I_ARRAY: {
609
+ const size = data.length;
610
+ if ( size < NUMSAFECHARS ) {
611
+ writeBuffer.push(C_ARRAY_SMALL + intToChar[size]);
612
+ } else {
613
+ writeBuffer.push(C_ARRAY_LARGE + strFromLargeUint(size));
618
614
  }
619
- case I_SET: {
620
- const size = data.size;
621
- if ( size < NUMSAFECHARS ) {
622
- writeBuffer.push(C_SET_SMALL + intToChar[size]);
623
- } else {
624
- writeBuffer.push(C_SET_LARGE + strFromLargeUint(size));
625
- }
626
- for ( const v of data ) {
627
- _serialize(v);
628
- }
629
- return;
615
+ for ( const v of data ) {
616
+ _serialize(v);
630
617
  }
631
- case I_MAP: {
632
- const size = data.size;
633
- if ( size < NUMSAFECHARS ) {
634
- writeBuffer.push(C_MAP_SMALL + intToChar[size]);
635
- } else {
636
- writeBuffer.push(C_MAP_LARGE + strFromLargeUint(size));
637
- }
638
- for ( const [ k, v ] of data ) {
639
- _serialize(k);
640
- _serialize(v);
641
- }
642
- return;
618
+ return;
619
+ }
620
+ case I_SET: {
621
+ const size = data.size;
622
+ if ( size < NUMSAFECHARS ) {
623
+ writeBuffer.push(C_SET_SMALL + intToChar[size]);
624
+ } else {
625
+ writeBuffer.push(C_SET_LARGE + strFromLargeUint(size));
643
626
  }
644
- case I_ARRAYBUFFER: {
645
- const byteLength = data.byteLength;
646
- writeBuffer.push(C_ARRAYBUFFER + strFromLargeUint(byteLength));
647
- _serialize(data.maxByteLength);
648
- const arrbuffDetails = analyzeArrayBuffer(data);
649
- _serialize(arrbuffDetails.dense);
650
- const str = arrbuffDetails.dense
651
- ? denseArrayBufferToStr(data, arrbuffDetails)
652
- : sparseArrayBufferToStr(data, arrbuffDetails);
653
- _serialize(str);
654
- //console.log(`arrbuf size=${byteLength} content size=${arrbuffDetails.end} dense=${arrbuffDetails.dense} array size=${arrbuffDetails.dense ? arrbuffDetails.denseSize : arrbuffDetails.sparseSize} serialized size=${str.length}`);
655
- return;
627
+ for ( const v of data ) {
628
+ _serialize(v);
656
629
  }
657
- case I_INT8ARRAY:
658
- case I_UINT8ARRAY:
659
- case I_UINT8CLAMPEDARRAY:
660
- case I_INT16ARRAY:
661
- case I_UINT16ARRAY:
662
- case I_INT32ARRAY:
663
- case I_UINT32ARRAY:
664
- case I_FLOAT32ARRAY:
665
- case I_FLOAT64ARRAY:
666
- writeBuffer.push(
667
- xtypeToSerializedChar[xtypeName],
668
- strFromLargeUint(data.byteOffset),
669
- strFromLargeUint(data.length)
670
- );
671
- _serialize(data.buffer);
672
- return;
673
- case I_DATAVIEW:
674
- writeBuffer.push(C_DATAVIEW, strFromLargeUint(data.byteOffset), strFromLargeUint(data.byteLength));
675
- _serialize(data.buffer);
676
- return;
677
- default: {
678
- const keys = Object.keys(data);
679
- const size = keys.length;
680
- if ( size < NUMSAFECHARS ) {
681
- writeBuffer.push(C_OBJECT_SMALL + intToChar[size]);
682
- } else {
683
- writeBuffer.push(C_OBJECT_LARGE + strFromLargeUint(size));
684
- }
685
- for ( const key of keys ) {
686
- _serialize(key);
687
- _serialize(data[key]);
688
- }
689
- break;
630
+ return;
631
+ }
632
+ case I_MAP: {
633
+ const size = data.size;
634
+ if ( size < NUMSAFECHARS ) {
635
+ writeBuffer.push(C_MAP_SMALL + intToChar[size]);
636
+ } else {
637
+ writeBuffer.push(C_MAP_LARGE + strFromLargeUint(size));
638
+ }
639
+ for ( const [ k, v ] of data ) {
640
+ _serialize(k);
641
+ _serialize(v);
690
642
  }
643
+ return;
644
+ }
645
+ case I_ARRAYBUFFER: {
646
+ const byteLength = data.byteLength;
647
+ writeBuffer.push(C_ARRAYBUFFER + strFromLargeUint(byteLength));
648
+ _serialize(data.maxByteLength);
649
+ const arrbuffDetails = analyzeArrayBuffer(data);
650
+ _serialize(arrbuffDetails.dense);
651
+ const str = arrbuffDetails.dense
652
+ ? denseArrayBufferToStr(data, arrbuffDetails)
653
+ : sparseArrayBufferToStr(data, arrbuffDetails);
654
+ _serialize(str);
655
+ //console.log(`arrbuf size=${byteLength} content size=${arrbuffDetails.end} dense=${arrbuffDetails.dense} array size=${arrbuffDetails.dense ? arrbuffDetails.denseSize : arrbuffDetails.sparseSize} serialized size=${str.length}`);
656
+ return;
657
+ }
658
+ case I_INT8ARRAY:
659
+ case I_UINT8ARRAY:
660
+ case I_UINT8CLAMPEDARRAY:
661
+ case I_INT16ARRAY:
662
+ case I_UINT16ARRAY:
663
+ case I_INT32ARRAY:
664
+ case I_UINT32ARRAY:
665
+ case I_FLOAT32ARRAY:
666
+ case I_FLOAT64ARRAY:
667
+ writeBuffer.push(
668
+ xtypeToSerializedChar[xtypeName],
669
+ strFromLargeUint(data.byteOffset),
670
+ strFromLargeUint(data.length)
671
+ );
672
+ _serialize(data.buffer);
673
+ return;
674
+ case I_DATAVIEW:
675
+ writeBuffer.push(C_DATAVIEW, strFromLargeUint(data.byteOffset), strFromLargeUint(data.byteLength));
676
+ _serialize(data.buffer);
677
+ return;
678
+ default: {
679
+ const keys = Object.keys(data);
680
+ const size = keys.length;
681
+ if ( size < NUMSAFECHARS ) {
682
+ writeBuffer.push(C_OBJECT_SMALL + intToChar[size]);
683
+ } else {
684
+ writeBuffer.push(C_OBJECT_LARGE + strFromLargeUint(size));
685
+ }
686
+ for ( const key of keys ) {
687
+ _serialize(key);
688
+ _serialize(data[key]);
689
+ }
690
+ break;
691
+ }
691
692
  }
692
693
  };
693
694
 
@@ -697,146 +698,145 @@ const _deserialize = ( ) => {
697
698
  if ( readPtr >= readEnd ) { return; }
698
699
  const type = charCodeToInt[readStr.charCodeAt(readPtr++)];
699
700
  switch ( type ) {
700
- // Primitive types
701
- case I_STRING_SMALL:
702
- case I_STRING_LARGE: {
703
- const size = type === I_STRING_SMALL
704
- ? charCodeToInt[readStr.charCodeAt(readPtr++)]
705
- : deserializeLargeUint();
706
- const beg = readPtr;
707
- readPtr += size;
708
- return readStr.slice(beg, readPtr);
709
- }
710
- case I_ZERO:
711
- return 0;
712
- case I_INTEGER_SMALL_POS:
713
- return charCodeToInt[readStr.charCodeAt(readPtr++)];
714
- case I_INTEGER_SMALL_NEG:
715
- return -charCodeToInt[readStr.charCodeAt(readPtr++)];
716
- case I_INTEGER_LARGE_POS:
717
- return deserializeLargeUint();
718
- case I_INTEGER_LARGE_NEG:
719
- return -deserializeLargeUint();
720
- case I_BOOL_FALSE:
721
- return false;
722
- case I_BOOL_TRUE:
723
- return true;
724
- case I_NULL:
725
- return null;
726
- case I_UNDEFINED:
727
- return;
728
- case I_FLOAT: {
729
- const size = deserializeLargeUint();
730
- const beg = readPtr;
731
- readPtr += size;
732
- return parseFloat(readStr.slice(beg, readPtr));
733
- }
734
- case I_REGEXP: {
735
- const source = _deserialize();
736
- const flags = _deserialize();
737
- return new RegExp(source, flags);
738
- }
739
- case I_DATE: {
740
- const time = _deserialize();
741
- return new Date(time);
742
- }
743
- case I_REFERENCE: {
744
- const ref = deserializeLargeUint();
745
- return readRefs.get(ref);
746
- }
747
- case I_OBJECT_SMALL:
748
- case I_OBJECT_LARGE: {
749
- const entries = [];
750
- const size = type === I_OBJECT_SMALL
751
- ? charCodeToInt[readStr.charCodeAt(readPtr++)]
752
- : deserializeLargeUint();
753
- for ( let i = 0; i < size; i++ ) {
754
- const k = _deserialize();
755
- const v = _deserialize();
756
- entries.push([ k, v ]);
757
- }
758
- const out = Object.fromEntries(entries);
759
- readRefs.set(refCounter++, out);
760
- return out;
701
+ // Primitive types
702
+ case I_STRING_SMALL:
703
+ case I_STRING_LARGE: {
704
+ const size = type === I_STRING_SMALL
705
+ ? charCodeToInt[readStr.charCodeAt(readPtr++)]
706
+ : deserializeLargeUint();
707
+ const beg = readPtr;
708
+ readPtr += size;
709
+ return readStr.slice(beg, readPtr);
710
+ }
711
+ case I_ZERO:
712
+ return 0;
713
+ case I_INTEGER_SMALL_POS:
714
+ return charCodeToInt[readStr.charCodeAt(readPtr++)];
715
+ case I_INTEGER_SMALL_NEG:
716
+ return -charCodeToInt[readStr.charCodeAt(readPtr++)];
717
+ case I_INTEGER_LARGE_POS:
718
+ return deserializeLargeUint();
719
+ case I_INTEGER_LARGE_NEG:
720
+ return -deserializeLargeUint();
721
+ case I_BOOL_FALSE:
722
+ return false;
723
+ case I_BOOL_TRUE:
724
+ return true;
725
+ case I_NULL:
726
+ return null;
727
+ case I_UNDEFINED:
728
+ return;
729
+ case I_FLOAT: {
730
+ const size = deserializeLargeUint();
731
+ const beg = readPtr;
732
+ readPtr += size;
733
+ return parseFloat(readStr.slice(beg, readPtr));
734
+ }
735
+ case I_REGEXP: {
736
+ const source = _deserialize();
737
+ const flags = _deserialize();
738
+ return new RegExp(source, flags);
739
+ }
740
+ case I_DATE: {
741
+ const time = _deserialize();
742
+ return new Date(time);
743
+ }
744
+ case I_REFERENCE: {
745
+ const ref = deserializeLargeUint();
746
+ return readRefs.get(ref);
747
+ }
748
+ case I_OBJECT_SMALL:
749
+ case I_OBJECT_LARGE: {
750
+ const out = {};
751
+ readRefs.set(refCounter++, out);
752
+ const entries = [];
753
+ const size = type === I_OBJECT_SMALL
754
+ ? charCodeToInt[readStr.charCodeAt(readPtr++)]
755
+ : deserializeLargeUint();
756
+ for ( let i = 0; i < size; i++ ) {
757
+ const k = _deserialize();
758
+ const v = _deserialize();
759
+ entries.push([ k, v ]);
761
760
  }
762
- case I_ARRAY_SMALL:
763
- case I_ARRAY_LARGE: {
764
- const out = [];
765
- const size = type === I_ARRAY_SMALL
766
- ? charCodeToInt[readStr.charCodeAt(readPtr++)]
767
- : deserializeLargeUint();
768
- for ( let i = 0; i < size; i++ ) {
769
- out.push(_deserialize());
770
- }
771
- readRefs.set(refCounter++, out);
772
- return out;
761
+ Object.assign(out, Object.fromEntries(entries));
762
+ return out;
763
+ }
764
+ case I_ARRAY_SMALL:
765
+ case I_ARRAY_LARGE: {
766
+ const out = [];
767
+ readRefs.set(refCounter++, out);
768
+ const size = type === I_ARRAY_SMALL
769
+ ? charCodeToInt[readStr.charCodeAt(readPtr++)]
770
+ : deserializeLargeUint();
771
+ for ( let i = 0; i < size; i++ ) {
772
+ out.push(_deserialize());
773
773
  }
774
- case I_SET_SMALL:
775
- case I_SET_LARGE: {
776
- const entries = [];
777
- const size = type === I_SET_SMALL
778
- ? charCodeToInt[readStr.charCodeAt(readPtr++)]
779
- : deserializeLargeUint();
780
- for ( let i = 0; i < size; i++ ) {
781
- entries.push(_deserialize());
782
- }
783
- const out = new Set(entries);
784
- readRefs.set(refCounter++, out);
785
- return out;
774
+ return out;
775
+ }
776
+ case I_SET_SMALL:
777
+ case I_SET_LARGE: {
778
+ const out = new Set();
779
+ readRefs.set(refCounter++, out);
780
+ const size = type === I_SET_SMALL
781
+ ? charCodeToInt[readStr.charCodeAt(readPtr++)]
782
+ : deserializeLargeUint();
783
+ for ( let i = 0; i < size; i++ ) {
784
+ out.add(_deserialize());
786
785
  }
787
- case I_MAP_SMALL:
788
- case I_MAP_LARGE: {
789
- const entries = [];
790
- const size = type === I_MAP_SMALL
791
- ? charCodeToInt[readStr.charCodeAt(readPtr++)]
792
- : deserializeLargeUint();
793
- for ( let i = 0; i < size; i++ ) {
794
- const k = _deserialize();
795
- const v = _deserialize();
796
- entries.push([ k, v ]);
797
- }
798
- const out = new Map(entries);
799
- readRefs.set(refCounter++, out);
800
- return out;
786
+ return out;
787
+ }
788
+ case I_MAP_SMALL:
789
+ case I_MAP_LARGE: {
790
+ const out = new Map();
791
+ readRefs.set(refCounter++, out);
792
+ const size = type === I_MAP_SMALL
793
+ ? charCodeToInt[readStr.charCodeAt(readPtr++)]
794
+ : deserializeLargeUint();
795
+ for ( let i = 0; i < size; i++ ) {
796
+ const k = _deserialize();
797
+ const v = _deserialize();
798
+ out.set(k, v);
801
799
  }
802
- case I_ARRAYBUFFER: {
803
- const byteLength = deserializeLargeUint();
804
- const maxByteLength = _deserialize();
805
- let options;
806
- if ( maxByteLength !== 0 && maxByteLength !== byteLength ) {
807
- options = { maxByteLength };
808
- }
809
- const arrbuf = new ArrayBuffer(byteLength, options);
810
- const dense = _deserialize();
811
- const str = _deserialize();
812
- if ( dense ) {
813
- denseArrayBufferFromStr(str, arrbuf);
814
- } else {
815
- sparseArrayBufferFromStr(str, arrbuf);
816
- }
817
- readRefs.set(refCounter++, arrbuf);
818
- return arrbuf;
800
+ return out;
801
+ }
802
+ case I_ARRAYBUFFER: {
803
+ const byteLength = deserializeLargeUint();
804
+ const maxByteLength = _deserialize();
805
+ let options;
806
+ if ( maxByteLength !== 0 && maxByteLength !== byteLength ) {
807
+ options = { maxByteLength };
819
808
  }
820
- case I_INT8ARRAY:
821
- case I_UINT8ARRAY:
822
- case I_UINT8CLAMPEDARRAY:
823
- case I_INT16ARRAY:
824
- case I_UINT16ARRAY:
825
- case I_INT32ARRAY:
826
- case I_UINT32ARRAY:
827
- case I_FLOAT32ARRAY:
828
- case I_FLOAT64ARRAY:
829
- case I_DATAVIEW: {
830
- const byteOffset = deserializeLargeUint();
831
- const length = deserializeLargeUint();
832
- const arrayBuffer = _deserialize();
833
- const ctor = toArrayBufferViewConstructor[`${type}`];
834
- const out = new ctor(arrayBuffer, byteOffset, length);
835
- readRefs.set(refCounter++, out);
836
- return out;
809
+ const arrbuf = new ArrayBuffer(byteLength, options);
810
+ const dense = _deserialize();
811
+ const str = _deserialize();
812
+ if ( dense ) {
813
+ denseArrayBufferFromStr(str, arrbuf);
814
+ } else {
815
+ sparseArrayBufferFromStr(str, arrbuf);
837
816
  }
838
- default:
839
- break;
817
+ readRefs.set(refCounter++, arrbuf);
818
+ return arrbuf;
819
+ }
820
+ case I_INT8ARRAY:
821
+ case I_UINT8ARRAY:
822
+ case I_UINT8CLAMPEDARRAY:
823
+ case I_INT16ARRAY:
824
+ case I_UINT16ARRAY:
825
+ case I_INT32ARRAY:
826
+ case I_UINT32ARRAY:
827
+ case I_FLOAT32ARRAY:
828
+ case I_FLOAT64ARRAY:
829
+ case I_DATAVIEW: {
830
+ const byteOffset = deserializeLargeUint();
831
+ const length = deserializeLargeUint();
832
+ const arrayBuffer = _deserialize();
833
+ const ctor = toArrayBufferViewConstructor[`${type}`];
834
+ const out = new ctor(arrayBuffer, byteOffset, length);
835
+ readRefs.set(refCounter++, out);
836
+ return out;
837
+ }
838
+ default:
839
+ break;
840
840
  }
841
841
  readPtr = FAILMARK;
842
842
  };
@@ -1128,7 +1128,7 @@ export const getConfig = ( ) => Object.assign({}, currentConfig);
1128
1128
 
1129
1129
  export const setConfig = config => {
1130
1130
  for ( const key in Object.keys(config) ) {
1131
- if ( defaultConfig.hasOwnProperty(key) === false ) { continue; }
1131
+ if ( hasOwnProperty(defaultConfig, key) === false ) { continue; }
1132
1132
  const val = config[key];
1133
1133
  if ( typeof val !== typeof defaultConfig[key] ) { continue; }
1134
1134
  if ( (validateConfig[key])(val) === false ) { continue; }
@@ -1385,19 +1385,22 @@ if ( isInstanceOf(globalThis, 'DedicatedWorkerGlobalScope') ) {
1385
1385
  globalThis.onmessage = ev => {
1386
1386
  const msg = ev.data;
1387
1387
  switch ( msg.what ) {
1388
- case THREAD_AREYOUREADY:
1389
- setConfig(msg.config);
1390
- globalThis.postMessage({ what: THREAD_IAMREADY });
1391
- break;
1392
- case THREAD_SERIALIZE:
1393
- const result = serialize(msg.data, msg.options);
1394
- globalThis.postMessage({ id: msg.id, size: msg.size, result });
1395
- break;
1396
- case THREAD_DESERIALIZE: {
1397
- const result = deserialize(msg.data);
1398
- globalThis.postMessage({ id: msg.id, size: msg.size, result });
1399
- break;
1400
- }
1388
+ case THREAD_AREYOUREADY:
1389
+ setConfig(msg.config);
1390
+ globalThis.postMessage({ what: THREAD_IAMREADY });
1391
+ break;
1392
+ case THREAD_SERIALIZE: {
1393
+ const result = serialize(msg.data, msg.options);
1394
+ globalThis.postMessage({ id: msg.id, size: msg.size, result });
1395
+ break;
1396
+ }
1397
+ case THREAD_DESERIALIZE: {
1398
+ const result = deserialize(msg.data);
1399
+ globalThis.postMessage({ id: msg.id, size: msg.size, result });
1400
+ break;
1401
+ }
1402
+ default:
1403
+ break;
1401
1404
  }
1402
1405
  };
1403
1406
  }
@@ -19,26 +19,23 @@
19
19
  Home: https://github.com/gorhill/uBlock
20
20
  */
21
21
 
22
- /* globals browser */
23
-
24
- 'use strict';
25
-
26
22
  /******************************************************************************/
27
23
 
28
- import µb from './background.js';
29
- import logger from './logger.js';
30
- import { onBroadcast } from './broadcast.js';
31
- import { redirectEngine as reng } from './redirect-engine.js';
32
- import { sessionFirewall } from './filtering-engines.js';
33
- import { MRUCache } from './mrucache.js';
34
- import { ScriptletFilteringEngine } from './scriptlet-filtering-core.js';
35
-
36
24
  import {
37
25
  domainFromHostname,
38
26
  entityFromDomain,
39
27
  hostnameFromURI,
40
28
  } from './uri-utils.js';
41
29
 
30
+ import { MRUCache } from './mrucache.js';
31
+ import { ScriptletFilteringEngine } from './scriptlet-filtering-core.js';
32
+
33
+ import logger from './logger.js';
34
+ import { onBroadcast } from './broadcast.js';
35
+ import { redirectEngine as reng } from './redirect-engine.js';
36
+ import { sessionFirewall } from './filtering-engines.js';
37
+ import µb from './background.js';
38
+
42
39
  /******************************************************************************/
43
40
 
44
41
  const contentScriptRegisterer = new (class {
@@ -262,15 +259,13 @@ export class ScriptletFilteringEngineEx extends ScriptletFilteringEngine {
262
259
  reset() {
263
260
  super.reset();
264
261
  this.warSecret = vAPI.warSecret.long(this.warSecret);
265
- this.scriptletCache.reset();
266
- contentScriptRegisterer.reset();
262
+ this.clearCache();
267
263
  }
268
264
 
269
265
  freeze() {
270
266
  super.freeze();
271
267
  this.warSecret = vAPI.warSecret.long(this.warSecret);
272
- this.scriptletCache.reset();
273
- contentScriptRegisterer.reset();
268
+ this.clearCache();
274
269
  }
275
270
 
276
271
  clearCache() {
@@ -290,8 +285,7 @@ export class ScriptletFilteringEngineEx extends ScriptletFilteringEngine {
290
285
  }
291
286
 
292
287
  if ( this.scriptletCache.resetTime < reng.modifyTime ) {
293
- this.warSecret = vAPI.warSecret.long(this.warSecret);
294
- this.scriptletCache.reset();
288
+ this.clearCache();
295
289
  }
296
290
 
297
291
  let scriptletDetails = this.scriptletCache.lookup(hostname);