@@ -52,6 +52,7 @@ function isSyncDeep (method, engine, buildState) {
52
52
return true
53
53
}
54
54
55
+ const oldAll = createArrayIterativeMethod ( 'every' , true )
55
56
const defaultMethods = {
56
57
'+' : ( data ) => {
57
58
if ( ! data ) return 0
@@ -278,17 +279,13 @@ const defaultMethods = {
278
279
} ,
279
280
deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
280
281
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
289
287
}
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
292
289
} ,
293
290
lazy : true
294
291
} ,
@@ -323,17 +320,13 @@ const defaultMethods = {
323
320
lazy : true ,
324
321
deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
325
322
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
334
328
}
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
337
330
}
338
331
} ,
339
332
substr : ( [ string , from , end ] ) => {
@@ -441,7 +434,25 @@ const defaultMethods = {
441
434
} ,
442
435
map : createArrayIterativeMethod ( 'map' ) ,
443
436
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
+ } ,
445
456
none : {
446
457
[ Sync ] : ( data , buildState ) => isSyncDeep ( data , buildState . engine , buildState ) ,
447
458
lazy : true ,
@@ -450,12 +461,7 @@ const defaultMethods = {
450
461
return ! defaultMethods . some . method ( val , context , above , engine )
451
462
} ,
452
463
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 ) )
459
465
} ,
460
466
compile : ( data , buildState ) => {
461
467
const result = defaultMethods . some . compile ( data , buildState )
0 commit comments