11'use strict' ;
22const { compare, filterOutStabilizedProposals, intersection } = require ( './helpers' ) ;
33const data = require ( './data' ) ;
4+ const externalData = require ( './external' ) ;
45const entries = require ( './entries' ) ;
56const getModulesListForTargetVersion = require ( './get-modules-list-for-target-version' ) ;
67const allModules = require ( './modules' ) ;
@@ -32,15 +33,15 @@ function normalizeModules(option) {
3233 return new Set ( Array . isArray ( option ) ? option . flatMap ( getModules ) : getModules ( option ) ) ;
3334}
3435
35- function checkModule ( name , targets ) {
36+ function checkModule ( name , targets , external ) {
3637 const result = {
3738 required : ! targets ,
3839 targets : { } ,
3940 } ;
4041
4142 if ( ! targets ) return result ;
4243
43- const requirements = data [ name ] ;
44+ const requirements = ( external ? externalData : data ) [ name ] ;
4445
4546 for ( const [ engine , version ] of targets ) {
4647 if ( ! hasOwn ( requirements , engine ) || compare ( version , '<' , requirements [ engine ] ) ) {
@@ -58,28 +59,31 @@ module.exports = function ({
5859 targets = null ,
5960 version = null ,
6061 inverse = false ,
62+ __external = false ,
6163} = { } ) {
62- inverse = ! ! inverse ;
63-
6464 const parsedTargets = targets ? targetsParser ( targets ) : null ;
6565
6666 const result = {
6767 list : [ ] ,
6868 targets : { } ,
6969 } ;
7070
71- exclude = normalizeModules ( exclude ) ;
71+ if ( ! __external ) {
72+ inverse = ! ! inverse ;
73+
74+ exclude = normalizeModules ( exclude ) ;
7275
73- modules = modules ? [ ...normalizeModules ( modules ) ] : actual ;
76+ modules = modules ? [ ...normalizeModules ( modules ) ] : actual ;
7477
75- if ( exclude . size ) modules = modules . filter ( it => ! exclude . has ( it ) ) ;
78+ if ( exclude . size ) modules = modules . filter ( it => ! exclude . has ( it ) ) ;
7679
77- modules = intersection ( modules , version ? getModulesListForTargetVersion ( version ) : allModules ) ;
80+ modules = intersection ( modules , version ? getModulesListForTargetVersion ( version ) : allModules ) ;
7881
79- if ( ! inverse ) modules = filterOutStabilizedProposals ( modules ) ;
82+ if ( ! inverse ) modules = filterOutStabilizedProposals ( modules ) ;
83+ }
8084
8185 for ( const key of modules ) {
82- const check = checkModule ( key , parsedTargets ) ;
86+ const check = checkModule ( key , parsedTargets , __external ) ;
8387
8488 if ( check . required ^ inverse ) {
8589 result . list . push ( key ) ;
0 commit comments