@@ -621,6 +621,7 @@ builtinScriptlets.push({
621621 name : 'object-prune.fn' ,
622622 fn : objectPrune ,
623623 dependencies : [
624+ 'get-extra-args.fn' ,
624625 'matches-stack-trace.fn' ,
625626 'pattern-to-regex.fn' ,
626627 ] ,
@@ -641,18 +642,24 @@ function objectPrune(
641642 const prunePaths = rawPrunePaths !== ''
642643 ? rawPrunePaths . split ( / + / )
643644 : [ ] ;
645+ const extraArgs = getExtraArgs ( Array . from ( arguments ) , 4 ) ;
644646 let needlePaths ;
645647 let log , reLogNeedle ;
646648 if ( prunePaths . length !== 0 ) {
647649 needlePaths = prunePaths . length !== 0 && rawNeedlePaths !== ''
648650 ? rawNeedlePaths . split ( / + / )
649651 : [ ] ;
652+ if ( extraArgs . log !== undefined ) {
653+ log = console . log . bind ( console ) ;
654+ reLogNeedle = patternToRegex ( extraArgs . log ) ;
655+ }
650656 } else {
651657 log = console . log . bind ( console ) ;
652658 reLogNeedle = patternToRegex ( rawNeedlePaths ) ;
653659 }
654660 if ( stackNeedle !== '' ) {
655- if ( matchesStackTrace ( patternToRegex ( stackNeedle ) , log ? '1' : 0 ) === false ) {
661+ const reStackNeedle = patternToRegex ( stackNeedle ) ;
662+ if ( matchesStackTrace ( reStackNeedle , extraArgs . logstack ) === false ) {
656663 return obj ;
657664 }
658665 }
@@ -816,6 +823,7 @@ builtinScriptlets.push({
816823 name : 'matches-stack-trace.fn' ,
817824 fn : matchesStackTrace ,
818825 dependencies : [
826+ 'get-exception-token.fn' ,
819827 'safe-self.fn' ,
820828 ] ,
821829} ) ;
@@ -855,9 +863,9 @@ function matchesStackTrace(
855863 const stack = lines . join ( '\t' ) ;
856864 const r = safe . RegExp_test . call ( reNeedle , stack ) ;
857865 if (
858- logLevel === '1' ||
859- logLevel === '2' && r ||
860- logLevel === '3' && ! r
866+ logLevel === 1 ||
867+ logLevel === 2 && r ||
868+ logLevel === 3 && ! r
861869 ) {
862870 safe . uboLog ( stack . replace ( / \t / g, '\n' ) ) ;
863871 }
@@ -993,31 +1001,32 @@ builtinScriptlets.push({
9931001 fn : abortOnStackTrace ,
9941002 dependencies : [
9951003 'get-exception-token.fn' ,
1004+ 'get-extra-args.fn' ,
9961005 'matches-stack-trace.fn' ,
9971006 'pattern-to-regex.fn' ,
9981007 ] ,
9991008} ) ;
10001009// Status is currently experimental
10011010function abortOnStackTrace (
10021011 chain = '' ,
1003- needle = '' ,
1004- logLevel = ''
1012+ needle = ''
10051013) {
10061014 if ( typeof chain !== 'string' ) { return ; }
10071015 const reNeedle = patternToRegex ( needle ) ;
1016+ const extraArgs = getExtraArgs ( Array . from ( arguments ) , 2 ) ;
10081017 const makeProxy = function ( owner , chain ) {
10091018 const pos = chain . indexOf ( '.' ) ;
10101019 if ( pos === - 1 ) {
10111020 let v = owner [ chain ] ;
10121021 Object . defineProperty ( owner , chain , {
10131022 get : function ( ) {
1014- if ( matchesStackTrace ( reNeedle , logLevel ) ) {
1023+ if ( matchesStackTrace ( reNeedle , extraArgs . log ) ) {
10151024 throw new ReferenceError ( getExceptionToken ( ) ) ;
10161025 }
10171026 return v ;
10181027 } ,
10191028 set : function ( a ) {
1020- if ( matchesStackTrace ( reNeedle , logLevel ) ) {
1029+ if ( matchesStackTrace ( reNeedle , extraArgs . log ) ) {
10211030 throw new ReferenceError ( getExceptionToken ( ) ) ;
10221031 }
10231032 v = a ;
@@ -1136,20 +1145,28 @@ function jsonPrune(
11361145 rawNeedlePaths = '' ,
11371146 stackNeedle = ''
11381147) {
1148+ const extraArgs = Array . from ( arguments ) . slice ( 3 ) ;
11391149 JSON . parse = new Proxy ( JSON . parse , {
11401150 apply : function ( target , thisArg , args ) {
11411151 return objectPrune (
11421152 Reflect . apply ( target , thisArg , args ) ,
11431153 rawPrunePaths ,
11441154 rawNeedlePaths ,
1145- stackNeedle
1155+ stackNeedle ,
1156+ ...extraArgs
11461157 ) ;
11471158 } ,
11481159 } ) ;
11491160 Response . prototype . json = new Proxy ( Response . prototype . json , {
11501161 apply : function ( target , thisArg , args ) {
11511162 return Reflect . apply ( target , thisArg , args ) . then ( o =>
1152- objectPrune ( o , rawPrunePaths , rawNeedlePaths , stackNeedle )
1163+ objectPrune (
1164+ o ,
1165+ rawPrunePaths ,
1166+ rawNeedlePaths ,
1167+ stackNeedle ,
1168+ ...extraArgs
1169+ )
11531170 ) ;
11541171 } ,
11551172 } ) ;
0 commit comments