diff options
author | Michaël Zasso <targos@protonmail.com> | 2017-12-22 16:53:42 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-01-11 09:48:05 +0100 |
commit | 3dc30632755713179f345f4af024bd904c6162d0 (patch) | |
tree | f28c4f6dd6dfc5992edf301449d1a371d229755b /tools/node_modules/eslint/lib/config/environments.js | |
parent | a2c7085dd4a8e60d1a47572aca8bb6fcb7a32f88 (diff) | |
download | android-node-v8-3dc30632755713179f345f4af024bd904c6162d0.tar.gz android-node-v8-3dc30632755713179f345f4af024bd904c6162d0.tar.bz2 android-node-v8-3dc30632755713179f345f4af024bd904c6162d0.zip |
tools: move eslint from tools to tools/node_modules
This is required because we need to add the babel-eslint dependency
and it has to be able to resolve "eslint".
babel-eslint is required to support future ES features such as async
iterators and import.meta.
Refs: https://github.com/nodejs/node/pull/17755
PR-URL: https://github.com/nodejs/node/pull/17820
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Diffstat (limited to 'tools/node_modules/eslint/lib/config/environments.js')
-rw-r--r-- | tools/node_modules/eslint/lib/config/environments.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/lib/config/environments.js b/tools/node_modules/eslint/lib/config/environments.js new file mode 100644 index 0000000000..1ec9438af5 --- /dev/null +++ b/tools/node_modules/eslint/lib/config/environments.js @@ -0,0 +1,84 @@ +/** + * @fileoverview Environments manager + * @author Nicholas C. Zakas + */ +"use strict"; + +//------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const envs = require("../../conf/environments"); + +//------------------------------------------------------------------------------ +// Public Interface +//------------------------------------------------------------------------------ + +class Environments { + + /** + * create env context + */ + constructor() { + this._environments = new Map(); + + this.load(); + } + + /** + * Loads the default environments. + * @returns {void} + * @private + */ + load() { + Object.keys(envs).forEach(envName => { + this._environments.set(envName, envs[envName]); + }); + } + + /** + * Gets the environment with the given name. + * @param {string} name The name of the environment to retrieve. + * @returns {Object?} The environment object or null if not found. + */ + get(name) { + return this._environments.get(name) || null; + } + + /** + * Gets all the environment present + * @returns {Object} The environment object for each env name + */ + getAll() { + return Array.from(this._environments).reduce((coll, env) => { + coll[env[0]] = env[1]; + return coll; + }, {}); + } + + /** + * Defines an environment. + * @param {string} name The name of the environment. + * @param {Object} env The environment settings. + * @returns {void} + */ + define(name, env) { + this._environments.set(name, env); + } + + /** + * Imports all environments from a plugin. + * @param {Object} plugin The plugin object. + * @param {string} pluginName The name of the plugin. + * @returns {void} + */ + importPlugin(plugin, pluginName) { + if (plugin.environments) { + Object.keys(plugin.environments).forEach(envName => { + this.define(`${pluginName}/${envName}`, plugin.environments[envName]); + }); + } + } +} + +module.exports = Environments; |