| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469 | 
							- "use strict";
 
- Object.defineProperty(exports, "__esModule", {
 
-   value: true
 
- });
 
- exports.buildPresetChain = buildPresetChain;
 
- exports.buildPresetChainWalker = void 0;
 
- exports.buildRootChain = buildRootChain;
 
- function _path() {
 
-   const data = require("path");
 
-   _path = function () {
 
-     return data;
 
-   };
 
-   return data;
 
- }
 
- function _debug() {
 
-   const data = require("debug");
 
-   _debug = function () {
 
-     return data;
 
-   };
 
-   return data;
 
- }
 
- var _options = require("./validation/options.js");
 
- var _patternToRegex = require("./pattern-to-regex.js");
 
- var _printer = require("./printer.js");
 
- var _rewriteStackTrace = require("../errors/rewrite-stack-trace.js");
 
- var _configError = require("../errors/config-error.js");
 
- var _index = require("./files/index.js");
 
- var _caching = require("./caching.js");
 
- var _configDescriptors = require("./config-descriptors.js");
 
- const debug = _debug()("babel:config:config-chain");
 
- function* buildPresetChain(arg, context) {
 
-   const chain = yield* buildPresetChainWalker(arg, context);
 
-   if (!chain) return null;
 
-   return {
 
-     plugins: dedupDescriptors(chain.plugins),
 
-     presets: dedupDescriptors(chain.presets),
 
-     options: chain.options.map(o => normalizeOptions(o)),
 
-     files: new Set()
 
-   };
 
- }
 
- const buildPresetChainWalker = exports.buildPresetChainWalker = makeChainWalker({
 
-   root: preset => loadPresetDescriptors(preset),
 
-   env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),
 
-   overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),
 
-   overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName),
 
-   createLogger: () => () => {}
 
- });
 
- const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors));
 
- const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName)));
 
- const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index)));
 
- const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName))));
 
- function* buildRootChain(opts, context) {
 
-   let configReport, babelRcReport;
 
-   const programmaticLogger = new _printer.ConfigPrinter();
 
-   const programmaticChain = yield* loadProgrammaticChain({
 
-     options: opts,
 
-     dirname: context.cwd
 
-   }, context, undefined, programmaticLogger);
 
-   if (!programmaticChain) return null;
 
-   const programmaticReport = yield* programmaticLogger.output();
 
-   let configFile;
 
-   if (typeof opts.configFile === "string") {
 
-     configFile = yield* (0, _index.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller);
 
-   } else if (opts.configFile !== false) {
 
-     configFile = yield* (0, _index.findRootConfig)(context.root, context.envName, context.caller);
 
-   }
 
-   let {
 
-     babelrc,
 
-     babelrcRoots
 
-   } = opts;
 
-   let babelrcRootsDirectory = context.cwd;
 
-   const configFileChain = emptyChain();
 
-   const configFileLogger = new _printer.ConfigPrinter();
 
-   if (configFile) {
 
-     const validatedFile = validateConfigFile(configFile);
 
-     const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger);
 
-     if (!result) return null;
 
-     configReport = yield* configFileLogger.output();
 
-     if (babelrc === undefined) {
 
-       babelrc = validatedFile.options.babelrc;
 
-     }
 
-     if (babelrcRoots === undefined) {
 
-       babelrcRootsDirectory = validatedFile.dirname;
 
-       babelrcRoots = validatedFile.options.babelrcRoots;
 
-     }
 
-     mergeChain(configFileChain, result);
 
-   }
 
-   let ignoreFile, babelrcFile;
 
-   let isIgnored = false;
 
-   const fileChain = emptyChain();
 
-   if ((babelrc === true || babelrc === undefined) && typeof context.filename === "string") {
 
-     const pkgData = yield* (0, _index.findPackageData)(context.filename);
 
-     if (pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) {
 
-       ({
 
-         ignore: ignoreFile,
 
-         config: babelrcFile
 
-       } = yield* (0, _index.findRelativeConfig)(pkgData, context.envName, context.caller));
 
-       if (ignoreFile) {
 
-         fileChain.files.add(ignoreFile.filepath);
 
-       }
 
-       if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
 
-         isIgnored = true;
 
-       }
 
-       if (babelrcFile && !isIgnored) {
 
-         const validatedFile = validateBabelrcFile(babelrcFile);
 
-         const babelrcLogger = new _printer.ConfigPrinter();
 
-         const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger);
 
-         if (!result) {
 
-           isIgnored = true;
 
-         } else {
 
-           babelRcReport = yield* babelrcLogger.output();
 
-           mergeChain(fileChain, result);
 
-         }
 
-       }
 
-       if (babelrcFile && isIgnored) {
 
-         fileChain.files.add(babelrcFile.filepath);
 
-       }
 
-     }
 
-   }
 
-   if (context.showConfig) {
 
-     console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n") + "\n-----End Babel configs-----");
 
-   }
 
-   const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
 
-   return {
 
-     plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
 
-     presets: isIgnored ? [] : dedupDescriptors(chain.presets),
 
-     options: isIgnored ? [] : chain.options.map(o => normalizeOptions(o)),
 
-     fileHandling: isIgnored ? "ignored" : "transpile",
 
-     ignore: ignoreFile || undefined,
 
-     babelrc: babelrcFile || undefined,
 
-     config: configFile || undefined,
 
-     files: chain.files
 
-   };
 
- }
 
- function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
 
-   if (typeof babelrcRoots === "boolean") return babelrcRoots;
 
-   const absoluteRoot = context.root;
 
-   if (babelrcRoots === undefined) {
 
-     return pkgData.directories.includes(absoluteRoot);
 
-   }
 
-   let babelrcPatterns = babelrcRoots;
 
-   if (!Array.isArray(babelrcPatterns)) {
 
-     babelrcPatterns = [babelrcPatterns];
 
-   }
 
-   babelrcPatterns = babelrcPatterns.map(pat => {
 
-     return typeof pat === "string" ? _path().resolve(babelrcRootsDirectory, pat) : pat;
 
-   });
 
-   if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
 
-     return pkgData.directories.includes(absoluteRoot);
 
-   }
 
-   return babelrcPatterns.some(pat => {
 
-     if (typeof pat === "string") {
 
-       pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory);
 
-     }
 
-     return pkgData.directories.some(directory => {
 
-       return matchPattern(pat, babelrcRootsDirectory, directory, context);
 
-     });
 
-   });
 
- }
 
- const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({
 
-   filepath: file.filepath,
 
-   dirname: file.dirname,
 
-   options: (0, _options.validate)("configfile", file.options, file.filepath)
 
- }));
 
- const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({
 
-   filepath: file.filepath,
 
-   dirname: file.dirname,
 
-   options: (0, _options.validate)("babelrcfile", file.options, file.filepath)
 
- }));
 
- const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({
 
-   filepath: file.filepath,
 
-   dirname: file.dirname,
 
-   options: (0, _options.validate)("extendsfile", file.options, file.filepath)
 
- }));
 
- const loadProgrammaticChain = makeChainWalker({
 
-   root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors),
 
-   env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName),
 
-   overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index),
 
-   overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName),
 
-   createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger)
 
- });
 
- const loadFileChainWalker = makeChainWalker({
 
-   root: file => loadFileDescriptors(file),
 
-   env: (file, envName) => loadFileEnvDescriptors(file)(envName),
 
-   overrides: (file, index) => loadFileOverridesDescriptors(file)(index),
 
-   overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName),
 
-   createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger)
 
- });
 
- function* loadFileChain(input, context, files, baseLogger) {
 
-   const chain = yield* loadFileChainWalker(input, context, files, baseLogger);
 
-   chain == null || chain.files.add(input.filepath);
 
-   return chain;
 
- }
 
- const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors));
 
- const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName)));
 
- const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index)));
 
- const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName))));
 
- function buildFileLogger(filepath, context, baseLogger) {
 
-   if (!baseLogger) {
 
-     return () => {};
 
-   }
 
-   return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, {
 
-     filepath
 
-   });
 
- }
 
- function buildRootDescriptors({
 
-   dirname,
 
-   options
 
- }, alias, descriptors) {
 
-   return descriptors(dirname, options, alias);
 
- }
 
- function buildProgrammaticLogger(_, context, baseLogger) {
 
-   var _context$caller;
 
-   if (!baseLogger) {
 
-     return () => {};
 
-   }
 
-   return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, {
 
-     callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
 
-   });
 
- }
 
- function buildEnvDescriptors({
 
-   dirname,
 
-   options
 
- }, alias, descriptors, envName) {
 
-   var _options$env;
 
-   const opts = (_options$env = options.env) == null ? void 0 : _options$env[envName];
 
-   return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null;
 
- }
 
- function buildOverrideDescriptors({
 
-   dirname,
 
-   options
 
- }, alias, descriptors, index) {
 
-   var _options$overrides;
 
-   const opts = (_options$overrides = options.overrides) == null ? void 0 : _options$overrides[index];
 
-   if (!opts) throw new Error("Assertion failure - missing override");
 
-   return descriptors(dirname, opts, `${alias}.overrides[${index}]`);
 
- }
 
- function buildOverrideEnvDescriptors({
 
-   dirname,
 
-   options
 
- }, alias, descriptors, index, envName) {
 
-   var _options$overrides2, _override$env;
 
-   const override = (_options$overrides2 = options.overrides) == null ? void 0 : _options$overrides2[index];
 
-   if (!override) throw new Error("Assertion failure - missing override");
 
-   const opts = (_override$env = override.env) == null ? void 0 : _override$env[envName];
 
-   return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null;
 
- }
 
- function makeChainWalker({
 
-   root,
 
-   env,
 
-   overrides,
 
-   overridesEnv,
 
-   createLogger
 
- }) {
 
-   return function* chainWalker(input, context, files = new Set(), baseLogger) {
 
-     const {
 
-       dirname
 
-     } = input;
 
-     const flattenedConfigs = [];
 
-     const rootOpts = root(input);
 
-     if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {
 
-       flattenedConfigs.push({
 
-         config: rootOpts,
 
-         envName: undefined,
 
-         index: undefined
 
-       });
 
-       const envOpts = env(input, context.envName);
 
-       if (envOpts && configIsApplicable(envOpts, dirname, context, input.filepath)) {
 
-         flattenedConfigs.push({
 
-           config: envOpts,
 
-           envName: context.envName,
 
-           index: undefined
 
-         });
 
-       }
 
-       (rootOpts.options.overrides || []).forEach((_, index) => {
 
-         const overrideOps = overrides(input, index);
 
-         if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {
 
-           flattenedConfigs.push({
 
-             config: overrideOps,
 
-             index,
 
-             envName: undefined
 
-           });
 
-           const overrideEnvOpts = overridesEnv(input, index, context.envName);
 
-           if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context, input.filepath)) {
 
-             flattenedConfigs.push({
 
-               config: overrideEnvOpts,
 
-               index,
 
-               envName: context.envName
 
-             });
 
-           }
 
-         }
 
-       });
 
-     }
 
-     if (flattenedConfigs.some(({
 
-       config: {
 
-         options: {
 
-           ignore,
 
-           only
 
-         }
 
-       }
 
-     }) => shouldIgnore(context, ignore, only, dirname))) {
 
-       return null;
 
-     }
 
-     const chain = emptyChain();
 
-     const logger = createLogger(input, context, baseLogger);
 
-     for (const {
 
-       config,
 
-       index,
 
-       envName
 
-     } of flattenedConfigs) {
 
-       if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) {
 
-         return null;
 
-       }
 
-       logger(config, index, envName);
 
-       yield* mergeChainOpts(chain, config);
 
-     }
 
-     return chain;
 
-   };
 
- }
 
- function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
 
-   if (opts.extends === undefined) return true;
 
-   const file = yield* (0, _index.loadConfig)(opts.extends, dirname, context.envName, context.caller);
 
-   if (files.has(file)) {
 
-     throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n"));
 
-   }
 
-   files.add(file);
 
-   const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger);
 
-   files.delete(file);
 
-   if (!fileChain) return false;
 
-   mergeChain(chain, fileChain);
 
-   return true;
 
- }
 
- function mergeChain(target, source) {
 
-   target.options.push(...source.options);
 
-   target.plugins.push(...source.plugins);
 
-   target.presets.push(...source.presets);
 
-   for (const file of source.files) {
 
-     target.files.add(file);
 
-   }
 
-   return target;
 
- }
 
- function* mergeChainOpts(target, {
 
-   options,
 
-   plugins,
 
-   presets
 
- }) {
 
-   target.options.push(options);
 
-   target.plugins.push(...(yield* plugins()));
 
-   target.presets.push(...(yield* presets()));
 
-   return target;
 
- }
 
- function emptyChain() {
 
-   return {
 
-     options: [],
 
-     presets: [],
 
-     plugins: [],
 
-     files: new Set()
 
-   };
 
- }
 
- function normalizeOptions(opts) {
 
-   const options = Object.assign({}, opts);
 
-   delete options.extends;
 
-   delete options.env;
 
-   delete options.overrides;
 
-   delete options.plugins;
 
-   delete options.presets;
 
-   delete options.passPerPreset;
 
-   delete options.ignore;
 
-   delete options.only;
 
-   delete options.test;
 
-   delete options.include;
 
-   delete options.exclude;
 
-   if (hasOwnProperty.call(options, "sourceMap")) {
 
-     options.sourceMaps = options.sourceMap;
 
-     delete options.sourceMap;
 
-   }
 
-   return options;
 
- }
 
- function dedupDescriptors(items) {
 
-   const map = new Map();
 
-   const descriptors = [];
 
-   for (const item of items) {
 
-     if (typeof item.value === "function") {
 
-       const fnKey = item.value;
 
-       let nameMap = map.get(fnKey);
 
-       if (!nameMap) {
 
-         nameMap = new Map();
 
-         map.set(fnKey, nameMap);
 
-       }
 
-       let desc = nameMap.get(item.name);
 
-       if (!desc) {
 
-         desc = {
 
-           value: item
 
-         };
 
-         descriptors.push(desc);
 
-         if (!item.ownPass) nameMap.set(item.name, desc);
 
-       } else {
 
-         desc.value = item;
 
-       }
 
-     } else {
 
-       descriptors.push({
 
-         value: item
 
-       });
 
-     }
 
-   }
 
-   return descriptors.reduce((acc, desc) => {
 
-     acc.push(desc.value);
 
-     return acc;
 
-   }, []);
 
- }
 
- function configIsApplicable({
 
-   options
 
- }, dirname, context, configName) {
 
-   return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname, configName)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname, configName)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname, configName));
 
- }
 
- function configFieldIsApplicable(context, test, dirname, configName) {
 
-   const patterns = Array.isArray(test) ? test : [test];
 
-   return matchesPatterns(context, patterns, dirname, configName);
 
- }
 
- function ignoreListReplacer(_key, value) {
 
-   if (value instanceof RegExp) {
 
-     return String(value);
 
-   }
 
-   return value;
 
- }
 
- function shouldIgnore(context, ignore, only, dirname) {
 
-   if (ignore && matchesPatterns(context, ignore, dirname)) {
 
-     var _context$filename;
 
-     const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore, ignoreListReplacer)}\` from "${dirname}"`;
 
-     debug(message);
 
-     if (context.showConfig) {
 
-       console.log(message);
 
-     }
 
-     return true;
 
-   }
 
-   if (only && !matchesPatterns(context, only, dirname)) {
 
-     var _context$filename2;
 
-     const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only, ignoreListReplacer)}\` from "${dirname}"`;
 
-     debug(message);
 
-     if (context.showConfig) {
 
-       console.log(message);
 
-     }
 
-     return true;
 
-   }
 
-   return false;
 
- }
 
- function matchesPatterns(context, patterns, dirname, configName) {
 
-   return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context, configName));
 
- }
 
- function matchPattern(pattern, dirname, pathToTest, context, configName) {
 
-   if (typeof pattern === "function") {
 
-     return !!(0, _rewriteStackTrace.endHiddenCallStack)(pattern)(pathToTest, {
 
-       dirname,
 
-       envName: context.envName,
 
-       caller: context.caller
 
-     });
 
-   }
 
-   if (typeof pathToTest !== "string") {
 
-     throw new _configError.default(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`, configName);
 
-   }
 
-   if (typeof pattern === "string") {
 
-     pattern = (0, _patternToRegex.default)(pattern, dirname);
 
-   }
 
-   return pattern.test(pathToTest);
 
- }
 
- 0 && 0;
 
- //# sourceMappingURL=config-chain.js.map
 
 
  |