@@ -377,36 +377,39 @@ module.exports = {
377
377
}
378
378
] ;
379
379
380
- // Filter options based on criteria
381
- if ( _ . isObject ( criteria ) ) {
382
- const externalDefault = typeof criteria . external === 'boolean' ? criteria . external : true ,
383
- usageDefault = [ 'CONVERSION' ] ;
380
+ optsArray = _ . filter ( optsArray , ( option ) => {
381
+ if ( option . disabled ) { return false ; }
384
382
385
- typeof criteria . external === 'boolean' && ( optsArray = _ . filter ( optsArray , { external : externalDefault } ) ) ;
386
- ( ! _ . isArray ( criteria . usage ) || _ . isEmpty ( criteria . usage ) ) && ( criteria . usage = usageDefault ) ;
383
+ if ( _ . isObject ( criteria ) ) {
384
+ const externalDefault = typeof criteria . external === 'boolean' ? criteria . external : true ,
385
+ usageDefault = [ 'CONVERSION' ] ;
387
386
388
- if ( _ . isArray ( criteria . usage ) ) {
389
- let tempOptsArray = [ ] ;
387
+ ( ! _ . isArray ( criteria . usage ) || _ . isEmpty ( criteria . usage ) ) && ( criteria . usage = usageDefault ) ;
390
388
391
- _ . forEach ( criteria . usage , ( usageCriteria ) => {
392
- tempOptsArray = _ . concat ( tempOptsArray , _ . filter ( optsArray , ( option ) => {
393
- return _ . includes ( option . usage , usageCriteria ) ;
394
- } ) ) ;
395
- } ) ;
396
- optsArray = tempOptsArray ;
397
- }
389
+ if ( option . external !== externalDefault ) {
390
+ return false ;
391
+ }
398
392
399
- if ( _ . has ( criteria , 'moduleVersion' ) ) {
400
- optsArray = _ . filter ( optsArray , ( option ) => {
401
- return _ . includes ( option . supportedModuleVersion , criteria . moduleVersion ) ;
402
- } ) ;
403
- }
404
- else {
405
- optsArray = _ . filter ( optsArray , ( option ) => {
406
- return _ . includes ( option . supportedModuleVersion , MODULE_VERSION . V1 ) ;
407
- } ) ;
393
+ if ( _ . isArray ( criteria . usage ) ) {
394
+ /**
395
+ * We return return a option if any of the criteria.usage value matches with what is
396
+ * available in option.usage
397
+ */
398
+ if ( _ . difference ( criteria . usage , option . usage ) . length === criteria . usage . length ) {
399
+ return false ;
400
+ }
401
+ }
402
+
403
+ // Setting default value
404
+ criteria . moduleVersion = _ . has ( criteria , 'moduleVersion' ) ? criteria . moduleVersion : MODULE_VERSION . V1 ;
405
+
406
+ if ( ! _ . includes ( option . supportedModuleVersion , criteria . moduleVersion ) ) {
407
+ return false ;
408
+ }
408
409
}
409
- }
410
+
411
+ return true ;
412
+ } ) ;
410
413
411
414
if ( mode === 'use' ) {
412
415
// options to be used as default kv-pairs
@@ -425,10 +428,6 @@ module.exports = {
425
428
return defOptions ;
426
429
}
427
430
428
- // options to be used as documentation
429
- return _ . filter ( optsArray , ( opt ) => {
430
- // only return options that are not disabled
431
- return opt . disabled !== true ;
432
- } ) ;
431
+ return optsArray ;
433
432
}
434
433
} ;
0 commit comments