@@ -52,6 +52,7 @@ function isSyncDeep (method, engine, buildState) {
5252 return true
5353}
5454
55+ const oldAll = createArrayIterativeMethod ( 'every' , true )
5556const defaultMethods = {
5657 '+' : ( data ) => {
5758 if ( ! data ) return 0
@@ -278,17 +279,13 @@ const defaultMethods = {
278279 } ,
279280 deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
280281 compile : ( data , buildState ) => {
281- if ( ! buildState . engine . truthy [ OriginalImpl ] ) {
282- let res = buildState . compile ``
283- if ( Array . isArray ( data ) && data . length ) {
284- for ( let i = 0 ; i < data . length ; i ++ ) res = buildState . compile `${ res } engine.truthy(prev = ${ data [ i ] } ) ? prev : `
285- res = buildState . compile `${ res } prev`
286- return res
287- }
288- return false
282+ let res = buildState . compile ``
283+ if ( Array . isArray ( data ) && data . length ) {
284+ for ( let i = 0 ; i < data . length ; i ++ ) res = buildState . compile `${ res } engine.truthy(prev = ${ data [ i ] } ) ? prev : `
285+ res = buildState . compile `${ res } prev`
286+ return res
289287 }
290- if ( Array . isArray ( data ) && data . length ) return `(${ data . map ( ( i ) => buildString ( i , buildState ) ) . join ( ' || ' ) } )`
291- return `(${ buildString ( data , buildState ) } ).reduce((a,b) => a||b, false)`
288+ return false
292289 } ,
293290 lazy : true
294291 } ,
@@ -323,17 +320,13 @@ const defaultMethods = {
323320 lazy : true ,
324321 deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
325322 compile : ( data , buildState ) => {
326- if ( ! buildState . engine . truthy [ OriginalImpl ] ) {
327- let res = buildState . compile ``
328- if ( Array . isArray ( data ) && data . length ) {
329- for ( let i = 0 ; i < data . length ; i ++ ) res = buildState . compile `${ res } !engine.truthy(prev = ${ data [ i ] } ) ? prev : `
330- res = buildState . compile `${ res } prev`
331- return res
332- }
333- return false
323+ let res = buildState . compile ``
324+ if ( Array . isArray ( data ) && data . length ) {
325+ for ( let i = 0 ; i < data . length ; i ++ ) res = buildState . compile `${ res } !engine.truthy(prev = ${ data [ i ] } ) ? prev : `
326+ res = buildState . compile `${ res } prev`
327+ return res
334328 }
335- if ( Array . isArray ( data ) && data . length ) return `(${ data . map ( ( i ) => buildString ( i , buildState ) ) . join ( ' && ' ) } )`
336- return `(${ buildString ( data , buildState ) } ).reduce((a,b) => a&&b, true)`
329+ return false
337330 }
338331 } ,
339332 substr : ( [ string , from , end ] ) => {
@@ -441,7 +434,25 @@ const defaultMethods = {
441434 } ,
442435 map : createArrayIterativeMethod ( 'map' ) ,
443436 some : createArrayIterativeMethod ( 'some' , true ) ,
444- all : createArrayIterativeMethod ( 'every' , true ) ,
437+ all : {
438+ [ Sync ] : oldAll [ Sync ] ,
439+ method : ( args , context , above , engine ) => {
440+ if ( Array . isArray ( args ) ) {
441+ const first = engine . run ( args [ 0 ] , context , above )
442+ if ( Array . isArray ( first ) && first . length === 0 ) return false
443+ }
444+ return oldAll . method ( args , context , above , engine )
445+ } ,
446+ asyncMethod : async ( args , context , above , engine ) => {
447+ if ( Array . isArray ( args ) ) {
448+ const first = await engine . run ( args [ 0 ] , context , above )
449+ if ( Array . isArray ( first ) && first . length === 0 ) return false
450+ }
451+ return oldAll . asyncMethod ( args , context , above , engine )
452+ } ,
453+ deterministic : oldAll . deterministic ,
454+ lazy : oldAll . lazy
455+ } ,
445456 none : {
446457 [ Sync ] : ( data , buildState ) => isSyncDeep ( data , buildState . engine , buildState ) ,
447458 lazy : true ,
@@ -450,12 +461,7 @@ const defaultMethods = {
450461 return ! defaultMethods . some . method ( val , context , above , engine )
451462 } ,
452463 asyncMethod : async ( val , context , above , engine ) => {
453- return ! ( await defaultMethods . some . asyncMethod (
454- val ,
455- context ,
456- above ,
457- engine
458- ) )
464+ return ! ( await defaultMethods . some . asyncMethod ( val , context , above , engine ) )
459465 } ,
460466 compile : ( data , buildState ) => {
461467 const result = defaultMethods . some . compile ( data , buildState )
0 commit comments