UNPKG

babel-preset-env

Version:

A Babel preset for each environment.

136 lines (104 loc) 5.42 kB
"use strict"; exports.__esModule = true; exports.validateUseBuiltInsOption = exports.validateModulesOption = exports.validateForceAllTransformsOption = exports.validateSpecOption = exports.validateLooseOption = exports.validateBoolOption = exports.checkDuplicateIncludeExcludes = exports.normalizePluginNames = exports.normalizePluginName = exports.validateIncludesAndExcludes = undefined; exports.default = normalizeOptions; var _invariant = require("invariant"); var _invariant2 = _interopRequireDefault(_invariant); var _builtIns = require("../data/built-ins.json"); var _builtIns2 = _interopRequireDefault(_builtIns); var _defaultIncludes = require("./default-includes"); var _moduleTransformations = require("./module-transformations"); var _moduleTransformations2 = _interopRequireDefault(_moduleTransformations); var _pluginFeatures = require("../data/plugin-features"); var _pluginFeatures2 = _interopRequireDefault(_pluginFeatures); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var validIncludesAndExcludes = new Set([].concat(Object.keys(_pluginFeatures2.default), Object.keys(_moduleTransformations2.default).map(function (m) { return _moduleTransformations2.default[m]; }), Object.keys(_builtIns2.default), _defaultIncludes.defaultWebIncludes)); var validateIncludesAndExcludes = exports.validateIncludesAndExcludes = function validateIncludesAndExcludes(opts, type) { if (opts === void 0) { opts = []; } (0, _invariant2.default)(Array.isArray(opts), `Invalid Option: The '${type}' option must be an Array<String> of plugins/built-ins`); var unknownOpts = opts.filter(function (opt) { return !validIncludesAndExcludes.has(opt); }); (0, _invariant2.default)(unknownOpts.length === 0, `Invalid Option: The plugins/built-ins '${unknownOpts.join(", ")}' passed to the '${type}' option are not valid. Please check data/[plugin-features|built-in-features].js in babel-preset-env`); return opts; }; var normalizePluginName = exports.normalizePluginName = function normalizePluginName(plugin) { return plugin.replace(/^babel-plugin-/, ""); }; var normalizePluginNames = exports.normalizePluginNames = function normalizePluginNames(plugins) { return plugins.map(normalizePluginName); }; var checkDuplicateIncludeExcludes = exports.checkDuplicateIncludeExcludes = function checkDuplicateIncludeExcludes(include, exclude) { if (include === void 0) { include = []; } if (exclude === void 0) { exclude = []; } var duplicates = include.filter(function (opt) { return exclude.indexOf(opt) >= 0; }); (0, _invariant2.default)(duplicates.length === 0, `Invalid Option: The plugins/built-ins '${duplicates.join(", ")}' were found in both the "include" and "exclude" options.`); }; var validateBoolOption = exports.validateBoolOption = function validateBoolOption(name, value, defaultValue) { if (typeof value === "undefined") { value = defaultValue; } if (typeof value !== "boolean") { throw new Error(`Preset env: '${name}' option must be a boolean.`); } return value; }; var validateLooseOption = exports.validateLooseOption = function validateLooseOption(looseOpt) { return validateBoolOption("loose", looseOpt, false); }; var validateSpecOption = exports.validateSpecOption = function validateSpecOption(specOpt) { return validateBoolOption("spec", specOpt, false); }; var validateForceAllTransformsOption = exports.validateForceAllTransformsOption = function validateForceAllTransformsOption(forceAllTransforms) { return validateBoolOption("forceAllTransforms", forceAllTransforms, false); }; var validateModulesOption = exports.validateModulesOption = function validateModulesOption(modulesOpt) { if (modulesOpt === void 0) { modulesOpt = "commonjs"; } (0, _invariant2.default)(modulesOpt === false || Object.keys(_moduleTransformations2.default).indexOf(modulesOpt) > -1, `Invalid Option: The 'modules' option must be either 'false' to indicate no modules, or a module type which can be be one of: 'commonjs' (default), 'amd', 'umd', 'systemjs'.`); return modulesOpt; }; var validateUseBuiltInsOption = exports.validateUseBuiltInsOption = function validateUseBuiltInsOption(builtInsOpt) { if (builtInsOpt === void 0) { builtInsOpt = false; } (0, _invariant2.default)(builtInsOpt === "usage" || builtInsOpt === false || builtInsOpt === "entry", `Invalid Option: The 'useBuiltIns' option must be either 'false' (default) to indicate no polyfill, '"entry"' to indicate replacing the entry polyfill, or '"usage"' to import only used polyfills per file`); return builtInsOpt; }; function normalizeOptions(opts) { if (opts.exclude) { opts.exclude = normalizePluginNames(opts.exclude); } if (opts.include) { opts.include = normalizePluginNames(opts.include); } checkDuplicateIncludeExcludes(opts.include, opts.exclude); return { debug: opts.debug, exclude: validateIncludesAndExcludes(opts.exclude, "exclude"), forceAllTransforms: validateForceAllTransformsOption(opts.forceAllTransforms), include: validateIncludesAndExcludes(opts.include, "include"), loose: validateLooseOption(opts.loose), modules: validateModulesOption(opts.modules), spec: validateSpecOption(opts.spec), targets: opts.targets, useBuiltIns: validateUseBuiltInsOption(opts.useBuiltIns) }; }