aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@babel/core/lib/config/files
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/@babel/core/lib/config/files
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/@babel/core/lib/config/files')
-rw-r--r--node_modules/@babel/core/lib/config/files/configuration.js306
-rw-r--r--node_modules/@babel/core/lib/config/files/index-browser.js54
-rw-r--r--node_modules/@babel/core/lib/config/files/index.js61
-rw-r--r--node_modules/@babel/core/lib/config/files/package.js76
-rw-r--r--node_modules/@babel/core/lib/config/files/plugins.js168
-rw-r--r--node_modules/@babel/core/lib/config/files/types.js1
-rw-r--r--node_modules/@babel/core/lib/config/files/utils.js41
7 files changed, 707 insertions, 0 deletions
diff --git a/node_modules/@babel/core/lib/config/files/configuration.js b/node_modules/@babel/core/lib/config/files/configuration.js
new file mode 100644
index 00000000..e0667159
--- /dev/null
+++ b/node_modules/@babel/core/lib/config/files/configuration.js
@@ -0,0 +1,306 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.findRelativeConfig = findRelativeConfig;
+exports.findRootConfig = findRootConfig;
+exports.loadConfig = loadConfig;
+
+function _debug() {
+ const data = _interopRequireDefault(require("debug"));
+
+ _debug = function _debug() {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = _interopRequireDefault(require("path"));
+
+ _path = function _path() {
+ return data;
+ };
+
+ return data;
+}
+
+function _fs() {
+ const data = _interopRequireDefault(require("fs"));
+
+ _fs = function _fs() {
+ return data;
+ };
+
+ return data;
+}
+
+function _json() {
+ const data = _interopRequireDefault(require("json5"));
+
+ _json = function _json() {
+ return data;
+ };
+
+ return data;
+}
+
+function _resolve() {
+ const data = _interopRequireDefault(require("resolve"));
+
+ _resolve = function _resolve() {
+ return data;
+ };
+
+ return data;
+}
+
+var _caching = require("../caching");
+
+var _configApi = _interopRequireDefault(require("../helpers/config-api"));
+
+var _utils = require("./utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const debug = (0, _debug().default)("babel:config:loading:files:configuration");
+const BABEL_CONFIG_JS_FILENAME = "babel.config.js";
+const BABELRC_FILENAME = ".babelrc";
+const BABELRC_JS_FILENAME = ".babelrc.js";
+const BABELIGNORE_FILENAME = ".babelignore";
+
+function findRelativeConfig(packageData, envName) {
+ let config = null;
+ let ignore = null;
+
+ const dirname = _path().default.dirname(packageData.filepath);
+
+ for (var _iterator = packageData.directories, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ const loc = _ref;
+
+ if (!config) {
+ config = [BABELRC_FILENAME, BABELRC_JS_FILENAME].reduce((previousConfig, name) => {
+ const filepath = _path().default.join(loc, name);
+
+ const config = readConfig(filepath, envName);
+
+ if (config && previousConfig) {
+ throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().default.basename(previousConfig.filepath)}\n` + ` - ${name}\n` + `from ${loc}`);
+ }
+
+ return config || previousConfig;
+ }, null);
+ const pkgConfig = packageData.pkg && packageData.pkg.dirname === loc ? packageToBabelConfig(packageData.pkg) : null;
+
+ if (pkgConfig) {
+ if (config) {
+ throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().default.basename(pkgConfig.filepath)}#babel\n` + ` - ${_path().default.basename(config.filepath)}\n` + `from ${loc}`);
+ }
+
+ config = pkgConfig;
+ }
+
+ if (config) {
+ debug("Found configuration %o from %o.", config.filepath, dirname);
+ }
+ }
+
+ if (!ignore) {
+ const ignoreLoc = _path().default.join(loc, BABELIGNORE_FILENAME);
+
+ ignore = readIgnoreConfig(ignoreLoc);
+
+ if (ignore) {
+ debug("Found ignore %o from %o.", ignore.filepath, dirname);
+ }
+ }
+ }
+
+ return {
+ config,
+ ignore
+ };
+}
+
+function findRootConfig(dirname, envName) {
+ const filepath = _path().default.resolve(dirname, BABEL_CONFIG_JS_FILENAME);
+
+ const conf = readConfig(filepath, envName);
+
+ if (conf) {
+ debug("Found root config %o in $o.", BABEL_CONFIG_JS_FILENAME, dirname);
+ }
+
+ return conf;
+}
+
+function loadConfig(name, dirname, envName) {
+ const filepath = _resolve().default.sync(name, {
+ basedir: dirname
+ });
+
+ const conf = readConfig(filepath, envName);
+
+ if (!conf) {
+ throw new Error(`Config file ${filepath} contains no configuration data`);
+ }
+
+ debug("Loaded config %o from $o.", name, dirname);
+ return conf;
+}
+
+function readConfig(filepath, envName) {
+ return _path().default.extname(filepath) === ".js" ? readConfigJS(filepath, {
+ envName
+ }) : readConfigJSON5(filepath);
+}
+
+const LOADING_CONFIGS = new Set();
+const readConfigJS = (0, _caching.makeStrongCache)((filepath, cache) => {
+ if (!_fs().default.existsSync(filepath)) {
+ cache.forever();
+ return null;
+ }
+
+ if (LOADING_CONFIGS.has(filepath)) {
+ cache.never();
+ debug("Auto-ignoring usage of config %o.", filepath);
+ return {
+ filepath,
+ dirname: _path().default.dirname(filepath),
+ options: {}
+ };
+ }
+
+ let options;
+
+ try {
+ LOADING_CONFIGS.add(filepath);
+
+ const configModule = require(filepath);
+
+ options = configModule && configModule.__esModule ? configModule.default || undefined : configModule;
+ } catch (err) {
+ err.message = `${filepath}: Error while loading config - ${err.message}`;
+ throw err;
+ } finally {
+ LOADING_CONFIGS.delete(filepath);
+ }
+
+ if (typeof options === "function") {
+ options = options((0, _configApi.default)(cache));
+ if (!cache.configured()) throwConfigError();
+ }
+
+ if (!options || typeof options !== "object" || Array.isArray(options)) {
+ throw new Error(`${filepath}: Configuration should be an exported JavaScript object.`);
+ }
+
+ if (typeof options.then === "function") {
+ throw new Error(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`);
+ }
+
+ return {
+ filepath,
+ dirname: _path().default.dirname(filepath),
+ options
+ };
+});
+const packageToBabelConfig = (0, _caching.makeWeakCache)(file => {
+ if (typeof file.options.babel === "undefined") return null;
+ const babel = file.options.babel;
+
+ if (typeof babel !== "object" || Array.isArray(babel) || babel === null) {
+ throw new Error(`${file.filepath}: .babel property must be an object`);
+ }
+
+ return {
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: babel
+ };
+});
+const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ let options;
+
+ try {
+ options = _json().default.parse(content);
+ } catch (err) {
+ err.message = `${filepath}: Error while parsing config - ${err.message}`;
+ throw err;
+ }
+
+ if (!options) throw new Error(`${filepath}: No config detected`);
+
+ if (typeof options !== "object") {
+ throw new Error(`${filepath}: Config returned typeof ${typeof options}`);
+ }
+
+ if (Array.isArray(options)) {
+ throw new Error(`${filepath}: Expected config object but found array`);
+ }
+
+ return {
+ filepath,
+ dirname: _path().default.dirname(filepath),
+ options
+ };
+});
+const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ const ignore = content.split("\n").map(line => line.replace(/#(.*?)$/, "").trim()).filter(line => !!line);
+ return {
+ filepath,
+ dirname: _path().default.dirname(filepath),
+ ignore
+ };
+});
+
+function throwConfigError() {
+ throw new Error(`\
+Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured
+for various types of caching, using the first param of their handler functions:
+
+module.exports = function(api) {
+ // The API exposes the following:
+
+ // Cache the returned value forever and don't call this function again.
+ api.cache(true);
+
+ // Don't cache at all. Not recommended because it will be very slow.
+ api.cache(false);
+
+ // Cached based on the value of some function. If this function returns a value different from
+ // a previously-encountered value, the plugins will re-evaluate.
+ var env = api.cache(() => process.env.NODE_ENV);
+
+ // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for
+ // any possible NODE_ENV value that might come up during plugin execution.
+ var isProd = api.cache(() => process.env.NODE_ENV === "production");
+
+ // .cache(fn) will perform a linear search though instances to find the matching plugin based
+ // based on previous instantiated plugins. If you want to recreate the plugin and discard the
+ // previous instance whenever something changes, you may use:
+ var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production");
+
+ // Note, we also expose the following more-verbose versions of the above examples:
+ api.cache.forever(); // api.cache(true)
+ api.cache.never(); // api.cache(false)
+ api.cache.using(fn); // api.cache(fn)
+
+ // Return the value that will be cached.
+ return { };
+};`);
+} \ No newline at end of file
diff --git a/node_modules/@babel/core/lib/config/files/index-browser.js b/node_modules/@babel/core/lib/config/files/index-browser.js
new file mode 100644
index 00000000..4f0174ee
--- /dev/null
+++ b/node_modules/@babel/core/lib/config/files/index-browser.js
@@ -0,0 +1,54 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.findPackageData = findPackageData;
+exports.findRelativeConfig = findRelativeConfig;
+exports.findRootConfig = findRootConfig;
+exports.loadConfig = loadConfig;
+exports.resolvePlugin = resolvePlugin;
+exports.resolvePreset = resolvePreset;
+exports.loadPlugin = loadPlugin;
+exports.loadPreset = loadPreset;
+
+function findPackageData(filepath) {
+ return {
+ filepath,
+ directories: [],
+ pkg: null,
+ isPackage: false
+ };
+}
+
+function findRelativeConfig(pkgData, envName) {
+ return {
+ pkg: null,
+ config: null,
+ ignore: null
+ };
+}
+
+function findRootConfig(dirname, envName) {
+ return null;
+}
+
+function loadConfig(name, dirname, envName) {
+ throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);
+}
+
+function resolvePlugin(name, dirname) {
+ return null;
+}
+
+function resolvePreset(name, dirname) {
+ return null;
+}
+
+function loadPlugin(name, dirname) {
+ throw new Error(`Cannot load plugin ${name} relative to ${dirname} in a browser`);
+}
+
+function loadPreset(name, dirname) {
+ throw new Error(`Cannot load preset ${name} relative to ${dirname} in a browser`);
+} \ No newline at end of file
diff --git a/node_modules/@babel/core/lib/config/files/index.js b/node_modules/@babel/core/lib/config/files/index.js
new file mode 100644
index 00000000..25c3008b
--- /dev/null
+++ b/node_modules/@babel/core/lib/config/files/index.js
@@ -0,0 +1,61 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "findPackageData", {
+ enumerable: true,
+ get: function get() {
+ return _package.findPackageData;
+ }
+});
+Object.defineProperty(exports, "findRelativeConfig", {
+ enumerable: true,
+ get: function get() {
+ return _configuration.findRelativeConfig;
+ }
+});
+Object.defineProperty(exports, "findRootConfig", {
+ enumerable: true,
+ get: function get() {
+ return _configuration.findRootConfig;
+ }
+});
+Object.defineProperty(exports, "loadConfig", {
+ enumerable: true,
+ get: function get() {
+ return _configuration.loadConfig;
+ }
+});
+Object.defineProperty(exports, "resolvePlugin", {
+ enumerable: true,
+ get: function get() {
+ return _plugins.resolvePlugin;
+ }
+});
+Object.defineProperty(exports, "resolvePreset", {
+ enumerable: true,
+ get: function get() {
+ return _plugins.resolvePreset;
+ }
+});
+Object.defineProperty(exports, "loadPlugin", {
+ enumerable: true,
+ get: function get() {
+ return _plugins.loadPlugin;
+ }
+});
+Object.defineProperty(exports, "loadPreset", {
+ enumerable: true,
+ get: function get() {
+ return _plugins.loadPreset;
+ }
+});
+
+var _package = require("./package");
+
+var _configuration = require("./configuration");
+
+var _plugins = require("./plugins");
+
+({}); \ No newline at end of file
diff --git a/node_modules/@babel/core/lib/config/files/package.js b/node_modules/@babel/core/lib/config/files/package.js
new file mode 100644
index 00000000..4557b8ab
--- /dev/null
+++ b/node_modules/@babel/core/lib/config/files/package.js
@@ -0,0 +1,76 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.findPackageData = findPackageData;
+
+function _path() {
+ const data = _interopRequireDefault(require("path"));
+
+ _path = function _path() {
+ return data;
+ };
+
+ return data;
+}
+
+var _utils = require("./utils");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const PACKAGE_FILENAME = "package.json";
+
+function findPackageData(filepath) {
+ let pkg = null;
+ const directories = [];
+ let isPackage = true;
+
+ let dirname = _path().default.dirname(filepath);
+
+ while (!pkg && _path().default.basename(dirname) !== "node_modules") {
+ directories.push(dirname);
+ pkg = readConfigPackage(_path().default.join(dirname, PACKAGE_FILENAME));
+
+ const nextLoc = _path().default.dirname(dirname);
+
+ if (dirname === nextLoc) {
+ isPackage = false;
+ break;
+ }
+
+ dirname = nextLoc;
+ }
+
+ return {
+ filepath,
+ directories,
+ pkg,
+ isPackage
+ };
+}
+
+const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ let options;
+
+ try {
+ options = JSON.parse(content);
+ } catch (err) {
+ err.message = `${filepath}: Error while parsing JSON - ${err.message}`;
+ throw err;
+ }
+
+ if (typeof options !== "object") {
+ throw new Error(`${filepath}: Config returned typeof ${typeof options}`);
+ }
+
+ if (Array.isArray(options)) {
+ throw new Error(`${filepath}: Expected config object but found array`);
+ }
+
+ return {
+ filepath,
+ dirname: _path().default.dirname(filepath),
+ options
+ };
+}); \ No newline at end of file
diff --git a/node_modules/@babel/core/lib/config/files/plugins.js b/node_modules/@babel/core/lib/config/files/plugins.js
new file mode 100644
index 00000000..e771dbe6
--- /dev/null
+++ b/node_modules/@babel/core/lib/config/files/plugins.js
@@ -0,0 +1,168 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.resolvePlugin = resolvePlugin;
+exports.resolvePreset = resolvePreset;
+exports.loadPlugin = loadPlugin;
+exports.loadPreset = loadPreset;
+
+function _debug() {
+ const data = _interopRequireDefault(require("debug"));
+
+ _debug = function _debug() {
+ return data;
+ };
+
+ return data;
+}
+
+function _resolve() {
+ const data = _interopRequireDefault(require("resolve"));
+
+ _resolve = function _resolve() {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = _interopRequireDefault(require("path"));
+
+ _path = function _path() {
+ return data;
+ };
+
+ return data;
+}
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const debug = (0, _debug().default)("babel:config:loading:files:plugins");
+const EXACT_RE = /^module:/;
+const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/;
+const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/;
+const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/;
+const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/;
+const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?!babel-plugin-|[^/]+\/)/;
+const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?!babel-preset-|[^/]+\/)/;
+
+function resolvePlugin(name, dirname) {
+ return resolveStandardizedName("plugin", name, dirname);
+}
+
+function resolvePreset(name, dirname) {
+ return resolveStandardizedName("preset", name, dirname);
+}
+
+function loadPlugin(name, dirname) {
+ const filepath = resolvePlugin(name, dirname);
+
+ if (!filepath) {
+ throw new Error(`Plugin ${name} not found relative to ${dirname}`);
+ }
+
+ const value = requireModule("plugin", filepath);
+ debug("Loaded plugin %o from %o.", name, dirname);
+ return {
+ filepath,
+ value
+ };
+}
+
+function loadPreset(name, dirname) {
+ const filepath = resolvePreset(name, dirname);
+
+ if (!filepath) {
+ throw new Error(`Preset ${name} not found relative to ${dirname}`);
+ }
+
+ const value = requireModule("preset", filepath);
+ debug("Loaded preset %o from %o.", name, dirname);
+ return {
+ filepath,
+ value
+ };
+}
+
+function standardizeName(type, name) {
+ if (_path().default.isAbsolute(name)) return name;
+ const isPreset = type === "preset";
+ return name.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`).replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`).replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`).replace(EXACT_RE, "");
+}
+
+function resolveStandardizedName(type, name, dirname = process.cwd()) {
+ const standardizedName = standardizeName(type, name);
+
+ try {
+ return _resolve().default.sync(standardizedName, {
+ basedir: dirname
+ });
+ } catch (e) {
+ if (e.code !== "MODULE_NOT_FOUND") throw e;
+
+ if (standardizedName !== name) {
+ let resolvedOriginal = false;
+
+ try {
+ _resolve().default.sync(name, {
+ basedir: dirname
+ });
+
+ resolvedOriginal = true;
+ } catch (e2) {}
+
+ if (resolvedOriginal) {
+ e.message += `\n- If you want to resolve "${name}", use "module:${name}"`;
+ }
+ }
+
+ let resolvedBabel = false;
+
+ try {
+ _resolve().default.sync(standardizeName(type, "@babel/" + name), {
+ basedir: dirname
+ });
+
+ resolvedBabel = true;
+ } catch (e2) {}
+
+ if (resolvedBabel) {
+ e.message += `\n- Did you mean "@babel/${name}"?`;
+ }
+
+ let resolvedOppositeType = false;
+ const oppositeType = type === "preset" ? "plugin" : "preset";
+
+ try {
+ _resolve().default.sync(standardizeName(oppositeType, name), {
+ basedir: dirname
+ });
+
+ resolvedOppositeType = true;
+ } catch (e2) {}
+
+ if (resolvedOppositeType) {
+ e.message += `\n- Did you accidentally pass a ${type} as a ${oppositeType}?`;
+ }
+
+ throw e;
+ }
+}
+
+const LOADING_MODULES = new Set();
+
+function requireModule(type, name) {
+ if (LOADING_MODULES.has(name)) {
+ throw new Error(`Reentrant ${type} detected trying to load "${name}". This module is not ignored ` + "and is trying to load itself while compiling itself, leading to a dependency cycle. " + 'We recommend adding it to your "ignore" list in your babelrc, or to a .babelignore.');
+ }
+
+ try {
+ LOADING_MODULES.add(name);
+ return require(name);
+ } finally {
+ LOADING_MODULES.delete(name);
+ }
+} \ No newline at end of file
diff --git a/node_modules/@babel/core/lib/config/files/types.js b/node_modules/@babel/core/lib/config/files/types.js
new file mode 100644
index 00000000..9a390c31
--- /dev/null
+++ b/node_modules/@babel/core/lib/config/files/types.js
@@ -0,0 +1 @@
+"use strict"; \ No newline at end of file
diff --git a/node_modules/@babel/core/lib/config/files/utils.js b/node_modules/@babel/core/lib/config/files/utils.js
new file mode 100644
index 00000000..9314e2dc
--- /dev/null
+++ b/node_modules/@babel/core/lib/config/files/utils.js
@@ -0,0 +1,41 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.makeStaticFileCache = makeStaticFileCache;
+
+function _fs() {
+ const data = _interopRequireDefault(require("fs"));
+
+ _fs = function _fs() {
+ return data;
+ };
+
+ return data;
+}
+
+var _caching = require("../caching");
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function makeStaticFileCache(fn) {
+ return (0, _caching.makeStrongCache)((filepath, cache) => {
+ if (cache.invalidate(() => fileMtime(filepath)) === null) {
+ cache.forever();
+ return null;
+ }
+
+ return fn(filepath, _fs().default.readFileSync(filepath, "utf8"));
+ });
+}
+
+function fileMtime(filepath) {
+ try {
+ return +_fs().default.statSync(filepath).mtime;
+ } catch (e) {
+ if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e;
+ }
+
+ return null;
+} \ No newline at end of file