@browserless.io/browserless 2.12.0-beta-2 → 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.
- package/build/browserless.d.ts +1 -0
- package/build/browserless.js +6 -0
- package/build/browsers/chromium.cdp.d.ts +1 -1
- package/build/browsers/chromium.cdp.js +2 -2
- package/build/browsers/chromium.playwright.d.ts +2 -2
- package/build/browsers/chromium.playwright.js +7 -5
- package/build/browsers/firefox.playwright.d.ts +2 -2
- package/build/browsers/firefox.playwright.js +7 -5
- package/build/browsers/index.d.ts +3 -2
- package/build/browsers/index.js +40 -16
- package/build/browsers/webkit.playwright.d.ts +2 -2
- package/build/browsers/webkit.playwright.js +7 -5
- package/build/config.d.ts +11 -0
- package/build/config.js +16 -0
- package/build/routes/chrome/http/content.post.body.json +8 -8
- package/build/routes/chrome/http/pdf.post.body.json +8 -8
- package/build/routes/chrome/http/scrape.post.body.json +8 -8
- package/build/routes/chrome/http/screenshot.post.body.json +8 -8
- package/build/routes/chrome/tests/websocket.spec.js +18 -3
- package/build/routes/chromium/http/content.post.body.json +8 -8
- package/build/routes/chromium/http/pdf.post.body.json +8 -8
- package/build/routes/chromium/http/scrape.post.body.json +8 -8
- package/build/routes/chromium/http/screenshot.post.body.json +8 -8
- package/build/routes/chromium/tests/websocket.spec.js +18 -0
- package/build/routes/firefox/tests/websocket.spec.js +18 -1
- package/build/routes/webkit/tests/websocket.spec.js +18 -0
- package/build/types.d.ts +1 -1
- package/build/utils.d.ts +9 -0
- package/build/utils.js +9 -0
- package/docker/chromium/Dockerfile +2 -1
- package/docker/firefox/Dockerfile +2 -1
- package/docker/multi/Dockerfile +1 -1
- package/docker/webkit/Dockerfile +2 -1
- package/extensions/ublock/_locales/eu/messages.json +4 -4
- package/extensions/ublock/_locales/hi/messages.json +5 -5
- package/extensions/ublock/_locales/kn/messages.json +11 -11
- package/extensions/ublock/_locales/nb/messages.json +2 -2
- package/extensions/ublock/_locales/no/messages.json +2 -2
- package/extensions/ublock/_locales/ro/messages.json +1 -1
- package/extensions/ublock/_locales/sv/messages.json +1 -1
- package/extensions/ublock/_locales/zh_CN/messages.json +2 -2
- package/extensions/ublock/assets/assets.json +3 -8
- package/extensions/ublock/assets/resources/scriptlets.js +128 -31
- package/extensions/ublock/assets/thirdparties/easylist/easylist.txt +4870 -3560
- package/extensions/ublock/assets/thirdparties/easylist/easyprivacy.txt +662 -173
- package/extensions/ublock/assets/thirdparties/pgl.yoyo.org/as/serverlist +10 -42
- package/extensions/ublock/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +241 -80
- package/extensions/ublock/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +2093 -1224
- package/extensions/ublock/assets/ublock/badlists.txt +2 -0
- package/extensions/ublock/assets/ublock/badware.min.txt +408 -287
- package/extensions/ublock/assets/ublock/filters.min.txt +947 -645
- package/extensions/ublock/assets/ublock/privacy.min.txt +43 -8
- package/extensions/ublock/assets/ublock/quick-fixes.min.txt +55 -93
- package/extensions/ublock/assets/ublock/unbreak.min.txt +52 -19
- package/extensions/ublock/css/1p-filters.css +2 -0
- package/extensions/ublock/css/codemirror.css +2 -2
- package/extensions/ublock/css/dashboard.css +2 -5
- package/extensions/ublock/css/epicker-ui.css +3 -3
- package/extensions/ublock/css/fa-icons.css +3 -0
- package/extensions/ublock/css/logger-ui-inspector.css +1 -0
- package/extensions/ublock/css/logger-ui.css +44 -32
- package/extensions/ublock/img/fontawesome/fontawesome-defs.svg +1 -0
- package/extensions/ublock/js/3p-filters.js +4 -5
- package/extensions/ublock/js/biditrie.js +16 -11
- package/extensions/ublock/js/cachestorage.js +37 -37
- package/extensions/ublock/js/contentscript-extra.js +0 -2
- package/extensions/ublock/js/contentscript.js +1 -6
- package/extensions/ublock/js/epicker-ui.js +28 -36
- package/extensions/ublock/js/fa-icons.js +1 -0
- package/extensions/ublock/js/hntrie.js +19 -13
- package/extensions/ublock/js/logger-ui-inspector.js +6 -13
- package/extensions/ublock/js/logger-ui.js +264 -264
- package/extensions/ublock/js/s14e-serializer.js +267 -264
- package/extensions/ublock/js/scriptlet-filtering.js +12 -18
- package/extensions/ublock/js/scriptlets/dom-inspector.js +1 -5
- package/extensions/ublock/js/scriptlets/epicker.js +53 -59
- package/extensions/ublock/js/start.js +0 -8
- package/extensions/ublock/js/storage.js +2 -9
- package/extensions/ublock/js/vapi-background.js +19 -20
- package/extensions/ublock/js/vapi-common.js +2 -7
- package/extensions/ublock/js/vapi.js +0 -4
- package/extensions/ublock/js/webext.js +23 -15
- package/extensions/ublock/logger-ui.html +24 -15
- package/extensions/ublock/manifest.json +2 -3
- package/package.json +18 -6
- package/src/browserless.ts +11 -0
- package/src/browsers/chromium.cdp.ts +2 -2
- package/src/browsers/chromium.playwright.ts +8 -4
- package/src/browsers/firefox.playwright.ts +8 -5
- package/src/browsers/index.ts +53 -18
- package/src/browsers/webkit.playwright.ts +8 -4
- package/src/config.ts +20 -0
- package/src/routes/chrome/tests/websocket.spec.ts +25 -4
- package/src/routes/chromium/tests/websocket.spec.ts +25 -0
- package/src/routes/firefox/tests/websocket.spec.ts +25 -1
- package/src/routes/webkit/tests/websocket.spec.ts +25 -0
- package/src/types.ts +1 -1
- package/src/utils.ts +9 -0
- package/static/docs/swagger.json +9 -9
- package/static/docs/swagger.min.json +9 -9
- package/static/function/client.js +95 -136
- package/static/function/index.html +95 -136
|
@@ -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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
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
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
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
|
-
|
|
574
|
-
writeBuffer.push(C_FLOAT + strFromLargeUint(s.length) + s);
|
|
571
|
+
writeBuffer.push(C_INTEGER_LARGE_NEG + strFromLargeUint(-data));
|
|
575
572
|
}
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
writeBuffer.push(
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
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
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
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
|
-
|
|
620
|
-
|
|
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
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
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
|
-
|
|
645
|
-
|
|
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
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
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
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
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
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
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
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
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
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
const
|
|
799
|
-
|
|
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
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
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
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
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
|
-
|
|
839
|
-
|
|
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 (
|
|
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
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
294
|
-
this.scriptletCache.reset();
|
|
288
|
+
this.clearCache();
|
|
295
289
|
}
|
|
296
290
|
|
|
297
291
|
let scriptletDetails = this.scriptletCache.lookup(hostname);
|