You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							81 lines
						
					
					
						
							2.3 KiB
						
					
					
				
			
		
		
	
	
							81 lines
						
					
					
						
							2.3 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
exports.__esModule = true; | 
						|
exports.validateIncludeExclude = validateIncludeExclude; | 
						|
exports.applyMissingDependenciesDefaults = applyMissingDependenciesDefaults; | 
						|
 | 
						|
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 | 
						|
  }; | 
						|
} |