| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = loadPrivatePartialConfig; |
| exports.loadPartialConfig = loadPartialConfig; |
| |
| function _path() { |
| const data = _interopRequireDefault(require("path")); |
| |
| _path = function () { |
| return data; |
| }; |
| |
| return data; |
| } |
| |
| var _plugin = _interopRequireDefault(require("./plugin")); |
| |
| var _util = require("./util"); |
| |
| var _item = require("./item"); |
| |
| var _configChain = require("./config-chain"); |
| |
| var _environment = require("./helpers/environment"); |
| |
| var _options = require("./validation/options"); |
| |
| var _files = require("./files"); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| function resolveRootMode(rootDir, rootMode) { |
| switch (rootMode) { |
| case "root": |
| return rootDir; |
| |
| case "upward-optional": |
| { |
| const upwardRootDir = (0, _files.findConfigUpwards)(rootDir); |
| return upwardRootDir === null ? rootDir : upwardRootDir; |
| } |
| |
| case "upward": |
| { |
| const upwardRootDir = (0, _files.findConfigUpwards)(rootDir); |
| if (upwardRootDir !== null) return upwardRootDir; |
| throw Object.assign(new Error(`Babel was run with rootMode:"upward" but a root could not ` + `be found when searching upward from "${rootDir}"`), { |
| code: "BABEL_ROOT_NOT_FOUND", |
| dirname: rootDir |
| }); |
| } |
| |
| default: |
| throw new Error(`Assertion failure - unknown rootMode value`); |
| } |
| } |
| |
| function loadPrivatePartialConfig(inputOpts) { |
| if (inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts))) { |
| throw new Error("Babel options must be an object, null, or undefined"); |
| } |
| |
| const args = inputOpts ? (0, _options.validate)("arguments", inputOpts) : {}; |
| const { |
| envName = (0, _environment.getEnv)(), |
| cwd = ".", |
| root: rootDir = ".", |
| rootMode = "root", |
| caller |
| } = args; |
| |
| const absoluteCwd = _path().default.resolve(cwd); |
| |
| const absoluteRootDir = resolveRootMode(_path().default.resolve(absoluteCwd, rootDir), rootMode); |
| const context = { |
| filename: typeof args.filename === "string" ? _path().default.resolve(cwd, args.filename) : undefined, |
| cwd: absoluteCwd, |
| root: absoluteRootDir, |
| envName, |
| caller |
| }; |
| const configChain = (0, _configChain.buildRootChain)(args, context); |
| if (!configChain) return null; |
| const options = {}; |
| configChain.options.forEach(opts => { |
| (0, _util.mergeOptions)(options, opts); |
| }); |
| options.babelrc = false; |
| options.configFile = false; |
| options.passPerPreset = false; |
| options.envName = context.envName; |
| options.cwd = context.cwd; |
| options.root = context.root; |
| options.filename = typeof context.filename === "string" ? context.filename : undefined; |
| options.plugins = configChain.plugins.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); |
| options.presets = configChain.presets.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)); |
| return { |
| options, |
| context, |
| ignore: configChain.ignore, |
| babelrc: configChain.babelrc, |
| config: configChain.config |
| }; |
| } |
| |
| function loadPartialConfig(inputOpts) { |
| const result = loadPrivatePartialConfig(inputOpts); |
| if (!result) return null; |
| const { |
| options, |
| babelrc, |
| ignore, |
| config |
| } = result; |
| (options.plugins || []).forEach(item => { |
| if (item.value instanceof _plugin.default) { |
| throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()"); |
| } |
| }); |
| return new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined); |
| } |
| |
| class PartialConfig { |
| constructor(options, babelrc, ignore, config) { |
| this.options = options; |
| this.babelignore = ignore; |
| this.babelrc = babelrc; |
| this.config = config; |
| Object.freeze(this); |
| } |
| |
| hasFilesystemConfig() { |
| return this.babelrc !== undefined || this.config !== undefined; |
| } |
| |
| } |
| |
| Object.freeze(PartialConfig.prototype); |