@@ -4,8 +4,10 @@ declare const unsafeWindow: unsafeWindow
44
55const Win = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window
66
7+ import { CheckDepthInASWeakMap } from './as-weakmap.js'
8+
79const OriginalArrayToString = Win . Array . prototype . toString
8- const OriginalRegExpTest = Win . RegExp . prototype . test
10+ export const OriginalRegExpTest = Win . RegExp . prototype . test
911
1012const ProtectedFunctionStrings = [ 'toString' , 'get' , 'set' ]
1113
@@ -42,7 +44,13 @@ Win.Map.prototype.get = new Proxy(Win.Map.prototype.get, {
4244} )
4345
4446const ASReinsertedAdvInvenPositiveRegExps : RegExp [ ] [ ] = [ [
47+ / i n v e n t o r y _ i d , [ a - z A - Z 0 - 9 - ] + \/ [ a - z A - Z 0 - 9 ] + \/ [ a - z A - Z 0 - 9 ] + / ,
48+ / i n v e n t o r y _ i d , [ a - z A - Z 0 - 9 - ] + \/ [ a - z A - Z 0 - 9 ] + \/ [ a - z A - Z 0 - 9 ] + / ,
4549 / i n v e n t o r y _ i d , [ a - z A - Z 0 - 9 - ] + \/ [ a - z A - Z 0 - 9 ] + \/ [ a - z A - Z 0 - 9 ] + /
50+ ] , [
51+ / [ a - z 0 - 9 A - Z ] + \. s e t A t t r i b u t e \( * ( ' | " ) o n l o a d ( ' | " ) * , * ( ' | " ) ! * a s y n c * f u n c t i o n \( * \) * \{ * l e t * / ,
52+ / c o n f i r m \( * [ A - Z a - z 0 - 9 ] + * \) * \) * { * c o n s t * [ A - Z a - z 0 - 9 ] + * = * n e w * [ A - Z a - z 0 - 9 ] + \. U R L \( ( ' | " ) h t t p s : \/ \/ r e p o r t \. e r r o r - r e p o r t \. c o m \/ / ,
53+ / \. f o r E a c h * \( * \( * [ A - Z a - z 0 - 9 ] + * = > * [ A - Z a - z 0 - 9 ] + \. r e m o v e * \( * \) * \) * \) * \) * , * [ 0 - 9 a - f ] + * \) * ; * c o n s t * [ A - Z a - z 0 - 9 ] + * = * a w a i t * \( * a w a i t * f e t c h * \( /
4654] ]
4755Win . Map . prototype . set = new Proxy ( Win . Map . prototype . set , {
4856 apply ( Target : ( key : unknown , value : unknown ) => Map < unknown , unknown > , ThisArg : Map < unknown , unknown > , Args : [ unknown , unknown ] ) {
@@ -52,11 +60,45 @@ Win.Map.prototype.set = new Proxy(Win.Map.prototype.set, {
5260 } catch {
5361 console . warn ( '[tinyShield]: Map.prototype.set:' , ThisArg , Args )
5462 }
55- if ( ASReinsertedAdvInvenPositiveRegExps . filter ( ASReinsertedAdvInvenPositiveRegExp => ASReinsertedAdvInvenPositiveRegExp . filter ( Index => OriginalRegExpTest . call ( Index , ArgText ) as boolean ) . length >= 1 ) . length === 1 ) {
63+ if ( ASReinsertedAdvInvenPositiveRegExps . filter ( ASReinsertedAdvInvenPositiveRegExp => ASReinsertedAdvInvenPositiveRegExp . filter ( Index => OriginalRegExpTest . call ( Index , ArgText ) as boolean ) . length >= 3 ) . length === 1 ) {
5664 console . debug ( '[tinyShield]: Map.prototype.set:' , ThisArg , Args )
5765 throw new Error ( )
5866 }
67+ return Reflect . apply ( Target , ThisArg , Args )
68+ }
69+ } )
5970
71+ Win . WeakMap . prototype . set = new Proxy ( Win . WeakMap . prototype . set , {
72+ apply ( Target : ( key : object , value : unknown ) => WeakMap < object , unknown > , ThisArg : WeakMap < object , unknown > , Args : [ object , unknown ] ) {
73+ if ( CheckDepthInASWeakMap ( Args ) ) {
74+ console . debug ( '[tinyShield]: WeakMap.prototype.set:' , ThisArg , Args )
75+ throw new Error ( )
76+ }
77+
78+ return Reflect . apply ( Target , ThisArg , Args )
79+ }
80+ } )
81+
82+ let ASTimerRegExps : RegExp [ ] [ ] = [ [
83+ / f u n c t i o n * \( * \) * { * c o n s t * [ a - z A - Z 0 - 9 ] + * = * [ a - z A - Z 0 - 9 ] + * ; * f o r * \( * v a r * [ a - z A - Z 0 - 9 ] + * = * [ a - z A - Z 0 - 9 ] + * \[ * [ a - z A - Z 0 - 9 ] + * \( * 0 x [ a - f 0 - 9 ] + * \) * \] * , / ,
84+ / * , [ a - z A - Z 0 - 9 ] + * = * n e w * A r r a y * \( * [ A - Z a - z 0 - 9 ] + * \) * , * [ A - Z a - z 0 - 9 ] + * = * 0 x [ a - f 0 - 9 ] + * ; * [ A - Z a - z 0 - 9 ] + * < * [ A - Z a - z 0 - 9 ] + * ; * [ A - Z a - z 0 - 9 ] + * \+ \+ * \) / ,
85+ / \) * \? * [ A - Z a - z 0 - 9 ] + * \[ * [ A - Z a - z 0 - 9 ] + * \( * 0 x [ a - f 0 - 9 ] + * \) * \] * \[ * [ A - Z a - z 0 - 9 ] + * \( * 0 x [ a - f 0 - 9 ] + * \) * \] * * \( [ A - Z a - z 0 - 9 ] + * , * \. \. \. * [ A - Z a - z 0 - 9 ] + * \) * : * v o i d * 0 x [ a - f 0 - 9 ] + /
86+ ] ]
87+ Win . setTimeout = new Proxy ( Win . setTimeout , {
88+ apply ( Target : typeof Win . setTimeout , ThisArg : undefined , Args : Parameters < typeof setTimeout > ) {
89+ if ( ASTimerRegExps . filter ( ASTimerRegExp => ASTimerRegExp . filter ( Index => Index . test ( Args [ 0 ] . toString ( ) ) ) . length >= 3 ) . length === 1 ) {
90+ console . debug ( '[tinyShield]: setTimeout:' , Args )
91+ return
92+ }
93+ return Reflect . apply ( Target , ThisArg , Args )
94+ }
95+ } )
96+ Win . setInterval = new Proxy ( Win . setInterval , {
97+ apply ( Target : typeof Win . setInterval , ThisArg : undefined , Args : Parameters < typeof setInterval > ) {
98+ if ( ASTimerRegExps . filter ( ASTimerRegExp => ASTimerRegExp . filter ( Index => Index . test ( Args [ 0 ] . toString ( ) ) ) . length >= 3 ) . length === 1 ) {
99+ console . debug ( '[tinyShield]: setInterval:' , Args )
100+ return
101+ }
60102 return Reflect . apply ( Target , ThisArg , Args )
61103 }
62104} )
0 commit comments