@@ -15,12 +15,15 @@ declare const unsafeWindow: unsafeWindow
1515const Win = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window
1616
1717import { CheckDepthInASWeakMap } from './as-weakmap.js'
18+ import { SafeArrayToString } from './safe-ArrayToString.js'
1819
1920export const OriginalRegExpTest = Win . RegExp . prototype . test
2021
2122export function RunTinyShieldUserscript ( BrowserWindow : typeof window , UserscriptName : string = 'tinyShield' ) : void {
22- const OriginalArrayToString = BrowserWindow . Array . prototype . toString
2323 const OriginalRegExpTest = BrowserWindow . RegExp . prototype . test
24+ const OriginalArrayMap = BrowserWindow . Array . prototype . map
25+ const OriginalString = BrowserWindow . String
26+ const OriginalArrayJoin = BrowserWindow . Array . prototype . join
2427
2528 const ProtectedFunctionStrings = [ 'toString' , 'get' , 'set' ]
2629
@@ -46,7 +49,7 @@ export function RunTinyShieldUserscript(BrowserWindow: typeof window, Userscript
4649 return Reflect . apply ( Target , ThisArg , Args )
4750 }
4851
49- let ArgText = OriginalArrayToString . call ( Args ) as string
52+ let ArgText = SafeArrayToString ( Args , { OriginalArrayMap , OriginalString , OriginalArrayJoin } )
5053 if ( ASInitPositiveRegExps . filter ( ASInitPositiveRegExp => ASInitPositiveRegExp . filter ( Index => OriginalRegExpTest . call ( Index , ArgText ) as boolean ) . length >= 2 ) . length === 1 ) {
5154 console . debug ( `[${ UserscriptName } ]: Map.prototype.get:` , ThisArg , Args )
5255 throw new Error ( )
@@ -68,11 +71,7 @@ export function RunTinyShieldUserscript(BrowserWindow: typeof window, Userscript
6871 BrowserWindow . Map . prototype . set = new Proxy ( BrowserWindow . Map . prototype . set , {
6972 apply ( Target : ( key : unknown , value : unknown ) => Map < unknown , unknown > , ThisArg : Map < unknown , unknown > , Args : [ unknown , unknown ] ) {
7073 let ArgText = ''
71- try {
72- ArgText = OriginalArrayToString . call ( Args ) as string
73- } catch {
74- console . warn ( `[${ UserscriptName } ]: Map.prototype.set:` , ThisArg , Args )
75- }
74+ ArgText = SafeArrayToString ( Args , { OriginalArrayMap, OriginalString, OriginalArrayJoin } )
7675 if ( ASReinsertedAdvInvenPositiveRegExps . filter ( ASReinsertedAdvInvenPositiveRegExp => ASReinsertedAdvInvenPositiveRegExp . filter ( Index => OriginalRegExpTest . call ( Index , ArgText ) as boolean ) . length >= 3 ) . length === 1 ) {
7776 console . debug ( `[${ UserscriptName } ]: Map.prototype.set:` , ThisArg , Args )
7877 throw new Error ( )
0 commit comments