2023-10-03 11:14:36 +08:00
"use strict" ;
exports . _ _esModule = true ;
exports . applyMissingDependenciesDefaults = applyMissingDependenciesDefaults ;
exports . validateIncludeExclude = validateIncludeExclude ;
var _utils = require ( "./utils" ) ;
function patternToRegExp ( pattern ) {
if ( pattern instanceof RegExp ) return pattern ;
try {
return new RegExp ( ` ^ ${ pattern } $ ` ) ;
} catch ( _unused ) {
return null ;
}
}
function buildUnusedError ( label , unused ) {
if ( ! unused . length ) return "" ;
return ` - The following " ${ label } " patterns didn't match any polyfill: \n ` + unused . map ( original => ` ${ String ( original ) } \n ` ) . join ( "" ) ;
}
function buldDuplicatesError ( duplicates ) {
if ( ! duplicates . size ) return "" ;
return ` - The following polyfills were matched both by "include" and "exclude" patterns: \n ` + Array . from ( duplicates , name => ` ${ name } \n ` ) . join ( "" ) ;
}
function validateIncludeExclude ( provider , polyfills , includePatterns , excludePatterns ) {
let current ;
const filter = pattern => {
const regexp = patternToRegExp ( pattern ) ;
if ( ! regexp ) return false ;
let matched = false ;
for ( const polyfill of polyfills ) {
if ( regexp . test ( polyfill ) ) {
matched = true ;
current . add ( polyfill ) ;
}
}
return ! matched ;
} ; // prettier-ignore
const include = current = new Set ( ) ;
const unusedInclude = Array . from ( includePatterns ) . filter ( filter ) ; // prettier-ignore
const exclude = current = new Set ( ) ;
const unusedExclude = Array . from ( excludePatterns ) . filter ( filter ) ;
const duplicates = ( 0 , _utils . intersection ) ( include , exclude ) ;
if ( duplicates . size > 0 || unusedInclude . length > 0 || unusedExclude . length > 0 ) {
throw new Error ( ` Error while validating the " ${ provider } " provider options: \n ` + buildUnusedError ( "include" , unusedInclude ) + buildUnusedError ( "exclude" , unusedExclude ) + buldDuplicatesError ( duplicates ) ) ;
}
return {
include ,
exclude
} ;
}
function applyMissingDependenciesDefaults ( options , babelApi ) {
const {
missingDependencies = { }
} = options ;
if ( missingDependencies === false ) return false ;
const caller = babelApi . caller ( caller => caller == null ? void 0 : caller . name ) ;
const {
log = "deferred" ,
inject = caller === "rollup-plugin-babel" ? "throw" : "import" ,
all = false
} = missingDependencies ;
return {
log ,
inject ,
all
} ;
2023-09-25 15:58:56 +08:00
}