@@ -21,11 +21,12 @@ function isDeterministic (method, engine, buildState) {
21
21
if ( engine . isData ( method , func ) ) return true
22
22
if ( ! engine . methods [ func ] ) throw new Error ( `Method '${ func } ' was not found in the Logic Engine.` )
23
23
24
- if ( engine . methods [ func ] . traverse === false ) {
24
+ if ( engine . methods [ func ] . lazy ) {
25
25
return typeof engine . methods [ func ] . deterministic === 'function'
26
26
? engine . methods [ func ] . deterministic ( lower , buildState )
27
27
: engine . methods [ func ] . deterministic
28
28
}
29
+
29
30
return typeof engine . methods [ func ] . deterministic === 'function'
30
31
? engine . methods [ func ] . deterministic ( lower , buildState )
31
32
: engine . methods [ func ] . deterministic &&
@@ -44,7 +45,7 @@ function isSyncDeep (method, engine, buildState) {
44
45
const lower = method [ func ]
45
46
if ( engine . isData ( method , func ) ) return true
46
47
if ( ! engine . methods [ func ] ) throw new Error ( `Method '${ func } ' was not found in the Logic Engine.` )
47
- if ( engine . methods [ func ] . traverse === false ) return typeof engine . methods [ func ] [ Sync ] === 'function' ? engine . methods [ func ] [ Sync ] ( lower , buildState ) : engine . methods [ func ] [ Sync ]
48
+ if ( engine . methods [ func ] . lazy ) return typeof engine . methods [ func ] [ Sync ] === 'function' ? engine . methods [ func ] [ Sync ] ( lower , buildState ) : engine . methods [ func ] [ Sync ]
48
49
return typeof engine . methods [ func ] [ Sync ] === 'function' ? engine . methods [ func ] [ Sync ] ( lower , buildState ) : engine . methods [ func ] [ Sync ] && isSyncDeep ( lower , engine , buildState )
49
50
}
50
51
@@ -121,7 +122,7 @@ const defaultMethods = {
121
122
min : ( data ) => Math . min ( ...data ) ,
122
123
in : ( [ item , array ] ) => ( array || [ ] ) . includes ( item ) ,
123
124
preserve : {
124
- traverse : false ,
125
+ lazy : true ,
125
126
method : declareSync ( ( i ) => i , true ) ,
126
127
[ Sync ] : ( ) => true
127
128
} ,
@@ -182,7 +183,7 @@ const defaultMethods = {
182
183
183
184
return engine . run ( onFalse , context , { above } )
184
185
} ,
185
- traverse : false
186
+ lazy : true
186
187
} ,
187
188
'<' : ( args ) => {
188
189
if ( args . length === 2 ) return args [ 0 ] < args [ 1 ]
@@ -289,7 +290,7 @@ const defaultMethods = {
289
290
if ( Array . isArray ( data ) && data . length ) return `(${ data . map ( ( i ) => buildString ( i , buildState ) ) . join ( ' || ' ) } )`
290
291
return `(${ buildString ( data , buildState ) } ).reduce((a,b) => a||b, false)`
291
292
} ,
292
- traverse : false
293
+ lazy : true
293
294
} ,
294
295
'??' : defineCoalesce ( ) ,
295
296
try : defineCoalesce ( downgrade ) ,
@@ -319,7 +320,7 @@ const defaultMethods = {
319
320
}
320
321
return item
321
322
} ,
322
- traverse : false ,
323
+ lazy : true ,
323
324
deterministic : ( data , buildState ) => isDeterministic ( data , buildState . engine , buildState ) ,
324
325
compile : ( data , buildState ) => {
325
326
if ( ! buildState . engine . truthy [ OriginalImpl ] ) {
@@ -352,7 +353,6 @@ const defaultMethods = {
352
353
const result = defaultMethods . val . method ( key , context , above , engine , Unfound )
353
354
return result !== Unfound
354
355
} ,
355
- traverse : true ,
356
356
deterministic : false
357
357
} ,
358
358
val : {
@@ -444,7 +444,7 @@ const defaultMethods = {
444
444
all : createArrayIterativeMethod ( 'every' , true ) ,
445
445
none : {
446
446
[ Sync ] : ( data , buildState ) => isSyncDeep ( data , buildState . engine , buildState ) ,
447
- traverse : false ,
447
+ lazy : true ,
448
448
// todo: add async build & build
449
449
method : ( val , context , above , engine ) => {
450
450
return ! defaultMethods . some . method ( val , context , above , engine )
@@ -580,7 +580,7 @@ const defaultMethods = {
580
580
defaultValue
581
581
)
582
582
} ,
583
- traverse : false
583
+ lazy : true
584
584
} ,
585
585
'!' : ( value , _1 , _2 , engine ) => Array . isArray ( value ) ? ! engine . truthy ( value [ 0 ] ) : ! engine . truthy ( value ) ,
586
586
'!!' : ( value , _1 , _2 , engine ) => Boolean ( Array . isArray ( value ) ? engine . truthy ( value [ 0 ] ) : engine . truthy ( value ) ) ,
@@ -598,7 +598,6 @@ const defaultMethods = {
598
598
return res
599
599
} ,
600
600
deterministic : true ,
601
- traverse : true ,
602
601
optimizeUnary : true ,
603
602
compile : ( data , buildState ) => {
604
603
if ( typeof data === 'string' ) return JSON . stringify ( data )
@@ -611,7 +610,7 @@ const defaultMethods = {
611
610
} ,
612
611
keys : ( [ obj ] ) => typeof obj === 'object' ? Object . keys ( obj ) : [ ] ,
613
612
pipe : {
614
- traverse : false ,
613
+ lazy : true ,
615
614
[ Sync ] : ( data , buildState ) => isSyncDeep ( data , buildState . engine , buildState ) ,
616
615
method : ( args , context , above , engine ) => {
617
616
if ( ! Array . isArray ( args ) ) throw new Error ( 'Data for pipe must be an array' )
@@ -638,7 +637,7 @@ const defaultMethods = {
638
637
}
639
638
} ,
640
639
eachKey : {
641
- traverse : false ,
640
+ lazy : true ,
642
641
[ Sync ] : ( data , buildState ) => isSyncDeep ( Object . values ( data [ Object . keys ( data ) [ 0 ] ] ) , buildState . engine , buildState ) ,
643
642
method : ( object , context , above , engine ) => {
644
643
const result = Object . keys ( object ) . reduce ( ( accumulator , key ) => {
@@ -744,7 +743,7 @@ function defineCoalesce (func) {
744
743
}
745
744
return `(${ buildString ( data , buildState ) } ).reduce((a,b) => ${ funcCall } (a) ?? b, null)`
746
745
} ,
747
- traverse : false
746
+ lazy : true
748
747
}
749
748
}
750
749
@@ -814,7 +813,7 @@ function createArrayIterativeMethod (name, useTruthy = false) {
814
813
815
814
return buildState . compile `(${ selector } || [])[${ name } ]((i, x, z) => ${ useTruthyMethod } (${ method } (i, x, ${ aboveArray } )))`
816
815
} ,
817
- traverse : false
816
+ lazy : true
818
817
}
819
818
}
820
819
defaultMethods [ '?:' ] = defaultMethods . if
0 commit comments