"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 }; }