Browse Source

tools: update to ESLint 4.3.0

PR-URL: https://github.com/nodejs/node/pull/14417
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Teddy Katz <teddy.katz@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Refael Ackermann <refack@gmail.com>
v6.x
Rich Trott 8 years ago
committed by Myles Borins
parent
commit
31f572c3ea
No known key found for this signature in database GPG Key ID: 933B01F40B5CA946
  1. 9
      tools/eslint/bin/eslint.js
  2. 4
      tools/eslint/conf/category-list.json
  3. 4
      tools/eslint/conf/config-schema.js
  4. 25
      tools/eslint/conf/eslint-recommended.js
  5. 10
      tools/eslint/lib/config/config-file.js
  6. 137
      tools/eslint/lib/config/config-initializer.js
  7. 26
      tools/eslint/lib/config/config-validator.js
  8. 14
      tools/eslint/lib/config/plugins.js
  9. 32
      tools/eslint/lib/linter.js
  10. 94
      tools/eslint/lib/rule-context.js
  11. 2
      tools/eslint/lib/rules/arrow-parens.js
  12. 2
      tools/eslint/lib/rules/curly.js
  13. 43
      tools/eslint/lib/rules/getter-return.js
  14. 10
      tools/eslint/lib/rules/id-blacklist.js
  15. 12
      tools/eslint/lib/rules/id-match.js
  16. 4
      tools/eslint/lib/rules/indent-legacy.js
  17. 647
      tools/eslint/lib/rules/indent.js
  18. 4
      tools/eslint/lib/rules/key-spacing.js
  19. 10
      tools/eslint/lib/rules/no-cond-assign.js
  20. 68
      tools/eslint/lib/rules/no-constant-condition.js
  21. 2
      tools/eslint/lib/rules/no-else-return.js
  22. 4
      tools/eslint/lib/rules/no-extra-parens.js
  23. 12
      tools/eslint/lib/rules/no-inner-declarations.js
  24. 168
      tools/eslint/lib/rules/no-multi-spaces.js
  25. 4
      tools/eslint/lib/rules/no-regex-spaces.js
  26. 59
      tools/eslint/lib/rules/no-restricted-globals.js
  27. 30
      tools/eslint/lib/rules/no-restricted-properties.js
  28. 12
      tools/eslint/lib/rules/no-tabs.js
  29. 29
      tools/eslint/lib/rules/no-underscore-dangle.js
  30. 18
      tools/eslint/lib/rules/object-curly-newline.js
  31. 2
      tools/eslint/lib/rules/object-curly-spacing.js
  32. 4
      tools/eslint/lib/rules/padded-blocks.js
  33. 2
      tools/eslint/lib/rules/padding-line-between-statements.js
  34. 102
      tools/eslint/lib/rules/prefer-destructuring.js
  35. 43
      tools/eslint/lib/rules/prefer-numeric-literals.js
  36. 12
      tools/eslint/lib/rules/prefer-reflect.js
  37. 4
      tools/eslint/lib/rules/prefer-template.js
  38. 2
      tools/eslint/lib/rules/space-infix-ops.js
  39. 4
      tools/eslint/lib/rules/spaced-comment.js
  40. 22
      tools/eslint/lib/rules/valid-jsdoc.js
  41. 34
      tools/eslint/lib/testers/rule-tester.js
  42. 48
      tools/eslint/lib/testers/test-parser.js
  43. 17
      tools/eslint/lib/util/npm-util.js
  44. 1
      tools/eslint/node_modules/.bin/acorn
  45. 1
      tools/eslint/node_modules/.bin/esparse
  46. 1
      tools/eslint/node_modules/.bin/esvalidate
  47. 1
      tools/eslint/node_modules/.bin/js-yaml
  48. 1
      tools/eslint/node_modules/.bin/mkdirp
  49. 1
      tools/eslint/node_modules/.bin/rimraf
  50. 1
      tools/eslint/node_modules/.bin/semver
  51. 1
      tools/eslint/node_modules/.bin/which
  52. 1
      tools/eslint/node_modules/acorn-jsx/node_modules/.bin/acorn
  53. 62
      tools/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json
  54. 56
      tools/eslint/node_modules/acorn-jsx/package.json
  55. 0
      tools/eslint/node_modules/acorn/bin/acorn
  56. 63
      tools/eslint/node_modules/acorn/package.json
  57. 58
      tools/eslint/node_modules/ajv-keywords/package.json
  58. 61
      tools/eslint/node_modules/ajv/package.json
  59. 58
      tools/eslint/node_modules/ansi-escapes/package.json
  60. 67
      tools/eslint/node_modules/ansi-regex/package.json
  61. 62
      tools/eslint/node_modules/ansi-styles/package.json
  62. 57
      tools/eslint/node_modules/argparse/package.json
  63. 57
      tools/eslint/node_modules/array-union/package.json
  64. 58
      tools/eslint/node_modules/array-uniq/package.json
  65. 54
      tools/eslint/node_modules/arrify/package.json
  66. 29
      tools/eslint/node_modules/babel-code-frame/README.md
  67. 66
      tools/eslint/node_modules/babel-code-frame/package-lock.json
  68. 86
      tools/eslint/node_modules/babel-code-frame/package.json
  69. 57
      tools/eslint/node_modules/bail/package.json
  70. 57
      tools/eslint/node_modules/balanced-match/package.json
  71. 61
      tools/eslint/node_modules/brace-expansion/package.json
  72. 55
      tools/eslint/node_modules/caller-path/package.json
  73. 56
      tools/eslint/node_modules/callsites/package.json
  74. 57
      tools/eslint/node_modules/ccount/package.json
  75. 66
      tools/eslint/node_modules/chalk/package.json
  76. 57
      tools/eslint/node_modules/character-entities-html4/package.json
  77. 57
      tools/eslint/node_modules/character-entities-legacy/package.json
  78. 57
      tools/eslint/node_modules/character-entities/package.json
  79. 57
      tools/eslint/node_modules/character-reference-invalid/package.json
  80. 59
      tools/eslint/node_modules/circular-json/package.json
  81. 57
      tools/eslint/node_modules/cli-cursor/package.json
  82. 58
      tools/eslint/node_modules/cli-width/package.json
  83. 62
      tools/eslint/node_modules/co/package.json
  84. 57
      tools/eslint/node_modules/collapse-white-space/package.json
  85. 71
      tools/eslint/node_modules/color-convert/package.json
  86. 14
      tools/eslint/node_modules/color-name/LICENSE
  87. 22
      tools/eslint/node_modules/color-name/README.md
  88. 304
      tools/eslint/node_modules/color-name/index.js
  89. 59
      tools/eslint/node_modules/color-name/package.json
  90. 51
      tools/eslint/node_modules/concat-map/package.json
  91. 63
      tools/eslint/node_modules/concat-stream/package.json
  92. 54
      tools/eslint/node_modules/core-util-is/package.json
  93. 19
      tools/eslint/node_modules/cross-spawn/LICENSE
  94. 85
      tools/eslint/node_modules/cross-spawn/README.md
  95. 59
      tools/eslint/node_modules/cross-spawn/index.js
  96. 73
      tools/eslint/node_modules/cross-spawn/lib/enoent.js
  97. 113
      tools/eslint/node_modules/cross-spawn/lib/parse.js
  98. 30
      tools/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js
  99. 12
      tools/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js
  100. 18
      tools/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js

9
tools/eslint/bin/eslint.js

@ -44,11 +44,12 @@ process.once("uncaughtException", err => {
if (typeof err.messageTemplate === "string" && err.messageTemplate.length > 0) {
const template = lodash.template(fs.readFileSync(path.resolve(__dirname, `../messages/${err.messageTemplate}.txt`), "utf-8"));
console.log("\nOops! Something went wrong! :(");
console.log(`\n${template(err.messageData || {})}`);
console.error("\nOops! Something went wrong! :(");
console.error(`\n${template(err.messageData || {})}`);
} else {
console.log(err.message);
console.log(err.stack);
console.error(err.message);
console.error(err.stack);
}
process.exitCode = 1;

4
tools/eslint/conf/category-list.json

@ -10,12 +10,12 @@
],
"deprecated": {
"name": "Deprecated",
"description": "These rules have been deprecated and replaced by newer rules:",
"description": "These rules have been deprecated in accordance with the [deprecation policy](/docs/user-guide/rule-deprecation), and replaced by newer rules:",
"rules": []
},
"removed": {
"name": "Removed",
"description": "These rules from older versions of ESLint have been replaced by newer rules:",
"description": "These rules from older versions of ESLint (before the [deprecation policy](/docs/user-guide/rule-deprecation) existed) have been replaced by newer rules:",
"rules": [
{ "removed": "generator-star", "replacedBy": ["generator-star-spacing"] },
{ "removed": "global-strict", "replacedBy": ["strict"] },

4
tools/eslint/conf/config-schema.js

@ -12,7 +12,9 @@ const baseConfigProperties = {
parserOptions: { type: "object" },
plugins: { type: "array" },
rules: { type: "object" },
settings: { type: "object" }
settings: { type: "object" },
ecmaFeatures: { type: "object" } // deprecated; logs a warning when used
};
const overrideProperties = Object.assign(

25
tools/eslint/conf/eslint-recommended.js

@ -6,13 +6,10 @@
"use strict";
/* eslint sort-keys: ["error", "asc"], quote-props: ["error", "consistent"] */
/* eslint-disable sort-keys */
/* eslint sort-keys: ["error", "asc"] */
module.exports = {
rules: {
/* eslint-enable sort-keys */
"accessor-pairs": "off",
"array-bracket-newline": "off",
"array-bracket-spacing": "off",
@ -25,23 +22,23 @@ module.exports = {
"block-spacing": "off",
"brace-style": "off",
"callback-return": "off",
"camelcase": "off",
camelcase: "off",
"capitalized-comments": "off",
"class-methods-use-this": "off",
"comma-dangle": "off",
"comma-spacing": "off",
"comma-style": "off",
"complexity": "off",
complexity: "off",
"computed-property-spacing": "off",
"consistent-return": "off",
"consistent-this": "off",
"constructor-super": "error",
"curly": "off",
curly: "off",
"default-case": "off",
"dot-location": "off",
"dot-notation": "off",
"eol-last": "off",
"eqeqeq": "off",
eqeqeq: "off",
"for-direction": "off",
"func-call-spacing": "off",
"func-name-matching": "off",
@ -55,7 +52,7 @@ module.exports = {
"id-blacklist": "off",
"id-length": "off",
"id-match": "off",
"indent": "off",
indent: "off",
"indent-legacy": "off",
"init-declarations": "off",
"jsx-quotes": "off",
@ -234,13 +231,13 @@ module.exports = {
"prefer-spread": "off",
"prefer-template": "off",
"quote-props": "off",
"quotes": "off",
"radix": "off",
quotes: "off",
radix: "off",
"require-await": "off",
"require-jsdoc": "off",
"require-yield": "error",
"rest-spread-spacing": "off",
"semi": "off",
semi: "off",
"semi-spacing": "off",
"semi-style": "off",
"sort-imports": "off",
@ -252,7 +249,7 @@ module.exports = {
"space-infix-ops": "off",
"space-unary-ops": "off",
"spaced-comment": "off",
"strict": "off",
strict: "off",
"switch-colon-spacing": "off",
"symbol-description": "off",
"template-curly-spacing": "off",
@ -265,6 +262,6 @@ module.exports = {
"wrap-iife": "off",
"wrap-regex": "off",
"yield-star-spacing": "off",
"yoda": "off"
yoda: "off"
}
};

10
tools/eslint/lib/config/config-file.js

@ -3,8 +3,6 @@
* @author Nicholas C. Zakas
*/
/* eslint no-use-before-define: 0 */
"use strict";
//------------------------------------------------------------------------------
@ -418,6 +416,8 @@ function applyExtends(config, configContext, filePath, relativeTo) {
);
}
debug(`Loading ${parentPath}`);
// eslint-disable-next-line no-use-before-define
return ConfigOps.merge(load(parentPath, configContext, relativeTo), previousValue);
} catch (e) {
@ -502,8 +502,8 @@ function resolve(filePath, relativeTo) {
if (filePath.startsWith("plugin:")) {
const configFullName = filePath;
const pluginName = filePath.substr(7, filePath.lastIndexOf("/") - 7);
const configName = filePath.substr(filePath.lastIndexOf("/") + 1, filePath.length - filePath.lastIndexOf("/") - 1);
const pluginName = filePath.slice(7, filePath.lastIndexOf("/"));
const configName = filePath.slice(filePath.lastIndexOf("/") + 1);
normalizedPackageName = normalizePackageName(pluginName, "eslint-plugin");
debug(`Attempting to resolve ${normalizedPackageName}`);
@ -546,7 +546,7 @@ function loadFromDisk(resolvedPath, configContext) {
}
// validate the configuration before continuing
validator.validate(config, resolvedPath, configContext.linterContext.rules, configContext.linterContext.environments);
validator.validate(config, resolvedPath.configFullName, configContext.linterContext.rules, configContext.linterContext.environments);
/*
* If an `extends` property is defined, it represents a configuration file to use as

137
tools/eslint/lib/config/config-initializer.js

@ -12,10 +12,12 @@
const util = require("util"),
inquirer = require("inquirer"),
ProgressBar = require("progress"),
semver = require("semver"),
autoconfig = require("./autoconfig.js"),
ConfigFile = require("./config-file"),
ConfigOps = require("./config-ops"),
getSourceCodeOfFiles = require("../util/source-code-util").getSourceCodeOfFiles,
ModuleResolver = require("../util/module-resolver"),
npmUtil = require("../util/npm-util"),
recConfig = require("../../conf/eslint-recommended"),
log = require("../logging");
@ -56,12 +58,35 @@ function writeFile(config, format) {
}
}
/**
* Get the peer dependencies of the given module.
* This adds the gotten value to cache at the first time, then reuses it.
* In a process, this function is called twice, but `npmUtil.fetchPeerDependencies` needs to access network which is relatively slow.
* @param {string} moduleName The module name to get.
* @returns {Object} The peer dependencies of the given module.
* This object is the object of `peerDependencies` field of `package.json`.
*/
function getPeerDependencies(moduleName) {
let result = getPeerDependencies.cache.get(moduleName);
if (!result) {
log.info(`Checking peerDependencies of ${moduleName}`);
result = npmUtil.fetchPeerDependencies(moduleName);
getPeerDependencies.cache.set(moduleName, result);
}
return result;
}
getPeerDependencies.cache = new Map();
/**
* Synchronously install necessary plugins, configs, parsers, etc. based on the config
* @param {Object} config config object
* @param {boolean} [installESLint=true] If `false` is given, it does not install eslint.
* @returns {void}
*/
function installModules(config) {
function installModules(config, installESLint) {
const modules = {};
// Create a list of modules which should be installed based on config
@ -73,11 +98,10 @@ function installModules(config) {
if (config.extends && config.extends.indexOf("eslint:") === -1) {
const moduleName = `eslint-config-${config.extends}`;
log.info(`Checking peerDependencies of ${moduleName}`);
modules[moduleName] = "latest";
Object.assign(
modules,
npmUtil.fetchPeerDependencies(`${moduleName}@latest`)
getPeerDependencies(`${moduleName}@latest`)
);
}
@ -86,15 +110,17 @@ function installModules(config) {
return;
}
// Add eslint to list in case user does not have it installed locally
modules.eslint = modules.eslint || "latest";
// Mark to show messages if it's new installation of eslint.
const installStatus = npmUtil.checkDevDeps(["eslint"]);
if (installESLint === false) {
delete modules.eslint;
} else {
const installStatus = npmUtil.checkDevDeps(["eslint"]);
if (installStatus.eslint === false) {
log.info("Local ESLint installation not found.");
config.installedESLint = true;
// Mark to show messages if it's new installation of eslint.
if (installStatus.eslint === false) {
log.info("Local ESLint installation not found.");
modules.eslint = modules.eslint || "latest";
config.installedESLint = true;
}
}
// Install packages
@ -265,9 +291,10 @@ function processAnswers(answers) {
/**
* process user's style guide of choice and return an appropriate config object.
* @param {string} guide name of the chosen style guide
* @param {boolean} [installESLint=true] If `false` is given, it does not install eslint.
* @returns {Object} config object
*/
function getConfigForStyleGuide(guide) {
function getConfigForStyleGuide(guide, installESLint) {
const guides = {
google: { extends: "google" },
airbnb: { extends: "airbnb" },
@ -279,11 +306,74 @@ function getConfigForStyleGuide(guide) {
throw new Error("You referenced an unsupported guide.");
}
installModules(guides[guide]);
installModules(guides[guide], installESLint);
return guides[guide];
}
/**
* Get the version of the local ESLint.
* @returns {string|null} The version. If the local ESLint was not found, returns null.
*/
function getLocalESLintVersion() {
try {
const resolver = new ModuleResolver();
const eslintPath = resolver.resolve("eslint", process.cwd());
const eslint = require(eslintPath);
return eslint.linter.version || null;
} catch (_err) {
return null;
}
}
/**
* Get the shareable config name of the chosen style guide.
* @param {Object} answers The answers object.
* @returns {string} The shareable config name.
*/
function getStyleGuideName(answers) {
if (answers.styleguide === "airbnb" && !answers.airbnbReact) {
return "airbnb-base";
}
return answers.styleguide;
}
/**
* Check whether the local ESLint version conflicts with the required version of the chosen shareable config.
* @param {Object} answers The answers object.
* @returns {boolean} `true` if the local ESLint is found then it conflicts with the required version of the chosen shareable config.
*/
function hasESLintVersionConflict(answers) {
// Get the local ESLint version.
const localESLintVersion = getLocalESLintVersion();
if (!localESLintVersion) {
return false;
}
// Get the required range of ESLint version.
const configName = getStyleGuideName(answers);
const moduleName = `eslint-config-${configName}@latest`;
const requiredESLintVersionRange = getPeerDependencies(moduleName).eslint;
if (!requiredESLintVersionRange) {
return false;
}
answers.localESLintVersion = localESLintVersion;
answers.requiredESLintVersionRange = requiredESLintVersionRange;
// Check the version.
if (semver.satisfies(localESLintVersion, requiredESLintVersionRange)) {
answers.installESLint = false;
return false;
}
return true;
}
/* istanbul ignore next: no need to test inquirer*/
/**
* Ask use a few questions on command prompt
@ -346,6 +436,21 @@ function promptUser() {
when(answers) {
return ((answers.source === "guide" && answers.packageJsonExists) || answers.source === "auto");
}
},
{
type: "confirm",
name: "installESLint",
message(answers) {
const verb = semver.ltr(answers.localESLintVersion, answers.requiredESLintVersionRange)
? "upgrade"
: "downgrade";
return `The style guide "${answers.styleguide}" requires eslint@${answers.requiredESLintVersionRange}. You are currently using eslint@${answers.localESLintVersion}.\n Do you want to ${verb}?`;
},
default: true,
when(answers) {
return answers.source === "guide" && answers.packageJsonExists && hasESLintVersionConflict(answers);
}
}
]).then(earlyAnswers => {
@ -355,11 +460,14 @@ function promptUser() {
log.info("A package.json is necessary to install plugins such as style guides. Run `npm init` to create a package.json file and try again.");
return void 0;
}
if (earlyAnswers.installESLint === false && !semver.satisfies(earlyAnswers.localESLintVersion, earlyAnswers.requiredESLintVersionRange)) {
log.info(`Note: it might not work since ESLint's version is mismatched with the ${earlyAnswers.styleguide} config.`);
}
if (earlyAnswers.styleguide === "airbnb" && !earlyAnswers.airbnbReact) {
earlyAnswers.styleguide = "airbnb-base";
}
config = getConfigForStyleGuide(earlyAnswers.styleguide);
config = getConfigForStyleGuide(earlyAnswers.styleguide, earlyAnswers.installESLint);
writeFile(config, earlyAnswers.format);
return void 0;
@ -479,6 +587,7 @@ function promptUser() {
const init = {
getConfigForStyleGuide,
hasESLintVersionConflict,
processAnswers,
/* istanbul ignore next */initializeConfig() {
return promptUser();

26
tools/eslint/lib/config/config-validator.js

@ -10,6 +10,7 @@
//------------------------------------------------------------------------------
const ajv = require("../util/ajv"),
lodash = require("lodash"),
configSchema = require("../../conf/config-schema.js"),
util = require("util");
@ -179,6 +180,25 @@ function formatErrors(errors) {
}).map(message => `\t- ${message}.\n`).join("");
}
/**
* Emits a deprecation warning containing a given filepath. A new deprecation warning is emitted
* for each unique file path, but repeated invocations with the same file path have no effect.
* No warnings are emitted if the `--no-deprecation` or `--no-warnings` Node runtime flags are active.
* @param {string} source The name of the configuration source to report the warning for.
* @returns {void}
*/
const emitEcmaFeaturesWarning = lodash.memoize(source => {
/*
* util.deprecate seems to be the only way to emit a warning in Node 4.x while respecting the --no-warnings flag.
* (In Node 6+, process.emitWarning could be used instead.)
*/
util.deprecate(
() => {},
`[eslint] The 'ecmaFeatures' config file property is deprecated, and has no effect. (found in ${source})`
)();
});
/**
* Validates the top level properties of the config object.
* @param {Object} config The config object to validate.
@ -189,7 +209,11 @@ function validateConfigSchema(config, source) {
validateSchema = validateSchema || ajv.compile(configSchema);
if (!validateSchema(config)) {
throw new Error(`${source}:\n\tESLint configuration is invalid:\n${formatErrors(validateSchema.errors)}`);
throw new Error(`ESLint configuration in ${source} is invalid:\n${formatErrors(validateSchema.errors)}`);
}
if (Object.prototype.hasOwnProperty.call(config, "ecmaFeatures")) {
emitEcmaFeaturesWarning(source);
}
}

14
tools/eslint/lib/config/plugins.js

@ -43,7 +43,7 @@ class Plugins {
* @returns {string} The name of the plugin without prefix.
*/
static removePrefix(pluginName) {
return pluginName.startsWith(PLUGIN_NAME_PREFIX) ? pluginName.substring(PLUGIN_NAME_PREFIX.length) : pluginName;
return pluginName.startsWith(PLUGIN_NAME_PREFIX) ? pluginName.slice(PLUGIN_NAME_PREFIX.length) : pluginName;
}
/**
@ -156,8 +156,20 @@ class Plugins {
* @param {string[]} pluginNames An array of plugins names.
* @returns {void}
* @throws {Error} If a plugin cannot be loaded.
* @throws {Error} If "plugins" in config is not an array
*/
loadAll(pluginNames) {
// if "plugins" in config is not an array, throw an error so user can fix their config.
if (!Array.isArray(pluginNames)) {
const pluginNotArrayMessage = "ESLint configuration error: \"plugins\" value must be an array";
debug(`${pluginNotArrayMessage}: ${JSON.stringify(pluginNames)}`);
throw new Error(pluginNotArrayMessage);
}
// load each plugin by name
pluginNames.forEach(this.load, this);
}
}

32
tools/eslint/lib/linter.js

@ -70,8 +70,8 @@ function parseBooleanConfig(string, comment) {
let value;
if (pos !== -1) {
value = name.substring(pos + 1, name.length);
name = name.substring(0, pos);
value = name.slice(pos + 1);
name = name.slice(0, pos);
}
items[name] = {
@ -338,7 +338,7 @@ function modifyConfigsFromComments(filename, ast, config, linterContext) {
const match = /^(eslint(-\w+){0,3}|exported|globals?)(\s|$)/.exec(value);
if (match) {
value = value.substring(match.index + match[1].length);
value = value.slice(match.index + match[1].length);
if (comment.type === "Block") {
switch (match[1]) {
@ -519,8 +519,11 @@ function createStubRule(message) {
*/
function createRuleModule(context) {
return {
Program(node) {
context.report(node, message);
Program() {
context.report({
loc: { line: 1, column: 0 },
message
});
}
};
}
@ -1288,13 +1291,18 @@ const externalMethods = {
Object.keys(externalMethods).forEach(methodName => {
const exMethodName = externalMethods[methodName];
// All functions expected to have less arguments than 5.
Linter.prototype[methodName] = function(a, b, c, d, e) {
if (this.sourceCode) {
return this.sourceCode[exMethodName](a, b, c, d, e);
}
return null;
};
// Applies the SourceCode methods to the Linter prototype
Object.defineProperty(Linter.prototype, methodName, {
value() {
if (this.sourceCode) {
return this.sourceCode[exMethodName].apply(this.sourceCode, arguments);
}
return null;
},
configurable: true,
writable: true,
enumerable: false
});
});
module.exports = Linter;

94
tools/eslint/lib/rule-context.js

@ -20,6 +20,7 @@ const PASSTHROUGHS = [
"getDeclaredVariables",
"getFilename",
"getScope",
"getSourceCode",
"markVariableAsUsed",
// DEPRECATED
@ -58,7 +59,7 @@ const PASSTHROUGHS = [
*/
//------------------------------------------------------------------------------
// Rule Definition
// Module Definition
//------------------------------------------------------------------------------
/**
@ -132,13 +133,13 @@ function getFix(descriptor, sourceCode) {
/**
* Rule context class
* Acts as an abstraction layer between rules and the main eslint object.
* Acts as an abstraction layer between rules and the main linter object.
*/
class RuleContext {
/**
* @param {string} ruleId The ID of the rule using this object.
* @param {eslint} eslint The eslint object.
* @param {Linter} linter The linter object.
* @param {number} severity The configured severity level of the rule.
* @param {Array} options The configuration information to be added to the rule.
* @param {Object} settings The configuration settings passed from the config file.
@ -147,7 +148,7 @@ class RuleContext {
* @param {Object} meta The metadata of the rule
* @param {Object} parserServices The parser services for the rule.
*/
constructor(ruleId, eslint, severity, options, settings, parserOptions, parserPath, meta, parserServices) {
constructor(ruleId, linter, severity, options, settings, parserOptions, parserPath, meta, parserServices) {
// public.
this.id = ruleId;
@ -161,22 +162,14 @@ class RuleContext {
this.parserServices = Object.freeze(Object.assign({}, parserServices));
// private.
this.eslint = eslint;
this.severity = severity;
this._linter = linter;
this._severity = severity;
Object.freeze(this);
}
/**
* Passthrough to eslint.getSourceCode().
* @returns {SourceCode} The SourceCode object for the code.
*/
getSourceCode() {
return this.eslint.getSourceCode();
}
/**
* Passthrough to eslint.report() that automatically assigns the rule ID and severity.
* Passthrough to Linter#report() that automatically assigns the rule ID and severity.
* @param {ASTNode|MessageDescriptor} nodeOrDescriptor The AST node related to the message or a message
* descriptor.
* @param {Object=} location The location of the error.
@ -192,38 +185,57 @@ class RuleContext {
const descriptor = nodeOrDescriptor;
const fix = getFix(descriptor, this.getSourceCode());
this.eslint.report(
if (descriptor.loc) {
this._linter.report(
this.id,
this._severity,
descriptor.node,
descriptor.loc,
descriptor.message,
descriptor.data,
fix,
this.meta
);
} else {
this._linter.report(
this.id,
this._severity,
descriptor.node,
/* loc not provided */
descriptor.message,
descriptor.data,
fix,
this.meta
);
}
} else {
// old style call
this._linter.report(
this.id,
this.severity,
descriptor.node,
descriptor.loc || descriptor.node.loc.start,
descriptor.message,
descriptor.data,
fix,
this._severity,
nodeOrDescriptor,
location,
message,
opts,
this.meta
);
return;
}
// old style call
this.eslint.report(
this.id,
this.severity,
nodeOrDescriptor,
location,
message,
opts,
this.meta
);
}
}
// Copy over passthrough methods. All functions will have 5 or fewer parameters.
PASSTHROUGHS.forEach(function(name) {
this[name] = function(a, b, c, d, e) {
return this.eslint[name](a, b, c, d, e);
};
}, RuleContext.prototype);
// Copy over passthrough methods.
PASSTHROUGHS.forEach(name => {
Object.defineProperty(RuleContext.prototype, name, {
value() {
return this._linter[name].apply(this._linter, arguments);
},
configurable: true,
writable: true,
enumerable: false
});
});
module.exports = RuleContext;

2
tools/eslint/lib/rules/arrow-parens.js

@ -71,7 +71,7 @@ module.exports = {
// https://github.com/eslint/eslint/issues/8834
const closingParenToken = sourceCode.getTokenAfter(paramToken, astUtils.isClosingParenToken);
const asyncToken = isAsync ? sourceCode.getTokenBefore(firstTokenOfParam) : null;
const shouldAddSpaceForAsync = asyncToken && (asyncToken.end === firstTokenOfParam.start);
const shouldAddSpaceForAsync = asyncToken && (asyncToken.range[1] === firstTokenOfParam.range[0]);
return fixer.replaceTextRange([
firstTokenOfParam.range[0],

2
tools/eslint/lib/rules/curly.js

@ -238,7 +238,7 @@ module.exports = {
// `do while` expressions sometimes need a space to be inserted after `do`.
// e.g. `do{foo()} while (bar)` should be corrected to `do foo() while (bar)`
const needsPrecedingSpace = node.type === "DoWhileStatement" &&
sourceCode.getTokenBefore(bodyNode).end === bodyNode.start &&
sourceCode.getTokenBefore(bodyNode).range[1] === bodyNode.range[0] &&
!astUtils.canTokensBeAdjacent("do", sourceCode.getFirstToken(bodyNode, { skip: 1 }));
const openingBracket = sourceCode.getFirstToken(bodyNode);

43
tools/eslint/lib/rules/getter-return.js

@ -14,6 +14,7 @@ const astUtils = require("../ast-utils");
//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
const TARGET_NODE_TYPE = /^(?:Arrow)?FunctionExpression$/;
/**
* Checks a given code path segment is reachable.
@ -101,22 +102,45 @@ module.exports = {
}
}
/** Checks whether a node means a getter function.
* @param {ASTNode} node - a node to check.
* @returns {boolean} if node means a getter, return true; else return false.
*/
function isGetter(node) {
const parent = node.parent;
if (TARGET_NODE_TYPE.test(node.type) && node.body.type === "BlockStatement") {
if (parent.kind === "get") {
return true;
}
if (parent.type === "Property" && astUtils.getStaticPropertyName(parent) === "get" && parent.parent.type === "ObjectExpression") {
// Object.defineProperty()
if (parent.parent.parent.type === "CallExpression" &&
astUtils.getStaticPropertyName(parent.parent.parent.callee) === "defineProperty") {
return true;
}
// Object.defineProperties()
if (parent.parent.parent.type === "Property" &&
parent.parent.parent.parent.type === "ObjectExpression" &&
parent.parent.parent.parent.parent.type === "CallExpression" &&
astUtils.getStaticPropertyName(parent.parent.parent.parent.parent.callee) === "defineProperties") {
return true;
}
}
}
return false;
}
return {
// Stacks this function's information.
onCodePathStart(codePath, node) {
const parent = node.parent;
funcInfo = {
upper: funcInfo,
codePath,
hasReturn: false,
shouldCheck:
node.type === "FunctionExpression" &&
node.body.type === "BlockStatement" &&
// check if it is a "getter", or a method named "get".
(parent.kind === "get" || astUtils.getStaticPropertyName(parent) === "get"),
shouldCheck: isGetter(node),
node
};
},
@ -145,7 +169,8 @@ module.exports = {
},
// Reports a given function if the last path is reachable.
"FunctionExpression:exit": checkLastSegment
"FunctionExpression:exit": checkLastSegment,
"ArrowFunctionExpression:exit": checkLastSegment
};
}
};

10
tools/eslint/lib/rules/id-blacklist.js

@ -67,9 +67,13 @@ module.exports = {
* @private
*/
function report(node) {
context.report({ node, message: "Identifier '{{name}}' is blacklisted.", data: {
name: node.name
} });
context.report({
node,
message: "Identifier '{{name}}' is blacklisted.",
data: {
name: node.name
}
});
}
return {

12
tools/eslint/lib/rules/id-match.js

@ -75,10 +75,14 @@ module.exports = {
* @private
*/
function report(node) {
context.report({ node, message: "Identifier '{{name}}' does not match the pattern '{{pattern}}'.", data: {
name: node.name,
pattern
} });
context.report({
node,
message: "Identifier '{{name}}' does not match the pattern '{{pattern}}'.",
data: {
name: node.name,
pattern
}
});
}
return {

4
tools/eslint/lib/rules/indent-legacy.js

@ -729,7 +729,7 @@ module.exports = {
if (!parentVarNode || parentVarNode.loc.start.line !== node.loc.start.line) {
if (parent.type !== "VariableDeclarator" || parentVarNode === parentVarNode.parent.declarations[0]) {
if (parent.type === "VariableDeclarator" && parentVarNode.loc.start.line === parent.loc.start.line) {
nodeIndent = nodeIndent + (indentSize * options.VariableDeclarator[parentVarNode.parent.kind]);
nodeIndent += (indentSize * options.VariableDeclarator[parentVarNode.parent.kind]);
} else if (parent.type === "ObjectExpression" || parent.type === "ArrayExpression") {
const parentElements = node.parent.type === "ObjectExpression" ? node.parent.properties : node.parent.elements;
@ -765,7 +765,7 @@ module.exports = {
}
}
} else if (!parentVarNode && !isFirstArrayElementOnSameLine(parent) && parent.type !== "MemberExpression" && parent.type !== "ExpressionStatement" && parent.type !== "AssignmentExpression" && parent.type !== "Property") {
nodeIndent = nodeIndent + indentSize;
nodeIndent += indentSize;
}
checkFirstNodeLineIndent(node, nodeIndent);

647
tools/eslint/lib/rules/indent.js

File diff suppressed because it is too large

4
tools/eslint/lib/rules/key-spacing.js

@ -433,9 +433,9 @@ module.exports = {
// Remove whitespace
if (isKeySide) {
range = [tokenBeforeColon.end, tokenBeforeColon.end + diffAbs];
range = [tokenBeforeColon.range[1], tokenBeforeColon.range[1] + diffAbs];
} else {
range = [tokenAfterColon.start - diffAbs, tokenAfterColon.start];
range = [tokenAfterColon.range[0] - diffAbs, tokenAfterColon.range[0]];
}
fix = function(fixer) {
return fixer.removeRange(range);

10
tools/eslint/lib/rules/no-cond-assign.js

@ -112,9 +112,13 @@ module.exports = {
const ancestor = findConditionalAncestor(node);
if (ancestor) {
context.report({ node: ancestor, message: "Unexpected assignment within {{type}}.", data: {
type: NODE_DESCRIPTIONS[ancestor.type] || ancestor.type
} });
context.report({
node: ancestor,
message: "Unexpected assignment within {{type}}.",
data: {
type: NODE_DESCRIPTIONS[ancestor.type] || ancestor.type
}
});
}
}

68
tools/eslint/lib/rules/no-constant-condition.js

@ -33,7 +33,10 @@ module.exports = {
create(context) {
const options = context.options[0] || {},
checkLoops = options.checkLoops !== false;
checkLoops = options.checkLoops !== false,
loopSetStack = [];
let loopsInCurrentScope = new Set();
//--------------------------------------------------------------------------
// Helpers
@ -114,18 +117,64 @@ module.exports = {
return false;
}
/**
* Tracks when the given node contains a constant condition.
* @param {ASTNode} node The AST node to check.
* @returns {void}
* @private
*/
function trackConstantConditionLoop(node) {
if (node.test && isConstant(node.test, true)) {
loopsInCurrentScope.add(node);
}
}
/**
* Reports when the set contains the given constant condition node
* @param {ASTNode} node The AST node to check.
* @returns {void}
* @private
*/
function checkConstantConditionLoopInSet(node) {
if (loopsInCurrentScope.has(node)) {
loopsInCurrentScope.delete(node);
context.report({ node, message: "Unexpected constant condition." });
}
}
/**
* Reports when the given node contains a constant condition.
* @param {ASTNode} node The AST node to check.
* @returns {void}
* @private
*/
function checkConstantCondition(node) {
function reportIfConstant(node) {
if (node.test && isConstant(node.test, true)) {
context.report({ node, message: "Unexpected constant condition." });
}
}
/**
* Stores current set of constant loops in loopSetStack temporarily
* and uses a new set to track constant loops
* @returns {void}
* @private
*/
function enterFunction() {
loopSetStack.push(loopsInCurrentScope);
loopsInCurrentScope = new Set();
}
/**
* Reports when the set still contains stored constant conditions
* @param {ASTNode} node The AST node to check.
* @returns {void}
* @private
*/
function exitFunction() {
loopsInCurrentScope = loopSetStack.pop();
}
/**
* Checks node when checkLoops option is enabled
* @param {ASTNode} node The AST node to check.
@ -134,7 +183,7 @@ module.exports = {
*/
function checkLoop(node) {
if (checkLoops) {
checkConstantCondition(node);
trackConstantConditionLoop(node);
}
}
@ -143,11 +192,18 @@ module.exports = {
//--------------------------------------------------------------------------
return {
ConditionalExpression: checkConstantCondition,
IfStatement: checkConstantCondition,
ConditionalExpression: reportIfConstant,
IfStatement: reportIfConstant,
WhileStatement: checkLoop,
"WhileStatement:exit": checkConstantConditionLoopInSet,
DoWhileStatement: checkLoop,
ForStatement: checkLoop
"DoWhileStatement:exit": checkConstantConditionLoopInSet,
ForStatement: checkLoop,
"ForStatement > .test": node => checkLoop(node.parent),
"ForStatement:exit": checkConstantConditionLoopInSet,
FunctionDeclaration: enterFunction,
"FunctionDeclaration:exit": exitFunction,
YieldExpression: () => loopsInCurrentScope.clear()
};
}

2
tools/eslint/lib/rules/no-else-return.js

@ -99,7 +99,7 @@ module.exports = {
// https://github.com/eslint/eslint/issues/8026
return new FixTracker(fixer, sourceCode)
.retainEnclosingFunction(node)
.replaceTextRange([elseToken.start, node.end], fixedSource);
.replaceTextRange([elseToken.range[0], node.range[1]], fixedSource);
}
});
}

4
tools/eslint/lib/rules/no-extra-parens.js

@ -418,6 +418,7 @@ module.exports = {
function checkExpressionOrExportStatement(node) {
const firstToken = isParenthesised(node) ? sourceCode.getTokenBefore(node) : sourceCode.getFirstToken(node);
const secondToken = sourceCode.getTokenAfter(firstToken, astUtils.isNotOpeningParenToken);
const thirdToken = secondToken ? sourceCode.getTokenAfter(secondToken) : null;
if (
astUtils.isOpeningParenToken(firstToken) &&
@ -427,7 +428,8 @@ module.exports = {
secondToken.value === "function" ||
secondToken.value === "class" ||
secondToken.value === "let" && astUtils.isOpeningBracketToken(sourceCode.getTokenAfter(secondToken, astUtils.isNotClosingParenToken))
)
) ||
secondToken && secondToken.type === "Identifier" && secondToken.value === "async" && thirdToken && thirdToken.type === "Keyword" && thirdToken.value === "function"
)
) {
tokensToIgnore.add(secondToken);

12
tools/eslint/lib/rules/no-inner-declarations.js

@ -63,10 +63,14 @@ module.exports = {
body.distance === 2);
if (!valid) {
context.report({ node, message: "Move {{type}} declaration to {{body}} root.", data: {
type: (node.type === "FunctionDeclaration" ? "function" : "variable"),
body: (body.type === "Program" ? "program" : "function body")
} });
context.report({
node,
message: "Move {{type}} declaration to {{body}} root.",
data: {
type: (node.type === "FunctionDeclaration" ? "function" : "variable"),
body: (body.type === "Program" ? "program" : "function body")
}
});
}
}

168
tools/eslint/lib/rules/no-multi-spaces.js

@ -44,68 +44,11 @@ module.exports = {
},
create(context) {
// the index of the last comment that was checked
const sourceCode = context.getSourceCode(),
exceptions = { Property: true },
options = context.options[0] || {},
ignoreEOLComments = options.ignoreEOLComments;
let hasExceptions = true,
lastCommentIndex = 0;
if (options && options.exceptions) {
Object.keys(options.exceptions).forEach(key => {
if (options.exceptions[key]) {
exceptions[key] = true;
} else {
delete exceptions[key];
}
});
hasExceptions = Object.keys(exceptions).length > 0;
}
/**
* Checks if a given token is the last token of the line or not.
* @param {Token} token The token to check.
* @returns {boolean} Whether or not a token is at the end of the line it occurs in.
* @private
*/
function isLastTokenOfLine(token) {
const nextToken = sourceCode.getTokenAfter(token, { includeComments: true });
// nextToken is null if the comment is the last token in the program.
if (!nextToken) {
return true;
}
return !astUtils.isTokenOnSameLine(token, nextToken);
}
/**
* Determines if a given source index is in a comment or not by checking
* the index against the comment range. Since the check goes straight
* through the file, once an index is passed a certain comment, we can
* go to the next comment to check that.
* @param {int} index The source index to check.
* @param {ASTNode[]} comments An array of comment nodes.
* @returns {boolean} True if the index is within a comment, false if not.
* @private
*/
function isIndexInComment(index, comments) {
while (lastCommentIndex < comments.length) {
const comment = comments[lastCommentIndex];
if (comment.range[0] < index && index < comment.range[1]) {
return true;
} else if (index > comment.range[1]) {
lastCommentIndex++;
} else {
break;
}
}
return false;
}
const sourceCode = context.getSourceCode();
const options = context.options[0] || {};
const ignoreEOLComments = options.ignoreEOLComments;
const exceptions = Object.assign({ Property: true }, options.exceptions);
const hasExceptions = Object.keys(exceptions).filter(key => exceptions[key]).length > 0;
/**
* Formats value of given comment token for error message by truncating its length.
@ -116,75 +59,70 @@ module.exports = {
function formatReportedCommentValue(token) {
const valueLines = token.value.split("\n");
const value = valueLines[0];
const formattedValue = `${value.substring(0, 12)}...`;
const formattedValue = `${value.slice(0, 12)}...`;
return valueLines.length === 1 && value.length <= 12 ? value : formattedValue;
}
/**
* Creates a fix function that removes the multiple spaces between the two tokens
* @param {Token} leftToken left token
* @param {Token} rightToken right token
* @returns {Function} fix function
* @private
*/
function createFix(leftToken, rightToken) {
return function(fixer) {
return fixer.replaceTextRange([leftToken.range[1], rightToken.range[0]], " ");
};
}
//--------------------------------------------------------------------------
// Public
//--------------------------------------------------------------------------
return {
Program() {
sourceCode.tokensAndComments.forEach((leftToken, leftIndex, tokensAndComments) => {
if (leftIndex === tokensAndComments.length - 1) {
return;
}
const rightToken = tokensAndComments[leftIndex + 1];
// Ignore tokens that don't have 2 spaces between them or are on different lines
if (
!sourceCode.text.slice(leftToken.range[1], rightToken.range[0]).includes(" ") ||
leftToken.loc.end.line < rightToken.loc.start.line
) {
return;
}
const source = sourceCode.getText(),
allComments = sourceCode.getAllComments(),
pattern = /[^\s].*? {2,}/g;
let parent;
while (pattern.test(source)) {
// do not flag anything inside of comments
if (!isIndexInComment(pattern.lastIndex, allComments)) {
const token = sourceCode.getTokenByRangeStart(pattern.lastIndex, { includeComments: true });
if (token) {
if (ignoreEOLComments && astUtils.isCommentToken(token) && isLastTokenOfLine(token)) {
return;
}
const previousToken = sourceCode.getTokenBefore(token, { includeComments: true });
// Ignore comments that are the last token on their line if `ignoreEOLComments` is active.
if (
ignoreEOLComments &&
astUtils.isCommentToken(rightToken) &&
(
leftIndex === tokensAndComments.length - 2 ||
rightToken.loc.end.line < tokensAndComments[leftIndex + 2].loc.start.line
)
) {
return;
}
if (hasExceptions) {
parent = sourceCode.getNodeByRangeIndex(pattern.lastIndex - 1);
}
// Ignore tokens that are in a node in the "exceptions" object
if (hasExceptions) {
const parentNode = sourceCode.getNodeByRangeIndex(rightToken.range[0] - 1);
if (!parent || !exceptions[parent.type]) {
let value = token.value;
if (token.type === "Block") {
value = `/*${formatReportedCommentValue(token)}*/`;
} else if (token.type === "Line") {
value = `//${formatReportedCommentValue(token)}`;
}
context.report({
node: token,
loc: token.loc.start,
message: "Multiple spaces found before '{{value}}'.",
data: { value },
fix: createFix(previousToken, token)
});
}
if (parentNode && exceptions[parentNode.type]) {
return;
}
}
let displayValue;
if (rightToken.type === "Block") {
displayValue = `/*${formatReportedCommentValue(rightToken)}*/`;
} else if (rightToken.type === "Line") {
displayValue = `//${formatReportedCommentValue(rightToken)}`;
} else {
displayValue = rightToken.value;
}
}
context.report({
node: rightToken,
loc: rightToken.loc.start,
message: "Multiple spaces found before '{{displayValue}}'.",
data: { displayValue },
fix: fixer => fixer.replaceTextRange([leftToken.range[1], rightToken.range[0]], " ")
});
});
}
};

4
tools/eslint/lib/rules/no-regex-spaces.js

@ -74,7 +74,7 @@ module.exports = {
nodeValue = token.value;
if (nodeType === "RegularExpression") {
checkRegex(node, nodeValue, token.start);
checkRegex(node, nodeValue, token.range[0]);
}
}
@ -100,7 +100,7 @@ module.exports = {
const shadowed = regExpVar && regExpVar.defs.length > 0;
if (node.callee.type === "Identifier" && node.callee.name === "RegExp" && isString(node.arguments[0]) && !shadowed) {
checkRegex(node, node.arguments[0].value, node.arguments[0].start + 1);
checkRegex(node, node.arguments[0].value, node.arguments[0].range[0] + 1);
}
}

59
tools/eslint/lib/rules/no-restricted-globals.js

@ -4,6 +4,13 @@
*/
"use strict";
//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
const DEFAULT_MESSAGE_TEMPLATE = "Unexpected use of '{{name}}'.",
CUSTOM_MESSAGE_TEMPLATE = "Unexpected use of '{{name}}'. {{customMessage}}";
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
@ -19,20 +26,43 @@ module.exports = {
schema: {
type: "array",
items: {
type: "string"
oneOf: [
{
type: "string"
},
{
type: "object",
properties: {
name: { type: "string" },
message: { type: "string" }
},
required: ["name"],
additionalProperties: false
}
]
},
uniqueItems: true
uniqueItems: true,
minItems: 0
}
},
create(context) {
const restrictedGlobals = context.options;
// if no globals are restricted we don't need to check
if (restrictedGlobals.length === 0) {
// If no globals are restricted, we don't need to do anything
if (context.options.length === 0) {
return {};
}
const restrictedGlobalMessages = context.options.reduce((memo, option) => {
if (typeof option === "string") {
memo[option] = null;
} else {
memo[option.name] = option.message;
}
return memo;
}, {});
/**
* Report a variable to be used as a restricted global.
* @param {Reference} reference the variable reference
@ -40,9 +70,20 @@ module.exports = {
* @private
*/
function reportReference(reference) {
context.report({ node: reference.identifier, message: "Unexpected use of '{{name}}'.", data: {
name: reference.identifier.name
} });
const name = reference.identifier.name,
customMessage = restrictedGlobalMessages[name],
message = customMessage
? CUSTOM_MESSAGE_TEMPLATE
: DEFAULT_MESSAGE_TEMPLATE;
context.report({
node: reference.identifier,
message,
data: {
name,
customMessage
}
});
}
/**
@ -52,7 +93,7 @@ module.exports = {
* @private
*/
function isRestricted(name) {
return restrictedGlobals.indexOf(name) >= 0;
return restrictedGlobalMessages.hasOwnProperty(name);
}
return {

30
tools/eslint/lib/rules/no-restricted-properties.js

@ -109,20 +109,28 @@ module.exports = {
if (matchedObjectProperty) {
const message = matchedObjectProperty.message ? ` ${matchedObjectProperty.message}` : "";
// eslint-disable-next-line eslint-plugin/report-message-format
context.report({ node, message: "'{{objectName}}.{{propertyName}}' is restricted from being used.{{message}}", data: {
objectName,
propertyName,
message
} });
context.report({
node,
// eslint-disable-next-line eslint-plugin/report-message-format
message: "'{{objectName}}.{{propertyName}}' is restricted from being used.{{message}}",
data: {
objectName,
propertyName,
message
}
});
} else if (globalMatchedProperty) {
const message = globalMatchedProperty.message ? ` ${globalMatchedProperty.message}` : "";
// eslint-disable-next-line eslint-plugin/report-message-format
context.report({ node, message: "'{{propertyName}}' is restricted from being used.{{message}}", data: {
propertyName,
message
} });
context.report({
node,
// eslint-disable-next-line eslint-plugin/report-message-format
message: "'{{propertyName}}' is restricted from being used.{{message}}",
data: {
propertyName,
message
}
});
}
}

12
tools/eslint/lib/rules/no-tabs.js

@ -31,10 +31,14 @@ module.exports = {
const match = regex.exec(line);
if (match) {
context.report({ node, loc: {
line: index + 1,
column: match.index + 1
}, message: "Unexpected tab character." });
context.report({
node,
loc: {
line: index + 1,
column: match.index + 1
},
message: "Unexpected tab character."
});
}
});
}

29
tools/eslint/lib/rules/no-underscore-dangle.js

@ -32,6 +32,9 @@ module.exports = {
},
allowAfterSuper: {
type: "boolean"
},
enforceInMethodNames: {
type: "boolean"
}
},
additionalProperties: false
@ -45,6 +48,7 @@ module.exports = {
const ALLOWED_VARIABLES = options.allow ? options.allow : [];
const allowAfterThis = typeof options.allowAfterThis !== "undefined" ? options.allowAfterThis : false;
const allowAfterSuper = typeof options.allowAfterSuper !== "undefined" ? options.allowAfterSuper : false;
const enforceInMethodNames = typeof options.enforceInMethodNames !== "undefined" ? options.enforceInMethodNames : false;
//-------------------------------------------------------------------------
// Helpers
@ -162,6 +166,27 @@ module.exports = {
}
}
/**
* Check if method declaration or method property has a underscore at the end
* @param {ASTNode} node node to evaluate
* @returns {void}
* @private
*/
function checkForTrailingUnderscoreInMethod(node) {
const identifier = node.key.name;
const isMethod = node.type === "MethodDefinition" || node.type === "Property" && node.method;
if (typeof identifier !== "undefined" && enforceInMethodNames && isMethod && hasTrailingUnderscore(identifier)) {
context.report({
node,
message: "Unexpected dangling '_' in '{{identifier}}'.",
data: {
identifier
}
});
}
}
//--------------------------------------------------------------------------
// Public API
//--------------------------------------------------------------------------
@ -169,7 +194,9 @@ module.exports = {
return {
FunctionDeclaration: checkForTrailingUnderscoreInFunctionDeclaration,
VariableDeclarator: checkForTrailingUnderscoreInVariableExpression,
MemberExpression: checkForTrailingUnderscoreInMemberExpression
MemberExpression: checkForTrailingUnderscoreInMemberExpression,
MethodDefinition: checkForTrailingUnderscoreInMethod,
Property: checkForTrailingUnderscoreInMethod
};
}

18
tools/eslint/lib/rules/object-curly-newline.js

@ -143,6 +143,8 @@ module.exports = {
first.loc.start.line !== last.loc.end.line
)
);
const hasCommentsFirstToken = astUtils.isCommentToken(first);
const hasCommentsLastToken = astUtils.isCommentToken(last);
/*
* Use tokens or comments to check multiline or not.
@ -162,6 +164,10 @@ module.exports = {
node,
loc: openBrace.loc.start,
fix(fixer) {
if (hasCommentsFirstToken) {
return null;
}
return fixer.insertTextAfter(openBrace, "\n");
}
});
@ -172,6 +178,10 @@ module.exports = {
node,
loc: closeBrace.loc.start,
fix(fixer) {
if (hasCommentsLastToken) {
return null;
}
return fixer.insertTextBefore(closeBrace, "\n");
}
});
@ -190,6 +200,10 @@ module.exports = {
node,
loc: openBrace.loc.start,
fix(fixer) {
if (hasCommentsFirstToken) {
return null;
}
return fixer.removeRange([
openBrace.range[1],
first.range[0]
@ -206,6 +220,10 @@ module.exports = {
node,
loc: closeBrace.loc.start,
fix(fixer) {
if (hasCommentsLastToken) {
return null;
}
return fixer.removeRange([
last.range[1],
closeBrace.range[0]

2
tools/eslint/lib/rules/object-curly-spacing.js

@ -174,7 +174,7 @@ module.exports = {
options.arraysInObjectsException && astUtils.isClosingBracketToken(penultimate) ||
options.objectsInObjectsException && astUtils.isClosingBraceToken(penultimate)
);
const penultimateType = shouldCheckPenultimate && sourceCode.getNodeByRangeIndex(penultimate.start).type;
const penultimateType = shouldCheckPenultimate && sourceCode.getNodeByRangeIndex(penultimate.range[0]).type;
const closingCurlyBraceMustBeSpaced = (
options.arraysInObjectsException && penultimateType === "ArrayExpression" ||

4
tools/eslint/lib/rules/padded-blocks.js

@ -202,7 +202,7 @@ module.exports = {
node,
loc: { line: tokenBeforeFirst.loc.start.line, column: tokenBeforeFirst.loc.start.column },
fix(fixer) {
return fixer.replaceTextRange([tokenBeforeFirst.end, firstBlockToken.start - firstBlockToken.loc.start.column], "\n");
return fixer.replaceTextRange([tokenBeforeFirst.range[1], firstBlockToken.range[0] - firstBlockToken.loc.start.column], "\n");
},
message: NEVER_MESSAGE
});
@ -215,7 +215,7 @@ module.exports = {
loc: { line: tokenAfterLast.loc.end.line, column: tokenAfterLast.loc.end.column - 1 },
message: NEVER_MESSAGE,
fix(fixer) {
return fixer.replaceTextRange([lastBlockToken.end, tokenAfterLast.start - tokenAfterLast.loc.start.column], "\n");
return fixer.replaceTextRange([lastBlockToken.range[1], tokenAfterLast.range[0] - tokenAfterLast.loc.start.column], "\n");
}
});
}

2
tools/eslint/lib/rules/padding-line-between-statements.js

@ -93,7 +93,7 @@ function isBlockLikeStatement(sourceCode, node) {
// Checks the last token is a closing brace of blocks.
const lastToken = sourceCode.getLastToken(node, astUtils.isNotSemicolonToken);
const belongingNode = astUtils.isClosingBraceToken(lastToken)
const belongingNode = lastToken && astUtils.isClosingBraceToken(lastToken)
? sourceCode.getNodeByRangeIndex(lastToken.range[0])
: null;

102
tools/eslint/lib/rules/prefer-destructuring.js

@ -15,19 +15,55 @@ module.exports = {
category: "ECMAScript 6",
recommended: false
},
schema: [
{
type: "object",
properties: {
array: {
type: "boolean"
// old support {array: Boolean, object: Boolean}
// new support {VariableDeclarator: {}, AssignmentExpression: {}}
oneOf: [
{
type: "object",
properties: {
VariableDeclarator: {
type: "object",
properties: {
array: {
type: "boolean"
},
object: {
type: "boolean"
}
},
additionalProperties: false
},
AssignmentExpression: {
type: "object",
properties: {
array: {
type: "boolean"
},
object: {
type: "boolean"
}
},
additionalProperties: false
}
},
additionalProperties: false
},
object: {
type: "boolean"
{
type: "object",
properties: {
array: {
type: "boolean"
},
object: {
type: "boolean"
}
},
additionalProperties: false
}
},
additionalProperties: false
]
},
{
type: "object",
@ -42,26 +78,17 @@ module.exports = {
},
create(context) {
let checkArrays = true;
let checkObjects = true;
let enforceForRenamedProperties = false;
const enabledTypes = context.options[0];
const additionalOptions = context.options[1];
const enforceForRenamedProperties = context.options[1] && context.options[1].enforceForRenamedProperties;
let normalizedOptions = {
VariableDeclarator: { array: true, object: true },
AssignmentExpression: { array: true, object: true }
};
if (enabledTypes) {
if (typeof enabledTypes.array !== "undefined") {
checkArrays = enabledTypes.array;
}
if (typeof enabledTypes.object !== "undefined") {
checkObjects = enabledTypes.object;
}
}
if (additionalOptions) {
if (typeof additionalOptions.enforceForRenamedProperties !== "undefined") {
enforceForRenamedProperties = additionalOptions.enforceForRenamedProperties;
}
normalizedOptions = typeof enabledTypes.array !== "undefined" || typeof enabledTypes.object !== "undefined"
? { VariableDeclarator: enabledTypes, AssignmentExpression: enabledTypes }
: enabledTypes;
}
//--------------------------------------------------------------------------
@ -69,7 +96,18 @@ module.exports = {
//--------------------------------------------------------------------------
/**
* Determines if the given node node is accessing an array index
* @param {string} nodeType "AssignmentExpression" or "VariableDeclarator"
* @param {string} destructuringType "array" or "object"
* @returns {boolean} `true` if the destructuring type should be checked for the given node
*/
function shouldCheck(nodeType, destructuringType) {
return normalizedOptions &&
normalizedOptions[nodeType] &&
normalizedOptions[nodeType][destructuringType];
}
/**
* Determines if the given node is accessing an array index
*
* This is used to differentiate array index access from object property
* access.
@ -110,22 +148,22 @@ module.exports = {
}
if (isArrayIndexAccess(rightNode)) {
if (checkArrays) {
if (shouldCheck(reportNode.type, "array")) {
report(reportNode, "array");
}
return;
}
if (checkObjects && enforceForRenamedProperties) {
if (shouldCheck(reportNode.type, "object") && enforceForRenamedProperties) {
report(reportNode, "object");
return;
}
if (checkObjects) {
if (shouldCheck(reportNode.type, "object")) {
const property = rightNode.property;
if ((property.type === "Literal" && leftNode.name === property.value) ||
(property.type === "Identifier" && leftNode.name === property.name)) {
if ((property.type === "Literal" && leftNode.name === property.value) || (property.type === "Identifier" &&
leftNode.name === property.name)) {
report(reportNode, "object");
}
}

43
tools/eslint/lib/rules/prefer-numeric-literals.js

@ -5,6 +5,33 @@
"use strict";
//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
/**
* Checks to see if a CallExpression's callee node is `parseInt` or
* `Number.parseInt`.
* @param {ASTNode} calleeNode The callee node to evaluate.
* @returns {boolean} True if the callee is `parseInt` or `Number.parseInt`,
* false otherwise.
*/
function isParseInt(calleeNode) {
switch (calleeNode.type) {
case "Identifier":
return calleeNode.name === "parseInt";
case "MemberExpression":
return calleeNode.object.type === "Identifier" &&
calleeNode.object.name === "Number" &&
calleeNode.property.type === "Identifier" &&
calleeNode.property.name === "parseInt";
// no default
}
return false;
}
//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
@ -12,7 +39,7 @@
module.exports = {
meta: {
docs: {
description: "disallow `parseInt()` in favor of binary, octal, and hexadecimal literals",
description: "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals",
category: "ECMAScript 6",
recommended: false
},
@ -23,6 +50,8 @@ module.exports = {
},
create(context) {
const sourceCode = context.getSourceCode();
const radixMap = {
2: "binary",
8: "octal",
@ -35,9 +64,9 @@ module.exports = {
16: "0x"
};
//--------------------------------------------------------------------------
//----------------------------------------------------------------------
// Public
//--------------------------------------------------------------------------
//----------------------------------------------------------------------
return {
@ -51,16 +80,16 @@ module.exports = {
// only error if the radix is 2, 8, or 16
const radixName = radixMap[node.arguments[1].value];
if (node.callee.type === "Identifier" &&
node.callee.name === "parseInt" &&
if (isParseInt(node.callee) &&
radixName &&
node.arguments[0].type === "Literal"
) {
context.report({
node,
message: "Use {{radixName}} literals instead of parseInt().",
message: "Use {{radixName}} literals instead of {{functionName}}().",
data: {
radixName
radixName,
functionName: sourceCode.getText(node.callee)
},
fix(fixer) {
const newPrefix = prefixMap[node.arguments[1].value];

12
tools/eslint/lib/rules/prefer-reflect.js

@ -83,10 +83,14 @@ module.exports = {
* @returns {void}
*/
function report(node, existing, substitute) {
context.report({ node, message: "Avoid using {{existing}}, instead use {{substitute}}.", data: {
existing,
substitute
} });
context.report({
node,
message: "Avoid using {{existing}}, instead use {{substitute}}.",
data: {
existing,
substitute
}
});
}
return {

4
tools/eslint/lib/rules/prefer-template.js

@ -74,7 +74,7 @@ function startsWithTemplateCurly(node) {
return startsWithTemplateCurly(node.left);
}
if (node.type === "TemplateLiteral") {
return node.expressions.length && node.quasis.length && node.quasis[0].start === node.quasis[0].end;
return node.expressions.length && node.quasis.length && node.quasis[0].range[0] === node.quasis[0].range[1];
}
return node.type !== "Literal" || typeof node.value !== "string";
}
@ -89,7 +89,7 @@ function endsWithTemplateCurly(node) {
return startsWithTemplateCurly(node.right);
}
if (node.type === "TemplateLiteral") {
return node.expressions.length && node.quasis.length && node.quasis[node.quasis.length - 1].start === node.quasis[node.quasis.length - 1].end;
return node.expressions.length && node.quasis.length && node.quasis[node.quasis.length - 1].range[0] === node.quasis[node.quasis.length - 1].range[1];
}
return node.type !== "Literal" || typeof node.value !== "string";
}

2
tools/eslint/lib/rules/space-infix-ops.js

@ -112,7 +112,7 @@ module.exports = {
const nonSpacedNode = getFirstNonSpacedToken(leftNode, rightNode);
if (nonSpacedNode) {
if (!(int32Hint && sourceCode.getText(node).substr(-2) === "|0")) {
if (!(int32Hint && sourceCode.getText(node).endsWith("|0"))) {
report(node, nonSpacedNode);
}
}

4
tools/eslint/lib/rules/spaced-comment.js

@ -303,9 +303,9 @@ module.exports = {
node,
fix(fixer) {
if (requireSpace) {
return fixer.insertTextAfterRange([node.start, node.end - 2], " ");
return fixer.insertTextAfterRange([node.range[0], node.range[1] - 2], " ");
}
const end = node.end - 2,
const end = node.range[1] - 2,
start = end - match[0].length;
return fixer.replaceTextRange([start, end], "");

22
tools/eslint/lib/rules/valid-jsdoc.js

@ -362,14 +362,22 @@ module.exports = {
// TODO(nzakas): Figure out logical things to do with destructured, default, rest params
if (param.type === "Identifier") {
if (jsdocParams[i] && (name !== jsdocParams[i])) {
context.report({ node: jsdocNode, message: "Expected JSDoc for '{{name}}' but found '{{jsdocName}}'.", data: {
name,
jsdocName: jsdocParams[i]
} });
context.report({
node: jsdocNode,
message: "Expected JSDoc for '{{name}}' but found '{{jsdocName}}'.",
data: {
name,
jsdocName: jsdocParams[i]
}
});
} else if (!params[name] && !isOverride) {
context.report({ node: jsdocNode, message: "Missing JSDoc for parameter '{{name}}'.", data: {
name
} });
context.report({
node: jsdocNode,
message: "Missing JSDoc for parameter '{{name}}'.",
data: {
name
}
});
}
}
});

34
tools/eslint/lib/testers/rule-tester.js

@ -9,7 +9,7 @@
/*
* This is a wrapper around mocha to allow for DRY unittests for eslint
* Format:
* RuleTester.add("{ruleName}", {
* RuleTester.run("{ruleName}", {
* valid: [
* "{code}",
* { code: "{code}", options: {options}, globals: {globals}, parser: "{parser}", settings: {settings} }
@ -250,7 +250,6 @@ class RuleTester {
const testerConfig = this.testerConfig,
requiredScenarios = ["valid", "invalid"],
scenarioErrors = [],
result = {},
linter = this.linter;
if (lodash.isNil(test) || typeof test !== "object") {
@ -269,16 +268,13 @@ class RuleTester {
].concat(scenarioErrors).join("\n"));
}
/* eslint-disable no-shadow */
/**
* Run the rule for the given item
* @param {string} ruleName name of the rule
* @param {string|Object} item Item to run the rule against
* @returns {Object} Eslint run result
* @private
*/
function runRuleForItem(ruleName, item) {
function runRuleForItem(item) {
let config = lodash.cloneDeep(testerConfig),
code, filename, beforeAST, afterAST;
@ -350,27 +346,27 @@ class RuleTester {
try {
linter.rules.get = function(ruleId) {
const rule = originalGet.call(linter.rules, ruleId);
const originalRule = originalGet.call(linter.rules, ruleId);
if (typeof rule === "function") {
if (typeof originalRule === "function") {
return function(context) {
Object.freeze(context);
freezeDeeply(context.options);
freezeDeeply(context.settings);
freezeDeeply(context.parserOptions);
return rule(context);
return originalRule(context);
};
}
return {
meta: rule.meta,
meta: originalRule.meta,
create(context) {
Object.freeze(context);
freezeDeeply(context.options);
freezeDeeply(context.settings);
freezeDeeply(context.parserOptions);
return rule.create(context);
return originalRule.create(context);
}
};
@ -404,13 +400,12 @@ class RuleTester {
/**
* Check if the template is valid or not
* all valid cases go through this
* @param {string} ruleName name of the rule
* @param {string|Object} item Item to run the rule against
* @returns {void}
* @private
*/
function testValidTemplate(ruleName, item) {
const result = runRuleForItem(ruleName, item);
function testValidTemplate(item) {
const result = runRuleForItem(item);
const messages = result.messages;
assert.equal(messages.length, 0, util.format("Should have no errors but had %d: %s",
@ -444,16 +439,15 @@ class RuleTester {
/**
* Check if the template is invalid or not
* all invalid cases go through this.
* @param {string} ruleName name of the rule
* @param {string|Object} item Item to run the rule against
* @returns {void}
* @private
*/
function testInvalidTemplate(ruleName, item) {
function testInvalidTemplate(item) {
assert.ok(item.errors || item.errors === 0,
`Did not specify errors for an invalid test of ${ruleName}`);
const result = runRuleForItem(ruleName, item);
const result = runRuleForItem(item);
const messages = result.messages;
@ -543,7 +537,7 @@ class RuleTester {
test.valid.forEach(valid => {
RuleTester.it(typeof valid === "object" ? valid.code : valid, () => {
linter.defineRules(this.rules);
testValidTemplate(ruleName, valid);
testValidTemplate(valid);
});
});
});
@ -552,13 +546,11 @@ class RuleTester {
test.invalid.forEach(invalid => {
RuleTester.it(invalid.code, () => {
linter.defineRules(this.rules);
testInvalidTemplate(ruleName, invalid);
testInvalidTemplate(invalid);
});
});
});
});
return result.suite;
}
}

48
tools/eslint/lib/testers/test-parser.js

@ -0,0 +1,48 @@
/**
* @author Toru Nagashima <https://github.com/mysticatea>
*/
"use strict";
const espree = require("espree");
const Traverser = require("../util/traverser");
/**
* Define `start`/`end` properties as throwing error.
* @param {ASTNode} node The node to define.
* @returns {void}
*/
function defineStartEndAsError(node) {
Object.defineProperty(node, "start", {
get() {
throw new Error("Use node.range[0] instead of node.start");
},
configurable: true,
enumerable: false
});
Object.defineProperty(node, "end", {
get() {
throw new Error("Use node.range[1] instead of node.end");
},
configurable: true,
enumerable: false
});
}
/**
* Define `start`/`end` properties of all nodes of the given AST as throwing error.
* @param {ASTNode} ast The root node to errorize `start`/`end` properties.
* @returns {void}
*/
function defineStartEndAsErrorInTree(ast) {
new Traverser().traverse(ast, { enter: defineStartEndAsError });
ast.tokens.forEach(defineStartEndAsError);
ast.comments.forEach(defineStartEndAsError);
}
module.exports.parse = (code, options) => {
const ret = espree.parse(code, options);
defineStartEndAsErrorInTree(ret.ast || ret);
return ret;
};

17
tools/eslint/lib/util/npm-util.js

@ -10,7 +10,7 @@
//------------------------------------------------------------------------------
const fs = require("fs"),
childProcess = require("child_process"),
spawn = require("cross-spawn"),
path = require("path"),
log = require("../logging");
@ -50,22 +50,23 @@ function findPackageJson(startDir) {
* @returns {void}
*/
function installSyncSaveDev(packages) {
if (Array.isArray(packages)) {
packages = packages.join(" ");
if (!Array.isArray(packages)) {
packages = [packages];
}
childProcess.execSync(`npm i --save-dev ${packages}`, { stdio: "inherit", encoding: "utf8" });
spawn.sync("npm", ["i", "--save-dev"].concat(packages), { stdio: "inherit" });
}
/**
* Fetch `peerDependencies` of the given package by `npm show` command.
* @param {string} packageName The package name to fetch peerDependencies.
* @returns {string[]} Gotten peerDependencies.
* @returns {Object} Gotten peerDependencies.
*/
function fetchPeerDependencies(packageName) {
const fetchedText = childProcess.execSync(
`npm show --json ${packageName} peerDependencies`,
const fetchedText = spawn.sync(
"npm",
["show", "--json", packageName, "peerDependencies"],
{ encoding: "utf8" }
).trim();
).stdout.trim();
return JSON.parse(fetchedText || "{}");
}

1
tools/eslint/node_modules/.bin/acorn

@ -0,0 +1 @@
../acorn/bin/acorn

1
tools/eslint/node_modules/.bin/esparse

@ -0,0 +1 @@
../esprima/bin/esparse.js

1
tools/eslint/node_modules/.bin/esvalidate

@ -0,0 +1 @@
../esprima/bin/esvalidate.js

1
tools/eslint/node_modules/.bin/js-yaml

@ -0,0 +1 @@
../js-yaml/bin/js-yaml.js

1
tools/eslint/node_modules/.bin/mkdirp

@ -0,0 +1 @@
../mkdirp/bin/cmd.js

1
tools/eslint/node_modules/.bin/rimraf

@ -0,0 +1 @@
../rimraf/bin.js

1
tools/eslint/node_modules/.bin/semver

@ -0,0 +1 @@
../semver/bin/semver

1
tools/eslint/node_modules/.bin/which

@ -0,0 +1 @@
../which/bin/which

1
tools/eslint/node_modules/acorn-jsx/node_modules/.bin/acorn

@ -0,0 +1 @@
../acorn/bin/acorn

62
tools/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json

@ -1,34 +1,56 @@
{
"_from": "acorn@^3.0.4",
"_args": [
[
{
"raw": "acorn@^3.0.4",
"scope": null,
"escapedName": "acorn",
"name": "acorn",
"rawSpec": "^3.0.4",
"spec": ">=3.0.4 <4.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/acorn-jsx"
]
],
"_from": "acorn@>=3.0.4 <4.0.0",
"_id": "acorn@3.3.0",
"_inBundle": false,
"_integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
"_inCache": true,
"_location": "/eslint/acorn-jsx/acorn",
"_nodeVersion": "6.3.0",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/acorn-3.3.0.tgz_1469481913382_0.3856039580423385"
},
"_npmUser": {
"name": "marijn",
"email": "marijnh@gmail.com"
},
"_npmVersion": "3.10.3",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "acorn@^3.0.4",
"name": "acorn",
"scope": null,
"escapedName": "acorn",
"name": "acorn",
"rawSpec": "^3.0.4",
"saveSpec": null,
"fetchSpec": "^3.0.4"
"spec": ">=3.0.4 <4.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/acorn-jsx"
],
"_resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
"_shasum": "45e37fb39e8da3f25baee3ff5369e2bb5f22017a",
"_shrinkwrap": null,
"_spec": "acorn@^3.0.4",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/acorn-jsx",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/acorn-jsx",
"bin": {
"acorn": "./bin/acorn"
},
"bugs": {
"url": "https://github.com/ternjs/acorn/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "List of Acorn contributors. Updated before every release."
@ -205,33 +227,39 @@
"name": "zsjforcn"
}
],
"deprecated": false,
"dependencies": {},
"description": "ECMAScript parser",
"devDependencies": {
"rollup": "^0.34.1",
"rollup-plugin-buble": "^0.11.0",
"unicode-9.0.0": "^0.7.0"
},
"directories": {},
"dist": {
"shasum": "45e37fb39e8da3f25baee3ff5369e2bb5f22017a",
"tarball": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz"
},
"engines": {
"node": ">=0.4.0"
},
"gitHead": "693c5fe9257c3e114a7097dc9196d6e484e52809",
"homepage": "https://github.com/ternjs/acorn",
"jsnext:main": "dist/acorn.es.js",
"license": "MIT",
"main": "dist/acorn.js",
"maintainers": [
{
"name": "Marijn Haverbeke",
"email": "marijnh@gmail.com",
"url": "http://marijnhaverbeke.nl"
"name": "marijn",
"email": "marijnh@gmail.com"
},
{
"name": "Ingvar Stepanyan",
"email": "me@rreverser.com",
"url": "http://rreverser.com/"
"name": "rreverser",
"email": "me@rreverser.com"
}
],
"name": "acorn",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/ternjs/acorn.git"

56
tools/eslint/node_modules/acorn-jsx/package.json

@ -1,50 +1,78 @@
{
"_from": "acorn-jsx@^3.0.0",
"_args": [
[
{
"raw": "acorn-jsx@^3.0.0",
"scope": null,
"escapedName": "acorn-jsx",
"name": "acorn-jsx",
"rawSpec": "^3.0.0",
"spec": ">=3.0.0 <4.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/espree"
]
],
"_from": "acorn-jsx@>=3.0.0 <4.0.0",
"_id": "acorn-jsx@3.0.1",
"_inBundle": false,
"_integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
"_inCache": true,
"_location": "/eslint/acorn-jsx",
"_nodeVersion": "6.0.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/acorn-jsx-3.0.1.tgz_1462206645285_0.17844340158626437"
},
"_npmUser": {
"name": "rreverser",
"email": "me@rreverser.com"
},
"_npmVersion": "3.8.6",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "acorn-jsx@^3.0.0",
"name": "acorn-jsx",
"scope": null,
"escapedName": "acorn-jsx",
"name": "acorn-jsx",
"rawSpec": "^3.0.0",
"saveSpec": null,
"fetchSpec": "^3.0.0"
"spec": ">=3.0.0 <4.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/espree"
],
"_resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
"_shasum": "afdf9488fb1ecefc8348f6fb22f464e32a58b36b",
"_shrinkwrap": null,
"_spec": "acorn-jsx@^3.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/espree",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/espree",
"bugs": {
"url": "https://github.com/RReverser/acorn-jsx/issues"
},
"bundleDependencies": false,
"dependencies": {
"acorn": "^3.0.4"
},
"deprecated": false,
"description": "Alternative, faster React.js JSX parser",
"devDependencies": {
"chai": "^3.0.0",
"mocha": "^2.2.5"
},
"directories": {},
"dist": {
"shasum": "afdf9488fb1ecefc8348f6fb22f464e32a58b36b",
"tarball": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz"
},
"gitHead": "05852d8ae9476b7f8a25e417665e2265528d5fb9",
"homepage": "https://github.com/RReverser/acorn-jsx",
"license": "MIT",
"maintainers": [
{
"name": "Ingvar Stepanyan",
"email": "me@rreverser.com",
"url": "http://rreverser.com/"
"name": "rreverser",
"email": "me@rreverser.com"
}
],
"name": "acorn-jsx",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/RReverser/acorn-jsx.git"

0
tools/eslint/node_modules/acorn/bin/acorn

63
tools/eslint/node_modules/acorn/package.json

@ -1,34 +1,56 @@
{
"_from": "acorn@^5.1.1",
"_args": [
[
{
"raw": "acorn@^5.1.1",
"scope": null,
"escapedName": "acorn",
"name": "acorn",
"rawSpec": "^5.1.1",
"spec": ">=5.1.1 <6.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/espree"
]
],
"_from": "acorn@>=5.1.1 <6.0.0",
"_id": "acorn@5.1.1",
"_inBundle": false,
"_integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==",
"_inCache": true,
"_location": "/eslint/acorn",
"_nodeVersion": "6.9.1",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/acorn-5.1.1.tgz_1499327622251_0.7539563917089254"
},
"_npmUser": {
"name": "marijn",
"email": "marijnh@gmail.com"
},
"_npmVersion": "5.0.4",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "acorn@^5.1.1",
"name": "acorn",
"scope": null,
"escapedName": "acorn",
"name": "acorn",
"rawSpec": "^5.1.1",
"saveSpec": null,
"fetchSpec": "^5.1.1"
"spec": ">=5.1.1 <6.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/espree"
],
"_resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz",
"_shasum": "53fe161111f912ab999ee887a90a0bc52822fd75",
"_shrinkwrap": null,
"_spec": "acorn@^5.1.1",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/espree",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/espree",
"bin": {
"acorn": "./bin/acorn"
},
"bugs": {
"url": "https://github.com/ternjs/acorn/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "List of Acorn contributors. Updated before every release."
@ -232,7 +254,7 @@
"name": "zsjforcn"
}
],
"deprecated": false,
"dependencies": {},
"description": "ECMAScript parser",
"devDependencies": {
"eslint": "^3.18.0",
@ -244,26 +266,29 @@
"rollup-plugin-buble": "^0.15.0",
"unicode-9.0.0": "^0.7.0"
},
"directories": {},
"dist": {
"integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==",
"shasum": "53fe161111f912ab999ee887a90a0bc52822fd75",
"tarball": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz"
},
"engines": {
"node": ">=0.4.0"
},
"gitHead": "8d80b2dd9166495dab85f5b7029d899dce252c82",
"homepage": "https://github.com/ternjs/acorn",
"license": "MIT",
"main": "dist/acorn.js",
"maintainers": [
{
"name": "Marijn Haverbeke",
"email": "marijnh@gmail.com",
"url": "http://marijnhaverbeke.nl"
},
{
"name": "Ingvar Stepanyan",
"email": "me@rreverser.com",
"url": "http://rreverser.com/"
"name": "marijn",
"email": "marijnh@gmail.com"
}
],
"module": "dist/acorn.es.js",
"name": "acorn",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/ternjs/acorn.git"

58
tools/eslint/node_modules/ajv-keywords/package.json

@ -1,35 +1,57 @@
{
"_from": "ajv-keywords@^1.0.0",
"_args": [
[
{
"raw": "ajv-keywords@^1.0.0",
"scope": null,
"escapedName": "ajv-keywords",
"name": "ajv-keywords",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/table"
]
],
"_from": "ajv-keywords@>=1.0.0 <2.0.0",
"_id": "ajv-keywords@1.5.1",
"_inBundle": false,
"_integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
"_inCache": true,
"_location": "/eslint/ajv-keywords",
"_nodeVersion": "4.6.1",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/ajv-keywords-1.5.1.tgz_1485107517951_0.29220994655042887"
},
"_npmUser": {
"name": "esp",
"email": "e.poberezkin@me.com"
},
"_npmVersion": "2.15.9",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ajv-keywords@^1.0.0",
"name": "ajv-keywords",
"scope": null,
"escapedName": "ajv-keywords",
"name": "ajv-keywords",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/table"
],
"_resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
"_shasum": "314dd0a4b3368fad3dfcdc54ede6171b886daf3c",
"_shrinkwrap": null,
"_spec": "ajv-keywords@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/table",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/table",
"author": {
"name": "Evgeny Poberezkin"
},
"bugs": {
"url": "https://github.com/epoberezkin/ajv-keywords/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "Custom JSON-Schema keywords for ajv validator",
"devDependencies": {
"ajv": "^4.10.0",
@ -46,10 +68,16 @@
"pre-commit": "^1.1.3",
"uuid": "^3.0.1"
},
"directories": {},
"dist": {
"shasum": "314dd0a4b3368fad3dfcdc54ede6171b886daf3c",
"tarball": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz"
},
"files": [
"index.js",
"keywords"
],
"gitHead": "33c43a2b190c9929fe9e3e9a32a38dace146abf4",
"homepage": "https://github.com/epoberezkin/ajv-keywords#readme",
"keywords": [
"JSON-Schema",
@ -58,10 +86,18 @@
],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "esp",
"email": "e.poberezkin@me.com"
}
],
"name": "ajv-keywords",
"optionalDependencies": {},
"peerDependencies": {
"ajv": ">=4.10.0"
},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/epoberezkin/ajv-keywords.git"

61
tools/eslint/node_modules/ajv/package.json

@ -1,41 +1,62 @@
{
"_from": "ajv@^5.2.0",
"_args": [
[
{
"raw": "ajv@^5.2.0",
"scope": null,
"escapedName": "ajv",
"name": "ajv",
"rawSpec": "^5.2.0",
"spec": ">=5.2.0 <6.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint"
]
],
"_from": "ajv@>=5.2.0 <6.0.0",
"_id": "ajv@5.2.2",
"_inBundle": false,
"_integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=",
"_inCache": true,
"_location": "/eslint/ajv",
"_nodeVersion": "6.9.1",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/ajv-5.2.2.tgz_1499725182137_0.19738126848824322"
},
"_npmUser": {
"name": "esp",
"email": "e.poberezkin@me.com"
},
"_npmVersion": "3.10.8",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ajv@^5.2.0",
"name": "ajv",
"scope": null,
"escapedName": "ajv",
"name": "ajv",
"rawSpec": "^5.2.0",
"saveSpec": null,
"fetchSpec": "^5.2.0"
"spec": ">=5.2.0 <6.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz",
"_shasum": "47c68d69e86f5d953103b0074a9430dc63da5e39",
"_shrinkwrap": null,
"_spec": "ajv@^5.2.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Evgeny Poberezkin"
},
"bugs": {
"url": "https://github.com/epoberezkin/ajv/issues"
},
"bundleDependencies": false,
"dependencies": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
"json-schema-traverse": "^0.3.0",
"json-stable-stringify": "^1.0.1"
},
"deprecated": false,
"description": "Another JSON Schema Validator",
"devDependencies": {
"ajv-async": "^0.1.0",
@ -69,6 +90,11 @@
"uglify-js": "^3.0.8",
"watch": "^1.0.0"
},
"directories": {},
"dist": {
"shasum": "47c68d69e86f5d953103b0074a9430dc63da5e39",
"tarball": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz"
},
"files": [
"lib/",
"dist/",
@ -76,6 +102,7 @@
"LICENSE",
".tonic_example.js"
],
"gitHead": "97a3185828bdb4c6649b9786c29949849ce4f73c",
"homepage": "https://github.com/epoberezkin/ajv",
"keywords": [
"JSON",
@ -89,6 +116,16 @@
],
"license": "MIT",
"main": "lib/ajv.js",
"maintainers": [
{
"name": "blakeembrey",
"email": "hello@blakeembrey.com"
},
{
"name": "esp",
"email": "e.poberezkin@me.com"
}
],
"name": "ajv",
"nyc": {
"exclude": [
@ -100,6 +137,8 @@
"text-summary"
]
},
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/epoberezkin/ajv.git"

58
tools/eslint/node_modules/ansi-escapes/package.json

@ -1,27 +1,50 @@
{
"_from": "ansi-escapes@^2.0.0",
"_args": [
[
{
"raw": "ansi-escapes@^2.0.0",
"scope": null,
"escapedName": "ansi-escapes",
"name": "ansi-escapes",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer"
]
],
"_from": "ansi-escapes@>=2.0.0 <3.0.0",
"_id": "ansi-escapes@2.0.0",
"_inBundle": false,
"_integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=",
"_inCache": true,
"_location": "/eslint/ansi-escapes",
"_nodeVersion": "4.7.3",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/ansi-escapes-2.0.0.tgz_1492961578751_0.06489237071946263"
},
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "2.15.11",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ansi-escapes@^2.0.0",
"name": "ansi-escapes",
"scope": null,
"escapedName": "ansi-escapes",
"name": "ansi-escapes",
"rawSpec": "^2.0.0",
"saveSpec": null,
"fetchSpec": "^2.0.0"
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/inquirer"
],
"_resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz",
"_shasum": "5bae52be424878dd9783e8910e3fc2922e83c81b",
"_shrinkwrap": null,
"_spec": "ansi-escapes@^2.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -30,19 +53,24 @@
"bugs": {
"url": "https://github.com/sindresorhus/ansi-escapes/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "ANSI escape codes for manipulating the terminal",
"devDependencies": {
"ava": "*",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "5bae52be424878dd9783e8910e3fc2922e83c81b",
"tarball": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz"
},
"engines": {
"node": ">=4"
},
"files": [
"index.js"
],
"gitHead": "5dcd620fd52165650d440152ce49fb3d3c679381",
"homepage": "https://github.com/sindresorhus/ansi-escapes#readme",
"keywords": [
"ansi",
@ -70,7 +98,15 @@
"iterm2"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "ansi-escapes",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/ansi-escapes.git"

67
tools/eslint/node_modules/ansi-regex/package.json

@ -1,19 +1,41 @@
{
"_from": "ansi-regex@^2.0.0",
"_args": [
[
{
"raw": "ansi-regex@^2.0.0",
"scope": null,
"escapedName": "ansi-regex",
"name": "ansi-regex",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/has-ansi"
]
],
"_from": "ansi-regex@>=2.0.0 <3.0.0",
"_id": "ansi-regex@2.1.1",
"_inBundle": false,
"_integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"_inCache": true,
"_location": "/eslint/ansi-regex",
"_nodeVersion": "0.10.32",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/ansi-regex-2.1.1.tgz_1484363378013_0.4482989883981645"
},
"_npmUser": {
"name": "qix",
"email": "i.am.qix@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ansi-regex@^2.0.0",
"name": "ansi-regex",
"scope": null,
"escapedName": "ansi-regex",
"name": "ansi-regex",
"rawSpec": "^2.0.0",
"saveSpec": null,
"fetchSpec": "^2.0.0"
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/has-ansi",
@ -21,8 +43,9 @@
],
"_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"_shasum": "c3b33ab5ee360d86e0e628f0468ae7ef27d654df",
"_shrinkwrap": null,
"_spec": "ansi-regex@^2.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/has-ansi",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/has-ansi",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -31,19 +54,24 @@
"bugs": {
"url": "https://github.com/chalk/ansi-regex/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "Regular expression for matching ANSI escape codes",
"devDependencies": {
"ava": "0.17.0",
"xo": "0.16.0"
},
"directories": {},
"dist": {
"shasum": "c3b33ab5ee360d86e0e628f0468ae7ef27d654df",
"tarball": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "7c908e7b4eb6cd82bfe1295e33fdf6d166c7ed85",
"homepage": "https://github.com/chalk/ansi-regex#readme",
"keywords": [
"ansi",
@ -75,22 +103,17 @@
"license": "MIT",
"maintainers": [
{
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "Joshua Appelman",
"email": "jappelman@xebia.com",
"url": "jbnicolai.com"
"name": "qix",
"email": "i.am.qix@gmail.com"
},
{
"name": "JD Ballard",
"email": "i.am.qix@gmail.com",
"url": "github.com/qix-"
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "ansi-regex",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/chalk/ansi-regex.git"

62
tools/eslint/node_modules/ansi-styles/package.json

@ -1,27 +1,50 @@
{
"_from": "ansi-styles@^2.2.1",
"_args": [
[
{
"raw": "ansi-styles@^2.2.1",
"scope": null,
"escapedName": "ansi-styles",
"name": "ansi-styles",
"rawSpec": "^2.2.1",
"spec": ">=2.2.1 <3.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/chalk"
]
],
"_from": "ansi-styles@>=2.2.1 <3.0.0",
"_id": "ansi-styles@2.2.1",
"_inBundle": false,
"_integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"_inCache": true,
"_location": "/eslint/ansi-styles",
"_nodeVersion": "4.3.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/ansi-styles-2.2.1.tgz_1459197317833_0.9694824463222176"
},
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "3.8.3",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ansi-styles@^2.2.1",
"name": "ansi-styles",
"scope": null,
"escapedName": "ansi-styles",
"name": "ansi-styles",
"rawSpec": "^2.2.1",
"saveSpec": null,
"fetchSpec": "^2.2.1"
"spec": ">=2.2.1 <3.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/chalk"
],
"_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"_shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
"_shrinkwrap": null,
"_spec": "ansi-styles@^2.2.1",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/chalk",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/chalk",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -30,18 +53,23 @@
"bugs": {
"url": "https://github.com/chalk/ansi-styles/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "ANSI escape codes for styling strings in the terminal",
"devDependencies": {
"mocha": "*"
},
"directories": {},
"dist": {
"shasum": "b432dd3358b634cf75e1e4664368240533c1ddbe",
"tarball": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "95c59b23be760108b6530ca1c89477c21b258032",
"homepage": "https://github.com/chalk/ansi-styles#readme",
"keywords": [
"ansi",
@ -68,17 +96,13 @@
"license": "MIT",
"maintainers": [
{
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "Joshua Appelman",
"email": "jappelman@xebia.com",
"url": "jbnicolai.com"
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "ansi-styles",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/chalk/ansi-styles.git"

57
tools/eslint/node_modules/argparse/package.json

@ -1,31 +1,53 @@
{
"_from": "argparse@^1.0.7",
"_args": [
[
{
"raw": "argparse@^1.0.7",
"scope": null,
"escapedName": "argparse",
"name": "argparse",
"rawSpec": "^1.0.7",
"spec": ">=1.0.7 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/js-yaml"
]
],
"_from": "argparse@>=1.0.7 <2.0.0",
"_id": "argparse@1.0.9",
"_inBundle": false,
"_integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
"_inCache": true,
"_location": "/eslint/argparse",
"_nodeVersion": "6.5.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/argparse-1.0.9.tgz_1475177461025_0.33920647646300495"
},
"_npmUser": {
"name": "vitaly",
"email": "vitaly@rcdesign.ru"
},
"_npmVersion": "3.10.3",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "argparse@^1.0.7",
"name": "argparse",
"scope": null,
"escapedName": "argparse",
"name": "argparse",
"rawSpec": "^1.0.7",
"saveSpec": null,
"fetchSpec": "^1.0.7"
"spec": ">=1.0.7 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/js-yaml"
],
"_resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
"_shasum": "73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86",
"_shrinkwrap": null,
"_spec": "argparse@^1.0.7",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/js-yaml",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/js-yaml",
"bugs": {
"url": "https://github.com/nodeca/argparse/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Eugene Shkuropat"
@ -37,7 +59,6 @@
"dependencies": {
"sprintf-js": "~1.0.2"
},
"deprecated": false,
"description": "Very powerful CLI arguments parser. Native port of argparse - python's options parsing library",
"devDependencies": {
"eslint": "^2.13.1",
@ -45,10 +66,16 @@
"mocha": "^3.1.0",
"ndoc": "^5.0.1"
},
"directories": {},
"dist": {
"shasum": "73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86",
"tarball": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz"
},
"files": [
"index.js",
"lib/"
],
"gitHead": "acb39f2d726b90d2eadf9e6574a938d6250ad248",
"homepage": "https://github.com/nodeca/argparse#readme",
"keywords": [
"cli",
@ -58,7 +85,15 @@
"args"
],
"license": "MIT",
"maintainers": [
{
"name": "vitaly",
"email": "vitaly@rcdesign.ru"
}
],
"name": "argparse",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/nodeca/argparse.git"

57
tools/eslint/node_modules/array-union/package.json

@ -1,27 +1,50 @@
{
"_from": "array-union@^1.0.1",
"_args": [
[
{
"raw": "array-union@^1.0.1",
"scope": null,
"escapedName": "array-union",
"name": "array-union",
"rawSpec": "^1.0.1",
"spec": ">=1.0.1 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/globby"
]
],
"_from": "array-union@>=1.0.1 <2.0.0",
"_id": "array-union@1.0.2",
"_inBundle": false,
"_integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"_inCache": true,
"_location": "/eslint/array-union",
"_nodeVersion": "4.4.2",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/array-union-1.0.2.tgz_1466079411551_0.23353995219804347"
},
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "2.15.0",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "array-union@^1.0.1",
"name": "array-union",
"scope": null,
"escapedName": "array-union",
"name": "array-union",
"rawSpec": "^1.0.1",
"saveSpec": null,
"fetchSpec": "^1.0.1"
"spec": ">=1.0.1 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/globby"
],
"_resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
"_shasum": "9a34410e4f4e3da23dea375be5be70f24778ec39",
"_shrinkwrap": null,
"_spec": "array-union@^1.0.1",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/globby",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/globby",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -30,22 +53,26 @@
"bugs": {
"url": "https://github.com/sindresorhus/array-union/issues"
},
"bundleDependencies": false,
"dependencies": {
"array-uniq": "^1.0.1"
},
"deprecated": false,
"description": "Create an array of unique values, in order, from the input arrays",
"devDependencies": {
"ava": "*",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "9a34410e4f4e3da23dea375be5be70f24778ec39",
"tarball": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "34e1d6a80baa4eac9723795a0674c14119ace1bd",
"homepage": "https://github.com/sindresorhus/array-union#readme",
"keywords": [
"array",
@ -60,7 +87,15 @@
"merge"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "array-union",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/array-union.git"

58
tools/eslint/node_modules/array-uniq/package.json

@ -1,27 +1,50 @@
{
"_from": "array-uniq@^1.0.1",
"_args": [
[
{
"raw": "array-uniq@^1.0.1",
"scope": null,
"escapedName": "array-uniq",
"name": "array-uniq",
"rawSpec": "^1.0.1",
"spec": ">=1.0.1 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/array-union"
]
],
"_from": "array-uniq@>=1.0.1 <2.0.0",
"_id": "array-uniq@1.0.3",
"_inBundle": false,
"_integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"_inCache": true,
"_location": "/eslint/array-uniq",
"_nodeVersion": "4.4.2",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/array-uniq-1.0.3.tgz_1466079716839_0.9139188586268574"
},
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "2.15.0",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "array-uniq@^1.0.1",
"name": "array-uniq",
"scope": null,
"escapedName": "array-uniq",
"name": "array-uniq",
"rawSpec": "^1.0.1",
"saveSpec": null,
"fetchSpec": "^1.0.1"
"spec": ">=1.0.1 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/array-union"
],
"_resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
"_shasum": "af6ac877a25cc7f74e058894753858dfdb24fdb6",
"_shrinkwrap": null,
"_spec": "array-uniq@^1.0.1",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/array-union",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/array-union",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -30,8 +53,7 @@
"bugs": {
"url": "https://github.com/sindresorhus/array-uniq/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "Create an array without duplicates",
"devDependencies": {
"ava": "*",
@ -39,12 +61,18 @@
"require-uncached": "^1.0.2",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "af6ac877a25cc7f74e058894753858dfdb24fdb6",
"tarball": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "3b5bf5a90a585b3950284d575f33d09663f6083a",
"homepage": "https://github.com/sindresorhus/array-uniq#readme",
"keywords": [
"array",
@ -57,7 +85,15 @@
"remove"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "array-uniq",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/array-uniq.git"

54
tools/eslint/node_modules/arrify/package.json

@ -1,27 +1,46 @@
{
"_from": "arrify@^1.0.0",
"_args": [
[
{
"raw": "arrify@^1.0.0",
"scope": null,
"escapedName": "arrify",
"name": "arrify",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/globby"
]
],
"_from": "arrify@>=1.0.0 <2.0.0",
"_id": "arrify@1.0.1",
"_inBundle": false,
"_integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"_inCache": true,
"_location": "/eslint/arrify",
"_nodeVersion": "4.2.1",
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "3.5.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "arrify@^1.0.0",
"name": "arrify",
"scope": null,
"escapedName": "arrify",
"name": "arrify",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/globby"
],
"_resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
"_shasum": "898508da2226f380df904728456849c1501a4b0d",
"_shrinkwrap": null,
"_spec": "arrify@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/globby",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/globby",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -30,19 +49,24 @@
"bugs": {
"url": "https://github.com/sindresorhus/arrify/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "Convert a value to an array",
"devDependencies": {
"ava": "*",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "898508da2226f380df904728456849c1501a4b0d",
"tarball": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "087edee1a58d5adaac6cae5a107886121ef43783",
"homepage": "https://github.com/sindresorhus/arrify#readme",
"keywords": [
"array",
@ -53,7 +77,15 @@
"value"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "arrify",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/arrify.git"

29
tools/eslint/node_modules/babel-code-frame/README.md

@ -35,9 +35,26 @@ If the column number is not known, you may pass `null` instead.
## Options
name | type | default | description
-----------------------|----------|-----------------|------------------------------------------------------
highlightCode | boolean | `false` | Syntax highlight the code as JavaScript for terminals
linesAbove | number | 2 | The number of lines to show above the error
linesBelow | number | 3 | The number of lines to show below the error
forceColor | boolean | `false` | Forcibly syntax highlight the code as JavaScript (for non-terminals); overrides highlightCode
### `highlightCode`
`boolean`, defaults to `false`.
Toggles syntax highlighting the code as JavaScript for terminals.
### `linesAbove`
`number`, defaults to `2`.
Adjust the number of lines to show above the error.
### `linesBelow`
`number`, defaults to `3`.
Adjust the number of lines to show below the error.
### `forceColor`
`boolean`, defaults to `false`.
Enable this to forcibly syntax highlight the code as JavaScript (for non-terminals); overrides `highlightCode`.

66
tools/eslint/node_modules/babel-code-frame/package-lock.json

@ -0,0 +1,66 @@
{
"name": "babel-code-frame",
"version": "6.22.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"esutils": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
},
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"requires": {
"ansi-regex": "2.1.1"
}
},
"js-tokens": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "2.1.1"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
}
}
}

86
tools/eslint/node_modules/babel-code-frame/package.json

@ -1,46 +1,98 @@
{
"_from": "babel-code-frame@^6.22.0",
"_id": "babel-code-frame@6.22.0",
"_inBundle": false,
"_integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=",
"_args": [
[
{
"raw": "babel-code-frame@^6.22.0",
"scope": null,
"escapedName": "babel-code-frame",
"name": "babel-code-frame",
"rawSpec": "^6.22.0",
"spec": ">=6.22.0 <7.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint"
]
],
"_from": "babel-code-frame@>=6.22.0 <7.0.0",
"_id": "babel-code-frame@6.26.0",
"_inCache": true,
"_location": "/eslint/babel-code-frame",
"_nodeVersion": "6.9.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/babel-code-frame-6.26.0.tgz_1502898849653_0.8458143274765462"
},
"_npmUser": {
"name": "hzoo",
"email": "hi@henryzoo.com"
},
"_npmVersion": "4.6.1",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "babel-code-frame@^6.22.0",
"name": "babel-code-frame",
"scope": null,
"escapedName": "babel-code-frame",
"name": "babel-code-frame",
"rawSpec": "^6.22.0",
"saveSpec": null,
"fetchSpec": "^6.22.0"
"spec": ">=6.22.0 <7.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
"_shasum": "027620bee567a88c32561574e7fd0801d33118e4",
"_resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"_shasum": "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b",
"_shrinkwrap": null,
"_spec": "babel-code-frame@^6.22.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Sebastian McKenzie",
"email": "sebmck@gmail.com"
},
"bundleDependencies": false,
"dependencies": {
"chalk": "^1.1.0",
"chalk": "^1.1.3",
"esutils": "^2.0.2",
"js-tokens": "^3.0.0"
"js-tokens": "^3.0.2"
},
"deprecated": false,
"description": "Generate errors that contain a code frame that point to source locations.",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b",
"tarball": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz"
},
"homepage": "https://babeljs.io/",
"license": "MIT",
"main": "lib/index.js",
"maintainers": [
{
"name": "thejameskyle",
"email": "me@thejameskyle.com"
},
{
"name": "sebmck",
"email": "sebmck@gmail.com"
},
{
"name": "danez",
"email": "daniel@tschinder.de"
},
{
"name": "hzoo",
"email": "hi@henryzoo.com"
},
{
"name": "loganfsmyth",
"email": "loganfsmyth@gmail.com"
}
],
"name": "babel-code-frame",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "https://github.com/babel/babel/tree/master/packages/babel-code-frame"
},
"version": "6.22.0"
"scripts": {},
"version": "6.26.0"
}

57
tools/eslint/node_modules/bail/package.json

@ -1,27 +1,50 @@
{
"_from": "bail@^1.0.0",
"_args": [
[
{
"raw": "bail@^1.0.0",
"scope": null,
"escapedName": "bail",
"name": "bail",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/unified"
]
],
"_from": "bail@>=1.0.0 <2.0.0",
"_id": "bail@1.0.2",
"_inBundle": false,
"_integrity": "sha1-99bBcxYwqfnw1NNe0fli4gdKF2Q=",
"_inCache": true,
"_location": "/bail",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/bail-1.0.2.tgz_1499596988656_0.6589261905755848"
},
"_npmUser": {
"name": "wooorm",
"email": "tituswormer@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "bail@^1.0.0",
"name": "bail",
"scope": null,
"escapedName": "bail",
"name": "bail",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/unified"
],
"_resolved": "https://registry.npmjs.org/bail/-/bail-1.0.2.tgz",
"_shasum": "f7d6c1731630a9f9f0d4d35ed1f962e2074a1764",
"_shrinkwrap": null,
"_spec": "bail@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/unified",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/unified",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
@ -30,7 +53,6 @@
"bugs": {
"url": "https://github.com/wooorm/bail/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
@ -39,7 +61,6 @@
}
],
"dependencies": {},
"deprecated": false,
"description": "Throw a given error",
"devDependencies": {
"browserify": "^14.0.0",
@ -50,9 +71,15 @@
"tape": "^4.0.0",
"xo": "^0.18.0"
},
"directories": {},
"dist": {
"shasum": "f7d6c1731630a9f9f0d4d35ed1f962e2074a1764",
"tarball": "https://registry.npmjs.org/bail/-/bail-1.0.2.tgz"
},
"files": [
"index.js"
],
"gitHead": "ee3ca49d6e9be066302667cfd39b9681516cd551",
"homepage": "https://github.com/wooorm/bail#readme",
"keywords": [
"fail",
@ -62,6 +89,12 @@
"error"
],
"license": "MIT",
"maintainers": [
{
"name": "wooorm",
"email": "tituswormer@gmail.com"
}
],
"name": "bail",
"nyc": {
"check-coverage": true,
@ -69,6 +102,8 @@
"functions": 100,
"branches": 100
},
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"remarkConfig": {
"plugins": [
"preset-wooorm"

57
tools/eslint/node_modules/balanced-match/package.json

@ -1,27 +1,50 @@
{
"_from": "balanced-match@^1.0.0",
"_args": [
[
{
"raw": "balanced-match@^1.0.0",
"scope": null,
"escapedName": "balanced-match",
"name": "balanced-match",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/brace-expansion"
]
],
"_from": "balanced-match@>=1.0.0 <2.0.0",
"_id": "balanced-match@1.0.0",
"_inBundle": false,
"_integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"_inCache": true,
"_location": "/eslint/balanced-match",
"_nodeVersion": "7.8.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/balanced-match-1.0.0.tgz_1497251909645_0.8755026108119637"
},
"_npmUser": {
"name": "juliangruber",
"email": "julian@juliangruber.com"
},
"_npmVersion": "4.2.0",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "balanced-match@^1.0.0",
"name": "balanced-match",
"scope": null,
"escapedName": "balanced-match",
"name": "balanced-match",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/brace-expansion"
],
"_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"_shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767",
"_shrinkwrap": null,
"_spec": "balanced-match@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/brace-expansion",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/brace-expansion",
"author": {
"name": "Julian Gruber",
"email": "mail@juliangruber.com",
@ -30,14 +53,18 @@
"bugs": {
"url": "https://github.com/juliangruber/balanced-match/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "Match balanced character pairs, like \"{\" and \"}\"",
"devDependencies": {
"matcha": "^0.7.0",
"tape": "^4.6.0"
},
"directories": {},
"dist": {
"shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767",
"tarball": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz"
},
"gitHead": "d701a549a7653a874eebce7eca25d3577dc868ac",
"homepage": "https://github.com/juliangruber/balanced-match",
"keywords": [
"match",
@ -48,7 +75,15 @@
],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "juliangruber",
"email": "julian@juliangruber.com"
}
],
"name": "balanced-match",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/juliangruber/balanced-match.git"

61
tools/eslint/node_modules/brace-expansion/package.json

@ -1,27 +1,50 @@
{
"_from": "brace-expansion@^1.1.7",
"_args": [
[
{
"raw": "brace-expansion@^1.1.7",
"scope": null,
"escapedName": "brace-expansion",
"name": "brace-expansion",
"rawSpec": "^1.1.7",
"spec": ">=1.1.7 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/minimatch"
]
],
"_from": "brace-expansion@>=1.1.7 <2.0.0",
"_id": "brace-expansion@1.1.8",
"_inBundle": false,
"_integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
"_inCache": true,
"_location": "/eslint/brace-expansion",
"_nodeVersion": "7.8.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/brace-expansion-1.1.8.tgz_1497251980593_0.6575565172825009"
},
"_npmUser": {
"name": "juliangruber",
"email": "julian@juliangruber.com"
},
"_npmVersion": "4.2.0",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "brace-expansion@^1.1.7",
"name": "brace-expansion",
"scope": null,
"escapedName": "brace-expansion",
"name": "brace-expansion",
"rawSpec": "^1.1.7",
"saveSpec": null,
"fetchSpec": "^1.1.7"
"spec": ">=1.1.7 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/minimatch"
],
"_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
"_shasum": "c07b211c7c952ec1f8efd51a77ef0d1d3990a292",
"_shrinkwrap": null,
"_spec": "brace-expansion@^1.1.7",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/minimatch",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/minimatch",
"author": {
"name": "Julian Gruber",
"email": "mail@juliangruber.com",
@ -30,22 +53,38 @@
"bugs": {
"url": "https://github.com/juliangruber/brace-expansion/issues"
},
"bundleDependencies": false,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
},
"deprecated": false,
"description": "Brace expansion as known from sh/bash",
"devDependencies": {
"matcha": "^0.7.0",
"tape": "^4.6.0"
},
"directories": {},
"dist": {
"shasum": "c07b211c7c952ec1f8efd51a77ef0d1d3990a292",
"tarball": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz"
},
"gitHead": "8f59e68bd5c915a0d624e8e39354e1ccf672edf6",
"homepage": "https://github.com/juliangruber/brace-expansion",
"keywords": [],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "juliangruber",
"email": "julian@juliangruber.com"
},
{
"name": "isaacs",
"email": "isaacs@npmjs.com"
}
],
"name": "brace-expansion",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/juliangruber/brace-expansion.git"

55
tools/eslint/node_modules/caller-path/package.json

@ -1,27 +1,45 @@
{
"_from": "caller-path@^0.1.0",
"_args": [
[
{
"raw": "caller-path@^0.1.0",
"scope": null,
"escapedName": "caller-path",
"name": "caller-path",
"rawSpec": "^0.1.0",
"spec": ">=0.1.0 <0.2.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/require-uncached"
]
],
"_from": "caller-path@>=0.1.0 <0.2.0",
"_id": "caller-path@0.1.0",
"_inBundle": false,
"_integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
"_inCache": true,
"_location": "/eslint/caller-path",
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "1.4.6",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "caller-path@^0.1.0",
"name": "caller-path",
"scope": null,
"escapedName": "caller-path",
"name": "caller-path",
"rawSpec": "^0.1.0",
"saveSpec": null,
"fetchSpec": "^0.1.0"
"spec": ">=0.1.0 <0.2.0",
"type": "range"
},
"_requiredBy": [
"/eslint/require-uncached"
],
"_resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
"_shasum": "94085ef63581ecd3daa92444a8fe94e82577751f",
"_shrinkwrap": null,
"_spec": "caller-path@^0.1.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/require-uncached",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/require-uncached",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -30,22 +48,25 @@
"bugs": {
"url": "https://github.com/sindresorhus/caller-path/issues"
},
"bundleDependencies": false,
"dependencies": {
"callsites": "^0.2.0"
},
"deprecated": false,
"description": "Get the path of the caller module",
"devDependencies": {
"mocha": "*"
},
"directories": {},
"dist": {
"shasum": "94085ef63581ecd3daa92444a8fe94e82577751f",
"tarball": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"homepage": "https://github.com/sindresorhus/caller-path#readme",
"homepage": "https://github.com/sindresorhus/caller-path",
"keywords": [
"caller",
"calling",
@ -61,10 +82,18 @@
"file"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "caller-path",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/caller-path.git"
"url": "git://github.com/sindresorhus/caller-path.git"
},
"scripts": {
"test": "mocha"

56
tools/eslint/node_modules/callsites/package.json

@ -1,27 +1,45 @@
{
"_from": "callsites@^0.2.0",
"_args": [
[
{
"raw": "callsites@^0.2.0",
"scope": null,
"escapedName": "callsites",
"name": "callsites",
"rawSpec": "^0.2.0",
"spec": ">=0.2.0 <0.3.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/caller-path"
]
],
"_from": "callsites@>=0.2.0 <0.3.0",
"_id": "callsites@0.2.0",
"_inBundle": false,
"_integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
"_inCache": true,
"_location": "/eslint/callsites",
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "1.4.6",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "callsites@^0.2.0",
"name": "callsites",
"scope": null,
"escapedName": "callsites",
"name": "callsites",
"rawSpec": "^0.2.0",
"saveSpec": null,
"fetchSpec": "^0.2.0"
"spec": ">=0.2.0 <0.3.0",
"type": "range"
},
"_requiredBy": [
"/eslint/caller-path"
],
"_resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
"_shasum": "afab96262910a7f33c19a5775825c69f34e350ca",
"_shrinkwrap": null,
"_spec": "callsites@^0.2.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/caller-path",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/caller-path",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -30,19 +48,23 @@
"bugs": {
"url": "https://github.com/sindresorhus/callsites/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "Get callsites from the V8 stack trace API",
"devDependencies": {
"mocha": "*"
},
"directories": {},
"dist": {
"shasum": "afab96262910a7f33c19a5775825c69f34e350ca",
"tarball": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"homepage": "https://github.com/sindresorhus/callsites#readme",
"homepage": "https://github.com/sindresorhus/callsites",
"keywords": [
"callsites",
"callsite",
@ -56,10 +78,18 @@
"debug"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "callsites",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/callsites.git"
"url": "git://github.com/sindresorhus/callsites.git"
},
"scripts": {
"test": "mocha"

57
tools/eslint/node_modules/ccount/package.json

@ -1,27 +1,50 @@
{
"_from": "ccount@^1.0.0",
"_args": [
[
{
"raw": "ccount@^1.0.0",
"scope": null,
"escapedName": "ccount",
"name": "ccount",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/remark-stringify"
]
],
"_from": "ccount@>=1.0.0 <2.0.0",
"_id": "ccount@1.0.2",
"_inBundle": false,
"_integrity": "sha1-U7ai+BW7d7nChx97mnLDol8djok=",
"_inCache": true,
"_location": "/ccount",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/ccount-1.0.2.tgz_1499890236092_0.057149781147018075"
},
"_npmUser": {
"name": "wooorm",
"email": "tituswormer@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ccount@^1.0.0",
"name": "ccount",
"scope": null,
"escapedName": "ccount",
"name": "ccount",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/remark-stringify"
],
"_resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.2.tgz",
"_shasum": "53b6a2f815bb77b9c2871f7b9a72c3a25f1d8e89",
"_shrinkwrap": null,
"_spec": "ccount@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-stringify",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/remark-stringify",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
@ -30,7 +53,6 @@
"bugs": {
"url": "https://github.com/wooorm/ccount/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
@ -39,7 +61,6 @@
}
],
"dependencies": {},
"deprecated": false,
"description": "Count characters",
"devDependencies": {
"browserify": "^14.0.0",
@ -50,9 +71,15 @@
"tape": "^4.0.0",
"xo": "^0.18.0"
},
"directories": {},
"dist": {
"shasum": "53b6a2f815bb77b9c2871f7b9a72c3a25f1d8e89",
"tarball": "https://registry.npmjs.org/ccount/-/ccount-1.0.2.tgz"
},
"files": [
"index.js"
],
"gitHead": "e5ce879c31527ecfb7febc2f0ddc436bcfdd989c",
"homepage": "https://github.com/wooorm/ccount#readme",
"keywords": [
"character",
@ -60,7 +87,15 @@
"char"
],
"license": "MIT",
"maintainers": [
{
"name": "wooorm",
"email": "tituswormer@gmail.com"
}
],
"name": "ccount",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"remarkConfig": {
"plugins": [
"preset-wooorm"

66
tools/eslint/node_modules/chalk/package.json

@ -1,19 +1,41 @@
{
"_from": "chalk@^1.1.3",
"_args": [
[
{
"raw": "chalk@^1.1.3",
"scope": null,
"escapedName": "chalk",
"name": "chalk",
"rawSpec": "^1.1.3",
"spec": ">=1.1.3 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint"
]
],
"_from": "chalk@>=1.1.3 <2.0.0",
"_id": "chalk@1.1.3",
"_inBundle": false,
"_integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"_inCache": true,
"_location": "/eslint/chalk",
"_nodeVersion": "0.10.32",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/chalk-1.1.3.tgz_1459210604109_0.3892582862172276"
},
"_npmUser": {
"name": "qix",
"email": "i.am.qix@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "chalk@^1.1.3",
"name": "chalk",
"scope": null,
"escapedName": "chalk",
"name": "chalk",
"rawSpec": "^1.1.3",
"saveSpec": null,
"fetchSpec": "^1.1.3"
"spec": ">=1.1.3 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint",
@ -22,12 +44,12 @@
],
"_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"_shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98",
"_shrinkwrap": null,
"_spec": "chalk@^1.1.3",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint",
"bugs": {
"url": "https://github.com/chalk/chalk/issues"
},
"bundleDependencies": false,
"dependencies": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
@ -35,7 +57,6 @@
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
},
"deprecated": false,
"description": "Terminal string styling done right. Much color.",
"devDependencies": {
"coveralls": "^2.11.2",
@ -47,12 +68,18 @@
"semver": "^4.3.3",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "a8115c55e4a702fe4d150abd3872822a7e09fc98",
"tarball": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "0d8d8c204eb87a4038219131ad4d8369c9f59d24",
"homepage": "https://github.com/chalk/chalk#readme",
"keywords": [
"color",
@ -80,22 +107,21 @@
"license": "MIT",
"maintainers": [
{
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
"name": "qix",
"email": "i.am.qix@gmail.com"
},
{
"name": "Joshua Appelman",
"email": "jappelman@xebia.com",
"url": "jbnicolai.com"
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
{
"name": "JD Ballard",
"email": "i.am.qix@gmail.com",
"url": "github.com/qix-"
"name": "unicorn",
"email": "sindresorhus+unicorn@gmail.com"
}
],
"name": "chalk",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/chalk/chalk.git"

57
tools/eslint/node_modules/character-entities-html4/package.json

@ -1,27 +1,50 @@
{
"_from": "character-entities-html4@^1.0.0",
"_args": [
[
{
"raw": "character-entities-html4@^1.0.0",
"scope": null,
"escapedName": "character-entities-html4",
"name": "character-entities-html4",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/stringify-entities"
]
],
"_from": "character-entities-html4@>=1.0.0 <2.0.0",
"_id": "character-entities-html4@1.1.1",
"_inBundle": false,
"_integrity": "sha1-NZoqSg9+KdPcKsmb2+Ie45Q46lA=",
"_inCache": true,
"_location": "/character-entities-html4",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/character-entities-html4-1.1.1.tgz_1499793624920_0.09249134175479412"
},
"_npmUser": {
"name": "wooorm",
"email": "tituswormer@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "character-entities-html4@^1.0.0",
"name": "character-entities-html4",
"scope": null,
"escapedName": "character-entities-html4",
"name": "character-entities-html4",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/stringify-entities"
],
"_resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.1.tgz",
"_shasum": "359a2a4a0f7e29d3dc2ac99bdbe21ee39438ea50",
"_shrinkwrap": null,
"_spec": "character-entities-html4@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/stringify-entities",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/stringify-entities",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
@ -30,7 +53,6 @@
"bugs": {
"url": "https://github.com/wooorm/character-entities-html4/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
@ -39,7 +61,6 @@
}
],
"dependencies": {},
"deprecated": false,
"description": "HTML4 character entity information",
"devDependencies": {
"bail": "^1.0.1",
@ -51,9 +72,15 @@
"tape": "^4.0.0",
"xo": "^0.18.0"
},
"directories": {},
"dist": {
"shasum": "359a2a4a0f7e29d3dc2ac99bdbe21ee39438ea50",
"tarball": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.1.tgz"
},
"files": [
"index.json"
],
"gitHead": "5f4898282ba7563f9aabc774005bb89dfd5a50a6",
"homepage": "https://github.com/wooorm/character-entities-html4#readme",
"keywords": [
"html",
@ -67,7 +94,15 @@
],
"license": "MIT",
"main": "index.json",
"maintainers": [
{
"name": "wooorm",
"email": "tituswormer@gmail.com"
}
],
"name": "character-entities-html4",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"remarkConfig": {
"plugins": [
"preset-wooorm"

57
tools/eslint/node_modules/character-entities-legacy/package.json

@ -1,19 +1,41 @@
{
"_from": "character-entities-legacy@^1.0.0",
"_args": [
[
{
"raw": "character-entities-legacy@^1.0.0",
"scope": null,
"escapedName": "character-entities-legacy",
"name": "character-entities-legacy",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities"
]
],
"_from": "character-entities-legacy@>=1.0.0 <2.0.0",
"_id": "character-entities-legacy@1.1.1",
"_inBundle": false,
"_integrity": "sha1-9Ad53xoQGHK7UQo9KV4fzPFHIC8=",
"_inCache": true,
"_location": "/character-entities-legacy",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/character-entities-legacy-1.1.1.tgz_1499794300843_0.7259844585787505"
},
"_npmUser": {
"name": "wooorm",
"email": "tituswormer@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "character-entities-legacy@^1.0.0",
"name": "character-entities-legacy",
"scope": null,
"escapedName": "character-entities-legacy",
"name": "character-entities-legacy",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/parse-entities",
@ -21,8 +43,9 @@
],
"_resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz",
"_shasum": "f40779df1a101872bb510a3d295e1fccf147202f",
"_shrinkwrap": null,
"_spec": "character-entities-legacy@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
@ -31,7 +54,6 @@
"bugs": {
"url": "https://github.com/wooorm/character-entities-legacy/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
@ -40,7 +62,6 @@
}
],
"dependencies": {},
"deprecated": false,
"description": "HTML legacy character entity information",
"devDependencies": {
"bail": "^1.0.1",
@ -52,9 +73,15 @@
"tape": "^4.0.0",
"xo": "^0.18.0"
},
"directories": {},
"dist": {
"shasum": "f40779df1a101872bb510a3d295e1fccf147202f",
"tarball": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz"
},
"files": [
"index.json"
],
"gitHead": "74216f063f88d511050a836e5469b1a78c653c28",
"homepage": "https://github.com/wooorm/character-entities-legacy#readme",
"keywords": [
"html",
@ -67,7 +94,15 @@
],
"license": "MIT",
"main": "index.json",
"maintainers": [
{
"name": "wooorm",
"email": "tituswormer@gmail.com"
}
],
"name": "character-entities-legacy",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"remarkConfig": {
"plugins": [
"preset-wooorm"

57
tools/eslint/node_modules/character-entities/package.json

@ -1,27 +1,50 @@
{
"_from": "character-entities@^1.0.0",
"_args": [
[
{
"raw": "character-entities@^1.0.0",
"scope": null,
"escapedName": "character-entities",
"name": "character-entities",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities"
]
],
"_from": "character-entities@>=1.0.0 <2.0.0",
"_id": "character-entities@1.2.1",
"_inBundle": false,
"_integrity": "sha1-92hxvl72bdt/j440eOzDdMJ9bco=",
"_inCache": true,
"_location": "/character-entities",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/character-entities-1.2.1.tgz_1499793818126_0.4074034912046045"
},
"_npmUser": {
"name": "wooorm",
"email": "tituswormer@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "character-entities@^1.0.0",
"name": "character-entities",
"scope": null,
"escapedName": "character-entities",
"name": "character-entities",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/parse-entities"
],
"_resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz",
"_shasum": "f76871be5ef66ddb7f8f8e3478ecc374c27d6dca",
"_shrinkwrap": null,
"_spec": "character-entities@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
@ -30,7 +53,6 @@
"bugs": {
"url": "https://github.com/wooorm/character-entities/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
@ -39,7 +61,6 @@
}
],
"dependencies": {},
"deprecated": false,
"description": "HTML character entity information",
"devDependencies": {
"bail": "^1.0.1",
@ -51,9 +72,15 @@
"tape": "^4.0.0",
"xo": "^0.18.0"
},
"directories": {},
"dist": {
"shasum": "f76871be5ef66ddb7f8f8e3478ecc374c27d6dca",
"tarball": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.1.tgz"
},
"files": [
"index.json"
],
"gitHead": "5fc53d194a1753f0b8bb6388d02444cac24d1a59",
"homepage": "https://github.com/wooorm/character-entities#readme",
"keywords": [
"html",
@ -66,7 +93,15 @@
],
"license": "MIT",
"main": "index.json",
"maintainers": [
{
"name": "wooorm",
"email": "tituswormer@gmail.com"
}
],
"name": "character-entities",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"remarkConfig": {
"plugins": [
"preset-wooorm"

57
tools/eslint/node_modules/character-reference-invalid/package.json

@ -1,27 +1,50 @@
{
"_from": "character-reference-invalid@^1.0.0",
"_args": [
[
{
"raw": "character-reference-invalid@^1.0.0",
"scope": null,
"escapedName": "character-reference-invalid",
"name": "character-reference-invalid",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities"
]
],
"_from": "character-reference-invalid@>=1.0.0 <2.0.0",
"_id": "character-reference-invalid@1.1.1",
"_inBundle": false,
"_integrity": "sha1-lCg191Dk7GGjCOYMLvjMEBEgLvw=",
"_inCache": true,
"_location": "/character-reference-invalid",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/character-reference-invalid-1.1.1.tgz_1499795720148_0.25451743556186557"
},
"_npmUser": {
"name": "wooorm",
"email": "tituswormer@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "character-reference-invalid@^1.0.0",
"name": "character-reference-invalid",
"scope": null,
"escapedName": "character-reference-invalid",
"name": "character-reference-invalid",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/parse-entities"
],
"_resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz",
"_shasum": "942835f750e4ec61a308e60c2ef8cc1011202efc",
"_shrinkwrap": null,
"_spec": "character-reference-invalid@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
@ -30,7 +53,6 @@
"bugs": {
"url": "https://github.com/wooorm/character-reference-invalid/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
@ -39,7 +61,6 @@
}
],
"dependencies": {},
"deprecated": false,
"description": "HTML invalid numeric character reference information",
"devDependencies": {
"bail": "^1.0.1",
@ -55,9 +76,15 @@
"unified": "^6.1.5",
"xo": "^0.18.0"
},
"directories": {},
"dist": {
"shasum": "942835f750e4ec61a308e60c2ef8cc1011202efc",
"tarball": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz"
},
"files": [
"index.json"
],
"gitHead": "88cf0385e636e3f7fc70204598ecbd3b2284e3e3",
"homepage": "https://github.com/wooorm/character-reference-invalid#readme",
"keywords": [
"html",
@ -71,7 +98,15 @@
],
"license": "MIT",
"main": "index.json",
"maintainers": [
{
"name": "wooorm",
"email": "tituswormer@gmail.com"
}
],
"name": "character-reference-invalid",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"remarkConfig": {
"plugins": [
"preset-wooorm"

59
tools/eslint/node_modules/circular-json/package.json

@ -1,27 +1,50 @@
{
"_from": "circular-json@^0.3.1",
"_args": [
[
{
"raw": "circular-json@^0.3.1",
"scope": null,
"escapedName": "circular-json",
"name": "circular-json",
"rawSpec": "^0.3.1",
"spec": ">=0.3.1 <0.4.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/flat-cache"
]
],
"_from": "circular-json@>=0.3.1 <0.4.0",
"_id": "circular-json@0.3.3",
"_inBundle": false,
"_integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
"_inCache": true,
"_location": "/eslint/circular-json",
"_nodeVersion": "8.2.1",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/circular-json-0.3.3.tgz_1500879385194_0.5629333322867751"
},
"_npmUser": {
"name": "webreflection",
"email": "andrea.giammarchi@gmail.com"
},
"_npmVersion": "5.3.0",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "circular-json@^0.3.1",
"name": "circular-json",
"scope": null,
"escapedName": "circular-json",
"name": "circular-json",
"rawSpec": "^0.3.1",
"saveSpec": null,
"fetchSpec": "^0.3.1"
"spec": ">=0.3.1 <0.4.0",
"type": "range"
},
"_requiredBy": [
"/eslint/flat-cache"
],
"_resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
"_shasum": "815c99ea84f6809529d2f45791bdf82711352d66",
"_shrinkwrap": null,
"_spec": "circular-json@^0.3.1",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/flat-cache",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/flat-cache",
"author": {
"name": "Andrea Giammarchi",
"url": "http://webreflection.blogspot.com/"
@ -29,8 +52,7 @@
"bugs": {
"url": "https://github.com/WebReflection/circular-json/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "JSON does not handle circular references. This version does",
"devDependencies": {
"coveralls": "^2.13.0",
@ -38,7 +60,14 @@
"tiny-cdn": "^0.7.0",
"tressa": "^0.3.1"
},
"directories": {},
"dist": {
"integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
"shasum": "815c99ea84f6809529d2f45791bdf82711352d66",
"tarball": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz"
},
"generator": "https://github.com/WebReflection/gitstrap",
"gitHead": "28b3b0440554f81f3c6e7b10f7dcec9af9588756",
"homepage": "https://github.com/WebReflection/circular-json",
"keywords": [
"JSON",
@ -51,7 +80,15 @@
],
"license": "MIT",
"main": "./build/circular-json.node.js",
"maintainers": [
{
"name": "webreflection",
"email": "andrea.giammarchi@gmail.com"
}
],
"name": "circular-json",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/WebReflection/circular-json.git"

57
tools/eslint/node_modules/cli-cursor/package.json

@ -1,27 +1,50 @@
{
"_from": "cli-cursor@^2.1.0",
"_args": [
[
{
"raw": "cli-cursor@^2.1.0",
"scope": null,
"escapedName": "cli-cursor",
"name": "cli-cursor",
"rawSpec": "^2.1.0",
"spec": ">=2.1.0 <3.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer"
]
],
"_from": "cli-cursor@>=2.1.0 <3.0.0",
"_id": "cli-cursor@2.1.0",
"_inBundle": false,
"_integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"_inCache": true,
"_location": "/eslint/cli-cursor",
"_nodeVersion": "4.6.2",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/cli-cursor-2.1.0.tgz_1483990808692_0.16963833128102124"
},
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "2.15.11",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "cli-cursor@^2.1.0",
"name": "cli-cursor",
"scope": null,
"escapedName": "cli-cursor",
"name": "cli-cursor",
"rawSpec": "^2.1.0",
"saveSpec": null,
"fetchSpec": "^2.1.0"
"spec": ">=2.1.0 <3.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/inquirer"
],
"_resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
"_shasum": "b35dac376479facc3e94747d41d0d0f5238ffcb5",
"_shrinkwrap": null,
"_spec": "cli-cursor@^2.1.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -30,22 +53,26 @@
"bugs": {
"url": "https://github.com/sindresorhus/cli-cursor/issues"
},
"bundleDependencies": false,
"dependencies": {
"restore-cursor": "^2.0.0"
},
"deprecated": false,
"description": "Toggle the CLI cursor",
"devDependencies": {
"ava": "*",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "b35dac376479facc3e94747d41d0d0f5238ffcb5",
"tarball": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz"
},
"engines": {
"node": ">=4"
},
"files": [
"index.js"
],
"gitHead": "5a403335e6b3980a1235b71f8afe1d63ee8c3ce1",
"homepage": "https://github.com/sindresorhus/cli-cursor#readme",
"keywords": [
"cli",
@ -63,7 +90,15 @@
"command-line"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "cli-cursor",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/cli-cursor.git"

58
tools/eslint/node_modules/cli-width/package.json

@ -1,27 +1,50 @@
{
"_from": "cli-width@^2.0.0",
"_args": [
[
{
"raw": "cli-width@^2.0.0",
"scope": null,
"escapedName": "cli-width",
"name": "cli-width",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer"
]
],
"_from": "cli-width@>=2.0.0 <3.0.0",
"_id": "cli-width@2.1.0",
"_inBundle": false,
"_integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=",
"_inCache": true,
"_location": "/eslint/cli-width",
"_nodeVersion": "4.2.6",
"_npmOperationalInternal": {
"host": "packages-9-west.internal.npmjs.com",
"tmp": "tmp/cli-width-2.1.0.tgz_1455570612101_0.2879865295253694"
},
"_npmUser": {
"name": "knownasilya",
"email": "ilya@burstcreations.com"
},
"_npmVersion": "2.14.12",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "cli-width@^2.0.0",
"name": "cli-width",
"scope": null,
"escapedName": "cli-width",
"name": "cli-width",
"rawSpec": "^2.0.0",
"saveSpec": null,
"fetchSpec": "^2.0.0"
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/inquirer"
],
"_resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz",
"_shasum": "b234ca209b29ef66fc518d9b98d5847b00edf00a",
"_shrinkwrap": null,
"_spec": "cli-width@^2.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
"name": "Ilya Radchenko",
"email": "ilya@burstcreations.com"
@ -29,8 +52,7 @@
"bugs": {
"url": "https://github.com/knownasilya/cli-width/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "Get stdout window width, with two fallbacks, tty and then a default.",
"devDependencies": {
"coveralls": "^2.11.4",
@ -39,10 +61,24 @@
"tap-spec": "^4.1.0",
"tape": "^3.4.0"
},
"directories": {},
"dist": {
"shasum": "b234ca209b29ef66fc518d9b98d5847b00edf00a",
"tarball": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz"
},
"gitHead": "c9506fd74bd3863ff327f8f8892601fa4ac2dbb3",
"homepage": "https://github.com/knownasilya/cli-width",
"license": "ISC",
"main": "index.js",
"maintainers": [
{
"name": "knownasilya",
"email": "ilya@burstcreations.com"
}
],
"name": "cli-width",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/knownasilya/cli-width.git"

62
tools/eslint/node_modules/co/package.json

@ -1,19 +1,37 @@
{
"_from": "co@^4.6.0",
"_args": [
[
{
"raw": "co@^4.6.0",
"scope": null,
"escapedName": "co",
"name": "co",
"rawSpec": "^4.6.0",
"spec": ">=4.6.0 <5.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/ajv"
]
],
"_from": "co@>=4.6.0 <5.0.0",
"_id": "co@4.6.0",
"_inBundle": false,
"_integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"_inCache": true,
"_location": "/eslint/co",
"_nodeVersion": "2.3.3",
"_npmUser": {
"name": "jongleberry",
"email": "jonathanrichardong@gmail.com"
},
"_npmVersion": "2.11.3",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "co@^4.6.0",
"name": "co",
"scope": null,
"escapedName": "co",
"name": "co",
"rawSpec": "^4.6.0",
"saveSpec": null,
"fetchSpec": "^4.6.0"
"spec": ">=4.6.0 <5.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/ajv",
@ -21,13 +39,13 @@
],
"_resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"_shasum": "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184",
"_shrinkwrap": null,
"_spec": "co@^4.6.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/ajv",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/ajv",
"bugs": {
"url": "https://github.com/tj/co/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "generator async control flow goodness",
"devDependencies": {
"browserify": "^10.0.0",
@ -35,6 +53,11 @@
"mocha": "^2.0.0",
"mz": "^1.0.2"
},
"directories": {},
"dist": {
"shasum": "6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184",
"tarball": "https://registry.npmjs.org/co/-/co-4.6.0.tgz"
},
"engines": {
"iojs": ">= 1.0.0",
"node": ">= 0.12.0"
@ -42,6 +65,7 @@
"files": [
"index.js"
],
"gitHead": "b54d18f8f472ad1314800e786993c4169a5ff9f8",
"homepage": "https://github.com/tj/co#readme",
"keywords": [
"async",
@ -51,7 +75,23 @@
"coroutine"
],
"license": "MIT",
"maintainers": [
{
"name": "tjholowaychuk",
"email": "tj@vision-media.ca"
},
{
"name": "jonathanong",
"email": "jonathanrichardong@gmail.com"
},
{
"name": "jongleberry",
"email": "jonathanrichardong@gmail.com"
}
],
"name": "co",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/tj/co.git"

57
tools/eslint/node_modules/collapse-white-space/package.json

@ -1,27 +1,50 @@
{
"_from": "collapse-white-space@^1.0.0",
"_args": [
[
{
"raw": "collapse-white-space@^1.0.0",
"scope": null,
"escapedName": "collapse-white-space",
"name": "collapse-white-space",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse"
]
],
"_from": "collapse-white-space@>=1.0.0 <2.0.0",
"_id": "collapse-white-space@1.0.3",
"_inBundle": false,
"_integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=",
"_inCache": true,
"_location": "/collapse-white-space",
"_nodeVersion": "4.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/collapse-white-space-1.0.3.tgz_1498404304736_0.5027659088373184"
},
"_npmUser": {
"name": "wooorm",
"email": "tituswormer@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "collapse-white-space@^1.0.0",
"name": "collapse-white-space",
"scope": null,
"escapedName": "collapse-white-space",
"name": "collapse-white-space",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/remark-parse"
],
"_resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz",
"_shasum": "4b906f670e5a963a87b76b0e1689643341b6023c",
"_shrinkwrap": null,
"_spec": "collapse-white-space@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
@ -30,7 +53,6 @@
"bugs": {
"url": "https://github.com/wooorm/collapse-white-space/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
@ -39,7 +61,6 @@
}
],
"dependencies": {},
"deprecated": false,
"description": "Replace multiple white-space characters with a single space",
"devDependencies": {
"browserify": "^14.0.0",
@ -50,9 +71,15 @@
"tape": "^4.0.0",
"xo": "^0.18.0"
},
"directories": {},
"dist": {
"shasum": "4b906f670e5a963a87b76b0e1689643341b6023c",
"tarball": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz"
},
"files": [
"index.js"
],
"gitHead": "20e87ab5f5612e1bb93a6b205cf2b6c87f755301",
"homepage": "https://github.com/wooorm/collapse-white-space#readme",
"keywords": [
"collapse",
@ -60,7 +87,15 @@
"space"
],
"license": "MIT",
"maintainers": [
{
"name": "wooorm",
"email": "tituswormer@gmail.com"
}
],
"name": "collapse-white-space",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"remarkConfig": {
"plugins": [
"preset-wooorm"

71
tools/eslint/node_modules/color-convert/package.json

@ -1,51 +1,78 @@
{
"_from": "color-convert@^1.9.0",
"_args": [
[
{
"raw": "color-convert@^1.9.0",
"scope": null,
"escapedName": "color-convert",
"name": "color-convert",
"rawSpec": "^1.9.0",
"spec": ">=1.9.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer/node_modules/ansi-styles"
]
],
"_from": "color-convert@>=1.9.0 <2.0.0",
"_id": "color-convert@1.9.0",
"_inBundle": false,
"_integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=",
"_inCache": true,
"_location": "/eslint/color-convert",
"_nodeVersion": "0.10.32",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/color-convert-1.9.0.tgz_1484684133840_0.4650497359689325"
},
"_npmUser": {
"name": "qix",
"email": "i.am.qix@gmail.com"
},
"_npmVersion": "2.14.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "color-convert@^1.9.0",
"name": "color-convert",
"scope": null,
"escapedName": "color-convert",
"name": "color-convert",
"rawSpec": "^1.9.0",
"saveSpec": null,
"fetchSpec": "^1.9.0"
"spec": ">=1.9.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/inquirer/ansi-styles"
],
"_resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz",
"_shasum": "1accf97dd739b983bf994d56fec8f95853641b7a",
"_shrinkwrap": null,
"_spec": "color-convert@^1.9.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer/node_modules/ansi-styles",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer/node_modules/ansi-styles",
"author": {
"name": "Heather Arthur",
"email": "fayearthur@gmail.com"
},
"bugs": {
"url": "https://github.com/Qix-/color-convert/issues"
"url": "https://github.com/qix-/color-convert/issues"
},
"bundleDependencies": false,
"dependencies": {
"color-name": "^1.1.1"
},
"deprecated": false,
"description": "Plain color conversion functions",
"devDependencies": {
"chalk": "^1.1.1",
"xo": "^0.11.2"
},
"directories": {},
"dist": {
"shasum": "1accf97dd739b983bf994d56fec8f95853641b7a",
"tarball": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz"
},
"files": [
"index.js",
"conversions.js",
"css-keywords.js",
"route.js"
],
"homepage": "https://github.com/Qix-/color-convert#readme",
"gitHead": "f8b2cf64544c551f22b74947d511f0e97c4e6ef1",
"homepage": "https://github.com/qix-/color-convert#readme",
"keywords": [
"color",
"colour",
@ -61,10 +88,26 @@
"ansi16"
],
"license": "MIT",
"maintainers": [
{
"name": "harth",
"email": "fayearthur@gmail.com"
},
{
"name": "moox",
"email": "m@moox.io"
},
{
"name": "qix",
"email": "i.am.qix@gmail.com"
}
],
"name": "color-convert",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/Qix-/color-convert.git"
"url": "git+https://github.com/qix-/color-convert.git"
},
"scripts": {
"pretest": "xo",

14
tools/eslint/node_modules/color-name/LICENSE

@ -1,8 +1,8 @@
The MIT License (MIT)
Copyright (c) 2015 Dmitry Ivanov
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
The MIT License (MIT)
Copyright (c) 2015 Dmitry Ivanov
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

22
tools/eslint/node_modules/color-name/README.md

@ -1,11 +1,11 @@
A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.
[![NPM](https://nodei.co/npm/color-name.png?mini=true)](https://nodei.co/npm/color-name/)
```js
var colors = require('color-name');
colors.red //[255,0,0]
```
<a href="LICENSE"><img src="https://upload.wikimedia.org/wikipedia/commons/0/0c/MIT_logo.svg" width="120"/></a>
A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.
[![NPM](https://nodei.co/npm/color-name.png?mini=true)](https://nodei.co/npm/color-name/)
```js
var colors = require('color-name');
colors.red //[255,0,0]
```
<a href="LICENSE"><img src="https://upload.wikimedia.org/wikipedia/commons/0/0c/MIT_logo.svg" width="120"/></a>

304
tools/eslint/node_modules/color-name/index.js

@ -1,152 +1,152 @@
'use strict'
module.exports = {
"aliceblue": [240, 248, 255],
"antiquewhite": [250, 235, 215],
"aqua": [0, 255, 255],
"aquamarine": [127, 255, 212],
"azure": [240, 255, 255],
"beige": [245, 245, 220],
"bisque": [255, 228, 196],
"black": [0, 0, 0],
"blanchedalmond": [255, 235, 205],
"blue": [0, 0, 255],
"blueviolet": [138, 43, 226],
"brown": [165, 42, 42],
"burlywood": [222, 184, 135],
"cadetblue": [95, 158, 160],
"chartreuse": [127, 255, 0],
"chocolate": [210, 105, 30],
"coral": [255, 127, 80],
"cornflowerblue": [100, 149, 237],
"cornsilk": [255, 248, 220],
"crimson": [220, 20, 60],
"cyan": [0, 255, 255],
"darkblue": [0, 0, 139],
"darkcyan": [0, 139, 139],
"darkgoldenrod": [184, 134, 11],
"darkgray": [169, 169, 169],
"darkgreen": [0, 100, 0],
"darkgrey": [169, 169, 169],
"darkkhaki": [189, 183, 107],
"darkmagenta": [139, 0, 139],
"darkolivegreen": [85, 107, 47],
"darkorange": [255, 140, 0],
"darkorchid": [153, 50, 204],
"darkred": [139, 0, 0],
"darksalmon": [233, 150, 122],
"darkseagreen": [143, 188, 143],
"darkslateblue": [72, 61, 139],
"darkslategray": [47, 79, 79],
"darkslategrey": [47, 79, 79],
"darkturquoise": [0, 206, 209],
"darkviolet": [148, 0, 211],
"deeppink": [255, 20, 147],
"deepskyblue": [0, 191, 255],
"dimgray": [105, 105, 105],
"dimgrey": [105, 105, 105],
"dodgerblue": [30, 144, 255],
"firebrick": [178, 34, 34],
"floralwhite": [255, 250, 240],
"forestgreen": [34, 139, 34],
"fuchsia": [255, 0, 255],
"gainsboro": [220, 220, 220],
"ghostwhite": [248, 248, 255],
"gold": [255, 215, 0],
"goldenrod": [218, 165, 32],
"gray": [128, 128, 128],
"green": [0, 128, 0],
"greenyellow": [173, 255, 47],
"grey": [128, 128, 128],
"honeydew": [240, 255, 240],
"hotpink": [255, 105, 180],
"indianred": [205, 92, 92],
"indigo": [75, 0, 130],
"ivory": [255, 255, 240],
"khaki": [240, 230, 140],
"lavender": [230, 230, 250],
"lavenderblush": [255, 240, 245],
"lawngreen": [124, 252, 0],
"lemonchiffon": [255, 250, 205],
"lightblue": [173, 216, 230],
"lightcoral": [240, 128, 128],
"lightcyan": [224, 255, 255],
"lightgoldenrodyellow": [250, 250, 210],
"lightgray": [211, 211, 211],
"lightgreen": [144, 238, 144],
"lightgrey": [211, 211, 211],
"lightpink": [255, 182, 193],
"lightsalmon": [255, 160, 122],
"lightseagreen": [32, 178, 170],
"lightskyblue": [135, 206, 250],
"lightslategray": [119, 136, 153],
"lightslategrey": [119, 136, 153],
"lightsteelblue": [176, 196, 222],
"lightyellow": [255, 255, 224],
"lime": [0, 255, 0],
"limegreen": [50, 205, 50],
"linen": [250, 240, 230],
"magenta": [255, 0, 255],
"maroon": [128, 0, 0],
"mediumaquamarine": [102, 205, 170],
"mediumblue": [0, 0, 205],
"mediumorchid": [186, 85, 211],
"mediumpurple": [147, 112, 219],
"mediumseagreen": [60, 179, 113],
"mediumslateblue": [123, 104, 238],
"mediumspringgreen": [0, 250, 154],
"mediumturquoise": [72, 209, 204],
"mediumvioletred": [199, 21, 133],
"midnightblue": [25, 25, 112],
"mintcream": [245, 255, 250],
"mistyrose": [255, 228, 225],
"moccasin": [255, 228, 181],
"navajowhite": [255, 222, 173],
"navy": [0, 0, 128],
"oldlace": [253, 245, 230],
"olive": [128, 128, 0],
"olivedrab": [107, 142, 35],
"orange": [255, 165, 0],
"orangered": [255, 69, 0],
"orchid": [218, 112, 214],
"palegoldenrod": [238, 232, 170],
"palegreen": [152, 251, 152],
"paleturquoise": [175, 238, 238],
"palevioletred": [219, 112, 147],
"papayawhip": [255, 239, 213],
"peachpuff": [255, 218, 185],
"peru": [205, 133, 63],
"pink": [255, 192, 203],
"plum": [221, 160, 221],
"powderblue": [176, 224, 230],
"purple": [128, 0, 128],
"rebeccapurple": [102, 51, 153],
"red": [255, 0, 0],
"rosybrown": [188, 143, 143],
"royalblue": [65, 105, 225],
"saddlebrown": [139, 69, 19],
"salmon": [250, 128, 114],
"sandybrown": [244, 164, 96],
"seagreen": [46, 139, 87],
"seashell": [255, 245, 238],
"sienna": [160, 82, 45],
"silver": [192, 192, 192],
"skyblue": [135, 206, 235],
"slateblue": [106, 90, 205],
"slategray": [112, 128, 144],
"slategrey": [112, 128, 144],
"snow": [255, 250, 250],
"springgreen": [0, 255, 127],
"steelblue": [70, 130, 180],
"tan": [210, 180, 140],
"teal": [0, 128, 128],
"thistle": [216, 191, 216],
"tomato": [255, 99, 71],
"turquoise": [64, 224, 208],
"violet": [238, 130, 238],
"wheat": [245, 222, 179],
"white": [255, 255, 255],
"whitesmoke": [245, 245, 245],
"yellow": [255, 255, 0],
"yellowgreen": [154, 205, 50]
};
'use strict'
module.exports = {
"aliceblue": [240, 248, 255],
"antiquewhite": [250, 235, 215],
"aqua": [0, 255, 255],
"aquamarine": [127, 255, 212],
"azure": [240, 255, 255],
"beige": [245, 245, 220],
"bisque": [255, 228, 196],
"black": [0, 0, 0],
"blanchedalmond": [255, 235, 205],
"blue": [0, 0, 255],
"blueviolet": [138, 43, 226],
"brown": [165, 42, 42],
"burlywood": [222, 184, 135],
"cadetblue": [95, 158, 160],
"chartreuse": [127, 255, 0],
"chocolate": [210, 105, 30],
"coral": [255, 127, 80],
"cornflowerblue": [100, 149, 237],
"cornsilk": [255, 248, 220],
"crimson": [220, 20, 60],
"cyan": [0, 255, 255],
"darkblue": [0, 0, 139],
"darkcyan": [0, 139, 139],
"darkgoldenrod": [184, 134, 11],
"darkgray": [169, 169, 169],
"darkgreen": [0, 100, 0],
"darkgrey": [169, 169, 169],
"darkkhaki": [189, 183, 107],
"darkmagenta": [139, 0, 139],
"darkolivegreen": [85, 107, 47],
"darkorange": [255, 140, 0],
"darkorchid": [153, 50, 204],
"darkred": [139, 0, 0],
"darksalmon": [233, 150, 122],
"darkseagreen": [143, 188, 143],
"darkslateblue": [72, 61, 139],
"darkslategray": [47, 79, 79],
"darkslategrey": [47, 79, 79],
"darkturquoise": [0, 206, 209],
"darkviolet": [148, 0, 211],
"deeppink": [255, 20, 147],
"deepskyblue": [0, 191, 255],
"dimgray": [105, 105, 105],
"dimgrey": [105, 105, 105],
"dodgerblue": [30, 144, 255],
"firebrick": [178, 34, 34],
"floralwhite": [255, 250, 240],
"forestgreen": [34, 139, 34],
"fuchsia": [255, 0, 255],
"gainsboro": [220, 220, 220],
"ghostwhite": [248, 248, 255],
"gold": [255, 215, 0],
"goldenrod": [218, 165, 32],
"gray": [128, 128, 128],
"green": [0, 128, 0],
"greenyellow": [173, 255, 47],
"grey": [128, 128, 128],
"honeydew": [240, 255, 240],
"hotpink": [255, 105, 180],
"indianred": [205, 92, 92],
"indigo": [75, 0, 130],
"ivory": [255, 255, 240],
"khaki": [240, 230, 140],
"lavender": [230, 230, 250],
"lavenderblush": [255, 240, 245],
"lawngreen": [124, 252, 0],
"lemonchiffon": [255, 250, 205],
"lightblue": [173, 216, 230],
"lightcoral": [240, 128, 128],
"lightcyan": [224, 255, 255],
"lightgoldenrodyellow": [250, 250, 210],
"lightgray": [211, 211, 211],
"lightgreen": [144, 238, 144],
"lightgrey": [211, 211, 211],
"lightpink": [255, 182, 193],
"lightsalmon": [255, 160, 122],
"lightseagreen": [32, 178, 170],
"lightskyblue": [135, 206, 250],
"lightslategray": [119, 136, 153],
"lightslategrey": [119, 136, 153],
"lightsteelblue": [176, 196, 222],
"lightyellow": [255, 255, 224],
"lime": [0, 255, 0],
"limegreen": [50, 205, 50],
"linen": [250, 240, 230],
"magenta": [255, 0, 255],
"maroon": [128, 0, 0],
"mediumaquamarine": [102, 205, 170],
"mediumblue": [0, 0, 205],
"mediumorchid": [186, 85, 211],
"mediumpurple": [147, 112, 219],
"mediumseagreen": [60, 179, 113],
"mediumslateblue": [123, 104, 238],
"mediumspringgreen": [0, 250, 154],
"mediumturquoise": [72, 209, 204],
"mediumvioletred": [199, 21, 133],
"midnightblue": [25, 25, 112],
"mintcream": [245, 255, 250],
"mistyrose": [255, 228, 225],
"moccasin": [255, 228, 181],
"navajowhite": [255, 222, 173],
"navy": [0, 0, 128],
"oldlace": [253, 245, 230],
"olive": [128, 128, 0],
"olivedrab": [107, 142, 35],
"orange": [255, 165, 0],
"orangered": [255, 69, 0],
"orchid": [218, 112, 214],
"palegoldenrod": [238, 232, 170],
"palegreen": [152, 251, 152],
"paleturquoise": [175, 238, 238],
"palevioletred": [219, 112, 147],
"papayawhip": [255, 239, 213],
"peachpuff": [255, 218, 185],
"peru": [205, 133, 63],
"pink": [255, 192, 203],
"plum": [221, 160, 221],
"powderblue": [176, 224, 230],
"purple": [128, 0, 128],
"rebeccapurple": [102, 51, 153],
"red": [255, 0, 0],
"rosybrown": [188, 143, 143],
"royalblue": [65, 105, 225],
"saddlebrown": [139, 69, 19],
"salmon": [250, 128, 114],
"sandybrown": [244, 164, 96],
"seagreen": [46, 139, 87],
"seashell": [255, 245, 238],
"sienna": [160, 82, 45],
"silver": [192, 192, 192],
"skyblue": [135, 206, 235],
"slateblue": [106, 90, 205],
"slategray": [112, 128, 144],
"slategrey": [112, 128, 144],
"snow": [255, 250, 250],
"springgreen": [0, 255, 127],
"steelblue": [70, 130, 180],
"tan": [210, 180, 140],
"teal": [0, 128, 128],
"thistle": [216, 191, 216],
"tomato": [255, 99, 71],
"turquoise": [64, 224, 208],
"violet": [238, 130, 238],
"wheat": [245, 222, 179],
"white": [255, 255, 255],
"whitesmoke": [245, 245, 245],
"yellow": [255, 255, 0],
"yellowgreen": [154, 205, 50]
};

59
tools/eslint/node_modules/color-name/package.json

@ -1,27 +1,50 @@
{
"_from": "color-name@^1.1.1",
"_args": [
[
{
"raw": "color-name@^1.1.1",
"scope": null,
"escapedName": "color-name",
"name": "color-name",
"rawSpec": "^1.1.1",
"spec": ">=1.1.1 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/color-convert"
]
],
"_from": "color-name@>=1.1.1 <2.0.0",
"_id": "color-name@1.1.3",
"_inBundle": false,
"_integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"_inCache": true,
"_location": "/eslint/color-name",
"_nodeVersion": "8.1.2",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/color-name-1.1.3.tgz_1500157027207_0.5641644957941025"
},
"_npmUser": {
"name": "dfcreative",
"email": "df.creative@gmail.com"
},
"_npmVersion": "4.6.1",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "color-name@^1.1.1",
"name": "color-name",
"scope": null,
"escapedName": "color-name",
"name": "color-name",
"rawSpec": "^1.1.1",
"saveSpec": null,
"fetchSpec": "^1.1.1"
"spec": ">=1.1.1 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint/color-convert"
],
"_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"_shasum": "a7d0558bd89c42f795dd42328f740831ca53bc25",
"_shrinkwrap": null,
"_spec": "color-name@^1.1.1",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/color-convert",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/color-convert",
"author": {
"name": "DY",
"email": "dfcreative@gmail.com"
@ -29,9 +52,15 @@
"bugs": {
"url": "https://github.com/dfcreative/color-name/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "A list of color names and its values",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "a7d0558bd89c42f795dd42328f740831ca53bc25",
"tarball": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
},
"gitHead": "cb7d4629b00fe38564f741a0779f6ad84d8007a2",
"homepage": "https://github.com/dfcreative/color-name",
"keywords": [
"color-name",
@ -41,7 +70,15 @@
],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "dfcreative",
"email": "df.creative@gmail.com"
}
],
"name": "color-name",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/dfcreative/color-name.git"

51
tools/eslint/node_modules/concat-map/package.json

@ -1,27 +1,45 @@
{
"_args": [
[
{
"raw": "concat-map@0.0.1",
"scope": null,
"escapedName": "concat-map",
"name": "concat-map",
"rawSpec": "0.0.1",
"spec": "0.0.1",
"type": "version"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/brace-expansion"
]
],
"_from": "concat-map@0.0.1",
"_id": "concat-map@0.0.1",
"_inBundle": false,
"_integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"_inCache": true,
"_location": "/eslint/concat-map",
"_npmUser": {
"name": "substack",
"email": "mail@substack.net"
},
"_npmVersion": "1.3.21",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "concat-map@0.0.1",
"name": "concat-map",
"scope": null,
"escapedName": "concat-map",
"name": "concat-map",
"rawSpec": "0.0.1",
"saveSpec": null,
"fetchSpec": "0.0.1"
"spec": "0.0.1",
"type": "version"
},
"_requiredBy": [
"/eslint/brace-expansion"
],
"_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
"_shrinkwrap": null,
"_spec": "concat-map@0.0.1",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/brace-expansion",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/brace-expansion",
"author": {
"name": "James Halliday",
"email": "mail@substack.net",
@ -30,8 +48,7 @@
"bugs": {
"url": "https://github.com/substack/node-concat-map/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "concatenative mapdashery",
"devDependencies": {
"tape": "~2.4.0"
@ -40,7 +57,11 @@
"example": "example",
"test": "test"
},
"homepage": "https://github.com/substack/node-concat-map#readme",
"dist": {
"shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
"tarball": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
},
"homepage": "https://github.com/substack/node-concat-map",
"keywords": [
"concat",
"concatMap",
@ -50,7 +71,15 @@
],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "substack",
"email": "mail@substack.net"
}
],
"name": "concat-map",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/substack/node-concat-map.git"

63
tools/eslint/node_modules/concat-stream/package.json

@ -1,27 +1,50 @@
{
"_from": "concat-stream@^1.6.0",
"_args": [
[
{
"raw": "concat-stream@^1.6.0",
"scope": null,
"escapedName": "concat-stream",
"name": "concat-stream",
"rawSpec": "^1.6.0",
"spec": ">=1.6.0 <2.0.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint"
]
],
"_from": "concat-stream@>=1.6.0 <2.0.0",
"_id": "concat-stream@1.6.0",
"_inBundle": false,
"_integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
"_inCache": true,
"_location": "/eslint/concat-stream",
"_nodeVersion": "4.6.2",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/concat-stream-1.6.0.tgz_1482162257023_0.2988202746491879"
},
"_npmUser": {
"name": "mafintosh",
"email": "mathiasbuus@gmail.com"
},
"_npmVersion": "2.15.11",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "concat-stream@^1.6.0",
"name": "concat-stream",
"scope": null,
"escapedName": "concat-stream",
"name": "concat-stream",
"rawSpec": "^1.6.0",
"saveSpec": null,
"fetchSpec": "^1.6.0"
"spec": ">=1.6.0 <2.0.0",
"type": "range"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
"_shasum": "0aac662fd52be78964d5532f694784e70110acf7",
"_shrinkwrap": null,
"_spec": "concat-stream@^1.6.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Max Ogden",
"email": "max@maxogden.com"
@ -29,27 +52,43 @@
"bugs": {
"url": "http://github.com/maxogden/concat-stream/issues"
},
"bundleDependencies": false,
"dependencies": {
"inherits": "^2.0.3",
"readable-stream": "^2.2.2",
"typedarray": "^0.0.6"
},
"deprecated": false,
"description": "writable stream that concatenates strings or binary data and calls a callback with the result",
"devDependencies": {
"tape": "^4.6.3"
},
"directories": {},
"dist": {
"shasum": "0aac662fd52be78964d5532f694784e70110acf7",
"tarball": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz"
},
"engines": [
"node >= 0.8"
],
"files": [
"index.js"
],
"homepage": "https://github.com/maxogden/concat-stream#readme",
"gitHead": "e482281642c1e011fc158f5749ef40a71c77a426",
"homepage": "https://github.com/maxogden/concat-stream",
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "mafintosh",
"email": "mathiasbuus@gmail.com"
},
{
"name": "maxogden",
"email": "max@maxogden.com"
}
],
"name": "concat-stream",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/maxogden/concat-stream.git"

54
tools/eslint/node_modules/core-util-is/package.json

@ -1,27 +1,46 @@
{
"_from": "core-util-is@~1.0.0",
"_args": [
[
{
"raw": "core-util-is@~1.0.0",
"scope": null,
"escapedName": "core-util-is",
"name": "core-util-is",
"rawSpec": "~1.0.0",
"spec": ">=1.0.0 <1.1.0",
"type": "range"
},
"/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/readable-stream"
]
],
"_from": "core-util-is@>=1.0.0 <1.1.0",
"_id": "core-util-is@1.0.2",
"_inBundle": false,
"_integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"_inCache": true,
"_location": "/eslint/core-util-is",
"_nodeVersion": "4.0.0",
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
"_npmVersion": "3.3.2",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "core-util-is@~1.0.0",
"name": "core-util-is",
"scope": null,
"escapedName": "core-util-is",
"name": "core-util-is",
"rawSpec": "~1.0.0",
"saveSpec": null,
"fetchSpec": "~1.0.0"
"spec": ">=1.0.0 <1.1.0",
"type": "range"
},
"_requiredBy": [
"/eslint/readable-stream"
],
"_resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"_shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7",
"_shrinkwrap": null,
"_spec": "core-util-is@~1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/readable-stream",
"_where": "/Users/mborins/code/node/v6.x/tools/eslint-tmp/node_modules/eslint/node_modules/readable-stream",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@ -30,12 +49,17 @@
"bugs": {
"url": "https://github.com/isaacs/core-util-is/issues"
},
"bundleDependencies": false,
"deprecated": false,
"dependencies": {},
"description": "The `util.is*` functions introduced in Node v0.12.",
"devDependencies": {
"tap": "^2.3.0"
},
"directories": {},
"dist": {
"shasum": "b5fd54220aa2bc5ab57aab7140c940754503c1a7",
"tarball": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
},
"gitHead": "a177da234df5638b363ddc15fa324619a38577c8",
"homepage": "https://github.com/isaacs/core-util-is#readme",
"keywords": [
"util",
@ -50,7 +74,15 @@
],
"license": "MIT",
"main": "lib/util.js",
"maintainers": [
{
"name": "isaacs",
"email": "i@izs.me"
}
],
"name": "core-util-is",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/core-util-is.git"

19
tools/eslint/node_modules/cross-spawn/LICENSE

@ -0,0 +1,19 @@
Copyright (c) 2014 IndigoUnited
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

85
tools/eslint/node_modules/cross-spawn/README.md

@ -0,0 +1,85 @@
# cross-spawn
[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Build status][appveyor-image]][appveyor-url] [![Dependency status][david-dm-image]][david-dm-url] [![Dev Dependency status][david-dm-dev-image]][david-dm-dev-url]
[npm-url]:https://npmjs.org/package/cross-spawn
[downloads-image]:http://img.shields.io/npm/dm/cross-spawn.svg
[npm-image]:http://img.shields.io/npm/v/cross-spawn.svg
[travis-url]:https://travis-ci.org/IndigoUnited/node-cross-spawn
[travis-image]:http://img.shields.io/travis/IndigoUnited/node-cross-spawn/master.svg
[appveyor-url]:https://ci.appveyor.com/project/satazor/node-cross-spawn
[appveyor-image]:https://img.shields.io/appveyor/ci/satazor/node-cross-spawn/master.svg
[david-dm-url]:https://david-dm.org/IndigoUnited/node-cross-spawn
[david-dm-image]:https://img.shields.io/david/IndigoUnited/node-cross-spawn.svg
[david-dm-dev-url]:https://david-dm.org/IndigoUnited/node-cross-spawn#info=devDependencies
[david-dm-dev-image]:https://img.shields.io/david/dev/IndigoUnited/node-cross-spawn.svg
A cross platform solution to node's spawn and spawnSync.
## Installation
`$ npm install cross-spawn`
If you are using `spawnSync` on node 0.10 or older, you will also need to install `spawn-sync`:
`$ npm install spawn-sync`
## Why
Node has issues when using spawn on Windows:
- It ignores [PATHEXT](https://github.com/joyent/node/issues/2318)
- It does not support [shebangs](http://pt.wikipedia.org/wiki/Shebang)
- No `options.shell` support on node < v6
- It does not allow you to run `del` or `dir`
All these issues are handled correctly by `cross-spawn`.
There are some known modules, such as [win-spawn](https://github.com/ForbesLindesay/win-spawn), that try to solve this but they are either broken or provide faulty escaping of shell arguments.
## Usage
Exactly the same way as node's [`spawn`](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options) or [`spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options), so it's a drop in replacement.
```js
var spawn = require('cross-spawn');
// Spawn NPM asynchronously
var child = spawn('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
// Spawn NPM synchronously
var results = spawn.sync('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
```
## Caveats
#### `options.shell` as an alternative to `cross-spawn`
Starting from node v6, `spawn` has a `shell` option that allows you run commands from within a shell. This new option solves most of the problems that `cross-spawn` attempts to solve, but:
- It's not supported in node < v6
- It has no support for shebangs on Windows
- You must manually escape the command and arguments which is very error prone, specially when passing user input
If you are using the `shell` option to spawn a command in a cross platform way, consider using `cross-spawn` instead. You have been warned.
#### Shebangs
While `cross-spawn` handles shebangs on Windows, its support is limited: e.g.: it doesn't handle arguments after the path, e.g.: `#!/bin/bash -e`.
Remember to always test your code on Windows!
## Tests
`$ npm test`
## License
Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).

59
tools/eslint/node_modules/cross-spawn/index.js

@ -0,0 +1,59 @@
'use strict';
var cp = require('child_process');
var parse = require('./lib/parse');
var enoent = require('./lib/enoent');
var cpSpawnSync = cp.spawnSync;
function spawn(command, args, options) {
var parsed;
var spawned;
// Parse the arguments
parsed = parse(command, args, options);
// Spawn the child process
spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
// Hook into child process "exit" event to emit an error if the command
// does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
enoent.hookChildProcess(spawned, parsed);
return spawned;
}
function spawnSync(command, args, options) {
var parsed;
var result;
if (!cpSpawnSync) {
try {
cpSpawnSync = require('spawn-sync'); // eslint-disable-line global-require
} catch (ex) {
throw new Error(
'In order to use spawnSync on node 0.10 or older, you must ' +
'install spawn-sync:\n\n' +
' npm install spawn-sync --save'
);
}
}
// Parse the arguments
parsed = parse(command, args, options);
// Spawn the child process
result = cpSpawnSync(parsed.command, parsed.args, parsed.options);
// Analyze if the command does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
return result;
}
module.exports = spawn;
module.exports.spawn = spawn;
module.exports.sync = spawnSync;
module.exports._parse = parse;
module.exports._enoent = enoent;

73
tools/eslint/node_modules/cross-spawn/lib/enoent.js

@ -0,0 +1,73 @@
'use strict';
var isWin = process.platform === 'win32';
var resolveCommand = require('./util/resolveCommand');
var isNode10 = process.version.indexOf('v0.10.') === 0;
function notFoundError(command, syscall) {
var err;
err = new Error(syscall + ' ' + command + ' ENOENT');
err.code = err.errno = 'ENOENT';
err.syscall = syscall + ' ' + command;
return err;
}
function hookChildProcess(cp, parsed) {
var originalEmit;
if (!isWin) {
return;
}
originalEmit = cp.emit;
cp.emit = function (name, arg1) {
var err;
// If emitting "exit" event and exit code is 1, we need to check if
// the command exists and emit an "error" instead
// See: https://github.com/IndigoUnited/node-cross-spawn/issues/16
if (name === 'exit') {
err = verifyENOENT(arg1, parsed, 'spawn');
if (err) {
return originalEmit.call(cp, 'error', err);
}
}
return originalEmit.apply(cp, arguments);
};
}
function verifyENOENT(status, parsed) {
if (isWin && status === 1 && !parsed.file) {
return notFoundError(parsed.original, 'spawn');
}
return null;
}
function verifyENOENTSync(status, parsed) {
if (isWin && status === 1 && !parsed.file) {
return notFoundError(parsed.original, 'spawnSync');
}
// If we are in node 10, then we are using spawn-sync; if it exited
// with -1 it probably means that the command does not exist
if (isNode10 && status === -1) {
parsed.file = isWin ? parsed.file : resolveCommand(parsed.original);
if (!parsed.file) {
return notFoundError(parsed.original, 'spawnSync');
}
}
return null;
}
module.exports.hookChildProcess = hookChildProcess;
module.exports.verifyENOENT = verifyENOENT;
module.exports.verifyENOENTSync = verifyENOENTSync;
module.exports.notFoundError = notFoundError;

113
tools/eslint/node_modules/cross-spawn/lib/parse.js

@ -0,0 +1,113 @@
'use strict';
var resolveCommand = require('./util/resolveCommand');
var hasEmptyArgumentBug = require('./util/hasEmptyArgumentBug');
var escapeArgument = require('./util/escapeArgument');
var escapeCommand = require('./util/escapeCommand');
var readShebang = require('./util/readShebang');
var isWin = process.platform === 'win32';
var skipShellRegExp = /\.(?:com|exe)$/i;
// Supported in Node >= 6 and >= 4.8
var supportsShellOption = parseInt(process.version.substr(1).split('.')[0], 10) >= 6 ||
parseInt(process.version.substr(1).split('.')[0], 10) === 4 && parseInt(process.version.substr(1).split('.')[1], 10) >= 8;
function parseNonShell(parsed) {
var shebang;
var needsShell;
var applyQuotes;
if (!isWin) {
return parsed;
}
// Detect & add support for shebangs
parsed.file = resolveCommand(parsed.command);
parsed.file = parsed.file || resolveCommand(parsed.command, true);
shebang = parsed.file && readShebang(parsed.file);
if (shebang) {
parsed.args.unshift(parsed.file);
parsed.command = shebang;
needsShell = hasEmptyArgumentBug || !skipShellRegExp.test(resolveCommand(shebang) || resolveCommand(shebang, true));
} else {
needsShell = hasEmptyArgumentBug || !skipShellRegExp.test(parsed.file);
}
// If a shell is required, use cmd.exe and take care of escaping everything correctly
if (needsShell) {
// Escape command & arguments
applyQuotes = (parsed.command !== 'echo'); // Do not quote arguments for the special "echo" command
parsed.command = escapeCommand(parsed.command);
parsed.args = parsed.args.map(function (arg) {
return escapeArgument(arg, applyQuotes);
});
// Make use of cmd.exe
parsed.args = ['/d', '/s', '/c', '"' + parsed.command + (parsed.args.length ? ' ' + parsed.args.join(' ') : '') + '"'];
parsed.command = process.env.comspec || 'cmd.exe';
parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
}
return parsed;
}
function parseShell(parsed) {
var shellCommand;
// If node supports the shell option, there's no need to mimic its behavior
if (supportsShellOption) {
return parsed;
}
// Mimic node shell option, see: https://github.com/nodejs/node/blob/b9f6a2dc059a1062776133f3d4fd848c4da7d150/lib/child_process.js#L335
shellCommand = [parsed.command].concat(parsed.args).join(' ');
if (isWin) {
parsed.command = typeof parsed.options.shell === 'string' ? parsed.options.shell : process.env.comspec || 'cmd.exe';
parsed.args = ['/d', '/s', '/c', '"' + shellCommand + '"'];
parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
} else {
if (typeof parsed.options.shell === 'string') {
parsed.command = parsed.options.shell;
} else if (process.platform === 'android') {
parsed.command = '/system/bin/sh';
} else {
parsed.command = '/bin/sh';
}
parsed.args = ['-c', shellCommand];
}
return parsed;
}
// ------------------------------------------------
function parse(command, args, options) {
var parsed;
// Normalize arguments, similar to nodejs
if (args && !Array.isArray(args)) {
options = args;
args = null;
}
args = args ? args.slice(0) : []; // Clone array to avoid changing the original
options = options || {};
// Build our parsed object
parsed = {
command: command,
args: args,
options: options,
file: undefined,
original: command,
};
// Delegate further parsing to shell or non-shell
return options.shell ? parseShell(parsed) : parseNonShell(parsed);
}
module.exports = parse;

30
tools/eslint/node_modules/cross-spawn/lib/util/escapeArgument.js

@ -0,0 +1,30 @@
'use strict';
function escapeArgument(arg, quote) {
// Convert to string
arg = '' + arg;
// If we are not going to quote the argument,
// escape shell metacharacters, including double and single quotes:
if (!quote) {
arg = arg.replace(/([()%!^<>&|;,"'\s])/g, '^$1');
} else {
// Sequence of backslashes followed by a double quote:
// double up all the backslashes and escape the double quote
arg = arg.replace(/(\\*)"/g, '$1$1\\"');
// Sequence of backslashes followed by the end of the string
// (which will become a double quote later):
// double up all the backslashes
arg = arg.replace(/(\\*)$/, '$1$1');
// All other backslashes occur literally
// Quote the whole thing:
arg = '"' + arg + '"';
}
return arg;
}
module.exports = escapeArgument;

12
tools/eslint/node_modules/cross-spawn/lib/util/escapeCommand.js

@ -0,0 +1,12 @@
'use strict';
var escapeArgument = require('./escapeArgument');
function escapeCommand(command) {
// Do not escape if this command is not dangerous..
// We do this so that commands like "echo" or "ifconfig" work
// Quoting them, will make them unaccessible
return /^[a-z0-9_-]+$/i.test(command) ? command : escapeArgument(command, true);
}
module.exports = escapeCommand;

18
tools/eslint/node_modules/cross-spawn/lib/util/hasEmptyArgumentBug.js

@ -0,0 +1,18 @@
'use strict';
// See: https://github.com/IndigoUnited/node-cross-spawn/pull/34#issuecomment-221623455
function hasEmptyArgumentBug() {
var nodeVer;
if (process.platform !== 'win32') {
return false;
}
nodeVer = process.version.substr(1).split('.').map(function (num) {
return parseInt(num, 10);
});
return (nodeVer[0] === 0 && nodeVer[1] < 12);
}
module.exports = hasEmptyArgumentBug();

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save