@@ -277,7 +277,15 @@ const defaultMethods = {
277277 } ,
278278 deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
279279 compile : ( data , buildState ) => {
280- if ( ! buildState . engine . truthy [ OriginalImpl ] ) return false
280+ if ( ! buildState . engine . truthy [ OriginalImpl ] ) {
281+ let res = buildState . compile ``
282+ if ( Array . isArray ( data ) && data . length ) {
283+ for ( let i = 0 ; i < data . length ; i ++ ) res = buildState . compile `${ res } engine.truthy(prev = ${ data [ i ] } ) ? prev : `
284+ res = buildState . compile `${ res } prev`
285+ return res
286+ }
287+ return false
288+ }
281289 if ( Array . isArray ( data ) && data . length ) return `(${ data . map ( ( i ) => buildString ( i , buildState ) ) . join ( ' || ' ) } )`
282290 return `(${ buildString ( data , buildState ) } ).reduce((a,b) => a||b, false)`
283291 } ,
@@ -314,7 +322,15 @@ const defaultMethods = {
314322 traverse : false ,
315323 deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
316324 compile : ( data , buildState ) => {
317- if ( ! buildState . engine . truthy [ OriginalImpl ] ) return false
325+ if ( ! buildState . engine . truthy [ OriginalImpl ] ) {
326+ let res = buildState . compile ``
327+ if ( Array . isArray ( data ) && data . length ) {
328+ for ( let i = 0 ; i < data . length ; i ++ ) res = buildState . compile `${ res } !engine.truthy(prev = ${ data [ i ] } ) ? prev : `
329+ res = buildState . compile `${ res } prev`
330+ return res
331+ }
332+ return false
333+ }
318334 if ( Array . isArray ( data ) && data . length ) return `(${ data . map ( ( i ) => buildString ( i , buildState ) ) . join ( ' && ' ) } )`
319335 return `(${ buildString ( data , buildState ) } ).reduce((a,b) => a&&b, true)`
320336 }
0 commit comments