141 lines
4.0 KiB
JavaScript
141 lines
4.0 KiB
JavaScript
|
"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);
|