Browse Source

tools: update to ESLint 4.1.0

Update ESLint to 4.1.0. This fixes a bug that previously prevented us
from using the new and stricter indentation checking.

Refs: https://github.com/eslint/eslint/issues/8721
Backport-PR-URL: https://github.com/nodejs/node/pull/14830
PR-URL: https://github.com/nodejs/node/pull/13895
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
v6.x
Rich Trott 8 years ago
committed by Myles Borins
parent
commit
d34bc78fd4
No known key found for this signature in database GPG Key ID: 933B01F40B5CA946
  1. 4
      tools/eslint/README.md
  2. 68
      tools/eslint/conf/config-schema.js
  3. 15
      tools/eslint/conf/config-schema.json
  4. 6
      tools/eslint/conf/default-config-options.js
  5. 109
      tools/eslint/lib/cli-engine.js
  6. 2
      tools/eslint/lib/code-path-analysis/code-path-state.js
  7. 440
      tools/eslint/lib/config.js
  8. 130
      tools/eslint/lib/config/config-cache.js
  9. 58
      tools/eslint/lib/config/config-file.js
  10. 51
      tools/eslint/lib/config/config-initializer.js
  11. 113
      tools/eslint/lib/config/config-ops.js
  12. 4
      tools/eslint/lib/config/config-validator.js
  13. 98
      tools/eslint/lib/ignored-paths.js
  14. 78
      tools/eslint/lib/linter.js
  15. 77
      tools/eslint/lib/rule-context.js
  16. 129
      tools/eslint/lib/rules/arrow-body-style.js
  17. 43
      tools/eslint/lib/rules/indent.js
  18. 13
      tools/eslint/lib/rules/no-extra-parens.js
  19. 32
      tools/eslint/lib/rules/no-trailing-spaces.js
  20. 14
      tools/eslint/lib/rules/space-infix-ops.js
  21. 6
      tools/eslint/lib/testers/rule-tester.js
  22. 21
      tools/eslint/lib/token-store/index.js
  23. 15
      tools/eslint/lib/util/npm-util.js
  24. 66
      tools/eslint/node_modules/acorn-jsx/node_modules/acorn/package.json
  25. 60
      tools/eslint/node_modules/acorn-jsx/package.json
  26. 66
      tools/eslint/node_modules/acorn/package.json
  27. 62
      tools/eslint/node_modules/ajv-keywords/package.json
  28. 65
      tools/eslint/node_modules/ajv/package.json
  29. 62
      tools/eslint/node_modules/ansi-escapes/package.json
  30. 73
      tools/eslint/node_modules/ansi-regex/package.json
  31. 66
      tools/eslint/node_modules/ansi-styles/package.json
  32. 61
      tools/eslint/node_modules/argparse/package.json
  33. 61
      tools/eslint/node_modules/array-union/package.json
  34. 62
      tools/eslint/node_modules/array-uniq/package.json
  35. 58
      tools/eslint/node_modules/arrify/package.json
  36. 80
      tools/eslint/node_modules/babel-code-frame/package.json
  37. 2
      tools/eslint/node_modules/bail/package.json
  38. 61
      tools/eslint/node_modules/balanced-match/package.json
  39. 65
      tools/eslint/node_modules/brace-expansion/package.json
  40. 59
      tools/eslint/node_modules/caller-path/package.json
  41. 60
      tools/eslint/node_modules/callsites/package.json
  42. 101
      tools/eslint/node_modules/ccount/package.json
  43. 74
      tools/eslint/node_modules/chalk/package.json
  44. 98
      tools/eslint/node_modules/character-entities-html4/package.json
  45. 2
      tools/eslint/node_modules/character-entities-legacy/package.json
  46. 2
      tools/eslint/node_modules/character-entities/package.json
  47. 2
      tools/eslint/node_modules/character-reference-invalid/package.json
  48. 62
      tools/eslint/node_modules/circular-json/package.json
  49. 61
      tools/eslint/node_modules/cli-cursor/package.json
  50. 62
      tools/eslint/node_modules/cli-width/package.json
  51. 66
      tools/eslint/node_modules/co/package.json
  52. 12
      tools/eslint/node_modules/collapse-white-space/package.json
  53. 55
      tools/eslint/node_modules/concat-map/package.json
  54. 65
      tools/eslint/node_modules/concat-stream/package.json
  55. 58
      tools/eslint/node_modules/core-util-is/package.json
  56. 60
      tools/eslint/node_modules/debug/package.json
  57. 58
      tools/eslint/node_modules/deep-is/package.json
  58. 61
      tools/eslint/node_modules/del/package.json
  59. 66
      tools/eslint/node_modules/doctrine/package.json
  60. 70
      tools/eslint/node_modules/escape-string-regexp/package.json
  61. 22
      tools/eslint/node_modules/eslint-plugin-markdown/package.json
  62. 67
      tools/eslint/node_modules/eslint-scope/package.json
  63. 91
      tools/eslint/node_modules/espree/package.json
  64. 61
      tools/eslint/node_modules/esprima/package.json
  65. 63
      tools/eslint/node_modules/esquery/package.json
  66. 3
      tools/eslint/node_modules/esrecurse/.babelrc
  67. 170
      tools/eslint/node_modules/esrecurse/README.md
  68. 19
      tools/eslint/node_modules/esrecurse/node_modules/estraverse/LICENSE.BSD
  69. 124
      tools/eslint/node_modules/esrecurse/node_modules/estraverse/README.md
  70. 843
      tools/eslint/node_modules/esrecurse/node_modules/estraverse/estraverse.js
  71. 100
      tools/eslint/node_modules/esrecurse/node_modules/estraverse/package.json
  72. 4322
      tools/eslint/node_modules/esrecurse/package-lock.json
  73. 102
      tools/eslint/node_modules/esrecurse/package.json
  74. 72
      tools/eslint/node_modules/estraverse/package.json
  75. 64
      tools/eslint/node_modules/esutils/package.json
  76. 2
      tools/eslint/node_modules/extend/package.json
  77. 61
      tools/eslint/node_modules/external-editor/package.json
  78. 62
      tools/eslint/node_modules/fast-levenshtein/package.json
  79. 61
      tools/eslint/node_modules/figures/package.json
  80. 59
      tools/eslint/node_modules/file-entry-cache/package.json
  81. 61
      tools/eslint/node_modules/flat-cache/package.json
  82. 61
      tools/eslint/node_modules/fs.realpath/package.json
  83. 2
      tools/eslint/node_modules/function-bind/package.json
  84. 57
      tools/eslint/node_modules/generate-function/package.json
  85. 57
      tools/eslint/node_modules/generate-object-property/package.json
  86. 64
      tools/eslint/node_modules/glob/package.json
  87. 73
      tools/eslint/node_modules/globals/package.json
  88. 69
      tools/eslint/node_modules/globby/package.json
  89. 61
      tools/eslint/node_modules/graceful-fs/package.json
  90. 63
      tools/eslint/node_modules/has-ansi/package.json
  91. 4
      tools/eslint/node_modules/has/package.json
  92. 2
      tools/eslint/node_modules/iconv-lite/encodings/internal.js
  93. 70
      tools/eslint/node_modules/iconv-lite/package.json
  94. 60
      tools/eslint/node_modules/ignore/package.json
  95. 54
      tools/eslint/node_modules/imurmurhash/package.json
  96. 73
      tools/eslint/node_modules/inflight/package.json
  97. 66
      tools/eslint/node_modules/inherits/package.json
  98. 5
      tools/eslint/node_modules/inquirer/lib/prompts/password.js
  99. 102
      tools/eslint/node_modules/inquirer/package.json
  100. 2
      tools/eslint/node_modules/is-alphabetical/package.json

4
tools/eslint/README.md

@ -137,6 +137,10 @@ These folks keep the project moving and are resources for help.
We have scheduled releases every two weeks on Friday or Saturday.
## Code of Conduct
ESLint adheres to the [JS Foundation Code of Conduct](https://js.foundation/community/code-of-conduct).
## Filing Issues
Before filing an issue, please be sure to read the guidelines for what you're reporting:

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

@ -0,0 +1,68 @@
/**
* @fileoverview Defines a schema for configs.
* @author Sylvan Mably
*/
"use strict";
const baseConfigProperties = {
env: { type: "object" },
globals: { type: "object" },
parser: { type: ["string", "null"] },
parserOptions: { type: "object" },
plugins: { type: "array" },
rules: { type: "object" },
settings: { type: "object" }
};
const overrideProperties = Object.assign(
{},
baseConfigProperties,
{
files: {
oneOf: [
{ type: "string" },
{
type: "array",
items: { type: "string" },
minItems: 1
}
]
},
excludedFiles: {
oneOf: [
{ type: "string" },
{
type: "array",
items: { type: "string" }
}
]
}
}
);
const topLevelConfigProperties = Object.assign(
{},
baseConfigProperties,
{
extends: { type: ["string", "array"] },
root: { type: "boolean" },
overrides: {
type: "array",
items: {
type: "object",
properties: overrideProperties,
required: ["files"],
additionalProperties: false
}
}
}
);
const configSchema = {
type: "object",
properties: topLevelConfigProperties,
additionalProperties: false
};
module.exports = configSchema;

15
tools/eslint/conf/config-schema.json

@ -1,15 +0,0 @@
{
"type": "object",
"properties": {
"root": { "type": "boolean" },
"globals": { "type": ["object"] },
"parser": { "type": ["string", "null"] },
"env": { "type": "object" },
"plugins": { "type": ["array"] },
"settings": { "type": "object" },
"extends": { "type": ["string", "array"] },
"rules": { "type": "object" },
"parserOptions": { "type": "object" }
},
"additionalProperties": false
}

6
tools/eslint/conf/default-config-options.js

@ -25,9 +25,5 @@ module.exports = deepFreeze({
rules: {},
settings: {},
parser: "espree",
parserOptions: {
ecmaVersion: 5,
sourceType: "script",
ecmaFeatures: {}
}
parserOptions: {}
});

109
tools/eslint/lib/cli-engine.js

@ -23,11 +23,9 @@ const fs = require("fs"),
Config = require("./config"),
fileEntryCache = require("file-entry-cache"),
globUtil = require("./util/glob-util"),
SourceCodeFixer = require("./util/source-code-fixer"),
validator = require("./config/config-validator"),
stringify = require("json-stable-stringify"),
hash = require("./util/hash"),
pkg = require("../package.json");
const debug = require("debug")("eslint:cli-engine");
@ -132,80 +130,6 @@ function calculateStatsPerRun(results) {
});
}
/**
* Performs multiple autofix passes over the text until as many fixes as possible
* have been applied.
* @param {string} text The source text to apply fixes to.
* @param {Object} config The ESLint config object to use.
* @param {Object} options The ESLint options object to use.
* @param {string} options.filename The filename from which the text was read.
* @param {boolean} options.allowInlineConfig Flag indicating if inline comments
* should be allowed.
* @param {Linter} linter Linter context
* @returns {Object} The result of the fix operation as returned from the
* SourceCodeFixer.
* @private
*/
function multipassFix(text, config, options, linter) {
const MAX_PASSES = 10;
let messages = [],
fixedResult,
fixed = false,
passNumber = 0;
/**
* This loop continues until one of the following is true:
*
* 1. No more fixes have been applied.
* 2. Ten passes have been made.
*
* That means anytime a fix is successfully applied, there will be another pass.
* Essentially, guaranteeing a minimum of two passes.
*/
do {
passNumber++;
debug(`Linting code for ${options.filename} (pass ${passNumber})`);
messages = linter.verify(text, config, options);
debug(`Generating fixed text for ${options.filename} (pass ${passNumber})`);
fixedResult = SourceCodeFixer.applyFixes(linter.getSourceCode(), messages);
// stop if there are any syntax errors.
// 'fixedResult.output' is a empty string.
if (messages.length === 1 && messages[0].fatal) {
break;
}
// keep track if any fixes were ever applied - important for return value
fixed = fixed || fixedResult.fixed;
// update to use the fixed output instead of the original text
text = fixedResult.output;
} while (
fixedResult.fixed &&
passNumber < MAX_PASSES
);
/*
* If the last result had fixes, we need to lint again to be sure we have
* the most up-to-date information.
*/
if (fixedResult.fixed) {
fixedResult.messages = linter.verify(text, config, options);
}
// ensure the last result properly reflects if fixes were done
fixedResult.fixed = fixed;
fixedResult.output = text;
return fixedResult;
}
/**
* Processes an source code using ESLint.
* @param {string} text The source code to check.
@ -269,10 +193,10 @@ function processText(text, configHelper, filename, fix, allowInlineConfig, linte
} else {
if (fix) {
fixedResult = multipassFix(text, config, {
fixedResult = linter.verifyAndFix(text, config, {
filename,
allowInlineConfig
}, linter);
});
messages = fixedResult.messages;
} else {
messages = linter.verify(text, config, {
@ -394,7 +318,7 @@ function getCacheFile(cacheFile, cwd) {
cacheFile = path.normalize(cacheFile);
const resolvedCacheFile = path.resolve(cwd, cacheFile);
const looksLikeADirectory = cacheFile[cacheFile.length - 1 ] === path.sep;
const looksLikeADirectory = cacheFile[cacheFile.length - 1] === path.sep;
/**
* return the name for the cache file in case the provided parameter is a directory
@ -474,15 +398,17 @@ class CLIEngine {
this.options = options;
this.linter = new Linter();
const cacheFile = getCacheFile(this.options.cacheLocation || this.options.cacheFile, this.options.cwd);
/**
* Cache used to avoid operating on files that haven't changed since the
* last successful execution (e.g., file passed linting with no errors and
* no warnings).
* @type {Object}
*/
this._fileCache = fileEntryCache.create(cacheFile);
if (options.cache) {
const cacheFile = getCacheFile(this.options.cacheLocation || this.options.cacheFile, this.options.cwd);
/**
* Cache used to avoid operating on files that haven't changed since the
* last successful execution (e.g., file passed linting with no errors and
* no warnings).
* @type {Object}
*/
this._fileCache = fileEntryCache.create(cacheFile);
}
// load in additional rules
if (this.options.rulePaths) {
@ -571,6 +497,11 @@ class CLIEngine {
fileCache = this._fileCache,
configHelper = this.config;
let prevConfig; // the previous configuration used
const cacheFile = getCacheFile(this.options.cacheLocation || this.options.cacheFile, this.options.cwd);
if (!options.cache && fs.existsSync(cacheFile)) {
fs.unlinkSync(cacheFile);
}
/**
* Calculates the hash of the config file used to validate a given file
@ -646,8 +577,6 @@ class CLIEngine {
// move to the next file
return;
}
} else {
fileCache.destroy();
}
debug(`Processing ${filename}`);

2
tools/eslint/lib/code-path-analysis/code-path-state.js

@ -240,7 +240,7 @@ class CodePathState {
this.breakContext = null;
this.currentSegments = [];
this.initialSegment = this.forkContext.head[ 0 ];
this.initialSegment = this.forkContext.head[0];
// returnedSegments and thrownSegments push elements into finalSegments also.
const final = this.finalSegments = [];

440
tools/eslint/lib/config.js

@ -13,6 +13,7 @@ const path = require("path"),
os = require("os"),
ConfigOps = require("./config/config-ops"),
ConfigFile = require("./config/config-file"),
ConfigCache = require("./config/config-cache"),
Plugins = require("./config/plugins"),
FileFinder = require("./file-finder"),
isResolvable = require("is-resolvable");
@ -24,149 +25,22 @@ const debug = require("debug")("eslint:config");
//------------------------------------------------------------------------------
const PERSONAL_CONFIG_DIR = os.homedir() || null;
const SUBCONFIG_SEP = ":";
//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
/**
* Check if item is an javascript object
* @param {*} item object to check for
* @returns {boolean} True if its an object
* @private
*/
function isObject(item) {
return typeof item === "object" && !Array.isArray(item) && item !== null;
}
/**
* Load and parse a JSON config object from a file.
* @param {string|Object} configToLoad the path to the JSON config file or the config object itself.
* @param {Config} configContext config instance object
* @returns {Object} the parsed config object (empty object if there was a parse error)
* @private
*/
function loadConfig(configToLoad, configContext) {
let config = {},
filePath = "";
if (configToLoad) {
if (isObject(configToLoad)) {
config = configToLoad;
if (config.extends) {
config = ConfigFile.applyExtends(config, configContext, filePath);
}
} else {
filePath = configToLoad;
config = ConfigFile.load(filePath, configContext);
}
}
return config;
}
/**
* Get personal config object from ~/.eslintrc.
* @param {Config} configContext Plugin context for the config instance
* @returns {Object} the personal config object (null if there is no personal config)
* @private
*/
function getPersonalConfig(configContext) {
let config;
if (PERSONAL_CONFIG_DIR) {
const filename = ConfigFile.getFilenameForDirectory(PERSONAL_CONFIG_DIR);
if (filename) {
debug("Using personal config");
config = loadConfig(filename, configContext);
}
}
return config || null;
}
/**
* Determine if rules were explicitly passed in as options.
* Determines if any rules were explicitly passed in as options.
* @param {Object} options The options used to create our configuration.
* @returns {boolean} True if rules were passed in as options, false otherwise.
* @private
*/
function hasRules(options) {
return options.rules && Object.keys(options.rules).length > 0;
}
/**
* Get a local config object.
* @param {Config} thisConfig A Config object.
* @param {string} directory The directory to start looking in for a local config file.
* @returns {Object} The local config object, or an empty object if there is no local config.
*/
function getLocalConfig(thisConfig, directory) {
const projectConfigPath = ConfigFile.getFilenameForDirectory(thisConfig.options.cwd);
const localConfigFiles = thisConfig.findLocalConfigFiles(directory);
let found,
config = {};
for (const localConfigFile of localConfigFiles) {
// Don't consider the personal config file in the home directory,
// except if the home directory is the same as the current working directory
if (path.dirname(localConfigFile) === PERSONAL_CONFIG_DIR && localConfigFile !== projectConfigPath) {
continue;
}
debug(`Loading ${localConfigFile}`);
const localConfig = loadConfig(localConfigFile, thisConfig);
// Don't consider a local config file found if the config is null
if (!localConfig) {
continue;
}
found = true;
debug(`Using ${localConfigFile}`);
config = ConfigOps.merge(localConfig, config);
// Check for root flag
if (localConfig.root === true) {
break;
}
}
if (!found && !thisConfig.useSpecificConfig) {
/*
* - Is there a personal config in the user's home directory? If so,
* merge that with the passed-in config.
* - Otherwise, if no rules were manually passed in, throw and error.
* - Note: This function is not called if useEslintrc is false.
*/
const personalConfig = getPersonalConfig(thisConfig);
if (personalConfig) {
config = ConfigOps.merge(config, personalConfig);
} else if (!hasRules(thisConfig.options) && !thisConfig.options.baseConfig) {
// No config file, no manual configuration, and no rules, so error.
const noConfigError = new Error("No ESLint configuration found.");
noConfigError.messageTemplate = "no-config-found";
noConfigError.messageData = {
directory,
filesExamined: localConfigFiles
};
throw noConfigError;
}
}
return config;
}
//------------------------------------------------------------------------------
// API
//------------------------------------------------------------------------------
@ -177,7 +51,6 @@ function getLocalConfig(thisConfig, directory) {
class Config {
/**
* Config options
* @param {Object} options Options to be passed in
* @param {Linter} linterContext Linter instance object
*/
@ -187,18 +60,26 @@ class Config {
this.linterContext = linterContext;
this.plugins = new Plugins(linterContext.environments, linterContext.rules);
this.options = options;
this.ignore = options.ignore;
this.ignorePath = options.ignorePath;
this.cache = {};
this.parser = options.parser;
this.parserOptions = options.parserOptions || {};
this.baseConfig = options.baseConfig ? loadConfig(options.baseConfig, this) : { rules: {} };
this.baseConfig = options.baseConfig
? ConfigOps.merge({}, ConfigFile.loadObject(options.baseConfig, this))
: { rules: {} };
this.baseConfig.filePath = "";
this.baseConfig.baseDirectory = this.options.cwd;
this.configCache = new ConfigCache();
this.configCache.setConfig(this.baseConfig.filePath, this.baseConfig);
this.configCache.setMergedVectorConfig(this.baseConfig.filePath, this.baseConfig);
this.useEslintrc = (options.useEslintrc !== false);
this.env = (options.envs || []).reduce((envs, name) => {
envs[ name ] = true;
envs[name] = true;
return envs;
}, {});
@ -209,132 +90,275 @@ class Config {
* If user declares "foo", convert to "foo:false".
*/
this.globals = (options.globals || []).reduce((globals, def) => {
const parts = def.split(":");
const parts = def.split(SUBCONFIG_SEP);
globals[parts[0]] = (parts.length > 1 && parts[1] === "true");
return globals;
}, {});
this.options = options;
this.loadConfigFile(options.configFile);
this.loadSpecificConfig(options.configFile);
// Empty values in configs don't merge properly
const cliConfigOptions = {
env: this.env,
rules: this.options.rules,
globals: this.globals,
parserOptions: this.parserOptions,
plugins: this.options.plugins
};
this.cliConfig = {};
Object.keys(cliConfigOptions).forEach(configKey => {
const value = cliConfigOptions[configKey];
if (value) {
this.cliConfig[configKey] = value;
}
});
}
/**
* Loads the config from the configuration file
* @param {string} configFile - patch to the config file
* @returns {undefined}
*/
loadConfigFile(configFile) {
if (configFile) {
debug(`Using command line config ${configFile}`);
if (isResolvable(configFile) || isResolvable(`eslint-config-${configFile}`) || configFile.charAt(0) === "@") {
this.useSpecificConfig = loadConfig(configFile, this);
} else {
this.useSpecificConfig = loadConfig(path.resolve(this.options.cwd, configFile), this);
* Loads the config options from a config specified on the command line.
* @param {string} [config] A shareable named config or path to a config file.
* @returns {void}
*/
loadSpecificConfig(config) {
if (config) {
debug(`Using command line config ${config}`);
const isNamedConfig =
isResolvable(config) ||
isResolvable(`eslint-config-${config}`) ||
config.charAt(0) === "@";
if (!isNamedConfig) {
config = path.resolve(this.options.cwd, config);
}
this.specificConfig = ConfigFile.load(config, this);
}
}
/**
* Build a config object merging the base config (conf/eslint-recommended),
* the environments config (conf/environments.js) and eventually the user
* config.
* @param {string} filePath a file in whose directory we start looking for a local config
* @returns {Object} config object
* Gets the personal config object from user's home directory.
* @returns {Object} the personal config object (null if there is no personal config)
* @private
*/
getConfig(filePath) {
const directory = filePath ? path.dirname(filePath) : this.options.cwd;
let config,
userConfig;
getPersonalConfig() {
if (typeof this.personalConfig === "undefined") {
let config;
debug(`Constructing config for ${filePath ? filePath : "text"}`);
if (PERSONAL_CONFIG_DIR) {
const filename = ConfigFile.getFilenameForDirectory(PERSONAL_CONFIG_DIR);
config = this.cache[directory];
if (config) {
debug("Using config from cache");
return config;
if (filename) {
debug("Using personal config");
config = ConfigFile.load(filename, this);
}
}
this.personalConfig = config || null;
}
// Step 1: Determine user-specified config from .eslintrc.* and package.json files
return this.personalConfig;
}
/**
* Builds a hierarchy of config objects, including the base config, all local configs from the directory tree,
* and a config file specified on the command line, if applicable.
* @param {string} directory a file in whose directory we start looking for a local config
* @returns {Object[]} The config objects, in ascending order of precedence
* @private
*/
getConfigHierarchy(directory) {
debug(`Constructing config file hierarchy for ${directory}`);
// Step 1: Always include baseConfig
let configs = [this.baseConfig];
// Step 2: Add user-specified config from .eslintrc.* and package.json files
if (this.useEslintrc) {
debug("Using .eslintrc and package.json files");
userConfig = getLocalConfig(this, directory);
configs = configs.concat(this.getLocalConfigHierarchy(directory));
} else {
debug("Not using .eslintrc or package.json files");
userConfig = {};
}
// Step 2: Create a copy of the baseConfig
config = ConfigOps.merge({}, this.baseConfig);
// Step 3: Merge in command line config file
if (this.specificConfig) {
debug("Using command line config file");
configs.push(this.specificConfig);
}
// Step 3: Merge in the user-specified configuration from .eslintrc and package.json
config = ConfigOps.merge(config, userConfig);
return configs;
}
// Step 4: Merge in command line config file
if (this.useSpecificConfig) {
debug("Merging command line config file");
/**
* Gets a list of config objects extracted from local config files that apply to the current directory, in
* descending order, beginning with the config that is highest in the directory tree.
* @param {string} directory The directory to start looking in for local config files.
* @returns {Object[]} The shallow local config objects, in ascending order of precedence (closest to the current
* directory at the end), or an empty array if there are no local configs.
* @private
*/
getLocalConfigHierarchy(directory) {
const localConfigFiles = this.findLocalConfigFiles(directory),
projectConfigPath = ConfigFile.getFilenameForDirectory(this.options.cwd),
searched = [],
configs = [];
config = ConfigOps.merge(config, this.useSpecificConfig);
}
for (const localConfigFile of localConfigFiles) {
const localConfigDirectory = path.dirname(localConfigFile);
const localConfigHierarchyCache = this.configCache.getHierarchyLocalConfigs(localConfigDirectory);
// Step 5: Merge in command line environments
debug("Merging command line environment settings");
config = ConfigOps.merge(config, { env: this.env });
if (localConfigHierarchyCache) {
const localConfigHierarchy = localConfigHierarchyCache.concat(configs.reverse());
// Step 6: Merge in command line rules
if (this.options.rules) {
debug("Merging command line rules");
config = ConfigOps.merge(config, { rules: this.options.rules });
}
this.configCache.setHierarchyLocalConfigs(searched, localConfigHierarchy);
return localConfigHierarchy;
}
// Don't consider the personal config file in the home directory,
// except if the home directory is the same as the current working directory
if (localConfigDirectory === PERSONAL_CONFIG_DIR && localConfigFile !== projectConfigPath) {
continue;
}
// Step 7: Merge in command line globals
config = ConfigOps.merge(config, { globals: this.globals });
debug(`Loading ${localConfigFile}`);
const localConfig = ConfigFile.load(localConfigFile, this);
// Only override parser if it is passed explicitly through the command line or if it's not
// defined yet (because the final object will at least have the parser key)
if (this.parser || !config.parser) {
config = ConfigOps.merge(config, {
parser: this.parser
});
}
// Ignore empty config files
if (!localConfig) {
continue;
}
if (this.parserOptions) {
config = ConfigOps.merge(config, {
parserOptions: this.parserOptions
});
}
debug(`Using ${localConfigFile}`);
configs.push(localConfig);
searched.push(localConfigDirectory);
// Step 8: Merge in command line plugins
if (this.options.plugins) {
debug("Merging command line plugins");
this.plugins.loadAll(this.options.plugins);
config = ConfigOps.merge(config, { plugins: this.options.plugins });
// Stop traversing if a config is found with the root flag set
if (localConfig.root) {
break;
}
}
// Step 9: Apply environments to the config if present
if (config.env) {
config = ConfigOps.applyEnvironments(config, this.linterContext.environments);
if (!configs.length && !this.specificConfig) {
// Fall back on the personal config from ~/.eslintrc
debug("Using personal config file");
const personalConfig = this.getPersonalConfig();
if (personalConfig) {
configs.push(personalConfig);
} else if (!hasRules(this.options) && !this.options.baseConfig) {
// No config file, no manual configuration, and no rules, so error.
const noConfigError = new Error("No ESLint configuration found.");
noConfigError.messageTemplate = "no-config-found";
noConfigError.messageData = {
directory,
filesExamined: localConfigFiles
};
throw noConfigError;
}
}
this.cache[directory] = config;
// Set the caches for the parent directories
this.configCache.setHierarchyLocalConfigs(searched, configs.reverse());
return config;
return configs;
}
/**
* Find local config files from directory and parent directories.
* Gets the vector of applicable configs and subconfigs from the hierarchy for a given file. A vector is an array of
* entries, each of which in an object specifying a config file path and an array of override indices corresponding
* to entries in the config file's overrides section whose glob patterns match the specified file path; e.g., the
* vector entry { configFile: '/home/john/app/.eslintrc', matchingOverrides: [0, 2] } would indicate that the main
* project .eslintrc file and its first and third override blocks apply to the current file.
* @param {string} filePath The file path for which to build the hierarchy and config vector.
* @returns {Array<Object>} config vector applicable to the specified path
* @private
*/
getConfigVector(filePath) {
const directory = filePath ? path.dirname(filePath) : this.options.cwd;
return this.getConfigHierarchy(directory).map(config => {
const vectorEntry = {
filePath: config.filePath,
matchingOverrides: []
};
if (config.overrides) {
const relativePath = path.relative(config.baseDirectory, filePath || directory);
config.overrides.forEach((override, i) => {
if (ConfigOps.pathMatchesGlobs(relativePath, override.files, override.excludedFiles)) {
vectorEntry.matchingOverrides.push(i);
}
});
}
return vectorEntry;
});
}
/**
* Finds local config files from the specified directory and its parent directories.
* @param {string} directory The directory to start searching from.
* @returns {GeneratorFunction} The paths of local config files found.
*/
findLocalConfigFiles(directory) {
if (!this.localConfigFinder) {
this.localConfigFinder = new FileFinder(ConfigFile.CONFIG_FILES, this.options.cwd);
}
return this.localConfigFinder.findAllInDirectoryAndParents(directory);
}
/**
* Builds the authoritative config object for the specified file path by merging the hierarchy of config objects
* that apply to the current file, including the base config (conf/eslint-recommended), the user's personal config
* from their homedir, all local configs from the directory tree, any specific config file passed on the command
* line, any configuration overrides set directly on the command line, and finally the environment configs
* (conf/environments).
* @param {string} filePath a file in whose directory we start looking for a local config
* @returns {Object} config object
*/
getConfig(filePath) {
const vector = this.getConfigVector(filePath);
let config = this.configCache.getMergedConfig(vector);
if (config) {
debug("Using config from cache");
return config;
}
// Step 1: Merge in the filesystem configurations (base, local, and personal)
config = ConfigOps.getConfigFromVector(vector, this.configCache);
// Step 2: Merge in command line configurations
config = ConfigOps.merge(config, this.cliConfig);
if (this.cliConfig.plugins) {
this.plugins.loadAll(this.cliConfig.plugins);
}
// Step 3: Override parser only if it is passed explicitly through the command line
// or if it's not defined yet (because the final object will at least have the parser key)
if (this.parser || !config.parser) {
config = ConfigOps.merge(config, { parser: this.parser });
}
// Step 4: Apply environments to the config if present
if (config.env) {
config = ConfigOps.applyEnvironments(config, this.linterContext.environments);
}
this.configCache.setMergedConfig(vector, config);
return config;
}
}
module.exports = Config;

130
tools/eslint/lib/config/config-cache.js

@ -0,0 +1,130 @@
/**
* @fileoverview Responsible for caching config files
* @author Sylvan Mably
*/
"use strict";
//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
/**
* Get a string hash for a config vector
* @param {Array<Object>} vector config vector to hash
* @returns {string} hash of the vector values
* @private
*/
function hash(vector) {
return JSON.stringify(vector);
}
//------------------------------------------------------------------------------
// API
//------------------------------------------------------------------------------
/**
* Configuration caching class (not exported)
*/
class ConfigCache {
constructor() {
this.filePathCache = new Map();
this.localHierarchyCache = new Map();
this.mergedVectorCache = new Map();
this.mergedCache = new Map();
}
/**
* Gets a config object from the cache for the specified config file path.
* @param {string} configFilePath the absolute path to the config file
* @returns {Object|null} config object, if found in the cache, otherwise null
* @private
*/
getConfig(configFilePath) {
return this.filePathCache.get(configFilePath);
}
/**
* Sets a config object in the cache for the specified config file path.
* @param {string} configFilePath the absolute path to the config file
* @param {Object} config the config object to add to the cache
* @returns {void}
* @private
*/
setConfig(configFilePath, config) {
this.filePathCache.set(configFilePath, config);
}
/**
* Gets a list of hierarchy-local config objects that apply to the specified directory.
* @param {string} directory the path to the directory
* @returns {Object[]|null} a list of config objects, if found in the cache, otherwise null
* @private
*/
getHierarchyLocalConfigs(directory) {
return this.localHierarchyCache.get(directory);
}
/**
* For each of the supplied parent directories, sets the list of config objects for that directory to the
* appropriate subset of the supplied parent config objects.
* @param {string[]} parentDirectories a list of parent directories to add to the config cache
* @param {Object[]} parentConfigs a list of config objects that apply to the lowest directory in parentDirectories
* @returns {void}
* @private
*/
setHierarchyLocalConfigs(parentDirectories, parentConfigs) {
parentDirectories.forEach((localConfigDirectory, i) => {
const directoryParentConfigs = parentConfigs.slice(0, parentConfigs.length - i);
this.localHierarchyCache.set(localConfigDirectory, directoryParentConfigs);
});
}
/**
* Gets a merged config object corresponding to the supplied vector.
* @param {Array<Object>} vector the vector to find a merged config for
* @returns {Object|null} a merged config object, if found in the cache, otherwise null
* @private
*/
getMergedVectorConfig(vector) {
return this.mergedVectorCache.get(hash(vector));
}
/**
* Sets a merged config object in the cache for the supplied vector.
* @param {Array<Object>} vector the vector to save a merged config for
* @param {Object} config the merged config object to add to the cache
* @returns {void}
* @private
*/
setMergedVectorConfig(vector, config) {
this.mergedVectorCache.set(hash(vector), config);
}
/**
* Gets a merged config object corresponding to the supplied vector, including configuration options from outside
* the vector.
* @param {Array<Object>} vector the vector to find a merged config for
* @returns {Object|null} a merged config object, if found in the cache, otherwise null
* @private
*/
getMergedConfig(vector) {
return this.mergedCache.get(hash(vector));
}
/**
* Sets a merged config object in the cache for the supplied vector, including configuration options from outside
* the vector.
* @param {Array<Object>} vector the vector to save a merged config for
* @param {Object} config the merged config object to add to the cache
* @returns {void}
* @private
*/
setMergedConfig(vector, config) {
this.mergedCache.set(hash(vector), config);
}
}
module.exports = ConfigCache;

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

@ -418,7 +418,7 @@ function applyExtends(config, configContext, filePath, relativeTo) {
);
}
debug(`Loading ${parentPath}`);
return ConfigOps.merge(load(parentPath, configContext, false, relativeTo), previousValue);
return ConfigOps.merge(load(parentPath, configContext, relativeTo), previousValue);
} catch (e) {
/*
@ -517,16 +517,12 @@ function resolve(filePath, relativeTo) {
/**
* Loads a configuration file from the given file path.
* @param {string} filePath The filename or package name to load the configuration
* information from.
* @param {Object} resolvedPath The value from calling resolve() on a filename or package name.
* @param {Config} configContext Plugins context
* @param {boolean} [applyEnvironments=false] Set to true to merge in environment settings.
* @param {string} [relativeTo] The path to resolve relative to.
* @returns {Object} The configuration information.
*/
function load(filePath, configContext, applyEnvironments, relativeTo) {
const resolvedPath = resolve(filePath, relativeTo),
dirname = path.dirname(resolvedPath.filePath),
function loadFromDisk(resolvedPath, configContext) {
const dirname = path.dirname(resolvedPath.filePath),
lookupPath = getLookupPath(dirname);
let config = loadConfigFile(resolvedPath);
@ -547,27 +543,60 @@ function load(filePath, configContext, applyEnvironments, relativeTo) {
}
// validate the configuration before continuing
validator.validate(config, filePath, configContext.linterContext.rules, configContext.linterContext.environments);
validator.validate(config, resolvedPath, configContext.linterContext.rules, configContext.linterContext.environments);
/*
* If an `extends` property is defined, it represents a configuration file to use as
* a "parent". Load the referenced file and merge the configuration recursively.
*/
if (config.extends) {
config = applyExtends(config, configContext, filePath, dirname);
config = applyExtends(config, configContext, resolvedPath.filePath, dirname);
}
}
if (config.env && applyEnvironments) {
return config;
}
// Merge in environment-specific globals and parserOptions.
config = ConfigOps.applyEnvironments(config, configContext.linterContext.environments);
}
/**
* Loads a config object, applying extends if present.
* @param {Object} configObject a config object to load
* @returns {Object} the config object with extends applied if present, or the passed config if not
* @private
*/
function loadObject(configObject) {
return configObject.extends ? applyExtends(configObject, "") : configObject;
}
/**
* Loads a config object from the config cache based on its filename, falling back to the disk if the file is not yet
* cached.
* @param {string} filePath the path to the config file
* @param {Config} configContext Context for the config instance
* @param {string} [relativeTo] The path to resolve relative to.
* @returns {Object} the parsed config object (empty object if there was a parse error)
* @private
*/
function load(filePath, configContext, relativeTo) {
const resolvedPath = resolve(filePath, relativeTo);
const cachedConfig = configContext.configCache.getConfig(resolvedPath.filePath);
if (cachedConfig) {
return cachedConfig;
}
const config = loadFromDisk(resolvedPath, configContext);
if (config) {
config.filePath = resolvedPath.filePath;
config.baseDirectory = path.dirname(resolvedPath.filePath);
configContext.configCache.setConfig(resolvedPath.filePath, config);
}
return config;
}
//------------------------------------------------------------------------------
// Public Interface
//------------------------------------------------------------------------------
@ -577,6 +606,7 @@ module.exports = {
getBaseDir,
getLookupPath,
load,
loadObject,
resolve,
write,
applyExtends,

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

@ -62,42 +62,47 @@ function writeFile(config, format) {
* @returns {void}
*/
function installModules(config) {
let modules = [];
const modules = {};
// Create a list of modules which should be installed based on config
if (config.plugins) {
modules = modules.concat(config.plugins.map(name => `eslint-plugin-${name}`));
for (const plugin of config.plugins) {
modules[`eslint-plugin-${plugin}`] = "latest";
}
}
if (config.extends && config.extends.indexOf("eslint:") === -1) {
modules.push(`eslint-config-${config.extends}`);
const moduleName = `eslint-config-${config.extends}`;
log.info(`Checking peerDependencies of ${moduleName}`);
modules[moduleName] = "latest";
Object.assign(
modules,
npmUtil.fetchPeerDependencies(`${moduleName}@latest`)
);
}
// Determine which modules are already installed
if (modules.length === 0) {
// If no modules, do nothing.
if (Object.keys(modules).length === 0) {
return;
}
// Add eslint to list in case user does not have it installed locally
modules.unshift("eslint");
modules.eslint = modules.eslint || "latest";
const installStatus = npmUtil.checkDevDeps(modules);
// Mark to show messages if it's new installation of eslint.
const installStatus = npmUtil.checkDevDeps(["eslint"]);
// Install packages which aren't already installed
const modulesToInstall = Object.keys(installStatus).filter(module => {
const notInstalled = installStatus[module] === false;
if (installStatus.eslint === false) {
log.info("Local ESLint installation not found.");
config.installedESLint = true;
}
if (module === "eslint" && notInstalled) {
log.info("Local ESLint installation not found.");
config.installedESLint = true;
}
// Install packages
const modulesToInstall = Object.keys(modules).map(name => `${name}@${modules[name]}`);
return notInstalled;
});
log.info(`Installing ${modulesToInstall.join(", ")}`);
if (modulesToInstall.length > 0) {
log.info(`Installing ${modulesToInstall.join(", ")}`);
npmUtil.installSyncSaveDev(modulesToInstall);
}
npmUtil.installSyncSaveDev(modulesToInstall);
}
/**
@ -265,9 +270,9 @@ function processAnswers(answers) {
function getConfigForStyleGuide(guide) {
const guides = {
google: { extends: "google" },
airbnb: { extends: "airbnb", plugins: ["react", "jsx-a11y", "import"] },
"airbnb-base": { extends: "airbnb-base", plugins: ["import"] },
standard: { extends: "standard", plugins: ["standard", "promise"] }
airbnb: { extends: "airbnb" },
"airbnb-base": { extends: "airbnb-base" },
standard: { extends: "standard" }
};
if (!guides[guide]) {

113
tools/eslint/lib/config/config-ops.js

@ -9,6 +9,9 @@
// Requirements
//------------------------------------------------------------------------------
const minimatch = require("minimatch"),
path = require("path");
const debug = require("debug")("eslint:config-ops");
//------------------------------------------------------------------------------
@ -174,7 +177,9 @@ module.exports = {
});
}
Object.keys(src).forEach(key => {
if (Array.isArray(src[key]) || Array.isArray(target[key])) {
if (key === "overrides") {
dst[key] = (target[key] || []).concat(src[key] || []);
} else if (Array.isArray(src[key]) || Array.isArray(target[key])) {
dst[key] = deepmerge(target[key], src[key], key === "plugins" || key === "extends", isRule);
} else if (typeof src[key] !== "object" || !src[key] || key === "exported" || key === "astGlobals") {
dst[key] = src[key];
@ -268,5 +273,111 @@ module.exports = {
*/
isEverySeverityValid(config) {
return Object.keys(config).every(ruleId => this.isValidSeverity(config[ruleId]));
},
/**
* Merges all configurations in a given config vector. A vector is an array of objects, each containing a config
* file path and a list of subconfig indices that match the current file path. All config data is assumed to be
* cached.
* @param {Array<Object>} vector list of config files and their subconfig indices that match the current file path
* @param {Object} configCache the config cache
* @returns {Object} config object
*/
getConfigFromVector(vector, configCache) {
const cachedConfig = configCache.getMergedVectorConfig(vector);
if (cachedConfig) {
return cachedConfig;
}
debug("Using config from partial cache");
const subvector = Array.from(vector);
let nearestCacheIndex = subvector.length - 1,
partialCachedConfig;
while (nearestCacheIndex >= 0) {
partialCachedConfig = configCache.getMergedVectorConfig(subvector);
if (partialCachedConfig) {
break;
}
subvector.pop();
nearestCacheIndex--;
}
if (!partialCachedConfig) {
partialCachedConfig = {};
}
let finalConfig = partialCachedConfig;
// Start from entry immediately following nearest cached config (first uncached entry)
for (let i = nearestCacheIndex + 1; i < vector.length; i++) {
finalConfig = this.mergeVectorEntry(finalConfig, vector[i], configCache);
configCache.setMergedVectorConfig(vector.slice(0, i + 1), finalConfig);
}
return finalConfig;
},
/**
* Merges the config options from a single vector entry into the supplied config.
* @param {Object} config the base config to merge the vector entry's options into
* @param {Object} vectorEntry a single entry from a vector, consisting of a config file path and an array of
* matching override indices
* @param {Object} configCache the config cache
* @returns {Object} merged config object
*/
mergeVectorEntry(config, vectorEntry, configCache) {
const vectorEntryConfig = Object.assign({}, configCache.getConfig(vectorEntry.filePath));
let mergedConfig = Object.assign({}, config),
overrides;
if (vectorEntryConfig.overrides) {
overrides = vectorEntryConfig.overrides.filter(
(override, overrideIndex) => vectorEntry.matchingOverrides.indexOf(overrideIndex) !== -1
);
} else {
overrides = [];
}
mergedConfig = this.merge(mergedConfig, vectorEntryConfig);
delete mergedConfig.overrides;
mergedConfig = overrides.reduce((lastConfig, override) => this.merge(lastConfig, override), mergedConfig);
if (mergedConfig.filePath) {
delete mergedConfig.filePath;
delete mergedConfig.baseDirectory;
} else if (mergedConfig.files) {
delete mergedConfig.files;
}
return mergedConfig;
},
/**
* Checks that the specified file path matches all of the supplied glob patterns.
* @param {string} filePath The file path to test patterns against
* @param {string|string[]} patterns One or more glob patterns, of which at least one should match the file path
* @param {string|string[]} [excludedPatterns] One or more glob patterns, of which none should match the file path
* @returns {boolean} True if all the supplied patterns match the file path, false otherwise
*/
pathMatchesGlobs(filePath, patterns, excludedPatterns) {
const patternList = [].concat(patterns);
const excludedPatternList = [].concat(excludedPatterns || []);
patternList.concat(excludedPatternList).forEach(pattern => {
if (path.isAbsolute(pattern) || pattern.includes("..")) {
throw new Error(`Invalid override pattern (expected relative path not containing '..'): ${pattern}`);
}
});
const opts = { matchBase: true };
return patternList.some(pattern => minimatch(filePath, pattern, opts)) &&
!excludedPatternList.some(excludedPattern => minimatch(filePath, excludedPattern, opts));
}
};

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

@ -10,7 +10,7 @@
//------------------------------------------------------------------------------
const schemaValidator = require("is-my-json-valid"),
configSchema = require("../../conf/config-schema.json"),
configSchema = require("../../conf/config-schema.js"),
util = require("util");
const validators = {
@ -170,7 +170,7 @@ function formatErrors(errors) {
return `Property "${formattedField}" is the wrong type (expected ${formattedExpectedType} but got \`${formattedValue}\`)`;
}
return `"${error.field.replace(/^(data\.)/, "")}" ${error.message}. Value: ${error.value}`;
return `"${error.field.replace(/^(data\.)/, "")}" ${error.message}. Value: ${JSON.stringify(error.value)}`;
}).map(message => `\t- ${message}.\n`).join("");
}

98
tools/eslint/lib/ignored-paths.js

@ -16,7 +16,6 @@ const fs = require("fs"),
const debug = require("debug")("eslint:ignored-paths");
//------------------------------------------------------------------------------
// Constants
//------------------------------------------------------------------------------
@ -37,25 +36,42 @@ const DEFAULT_OPTIONS = {
cwd: process.cwd()
};
//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
/**
* Find an ignore file in the current directory.
* Find a file in the current directory.
* @param {string} cwd Current working directory
* @param {string} name File name
* @returns {string} Path of ignore file or an empty string.
*/
function findIgnoreFile(cwd) {
function findFile(cwd, name) {
cwd = cwd || DEFAULT_OPTIONS.cwd;
const ignoreFilePath = path.resolve(cwd, ESLINT_IGNORE_FILENAME);
const ignoreFilePath = path.resolve(cwd, name);
return fs.existsSync(ignoreFilePath) && fs.statSync(ignoreFilePath).isFile() ? ignoreFilePath : "";
}
/**
* Find an ignore file in the current directory.
* @param {string} cwd Current working directory
* @returns {string} Path of ignore file or an empty string.
*/
function findIgnoreFile(cwd) {
return findFile(cwd, ESLINT_IGNORE_FILENAME);
}
/**
* Find an package.json file in the current directory.
* @param {string} cwd Current working directory
* @returns {string} Path of package.json file or an empty string.
*/
function findPackageJSONFile(cwd) {
return findFile(cwd, "package.json");
}
/**
* Merge options with defaults
* @param {Object} options Options to merge with DEFAULT_OPTIONS constant
@ -80,6 +96,7 @@ class IgnoredPaths {
*/
constructor(options) {
options = mergeDefaultOptions(options);
this.cache = {};
/**
* add pattern to node-ignore instance
@ -91,17 +108,6 @@ class IgnoredPaths {
return ig.addPattern(pattern);
}
/**
* add ignore file to node-ignore instance
* @param {Object} ig, instance of node-ignore
* @param {string} filepath, file to add to ig
* @returns {array} raw ignore rules
*/
function addIgnoreFile(ig, filepath) {
ig.ignoreFiles.push(filepath);
return ig.add(fs.readFileSync(filepath, "utf8"));
}
this.defaultPatterns = [].concat(DEFAULT_IGNORE_DIRS, options.patterns || []);
this.baseDir = options.cwd;
@ -155,8 +161,39 @@ class IgnoredPaths {
if (ignorePath) {
debug(`Adding ${ignorePath}`);
this.baseDir = path.dirname(path.resolve(options.cwd, ignorePath));
addIgnoreFile(this.ig.custom, ignorePath);
addIgnoreFile(this.ig.default, ignorePath);
this.addIgnoreFile(this.ig.custom, ignorePath);
this.addIgnoreFile(this.ig.default, ignorePath);
} else {
try {
// if the ignoreFile does not exist, check package.json for eslintIgnore
const packageJSONPath = findPackageJSONFile(options.cwd);
if (packageJSONPath) {
let packageJSONOptions;
try {
packageJSONOptions = JSON.parse(fs.readFileSync(packageJSONPath, "utf8"));
} catch (e) {
debug("Could not read package.json file to check eslintIgnore property");
throw e;
}
if (packageJSONOptions.eslintIgnore) {
if (Array.isArray(packageJSONOptions.eslintIgnore)) {
packageJSONOptions.eslintIgnore.forEach(pattern => {
addPattern(this.ig.custom, pattern);
addPattern(this.ig.default, pattern);
});
} else {
throw new Error("Package.json eslintIgnore property requires an array of paths");
}
}
}
} catch (e) {
debug("Could not find package.json to check eslintIgnore property");
throw e;
}
}
if (options.ignorePattern) {
@ -168,6 +205,29 @@ class IgnoredPaths {
this.options = options;
}
/**
* read ignore filepath
* @param {string} filePath, file to add to ig
* @returns {array} raw ignore rules
*/
readIgnoreFile(filePath) {
if (typeof this.cache[filePath] === "undefined") {
this.cache[filePath] = fs.readFileSync(filePath, "utf8");
}
return this.cache[filePath];
}
/**
* add ignore file to node-ignore instance
* @param {Object} ig, instance of node-ignore
* @param {string} filePath, file to add to ig
* @returns {array} raw ignore rules
*/
addIgnoreFile(ig, filePath) {
ig.ignoreFiles.push(filePath);
return ig.add(this.readIgnoreFile(filePath));
}
/**
* Determine whether a file path is included in the default or custom ignore patterns
* @param {string} filepath Path to check

78
tools/eslint/lib/linter.js

@ -27,9 +27,11 @@ const assert = require("assert"),
Rules = require("./rules"),
timing = require("./timing"),
astUtils = require("./ast-utils"),
pkg = require("../package.json"),
SourceCodeFixer = require("./util/source-code-fixer");
pkg = require("../package.json");
const debug = require("debug")("eslint:linter");
const MAX_AUTOFIX_PASSES = 10;
//------------------------------------------------------------------------------
// Typedefs
@ -453,8 +455,8 @@ function normalizeEcmaVersion(ecmaVersion, isModule) {
*/
function prepareConfig(config, envContext) {
config.globals = config.globals || {};
const copiedRules = Object.assign({}, defaultConfig.rules);
let parserOptions = Object.assign({}, defaultConfig.parserOptions);
const copiedRules = {};
let parserOptions = {};
if (typeof config.rules === "object") {
Object.keys(config.rules).forEach(k => {
@ -1185,6 +1187,74 @@ class Linter extends EventEmitter {
getDeclaredVariables(node) {
return (this.scopeManager && this.scopeManager.getDeclaredVariables(node)) || [];
}
/**
* Performs multiple autofix passes over the text until as many fixes as possible
* have been applied.
* @param {string} text The source text to apply fixes to.
* @param {Object} config The ESLint config object to use.
* @param {Object} options The ESLint options object to use.
* @param {string} options.filename The filename from which the text was read.
* @param {boolean} options.allowInlineConfig Flag indicating if inline comments
* should be allowed.
* @returns {Object} The result of the fix operation as returned from the
* SourceCodeFixer.
*/
verifyAndFix(text, config, options) {
let messages = [],
fixedResult,
fixed = false,
passNumber = 0;
/**
* This loop continues until one of the following is true:
*
* 1. No more fixes have been applied.
* 2. Ten passes have been made.
*
* That means anytime a fix is successfully applied, there will be another pass.
* Essentially, guaranteeing a minimum of two passes.
*/
do {
passNumber++;
debug(`Linting code for ${options.filename} (pass ${passNumber})`);
messages = this.verify(text, config, options);
debug(`Generating fixed text for ${options.filename} (pass ${passNumber})`);
fixedResult = SourceCodeFixer.applyFixes(this.getSourceCode(), messages);
// stop if there are any syntax errors.
// 'fixedResult.output' is a empty string.
if (messages.length === 1 && messages[0].fatal) {
break;
}
// keep track if any fixes were ever applied - important for return value
fixed = fixed || fixedResult.fixed;
// update to use the fixed output instead of the original text
text = fixedResult.output;
} while (
fixedResult.fixed &&
passNumber < MAX_AUTOFIX_PASSES
);
/*
* If the last result had fixes, we need to lint again to be sure we have
* the most up-to-date information.
*/
if (fixedResult.fixed) {
fixedResult.messages = this.verify(text, config, options);
}
// ensure the last result properly reflects if fixes were done
fixedResult.fixed = fixed;
fixedResult.output = text;
return fixedResult;
}
}
// methods that exist on SourceCode object

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

@ -8,6 +8,7 @@
// Requirements
//------------------------------------------------------------------------------
const assert = require("assert");
const ruleFixer = require("./util/rule-fixer");
//------------------------------------------------------------------------------
@ -60,6 +61,75 @@ const PASSTHROUGHS = [
// Rule Definition
//------------------------------------------------------------------------------
/**
* Compares items in a fixes array by range.
* @param {Fix} a The first message.
* @param {Fix} b The second message.
* @returns {int} -1 if a comes before b, 1 if a comes after b, 0 if equal.
* @private
*/
function compareFixesByRange(a, b) {
return a.range[0] - b.range[0] || a.range[1] - b.range[1];
}
/**
* Merges the given fixes array into one.
* @param {Fix[]} fixes The fixes to merge.
* @param {SourceCode} sourceCode The source code object to get the text between fixes.
* @returns {void}
*/
function mergeFixes(fixes, sourceCode) {
if (fixes.length === 0) {
return null;
}
if (fixes.length === 1) {
return fixes[0];
}
fixes.sort(compareFixesByRange);
const originalText = sourceCode.text;
const start = fixes[0].range[0];
const end = fixes[fixes.length - 1].range[1];
let text = "";
let lastPos = Number.MIN_SAFE_INTEGER;
for (const fix of fixes) {
assert(fix.range[0] >= lastPos, "Fix objects must not be overlapped in a report.");
if (fix.range[0] >= 0) {
text += originalText.slice(Math.max(0, start, lastPos), fix.range[0]);
}
text += fix.text;
lastPos = fix.range[1];
}
text += originalText.slice(Math.max(0, start, lastPos), end);
return { range: [start, end], text };
}
/**
* Gets one fix object from the given descriptor.
* If the descriptor retrieves multiple fixes, this merges those to one.
* @param {Object} descriptor The report descriptor.
* @param {SourceCode} sourceCode The source code object to get text between fixes.
* @returns {Fix} The got fix object.
*/
function getFix(descriptor, sourceCode) {
if (typeof descriptor.fix !== "function") {
return null;
}
// @type {null | Fix | Fix[] | IterableIterator<Fix>}
const fix = descriptor.fix(ruleFixer);
// Merge to one.
if (fix && Symbol.iterator in fix) {
return mergeFixes(Array.from(fix), sourceCode);
}
return fix;
}
/**
* Rule context class
* Acts as an abstraction layer between rules and the main eslint object.
@ -120,12 +190,7 @@ class RuleContext {
// check to see if it's a new style call
if (arguments.length === 1) {
const descriptor = nodeOrDescriptor;
let fix = null;
// if there's a fix specified, get it
if (typeof descriptor.fix === "function") {
fix = descriptor.fix(ruleFixer);
}
const fix = getFix(descriptor, this.getSourceCode());
this.eslint.report(
this.id,

129
tools/eslint/lib/rules/arrow-body-style.js

@ -65,6 +65,29 @@ module.exports = {
const requireReturnForObjectLiteral = options[1] && options[1].requireReturnForObjectLiteral;
const sourceCode = context.getSourceCode();
/**
* Checks whether the given node has ASI problem or not.
* @param {Token} token The token to check.
* @returns {boolean} `true` if it changes semantics if `;` or `}` followed by the token are removed.
*/
function hasASIProblem(token) {
return token && token.type === "Punctuator" && /^[([/`+-]/.test(token.value);
}
/**
* Gets the closing parenthesis which is the pair of the given opening parenthesis.
* @param {Token} token The opening parenthesis token to get.
* @returns {Token} The found closing parenthesis token.
*/
function findClosingParen(token) {
let node = sourceCode.getNodeByRangeIndex(token.range[1]);
while (!astUtils.isParenthesised(sourceCode, node)) {
node = node.parent;
}
return sourceCode.getTokenAfter(node);
}
/**
* Determines whether a arrow function body needs braces
* @param {ASTNode} node The arrow function node.
@ -91,47 +114,55 @@ module.exports = {
loc: arrowBody.loc.start,
message: "Unexpected block statement surrounding arrow body.",
fix(fixer) {
if (blockBody.length !== 1 || blockBody[0].type !== "ReturnStatement" || !blockBody[0].argument) {
return null;
const fixes = [];
if (blockBody.length !== 1 ||
blockBody[0].type !== "ReturnStatement" ||
!blockBody[0].argument ||
hasASIProblem(sourceCode.getTokenAfter(arrowBody))
) {
return fixes;
}
const sourceText = sourceCode.getText();
const returnKeyword = sourceCode.getFirstToken(blockBody[0]);
const firstValueToken = sourceCode.getTokenAfter(returnKeyword);
let lastValueToken = sourceCode.getLastToken(blockBody[0]);
if (astUtils.isSemicolonToken(lastValueToken)) {
/* The last token of the returned value is the last token of the ReturnExpression (if
* the ReturnExpression has no semicolon), or the second-to-last token (if the ReturnExpression
* has a semicolon).
*/
lastValueToken = sourceCode.getTokenBefore(lastValueToken);
const openingBrace = sourceCode.getFirstToken(arrowBody);
const closingBrace = sourceCode.getLastToken(arrowBody);
const firstValueToken = sourceCode.getFirstToken(blockBody[0], 1);
const lastValueToken = sourceCode.getLastToken(blockBody[0]);
const commentsExist =
sourceCode.commentsExistBetween(openingBrace, firstValueToken) ||
sourceCode.commentsExistBetween(lastValueToken, closingBrace);
// Remove tokens around the return value.
// If comments don't exist, remove extra spaces as well.
if (commentsExist) {
fixes.push(
fixer.remove(openingBrace),
fixer.remove(closingBrace),
fixer.remove(sourceCode.getTokenAfter(openingBrace)) // return keyword
);
} else {
fixes.push(
fixer.removeRange([openingBrace.range[0], firstValueToken.range[0]]),
fixer.removeRange([lastValueToken.range[1], closingBrace.range[1]])
);
}
const tokenAfterArrowBody = sourceCode.getTokenAfter(arrowBody);
if (tokenAfterArrowBody && tokenAfterArrowBody.type === "Punctuator" && /^[([/`+-]/.test(tokenAfterArrowBody.value)) {
// If the first token of the reutrn value is `{`,
// enclose the return value by parentheses to avoid syntax error.
if (astUtils.isOpeningBraceToken(firstValueToken)) {
fixes.push(
fixer.insertTextBefore(firstValueToken, "("),
fixer.insertTextAfter(lastValueToken, ")")
);
}
// Don't do a fix if the next token would cause ASI issues when preceded by the returned value.
return null;
// If the last token of the return statement is semicolon, remove it.
// Non-block arrow body is an expression, not a statement.
if (astUtils.isSemicolonToken(lastValueToken)) {
fixes.push(fixer.remove(lastValueToken));
}
const textBeforeReturn = sourceText.slice(arrowBody.range[0] + 1, returnKeyword.range[0]);
const textBetweenReturnAndValue = sourceText.slice(returnKeyword.range[1], firstValueToken.range[0]);
const rawReturnValueText = sourceText.slice(firstValueToken.range[0], lastValueToken.range[1]);
const returnValueText = astUtils.isOpeningBraceToken(firstValueToken) ? `(${rawReturnValueText})` : rawReturnValueText;
const textAfterValue = sourceText.slice(lastValueToken.range[1], blockBody[0].range[1] - 1);
const textAfterReturnStatement = sourceText.slice(blockBody[0].range[1], arrowBody.range[1] - 1);
/*
* For fixes that only contain spaces around the return value, remove the extra spaces.
* This avoids ugly fixes that end up with extra spaces after the arrow, e.g. `() => 0 ;`
*/
return fixer.replaceText(
arrowBody,
(textBeforeReturn + textBetweenReturnAndValue).replace(/^\s*$/, "") + returnValueText + (textAfterValue + textAfterReturnStatement).replace(/^\s*$/, "")
);
return fixes;
}
});
}
@ -142,13 +173,29 @@ module.exports = {
loc: arrowBody.loc.start,
message: "Expected block statement surrounding arrow body.",
fix(fixer) {
const lastTokenBeforeBody = sourceCode.getLastTokenBetween(sourceCode.getFirstToken(node), arrowBody, astUtils.isNotOpeningParenToken);
const firstBodyToken = sourceCode.getTokenAfter(lastTokenBeforeBody);
return fixer.replaceTextRange(
[firstBodyToken.range[0], node.range[1]],
`{return ${sourceCode.getText().slice(firstBodyToken.range[0], node.range[1])}}`
const fixes = [];
const arrowToken = sourceCode.getTokenBefore(arrowBody, astUtils.isArrowToken);
const firstBodyToken = sourceCode.getTokenAfter(arrowToken);
const lastBodyToken = sourceCode.getLastToken(node);
const isParenthesisedObjectLiteral =
astUtils.isOpeningParenToken(firstBodyToken) &&
astUtils.isOpeningBraceToken(sourceCode.getTokenAfter(firstBodyToken));
// Wrap the value by a block and a return statement.
fixes.push(
fixer.insertTextBefore(firstBodyToken, "{return "),
fixer.insertTextAfter(lastBodyToken, "}")
);
// If the value is object literal, remove parentheses which were forced by syntax.
if (isParenthesisedObjectLiteral) {
fixes.push(
fixer.remove(firstBodyToken),
fixer.remove(findClosingParen(firstBodyToken))
);
}
return fixes;
}
});
}
@ -156,7 +203,7 @@ module.exports = {
}
return {
ArrowFunctionExpression: validate
"ArrowFunctionExpression:exit": validate
};
}
};

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

@ -658,7 +658,6 @@ module.exports = {
while (astUtils.isOpeningParenToken(token) && token !== startToken) {
token = sourceCode.getTokenBefore(token);
}
return sourceCode.getTokenAfter(token);
}
@ -675,7 +674,6 @@ module.exports = {
if (offset === "first" && elements.length && !elements[0]) {
return;
}
elements.forEach((element, index) => {
if (offset === "off") {
offsets.ignoreToken(getFirstToken(element));
@ -816,7 +814,6 @@ module.exports = {
offsets.ignoreToken(operator);
offsets.ignoreToken(tokensAfterOperator[0]);
offsets.setDesiredOffset(tokensAfterOperator[0], sourceCode.getFirstToken(node), 1);
offsets.setDesiredOffsets(tokensAfterOperator, tokensAfterOperator[0], 1);
}
@ -882,6 +879,13 @@ module.exports = {
// We only want to handle parens around expressions, so exclude parentheses that are in function parameters and function call arguments.
if (!parameterParens.has(leftParen) && !parameterParens.has(rightParen)) {
const parenthesizedTokens = new Set(sourceCode.getTokensBetween(leftParen, rightParen));
parenthesizedTokens.forEach(token => {
if (!parenthesizedTokens.has(offsets.getFirstDependency(token))) {
offsets.setDesiredOffset(token, leftParen, 1);
}
});
offsets.setDesiredOffset(sourceCode.getTokenAfter(leftParen), leftParen, 1);
}
@ -1114,28 +1118,29 @@ module.exports = {
const tokenBeforeObject = sourceCode.getTokenBefore(node.object, token => astUtils.isNotOpeningParenToken(token) || parameterParens.has(token));
const firstObjectToken = tokenBeforeObject ? sourceCode.getTokenAfter(tokenBeforeObject) : sourceCode.ast.tokens[0];
const lastObjectToken = sourceCode.getTokenBefore(firstNonObjectToken);
const firstPropertyToken = node.computed ? firstNonObjectToken : secondNonObjectToken;
if (node.computed) {
// For computed MemberExpressions, match the closing bracket with the opening bracket.
offsets.matchIndentOf(firstNonObjectToken, sourceCode.getLastToken(node));
offsets.setDesiredOffsets(getTokensAndComments(node.property), firstNonObjectToken, 1);
}
if (typeof options.MemberExpression === "number") {
const firstPropertyToken = node.computed ? firstNonObjectToken : secondNonObjectToken;
/*
* If the object ends on the same line that the property starts, match against the last token
* of the object, to ensure that the MemberExpression is not indented.
*
* Otherwise, match against the first token of the object, e.g.
* foo
* .bar
* .baz // <-- offset by 1 from `foo`
*/
const offsetBase = lastObjectToken.loc.end.line === firstPropertyToken.loc.start.line
? lastObjectToken
: firstObjectToken;
/*
* If the object ends on the same line that the property starts, match against the last token
* of the object, to ensure that the MemberExpression is not indented.
*
* Otherwise, match against the first token of the object, e.g.
* foo
* .bar
* .baz // <-- offset by 1 from `foo`
*/
const offsetBase = lastObjectToken.loc.end.line === firstPropertyToken.loc.start.line
? lastObjectToken
: firstObjectToken;
if (typeof options.MemberExpression === "number") {
// Match the dot (for non-computed properties) or the opening bracket (for computed properties) against the object.
offsets.setDesiredOffset(firstNonObjectToken, offsetBase, options.MemberExpression);
@ -1150,6 +1155,9 @@ module.exports = {
// If the MemberExpression option is off, ignore the dot and the first token of the property.
offsets.ignoreToken(firstNonObjectToken);
offsets.ignoreToken(secondNonObjectToken);
// To ignore the property indentation, ensure that the property tokens depend on the ignored tokens.
offsets.matchIndentOf(offsetBase, firstNonObjectToken);
offsets.matchIndentOf(firstNonObjectToken, secondNonObjectToken);
}
},
@ -1232,6 +1240,7 @@ module.exports = {
offsets.ignoreToken(equalOperator);
offsets.ignoreToken(tokenAfterOperator);
offsets.matchIndentOf(equalOperator, tokenAfterOperator);
offsets.matchIndentOf(sourceCode.getFirstToken(node), equalOperator);
}
},

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

@ -44,7 +44,8 @@ module.exports = {
conditionalAssign: { type: "boolean" },
nestedBinaryExpressions: { type: "boolean" },
returnAssign: { type: "boolean" },
ignoreJSX: { enum: ["none", "all", "single-line", "multi-line"] }
ignoreJSX: { enum: ["none", "all", "single-line", "multi-line"] },
enforceForArrowConditionals: { type: "boolean" }
},
additionalProperties: false
}
@ -67,6 +68,9 @@ module.exports = {
const NESTED_BINARY = ALL_NODES && context.options[1] && context.options[1].nestedBinaryExpressions === false;
const EXCEPT_RETURN_ASSIGN = ALL_NODES && context.options[1] && context.options[1].returnAssign === false;
const IGNORE_JSX = ALL_NODES && context.options[1] && context.options[1].ignoreJSX;
const IGNORE_ARROW_CONDITIONALS = ALL_NODES && context.options[1] &&
context.options[1].enforceForArrowConditionals === false;
const PRECEDENCE_OF_ASSIGNMENT_EXPR = precedence({ type: "AssignmentExpression" });
const PRECEDENCE_OF_UPDATE_EXPR = precedence({ type: "UpdateExpression" });
@ -448,6 +452,13 @@ module.exports = {
return;
}
if (node.body.type === "ConditionalExpression" &&
IGNORE_ARROW_CONDITIONALS &&
!isParenthesisedTwice(node.body)
) {
return;
}
if (node.body.type !== "BlockStatement") {
const firstBodyToken = sourceCode.getFirstToken(node.body, astUtils.isNotOpeningParenToken);
const tokenBeforeFirst = sourceCode.getTokenBefore(firstBodyToken);

32
tools/eslint/lib/rules/no-trailing-spaces.js

@ -30,6 +30,9 @@ module.exports = {
properties: {
skipBlankLines: {
type: "boolean"
},
ignoreComments: {
type: "boolean"
}
},
additionalProperties: false
@ -45,7 +48,8 @@ module.exports = {
NONBLANK = `${BLANK_CLASS}+$`;
const options = context.options[0] || {},
skipBlankLines = options.skipBlankLines || false;
skipBlankLines = options.skipBlankLines || false,
ignoreComments = typeof options.ignoreComments === "undefined" || options.ignoreComments;
/**
* Report the error message
@ -72,6 +76,22 @@ module.exports = {
});
}
/**
* Given a list of comment nodes, return the line numbers for those comments.
* @param {Array} comments An array of comment nodes.
* @returns {number[]} An array of line numbers containing comments.
*/
function getCommentLineNumbers(comments) {
const lines = new Set();
comments.forEach(comment => {
for (let i = comment.loc.start.line; i <= comment.loc.end.line; i++) {
lines.add(i);
}
});
return lines;
}
//--------------------------------------------------------------------------
// Public
@ -87,7 +107,10 @@ module.exports = {
const re = new RegExp(NONBLANK),
skipMatch = new RegExp(SKIP_BLANK),
lines = sourceCode.lines,
linebreaks = sourceCode.getText().match(astUtils.createGlobalLinebreakMatcher());
linebreaks = sourceCode.getText().match(astUtils.createGlobalLinebreakMatcher()),
comments = sourceCode.getAllComments(),
commentLineNumbers = getCommentLineNumbers(comments);
let totalLength = 0,
fixRange = [];
@ -125,7 +148,10 @@ module.exports = {
}
fixRange = [rangeStart, rangeEnd];
report(node, location, fixRange);
if (!ignoreComments || !commentLineNumbers.has(location.line)) {
report(node, location, fixRange);
}
}
totalLength += lineLength;

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

@ -106,11 +106,10 @@ module.exports = {
* @private
*/
function checkBinary(node) {
if (node.left.typeAnnotation) {
return;
}
const leftNode = (node.left.typeAnnotation) ? node.left.typeAnnotation : node.left;
const rightNode = node.right;
const nonSpacedNode = getFirstNonSpacedToken(node.left, node.right);
const nonSpacedNode = getFirstNonSpacedToken(leftNode, rightNode);
if (nonSpacedNode) {
if (!(int32Hint && sourceCode.getText(node).substr(-2) === "|0")) {
@ -143,8 +142,11 @@ module.exports = {
* @private
*/
function checkVar(node) {
if (node.init) {
const nonSpacedNode = getFirstNonSpacedToken(node.id, node.init);
const leftNode = (node.id.typeAnnotation) ? node.id.typeAnnotation : node.id;
const rightNode = node.init;
if (rightNode) {
const nonSpacedNode = getFirstNonSpacedToken(leftNode, rightNode);
if (nonSpacedNode) {
report(node, nonSpacedNode);

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

@ -468,9 +468,11 @@ class RuleTester {
)
);
const hasMessageOfThisRule = messages.some(m => m.ruleId === ruleName);
for (let i = 0, l = item.errors.length; i < l; i++) {
assert.ok(!("fatal" in messages[i]), `A fatal parsing error occurred: ${messages[i].message}`);
assert.equal(messages[i].ruleId, ruleName, "Error rule name should be the same as the name of the rule being tested");
assert(!messages[i].fatal, `A fatal parsing error occurred: ${messages[i].message}`);
assert(hasMessageOfThisRule, "Error rule name should be the same as the name of the rule being tested");
if (typeof item.errors[i] === "string" || item.errors[i] instanceof RegExp) {

21
tools/eslint/lib/token-store/index.js

@ -12,6 +12,7 @@ const assert = require("assert");
const cursors = require("./cursors");
const ForwardTokenCursor = require("./forward-token-cursor");
const PaddedTokenCursor = require("./padded-token-cursor");
const utils = require("./utils");
const astUtils = require("../ast-utils");
//------------------------------------------------------------------------------
@ -560,6 +561,26 @@ module.exports = class TokenStore {
).getAllTokens();
}
//--------------------------------------------------------------------------
// Others.
//--------------------------------------------------------------------------
/**
* Checks whether any comments exist or not between the given 2 nodes.
*
* @param {ASTNode} left - The node to check.
* @param {ASTNode} right - The node to check.
* @returns {boolean} `true` if one or more comments exist.
*/
commentsExistBetween(left, right) {
const index = utils.search(this[COMMENTS], left.range[1]);
return (
index < this[COMMENTS].length &&
this[COMMENTS][index].range[1] <= right.range[0]
);
}
/**
* Gets all comment tokens directly before the given node or token.
* @param {ASTNode|token} nodeOrToken The AST node or token to check for adjacent comment tokens.

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

@ -56,6 +56,20 @@ function installSyncSaveDev(packages) {
childProcess.execSync(`npm i --save-dev ${packages}`, { stdio: "inherit", encoding: "utf8" });
}
/**
* Fetch `peerDependencies` of the given package by `npm show` command.
* @param {string} packageName The package name to fetch peerDependencies.
* @returns {string[]} Gotten peerDependencies.
*/
function fetchPeerDependencies(packageName) {
const fetchedText = childProcess.execSync(
`npm show --json ${packageName} peerDependencies`,
{ encoding: "utf8" }
).trim();
return JSON.parse(fetchedText || "{}");
}
/**
* Check whether node modules are include in a project's package.json.
*
@ -140,6 +154,7 @@ function checkPackageJson(startDir) {
module.exports = {
installSyncSaveDev,
fetchPeerDependencies,
checkDeps,
checkDevDeps,
checkPackageJson

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

@ -1,56 +1,34 @@
{
"_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/trott/io.js/tools/node_modules/acorn-jsx"
]
],
"_from": "acorn@>=3.0.4 <4.0.0",
"_from": "acorn@^3.0.4",
"_id": "acorn@3.3.0",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
"_location": "/eslint/acorn-jsx/acorn",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "acorn@^3.0.4",
"scope": null,
"escapedName": "acorn",
"name": "acorn",
"escapedName": "acorn",
"rawSpec": "^3.0.4",
"spec": ">=3.0.4 <4.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^3.0.4"
},
"_requiredBy": [
"/acorn-jsx"
"/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/node_modules/acorn-jsx",
"_where": "/Users/trott/io.js/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."
@ -227,39 +205,33 @@
"name": "zsjforcn"
}
],
"dependencies": {},
"deprecated": false,
"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",
"email": "marijnh@gmail.com"
"name": "Marijn Haverbeke",
"email": "marijnh@gmail.com",
"url": "http://marijnhaverbeke.nl"
},
{
"name": "rreverser",
"email": "me@rreverser.com"
"name": "Ingvar Stepanyan",
"email": "me@rreverser.com",
"url": "http://rreverser.com/"
}
],
"name": "acorn",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/ternjs/acorn.git"

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

@ -1,78 +1,50 @@
{
"_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/trott/io.js/tools/node_modules/espree"
]
],
"_from": "acorn-jsx@>=3.0.0 <4.0.0",
"_from": "acorn-jsx@^3.0.0",
"_id": "acorn-jsx@3.0.1",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
"_location": "/eslint/acorn-jsx",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "acorn-jsx@^3.0.0",
"scope": null,
"escapedName": "acorn-jsx",
"name": "acorn-jsx",
"escapedName": "acorn-jsx",
"rawSpec": "^3.0.0",
"spec": ">=3.0.0 <4.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^3.0.0"
},
"_requiredBy": [
"/espree"
"/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/node_modules/espree",
"_where": "/Users/trott/io.js/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": "rreverser",
"email": "me@rreverser.com"
"name": "Ingvar Stepanyan",
"email": "me@rreverser.com",
"url": "http://rreverser.com/"
}
],
"name": "acorn-jsx",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/RReverser/acorn-jsx.git"

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

@ -1,56 +1,34 @@
{
"_args": [
[
{
"raw": "acorn@^5.0.1",
"scope": null,
"escapedName": "acorn",
"name": "acorn",
"rawSpec": "^5.0.1",
"spec": ">=5.0.1 <6.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/espree"
]
],
"_from": "acorn@>=5.0.1 <6.0.0",
"_from": "acorn@^5.0.1",
"_id": "acorn@5.0.3",
"_inCache": true,
"_location": "/acorn",
"_nodeVersion": "6.9.1",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/acorn-5.0.3.tgz_1491067098969_0.3370379332918674"
},
"_npmUser": {
"name": "marijn",
"email": "marijnh@gmail.com"
},
"_npmVersion": "3.10.8",
"_inBundle": false,
"_integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=",
"_location": "/eslint/acorn",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "acorn@^5.0.1",
"scope": null,
"escapedName": "acorn",
"name": "acorn",
"escapedName": "acorn",
"rawSpec": "^5.0.1",
"spec": ">=5.0.1 <6.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^5.0.1"
},
"_requiredBy": [
"/espree"
"/eslint/espree"
],
"_resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz",
"_shasum": "c460df08491463f028ccb82eab3730bf01087b3d",
"_shrinkwrap": null,
"_spec": "acorn@^5.0.1",
"_where": "/Users/trott/io.js/tools/node_modules/espree",
"_where": "/Users/trott/io.js/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."
@ -242,7 +220,7 @@
"name": "zsjforcn"
}
],
"dependencies": {},
"deprecated": false,
"description": "ECMAScript parser",
"devDependencies": {
"eslint": "^3.18.0",
@ -254,28 +232,26 @@
"rollup-plugin-buble": "^0.11.0",
"unicode-9.0.0": "^0.7.0"
},
"directories": {},
"dist": {
"shasum": "c460df08491463f028ccb82eab3730bf01087b3d",
"tarball": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz"
},
"engines": {
"node": ">=0.4.0"
},
"gitHead": "dc2a033831e0813496bdb558c70b9fdf4720f048",
"homepage": "https://github.com/ternjs/acorn",
"jsnext:main": "dist/acorn.es.js",
"license": "MIT",
"main": "dist/acorn.js",
"maintainers": [
{
"name": "marijn",
"email": "marijnh@gmail.com"
"name": "Marijn Haverbeke",
"email": "marijnh@gmail.com",
"url": "http://marijnhaverbeke.nl"
},
{
"name": "Ingvar Stepanyan",
"email": "me@rreverser.com",
"url": "http://rreverser.com/"
}
],
"name": "acorn",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/ternjs/acorn.git"

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

@ -1,57 +1,35 @@
{
"_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/trott/io.js/tools/node_modules/table"
]
],
"_from": "ajv-keywords@>=1.0.0 <2.0.0",
"_from": "ajv-keywords@^1.0.0",
"_id": "ajv-keywords@1.5.1",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
"_location": "/eslint/ajv-keywords",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ajv-keywords@^1.0.0",
"scope": null,
"escapedName": "ajv-keywords",
"name": "ajv-keywords",
"escapedName": "ajv-keywords",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/table"
"/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/node_modules/table",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/table",
"author": {
"name": "Evgeny Poberezkin"
},
"bugs": {
"url": "https://github.com/epoberezkin/ajv-keywords/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Custom JSON-Schema keywords for ajv validator",
"devDependencies": {
"ajv": "^4.10.0",
@ -68,16 +46,10 @@
"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",
@ -86,18 +58,10 @@
],
"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"

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

@ -1,60 +1,39 @@
{
"_args": [
[
{
"raw": "ajv@^4.7.0",
"scope": null,
"escapedName": "ajv",
"name": "ajv",
"rawSpec": "^4.7.0",
"spec": ">=4.7.0 <5.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/table"
]
],
"_from": "ajv@>=4.7.0 <5.0.0",
"_from": "ajv@^4.7.0",
"_id": "ajv@4.11.8",
"_inCache": true,
"_location": "/ajv",
"_nodeVersion": "4.6.1",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/ajv-4.11.8.tgz_1493407396661_0.6132844805251807"
},
"_npmUser": {
"name": "esp",
"email": "e.poberezkin@me.com"
},
"_npmVersion": "2.15.9",
"_inBundle": false,
"_integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"_location": "/eslint/ajv",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ajv@^4.7.0",
"scope": null,
"escapedName": "ajv",
"name": "ajv",
"escapedName": "ajv",
"rawSpec": "^4.7.0",
"spec": ">=4.7.0 <5.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^4.7.0"
},
"_requiredBy": [
"/table"
"/eslint/table"
],
"_resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
"_shasum": "82ffb02b29e662ae53bdc20af15947706739c536",
"_shrinkwrap": null,
"_spec": "ajv@^4.7.0",
"_where": "/Users/trott/io.js/tools/node_modules/table",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/table",
"author": {
"name": "Evgeny Poberezkin"
},
"bugs": {
"url": "https://github.com/epoberezkin/ajv/issues"
},
"bundleDependencies": false,
"dependencies": {
"co": "^4.6.0",
"json-stable-stringify": "^1.0.1"
},
"deprecated": false,
"description": "Another JSON Schema Validator",
"devDependencies": {
"bluebird": "^3.1.5",
@ -87,11 +66,6 @@
"uglify-js": "^2.6.1",
"watch": "^1.0.0"
},
"directories": {},
"dist": {
"shasum": "82ffb02b29e662ae53bdc20af15947706739c536",
"tarball": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz"
},
"files": [
"lib/",
"dist/",
@ -99,7 +73,6 @@
"LICENSE",
".tonic_example.js"
],
"gitHead": "de9fad502273ade9bdcf976e418bdd5b61b14a07",
"homepage": "https://github.com/epoberezkin/ajv",
"keywords": [
"JSON",
@ -113,16 +86,6 @@
],
"license": "MIT",
"main": "lib/ajv.js",
"maintainers": [
{
"name": "blakeembrey",
"email": "hello@blakeembrey.com"
},
{
"name": "esp",
"email": "e.poberezkin@me.com"
}
],
"name": "ajv",
"nyc": {
"exclude": [
@ -134,11 +97,9 @@
"text-summary"
]
},
"optionalDependencies": {},
"publishConfig": {
"tag": "4.x"
},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/epoberezkin/ajv.git"

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/inquirer"
]
],
"_from": "ansi-escapes@>=2.0.0 <3.0.0",
"_from": "ansi-escapes@^2.0.0",
"_id": "ansi-escapes@2.0.0",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=",
"_location": "/eslint/ansi-escapes",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ansi-escapes@^2.0.0",
"scope": null,
"escapedName": "ansi-escapes",
"name": "ansi-escapes",
"escapedName": "ansi-escapes",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/inquirer"
"/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/node_modules/inquirer",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,24 +30,19 @@
"bugs": {
"url": "https://github.com/sindresorhus/ansi-escapes/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"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",
@ -98,15 +70,7 @@
"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"

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

@ -1,51 +1,28 @@
{
"_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/trott/io.js/tools/node_modules/has-ansi"
]
],
"_from": "ansi-regex@>=2.0.0 <3.0.0",
"_from": "ansi-regex@^2.0.0",
"_id": "ansi-regex@2.1.1",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"_location": "/eslint/ansi-regex",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ansi-regex@^2.0.0",
"scope": null,
"escapedName": "ansi-regex",
"name": "ansi-regex",
"escapedName": "ansi-regex",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/has-ansi",
"/strip-ansi"
"/eslint/has-ansi",
"/eslint/strip-ansi"
],
"_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/node_modules/has-ansi",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/has-ansi",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -54,24 +31,19 @@
"bugs": {
"url": "https://github.com/chalk/ansi-regex/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"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",
@ -103,17 +75,22 @@
"license": "MIT",
"maintainers": [
{
"name": "qix",
"email": "i.am.qix@gmail.com"
"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": "JD Ballard",
"email": "i.am.qix@gmail.com",
"url": "github.com/qix-"
}
],
"name": "ansi-regex",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/chalk/ansi-regex.git"

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/chalk"
]
],
"_from": "ansi-styles@>=2.2.1 <3.0.0",
"_from": "ansi-styles@^2.2.1",
"_id": "ansi-styles@2.2.1",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"_location": "/eslint/ansi-styles",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ansi-styles@^2.2.1",
"scope": null,
"escapedName": "ansi-styles",
"name": "ansi-styles",
"escapedName": "ansi-styles",
"rawSpec": "^2.2.1",
"spec": ">=2.2.1 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.2.1"
},
"_requiredBy": [
"/chalk"
"/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/node_modules/chalk",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/chalk",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,23 +30,18 @@
"bugs": {
"url": "https://github.com/chalk/ansi-styles/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"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",
@ -96,13 +68,17 @@
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "Joshua Appelman",
"email": "jappelman@xebia.com",
"url": "jbnicolai.com"
}
],
"name": "ansi-styles",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/chalk/ansi-styles.git"

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

@ -1,53 +1,31 @@
{
"_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/trott/io.js/tools/node_modules/js-yaml"
]
],
"_from": "argparse@>=1.0.7 <2.0.0",
"_from": "argparse@^1.0.7",
"_id": "argparse@1.0.9",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
"_location": "/eslint/argparse",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "argparse@^1.0.7",
"scope": null,
"escapedName": "argparse",
"name": "argparse",
"escapedName": "argparse",
"rawSpec": "^1.0.7",
"spec": ">=1.0.7 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.7"
},
"_requiredBy": [
"/js-yaml"
"/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/node_modules/js-yaml",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/js-yaml",
"bugs": {
"url": "https://github.com/nodeca/argparse/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Eugene Shkuropat"
@ -59,6 +37,7 @@
"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",
@ -66,16 +45,10 @@
"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",
@ -85,15 +58,7 @@
"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"

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/globby"
]
],
"_from": "array-union@>=1.0.1 <2.0.0",
"_from": "array-union@^1.0.1",
"_id": "array-union@1.0.2",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"_location": "/eslint/array-union",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "array-union@^1.0.1",
"scope": null,
"escapedName": "array-union",
"name": "array-union",
"escapedName": "array-union",
"rawSpec": "^1.0.1",
"spec": ">=1.0.1 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.1"
},
"_requiredBy": [
"/globby"
"/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/node_modules/globby",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/globby",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,26 +30,22 @@
"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",
@ -87,15 +60,7 @@
"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"

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/array-union"
]
],
"_from": "array-uniq@>=1.0.1 <2.0.0",
"_from": "array-uniq@^1.0.1",
"_id": "array-uniq@1.0.3",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"_location": "/eslint/array-uniq",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "array-uniq@^1.0.1",
"scope": null,
"escapedName": "array-uniq",
"name": "array-uniq",
"escapedName": "array-uniq",
"rawSpec": "^1.0.1",
"spec": ">=1.0.1 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.1"
},
"_requiredBy": [
"/array-union"
"/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/node_modules/array-union",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/array-union",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,7 +30,8 @@
"bugs": {
"url": "https://github.com/sindresorhus/array-uniq/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Create an array without duplicates",
"devDependencies": {
"ava": "*",
@ -61,18 +39,12 @@
"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",
@ -85,15 +57,7 @@
"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"

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

@ -1,46 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/globby"
]
],
"_from": "arrify@>=1.0.0 <2.0.0",
"_from": "arrify@^1.0.0",
"_id": "arrify@1.0.1",
"_inCache": true,
"_location": "/arrify",
"_nodeVersion": "4.2.1",
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "3.5.2",
"_inBundle": false,
"_integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"_location": "/eslint/arrify",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "arrify@^1.0.0",
"scope": null,
"escapedName": "arrify",
"name": "arrify",
"escapedName": "arrify",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/globby"
"/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/node_modules/globby",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/globby",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -49,24 +30,19 @@
"bugs": {
"url": "https://github.com/sindresorhus/arrify/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"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",
@ -77,15 +53,7 @@
"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"

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

@ -1,102 +1,46 @@
{
"_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/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "babel-code-frame@>=6.22.0 <7.0.0",
"_from": "babel-code-frame@^6.22.0",
"_id": "babel-code-frame@6.22.0",
"_inCache": true,
"_location": "/babel-code-frame",
"_nodeVersion": "6.9.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/babel-code-frame-6.22.0.tgz_1484872404755_0.3806710622739047"
},
"_npmUser": {
"name": "hzoo",
"email": "hi@henryzoo.com"
},
"_npmVersion": "3.10.10",
"_inBundle": false,
"_integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=",
"_location": "/eslint/babel-code-frame",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "babel-code-frame@^6.22.0",
"scope": null,
"escapedName": "babel-code-frame",
"name": "babel-code-frame",
"escapedName": "babel-code-frame",
"rawSpec": "^6.22.0",
"spec": ">=6.22.0 <7.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^6.22.0"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
"_shasum": "027620bee567a88c32561574e7fd0801d33118e4",
"_shrinkwrap": null,
"_spec": "babel-code-frame@^6.22.0",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Sebastian McKenzie",
"email": "sebmck@gmail.com"
},
"bundleDependencies": false,
"dependencies": {
"chalk": "^1.1.0",
"esutils": "^2.0.2",
"js-tokens": "^3.0.0"
},
"deprecated": false,
"description": "Generate errors that contain a code frame that point to source locations.",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "027620bee567a88c32561574e7fd0801d33118e4",
"tarball": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz"
},
"homepage": "https://babeljs.io/",
"license": "MIT",
"main": "lib/index.js",
"maintainers": [
{
"name": "amasad",
"email": "amjad.masad@gmail.com"
},
{
"name": "hzoo",
"email": "hi@henryzoo.com"
},
{
"name": "jmm",
"email": "npm-public@jessemccarthy.net"
},
{
"name": "loganfsmyth",
"email": "loganfsmyth@gmail.com"
},
{
"name": "sebmck",
"email": "sebmck@gmail.com"
},
{
"name": "thejameskyle",
"email": "me@thejameskyle.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"
},
"scripts": {},
"version": "6.22.0"
}

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

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/bail/-/bail-1.0.1.tgz",
"_shasum": "912579de8b391aadf3c5fdf4cd2a0fc225df3bc2",
"_spec": "bail@^1.0.0",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\unified",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/unified",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/brace-expansion"
]
],
"_from": "balanced-match@>=1.0.0 <2.0.0",
"_from": "balanced-match@^1.0.0",
"_id": "balanced-match@1.0.0",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"_location": "/eslint/balanced-match",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "balanced-match@^1.0.0",
"scope": null,
"escapedName": "balanced-match",
"name": "balanced-match",
"escapedName": "balanced-match",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/brace-expansion"
"/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/node_modules/brace-expansion",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/brace-expansion",
"author": {
"name": "Julian Gruber",
"email": "mail@juliangruber.com",
@ -53,18 +30,14 @@
"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",
@ -75,15 +48,7 @@
],
"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"

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/minimatch"
]
],
"_from": "brace-expansion@>=1.1.7 <2.0.0",
"_from": "brace-expansion@^1.1.7",
"_id": "brace-expansion@1.1.8",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
"_location": "/eslint/brace-expansion",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "brace-expansion@^1.1.7",
"scope": null,
"escapedName": "brace-expansion",
"name": "brace-expansion",
"escapedName": "brace-expansion",
"rawSpec": "^1.1.7",
"spec": ">=1.1.7 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.1.7"
},
"_requiredBy": [
"/minimatch"
"/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/node_modules/minimatch",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/minimatch",
"author": {
"name": "Julian Gruber",
"email": "mail@juliangruber.com",
@ -53,38 +30,22 @@
"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"

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

@ -1,45 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/require-uncached"
]
],
"_from": "caller-path@>=0.1.0 <0.2.0",
"_from": "caller-path@^0.1.0",
"_id": "caller-path@0.1.0",
"_inCache": true,
"_location": "/caller-path",
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "1.4.6",
"_inBundle": false,
"_integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
"_location": "/eslint/caller-path",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "caller-path@^0.1.0",
"scope": null,
"escapedName": "caller-path",
"name": "caller-path",
"escapedName": "caller-path",
"rawSpec": "^0.1.0",
"spec": ">=0.1.0 <0.2.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^0.1.0"
},
"_requiredBy": [
"/require-uncached"
"/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/node_modules/require-uncached",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/require-uncached",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -48,25 +30,22 @@
"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",
"homepage": "https://github.com/sindresorhus/caller-path#readme",
"keywords": [
"caller",
"calling",
@ -82,18 +61,10 @@
"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://github.com/sindresorhus/caller-path.git"
"url": "git+https://github.com/sindresorhus/caller-path.git"
},
"scripts": {
"test": "mocha"

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

@ -1,45 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/caller-path"
]
],
"_from": "callsites@>=0.2.0 <0.3.0",
"_from": "callsites@^0.2.0",
"_id": "callsites@0.2.0",
"_inCache": true,
"_location": "/callsites",
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "1.4.6",
"_inBundle": false,
"_integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
"_location": "/eslint/callsites",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "callsites@^0.2.0",
"scope": null,
"escapedName": "callsites",
"name": "callsites",
"escapedName": "callsites",
"rawSpec": "^0.2.0",
"spec": ">=0.2.0 <0.3.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^0.2.0"
},
"_requiredBy": [
"/caller-path"
"/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/node_modules/caller-path",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/caller-path",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -48,23 +30,19 @@
"bugs": {
"url": "https://github.com/sindresorhus/callsites/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"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",
"homepage": "https://github.com/sindresorhus/callsites#readme",
"keywords": [
"callsites",
"callsite",
@ -78,18 +56,10 @@
"debug"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "callsites",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/sindresorhus/callsites.git"
"url": "git+https://github.com/sindresorhus/callsites.git"
},
"scripts": {
"test": "mocha"

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

@ -0,0 +1,101 @@
{
"_from": "ccount@^1.0.0",
"_id": "ccount@1.0.1",
"_inBundle": false,
"_integrity": "sha1-ZlaHlFFowhjsd/9hpBVa4AInqWw=",
"_location": "/ccount",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ccount@^1.0.0",
"name": "ccount",
"escapedName": "ccount",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/remark-stringify"
],
"_resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.1.tgz",
"_shasum": "665687945168c218ec77ff61a4155ae00227a96c",
"_spec": "ccount@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-stringify",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
"url": "http://wooorm.com"
},
"bugs": {
"url": "https://github.com/wooorm/ccount/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
"url": "http://wooorm.com"
}
],
"dependencies": {},
"deprecated": false,
"description": "Count characters",
"devDependencies": {
"browserify": "^13.0.1",
"esmangle": "^1.0.1",
"nyc": "^7.0.0",
"remark-cli": "^1.0.0",
"remark-comment-config": "^4.0.0",
"remark-github": "^5.0.0",
"remark-lint": "^4.0.0",
"remark-validate-links": "^4.0.0",
"tape": "^4.0.0",
"xo": "^0.16.0"
},
"files": [
"index.js"
],
"homepage": "https://github.com/wooorm/ccount#readme",
"keywords": [
"character",
"count",
"char"
],
"license": "MIT",
"name": "ccount",
"remarkConfig": {
"output": true,
"plugins": [
"comment-config",
"github",
"lint",
"validate-links"
],
"settings": {
"bullet": "*"
}
},
"repository": {
"type": "git",
"url": "git+https://github.com/wooorm/ccount.git"
},
"scripts": {
"build": "npm run build-md && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.js --bare -s ccount > ccount.js",
"build-mangle": "esmangle ccount.js > ccount.min.js",
"build-md": "remark . --quiet --frail",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
"version": "1.0.1",
"xo": {
"space": true,
"ignores": [
"ccount.js",
"ccount.min.js"
]
}
}

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

@ -1,56 +1,34 @@
{
"_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/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "chalk@>=1.1.3 <2.0.0",
"_from": "chalk@^1.1.3",
"_id": "chalk@1.1.3",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"_location": "/eslint/chalk",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "chalk@^1.1.3",
"scope": null,
"escapedName": "chalk",
"name": "chalk",
"escapedName": "chalk",
"rawSpec": "^1.1.3",
"spec": ">=1.1.3 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.1.3"
},
"_requiredBy": [
"/babel-code-frame",
"/eslint",
"/inquirer",
"/table"
"/eslint/babel-code-frame",
"/eslint/inquirer",
"/eslint/table"
],
"_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/node_modules/eslint",
"_where": "/Users/trott/io.js/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",
@ -58,6 +36,7 @@
"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",
@ -69,18 +48,12 @@
"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",
@ -108,21 +81,22 @@
"license": "MIT",
"maintainers": [
{
"name": "qix",
"email": "i.am.qix@gmail.com"
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
"name": "Joshua Appelman",
"email": "jappelman@xebia.com",
"url": "jbnicolai.com"
},
{
"name": "unicorn",
"email": "sindresorhus+unicorn@gmail.com"
"name": "JD Ballard",
"email": "i.am.qix@gmail.com",
"url": "github.com/qix-"
}
],
"name": "chalk",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/chalk/chalk.git"

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

@ -0,0 +1,98 @@
{
"_from": "character-entities-html4@^1.0.0",
"_id": "character-entities-html4@1.1.0",
"_inBundle": false,
"_integrity": "sha1-GrCFUdPOH6HfCNAPucod77FHoGw=",
"_location": "/character-entities-html4",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "character-entities-html4@^1.0.0",
"name": "character-entities-html4",
"escapedName": "character-entities-html4",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/stringify-entities"
],
"_resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.0.tgz",
"_shasum": "1ab08551d3ce1fa1df08d00fb9ca1defb147a06c",
"_spec": "character-entities-html4@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/stringify-entities",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
"url": "http://wooorm.com"
},
"bugs": {
"url": "https://github.com/wooorm/character-entities-html4/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",
"url": "http://wooorm.com"
}
],
"dependencies": {},
"deprecated": false,
"description": "HTML4 character entity information",
"devDependencies": {
"bail": "^1.0.1",
"browserify": "^13.0.1",
"concat-stream": "^1.5.2",
"esmangle": "^1.0.1",
"nyc": "^8.0.0",
"remark-cli": "^2.0.0",
"remark-preset-wooorm": "^1.0.0",
"tape": "^4.0.0",
"xo": "^0.17.0"
},
"files": [
"index.json"
],
"homepage": "https://github.com/wooorm/character-entities-html4#readme",
"keywords": [
"html",
"html4",
"entity",
"entities",
"character",
"reference",
"name",
"replacement"
],
"license": "MIT",
"main": "index.json",
"name": "character-entities-html4",
"remarkConfig": {
"output": true,
"presets": "wooorm"
},
"repository": {
"type": "git",
"url": "git+https://github.com/wooorm/character-entities-html4.git"
},
"scripts": {
"build": "npm run build-md && npm run build-generate && npm run build-bundle && npm run build-mangle",
"build-bundle": "browserify index.json --bare -s characterEntitiesHTML4 > character-entities-html4.js",
"build-generate": "node build",
"build-mangle": "esmangle character-entities-html4.js > character-entities-html4.min.js",
"build-md": "remark . --quiet --frail",
"lint": "xo",
"test": "npm run build && npm run lint && npm run test-coverage",
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
"version": "1.1.0",
"xo": {
"space": true,
"ignores": [
"character-entities-html4.js"
]
}
}

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

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.0.tgz",
"_shasum": "b18aad98f6b7bcc646c1e4c81f9f1956376a561a",
"_spec": "character-entities-legacy@^1.0.0",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\parse-entities",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",

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

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.0.tgz",
"_shasum": "a683e2cf75dbe8b171963531364e58e18a1b155f",
"_spec": "character-entities@^1.0.0",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\parse-entities",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",

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

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.0.tgz",
"_shasum": "dec9ad1dfb9f8d06b4fcdaa2adc3c4fd97af1e68",
"_spec": "character-reference-invalid@^1.0.0",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\parse-entities",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/parse-entities",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/flat-cache"
]
],
"_from": "circular-json@>=0.3.1 <0.4.0",
"_from": "circular-json@^0.3.1",
"_id": "circular-json@0.3.1",
"_inCache": true,
"_location": "/circular-json",
"_nodeVersion": "6.3.1",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/circular-json-0.3.1.tgz_1470074424027_0.9458420514129102"
},
"_npmUser": {
"name": "webreflection",
"email": "andrea.giammarchi@gmail.com"
},
"_npmVersion": "3.10.5",
"_inBundle": false,
"_integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=",
"_location": "/eslint/circular-json",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "circular-json@^0.3.1",
"scope": null,
"escapedName": "circular-json",
"name": "circular-json",
"escapedName": "circular-json",
"rawSpec": "^0.3.1",
"spec": ">=0.3.1 <0.4.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^0.3.1"
},
"_requiredBy": [
"/flat-cache"
"/eslint/flat-cache"
],
"_resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz",
"_shasum": "be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d",
"_shrinkwrap": null,
"_spec": "circular-json@^0.3.1",
"_where": "/Users/trott/io.js/tools/node_modules/flat-cache",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/flat-cache",
"author": {
"name": "Andrea Giammarchi",
"url": "http://webreflection.blogspot.com/"
@ -52,18 +29,13 @@
"bugs": {
"url": "https://github.com/WebReflection/circular-json/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "JSON does not handle circular references. This version does",
"devDependencies": {
"wru": "*"
},
"directories": {},
"dist": {
"shasum": "be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d",
"tarball": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz"
},
"generator": "https://github.com/WebReflection/gitstrap",
"gitHead": "54e5be62cf7f8b761ad120ea7a986da7fbffa5b9",
"homepage": "https://github.com/WebReflection/circular-json",
"keywords": [
"JSON",
@ -76,15 +48,7 @@
],
"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"

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/inquirer"
]
],
"_from": "cli-cursor@>=2.1.0 <3.0.0",
"_from": "cli-cursor@^2.1.0",
"_id": "cli-cursor@2.1.0",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"_location": "/eslint/cli-cursor",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "cli-cursor@^2.1.0",
"scope": null,
"escapedName": "cli-cursor",
"name": "cli-cursor",
"escapedName": "cli-cursor",
"rawSpec": "^2.1.0",
"spec": ">=2.1.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.1.0"
},
"_requiredBy": [
"/inquirer"
"/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/node_modules/inquirer",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,26 +30,22 @@
"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",
@ -90,15 +63,7 @@
"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"

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/inquirer"
]
],
"_from": "cli-width@>=2.0.0 <3.0.0",
"_from": "cli-width@^2.0.0",
"_id": "cli-width@2.1.0",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=",
"_location": "/eslint/cli-width",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "cli-width@^2.0.0",
"scope": null,
"escapedName": "cli-width",
"name": "cli-width",
"escapedName": "cli-width",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/inquirer"
"/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/node_modules/inquirer",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
"name": "Ilya Radchenko",
"email": "ilya@burstcreations.com"
@ -52,7 +29,8 @@
"bugs": {
"url": "https://github.com/knownasilya/cli-width/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Get stdout window width, with two fallbacks, tty and then a default.",
"devDependencies": {
"coveralls": "^2.11.4",
@ -61,24 +39,10 @@
"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"

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

@ -1,50 +1,32 @@
{
"_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/trott/io.js/tools/node_modules/ajv"
]
],
"_from": "co@>=4.6.0 <5.0.0",
"_from": "co@^4.6.0",
"_id": "co@4.6.0",
"_inCache": true,
"_location": "/co",
"_nodeVersion": "2.3.3",
"_npmUser": {
"name": "jongleberry",
"email": "jonathanrichardong@gmail.com"
},
"_npmVersion": "2.11.3",
"_inBundle": false,
"_integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"_location": "/eslint/co",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "co@^4.6.0",
"scope": null,
"escapedName": "co",
"name": "co",
"escapedName": "co",
"rawSpec": "^4.6.0",
"spec": ">=4.6.0 <5.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^4.6.0"
},
"_requiredBy": [
"/ajv"
"/eslint/ajv"
],
"_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/node_modules/ajv",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/ajv",
"bugs": {
"url": "https://github.com/tj/co/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "generator async control flow goodness",
"devDependencies": {
"browserify": "^10.0.0",
@ -52,11 +34,6 @@
"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"
@ -64,7 +41,6 @@
"files": [
"index.js"
],
"gitHead": "b54d18f8f472ad1314800e786993c4169a5ff9f8",
"homepage": "https://github.com/tj/co#readme",
"keywords": [
"async",
@ -74,23 +50,7 @@
"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"

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

@ -1,5 +1,5 @@
{
"_from": "collapse-white-space@^1.0.2",
"_from": "collapse-white-space@^1.0.0",
"_id": "collapse-white-space@1.0.3",
"_inBundle": false,
"_integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=",
@ -8,20 +8,20 @@
"_requested": {
"type": "range",
"registry": true,
"raw": "collapse-white-space@^1.0.2",
"raw": "collapse-white-space@^1.0.0",
"name": "collapse-white-space",
"escapedName": "collapse-white-space",
"rawSpec": "^1.0.2",
"rawSpec": "^1.0.0",
"saveSpec": null,
"fetchSpec": "^1.0.2"
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/remark-parse"
],
"_resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz",
"_shasum": "4b906f670e5a963a87b76b0e1689643341b6023c",
"_spec": "collapse-white-space@^1.0.2",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\remark-parse",
"_spec": "collapse-white-space@^1.0.0",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",

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

@ -1,45 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/brace-expansion"
]
],
"_from": "concat-map@0.0.1",
"_id": "concat-map@0.0.1",
"_inCache": true,
"_location": "/concat-map",
"_npmUser": {
"name": "substack",
"email": "mail@substack.net"
},
"_npmVersion": "1.3.21",
"_inBundle": false,
"_integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"_location": "/eslint/concat-map",
"_phantomChildren": {},
"_requested": {
"type": "version",
"registry": true,
"raw": "concat-map@0.0.1",
"scope": null,
"escapedName": "concat-map",
"name": "concat-map",
"escapedName": "concat-map",
"rawSpec": "0.0.1",
"spec": "0.0.1",
"type": "version"
"saveSpec": null,
"fetchSpec": "0.0.1"
},
"_requiredBy": [
"/brace-expansion"
"/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/node_modules/brace-expansion",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/brace-expansion",
"author": {
"name": "James Halliday",
"email": "mail@substack.net",
@ -48,7 +30,8 @@
"bugs": {
"url": "https://github.com/substack/node-concat-map/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "concatenative mapdashery",
"devDependencies": {
"tape": "~2.4.0"
@ -57,11 +40,7 @@
"example": "example",
"test": "test"
},
"dist": {
"shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
"tarball": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
},
"homepage": "https://github.com/substack/node-concat-map",
"homepage": "https://github.com/substack/node-concat-map#readme",
"keywords": [
"concat",
"concatMap",
@ -71,15 +50,7 @@
],
"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"

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

@ -1,50 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "concat-stream@>=1.6.0 <2.0.0",
"_from": "concat-stream@^1.6.0",
"_id": "concat-stream@1.6.0",
"_inCache": true,
"_location": "/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",
"_inBundle": false,
"_integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
"_location": "/eslint/concat-stream",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "concat-stream@^1.6.0",
"scope": null,
"escapedName": "concat-stream",
"name": "concat-stream",
"escapedName": "concat-stream",
"rawSpec": "^1.6.0",
"spec": ">=1.6.0 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.6.0"
},
"_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/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Max Ogden",
"email": "max@maxogden.com"
@ -52,43 +29,27 @@
"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"
],
"gitHead": "e482281642c1e011fc158f5749ef40a71c77a426",
"homepage": "https://github.com/maxogden/concat-stream",
"homepage": "https://github.com/maxogden/concat-stream#readme",
"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"

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

@ -1,46 +1,27 @@
{
"_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/trott/io.js/tools/node_modules/readable-stream"
]
],
"_from": "core-util-is@>=1.0.0 <1.1.0",
"_from": "core-util-is@~1.0.0",
"_id": "core-util-is@1.0.2",
"_inCache": true,
"_location": "/core-util-is",
"_nodeVersion": "4.0.0",
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
"_npmVersion": "3.3.2",
"_inBundle": false,
"_integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"_location": "/eslint/core-util-is",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "core-util-is@~1.0.0",
"scope": null,
"escapedName": "core-util-is",
"name": "core-util-is",
"escapedName": "core-util-is",
"rawSpec": "~1.0.0",
"spec": ">=1.0.0 <1.1.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "~1.0.0"
},
"_requiredBy": [
"/readable-stream"
"/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/node_modules/readable-stream",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/readable-stream",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@ -49,17 +30,12 @@
"bugs": {
"url": "https://github.com/isaacs/core-util-is/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"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",
@ -74,15 +50,7 @@
],
"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"

60
tools/eslint/node_modules/debug/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "debug@^2.6.8",
"scope": null,
"escapedName": "debug",
"name": "debug",
"rawSpec": "^2.6.8",
"spec": ">=2.6.8 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "debug@>=2.6.8 <3.0.0",
"_from": "debug@^2.6.8",
"_id": "debug@2.6.8",
"_inCache": true,
"_location": "/debug",
"_nodeVersion": "7.10.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/debug-2.6.8.tgz_1495138020906_0.5965513256378472"
},
"_npmUser": {
"name": "tootallnate",
"email": "nathan@tootallnate.net"
},
"_npmVersion": "4.2.0",
"_inBundle": false,
"_integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=",
"_location": "/eslint/debug",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "debug@^2.6.8",
"scope": null,
"escapedName": "debug",
"name": "debug",
"escapedName": "debug",
"rawSpec": "^2.6.8",
"spec": ">=2.6.8 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.6.8"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz",
"_shasum": "e731531ca2ede27d188222427da17821d68ff4fc",
"_shrinkwrap": null,
"_spec": "debug@^2.6.8",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"
@ -53,6 +30,7 @@
"bugs": {
"url": "https://github.com/visionmedia/debug/issues"
},
"bundleDependencies": false,
"component": {
"scripts": {
"debug/index.js": "browser.js",
@ -73,6 +51,7 @@
"dependencies": {
"ms": "2.0.0"
},
"deprecated": false,
"description": "small debugging utility",
"devDependencies": {
"browserify": "9.0.3",
@ -92,12 +71,6 @@
"sinon": "^1.17.6",
"sinon-chai": "^2.8.0"
},
"directories": {},
"dist": {
"shasum": "e731531ca2ede27d188222427da17821d68ff4fc",
"tarball": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz"
},
"gitHead": "52e1f21284322f167839e5d3a60f635c8b2dc842",
"homepage": "https://github.com/visionmedia/debug#readme",
"keywords": [
"debug",
@ -106,19 +79,10 @@
],
"license": "MIT",
"main": "./src/index.js",
"maintainers": [
{
"name": "thebigredgeek",
"email": "rhyneandrew@gmail.com"
}
],
"name": "debug",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/visionmedia/debug.git"
},
"scripts": {},
"version": "2.6.8"
}

58
tools/eslint/node_modules/deep-is/package.json

@ -1,45 +1,27 @@
{
"_args": [
[
{
"raw": "deep-is@~0.1.3",
"scope": null,
"escapedName": "deep-is",
"name": "deep-is",
"rawSpec": "~0.1.3",
"spec": ">=0.1.3 <0.2.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/optionator"
]
],
"_from": "deep-is@>=0.1.3 <0.2.0",
"_from": "deep-is@~0.1.3",
"_id": "deep-is@0.1.3",
"_inCache": true,
"_location": "/deep-is",
"_npmUser": {
"name": "thlorenz",
"email": "thlorenz@gmx.de"
},
"_npmVersion": "1.4.14",
"_inBundle": false,
"_integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"_location": "/eslint/deep-is",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "deep-is@~0.1.3",
"scope": null,
"escapedName": "deep-is",
"name": "deep-is",
"escapedName": "deep-is",
"rawSpec": "~0.1.3",
"spec": ">=0.1.3 <0.2.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "~0.1.3"
},
"_requiredBy": [
"/optionator"
"/eslint/optionator"
],
"_resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
"_shasum": "b369d6fb5dbc13eecf524f91b070feedc357cf34",
"_shrinkwrap": null,
"_spec": "deep-is@~0.1.3",
"_where": "/Users/trott/io.js/tools/node_modules/optionator",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/optionator",
"author": {
"name": "Thorsten Lorenz",
"email": "thlorenz@gmx.de",
@ -48,7 +30,8 @@
"bugs": {
"url": "https://github.com/thlorenz/deep-is/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "node's assert.deepEqual algorithm except for NaN being equal to NaN",
"devDependencies": {
"tape": "~1.0.2"
@ -58,12 +41,7 @@
"example": "example",
"test": "test"
},
"dist": {
"shasum": "b369d6fb5dbc13eecf524f91b070feedc357cf34",
"tarball": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz"
},
"gitHead": "f126057628423458636dec9df3d621843b9ac55e",
"homepage": "https://github.com/thlorenz/deep-is",
"homepage": "https://github.com/thlorenz/deep-is#readme",
"keywords": [
"equality",
"equal",
@ -74,15 +52,7 @@
"url": "https://github.com/thlorenz/deep-is/blob/master/LICENSE"
},
"main": "index.js",
"maintainers": [
{
"name": "thlorenz",
"email": "thlorenz@gmx.de"
}
],
"name": "deep-is",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/thlorenz/deep-is.git"

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

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "del@^2.0.2",
"scope": null,
"escapedName": "del",
"name": "del",
"rawSpec": "^2.0.2",
"spec": ">=2.0.2 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/flat-cache"
]
],
"_from": "del@>=2.0.2 <3.0.0",
"_from": "del@^2.0.2",
"_id": "del@2.2.2",
"_inCache": true,
"_location": "/del",
"_nodeVersion": "4.4.5",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/del-2.2.2.tgz_1471046735537_0.4419694794341922"
},
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "2.15.5",
"_inBundle": false,
"_integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
"_location": "/eslint/del",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "del@^2.0.2",
"scope": null,
"escapedName": "del",
"name": "del",
"escapedName": "del",
"rawSpec": "^2.0.2",
"spec": ">=2.0.2 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.2"
},
"_requiredBy": [
"/flat-cache"
"/eslint/flat-cache"
],
"_resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
"_shasum": "c12c981d067846c84bcaf862cff930d907ffd1a8",
"_shrinkwrap": null,
"_spec": "del@^2.0.2",
"_where": "/Users/trott/io.js/tools/node_modules/flat-cache",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/flat-cache",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,6 +30,7 @@
"bugs": {
"url": "https://github.com/sindresorhus/del/issues"
},
"bundleDependencies": false,
"dependencies": {
"globby": "^5.0.0",
"is-path-cwd": "^1.0.0",
@ -62,6 +40,7 @@
"pinkie-promise": "^2.0.0",
"rimraf": "^2.2.8"
},
"deprecated": false,
"description": "Delete files and folders",
"devDependencies": {
"ava": "*",
@ -70,18 +49,12 @@
"tempfile": "^1.1.1",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "c12c981d067846c84bcaf862cff930d907ffd1a8",
"tarball": "https://registry.npmjs.org/del/-/del-2.2.2.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "3a97a5ba131055fbf7eb39f5ed47db86a2fd4497",
"homepage": "https://github.com/sindresorhus/del#readme",
"keywords": [
"delete",
@ -108,15 +81,7 @@
"filesystem"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "del",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/del.git"

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

@ -1,57 +1,36 @@
{
"_args": [
[
{
"raw": "doctrine@^2.0.0",
"scope": null,
"escapedName": "doctrine",
"name": "doctrine",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "doctrine@>=2.0.0 <3.0.0",
"_from": "doctrine@^2.0.0",
"_id": "doctrine@2.0.0",
"_inCache": true,
"_location": "/doctrine",
"_nodeVersion": "4.4.2",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/doctrine-2.0.0.tgz_1479232728285_0.34204454137943685"
},
"_npmUser": {
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
},
"_npmVersion": "2.15.0",
"_inBundle": false,
"_integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=",
"_location": "/eslint/doctrine",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "doctrine@^2.0.0",
"scope": null,
"escapedName": "doctrine",
"name": "doctrine",
"escapedName": "doctrine",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz",
"_shasum": "c73d8d2909d22291e1a007a395804da8b665fe63",
"_shrinkwrap": null,
"_spec": "doctrine@^2.0.0",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"bugs": {
"url": "https://github.com/eslint/doctrine/issues"
},
"bundleDependencies": false,
"dependencies": {
"esutils": "^2.0.2",
"isarray": "^1.0.0"
},
"deprecated": false,
"description": "JSDoc parser",
"devDependencies": {
"coveralls": "^2.11.2",
@ -70,10 +49,6 @@
"directories": {
"lib": "./lib"
},
"dist": {
"shasum": "c73d8d2909d22291e1a007a395804da8b665fe63",
"tarball": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
@ -84,27 +59,22 @@
"LICENSE.esprima",
"README.md"
],
"gitHead": "46c600f27f54b3ab6b0b8a9ac9f97c807ffa95ef",
"homepage": "https://github.com/eslint/doctrine",
"license": "Apache-2.0",
"main": "lib/doctrine.js",
"maintainers": [
{
"name": "constellation",
"email": "utatane.tea@gmail.com"
},
{
"name": "eslint",
"email": "nicholas+eslint@nczconsulting.com"
"name": "Nicholas C. Zakas",
"email": "nicholas+npm@nczconsulting.com",
"url": "https://www.nczonline.net"
},
{
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
"name": "Yusuke Suzuki",
"email": "utatane.tea@gmail.com",
"url": "https://github.com/Constellation"
}
],
"name": "doctrine",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/eslint/doctrine.git"

70
tools/eslint/node_modules/escape-string-regexp/package.json

@ -1,51 +1,28 @@
{
"_args": [
[
{
"raw": "escape-string-regexp@^1.0.2",
"scope": null,
"escapedName": "escape-string-regexp",
"name": "escape-string-regexp",
"rawSpec": "^1.0.2",
"spec": ">=1.0.2 <2.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/chalk"
]
],
"_from": "escape-string-regexp@>=1.0.2 <2.0.0",
"_from": "escape-string-regexp@^1.0.2",
"_id": "escape-string-regexp@1.0.5",
"_inCache": true,
"_location": "/escape-string-regexp",
"_nodeVersion": "4.2.6",
"_npmOperationalInternal": {
"host": "packages-9-west.internal.npmjs.com",
"tmp": "tmp/escape-string-regexp-1.0.5.tgz_1456059312074_0.7245344955008477"
},
"_npmUser": {
"name": "jbnicolai",
"email": "jappelman@xebia.com"
},
"_npmVersion": "2.14.12",
"_inBundle": false,
"_integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"_location": "/eslint/escape-string-regexp",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "escape-string-regexp@^1.0.2",
"scope": null,
"escapedName": "escape-string-regexp",
"name": "escape-string-regexp",
"escapedName": "escape-string-regexp",
"rawSpec": "^1.0.2",
"spec": ">=1.0.2 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.2"
},
"_requiredBy": [
"/chalk",
"/figures"
"/eslint/chalk",
"/eslint/figures"
],
"_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"_shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4",
"_shrinkwrap": null,
"_spec": "escape-string-regexp@^1.0.2",
"_where": "/Users/trott/io.js/tools/node_modules/chalk",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/chalk",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -54,25 +31,20 @@
"bugs": {
"url": "https://github.com/sindresorhus/escape-string-regexp/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Escape RegExp special characters",
"devDependencies": {
"ava": "*",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4",
"tarball": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
},
"engines": {
"node": ">=0.8.0"
},
"files": [
"index.js"
],
"gitHead": "db124a3e1aae9d692c4899e42a5c6c3e329eaa20",
"homepage": "https://github.com/sindresorhus/escape-string-regexp",
"homepage": "https://github.com/sindresorhus/escape-string-regexp#readme",
"keywords": [
"escape",
"regex",
@ -88,17 +60,17 @@
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "jbnicolai",
"email": "jappelman@xebia.com"
"name": "Joshua Boy Nicolai Appelman",
"email": "joshua@jbna.nl",
"url": "jbna.nl"
}
],
"name": "escape-string-regexp",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/escape-string-regexp.git"

22
tools/eslint/node_modules/eslint-plugin-markdown/package.json

@ -1,28 +1,28 @@
{
"_from": "eslint-plugin-markdown@next",
"_id": "eslint-plugin-markdown@1.0.0-beta.7",
"_from": "eslint-plugin-markdown@1.0.0-beta.4",
"_id": "eslint-plugin-markdown@1.0.0-beta.4",
"_inBundle": false,
"_integrity": "sha1-Euc6QSfEpLedlm+fR1hR3Q949+c=",
"_integrity": "sha1-gqGZcTmeSxti99SsZCRofCwH7no=",
"_location": "/eslint-plugin-markdown",
"_phantomChildren": {},
"_requested": {
"type": "tag",
"type": "version",
"registry": true,
"raw": "eslint-plugin-markdown@next",
"raw": "eslint-plugin-markdown@1.0.0-beta.4",
"name": "eslint-plugin-markdown",
"escapedName": "eslint-plugin-markdown",
"rawSpec": "next",
"rawSpec": "1.0.0-beta.4",
"saveSpec": null,
"fetchSpec": "next"
"fetchSpec": "1.0.0-beta.4"
},
"_requiredBy": [
"#USER",
"/"
],
"_resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-1.0.0-beta.7.tgz",
"_shasum": "12e73a4127c4a4b79d966f9f475851dd0f78f7e7",
"_spec": "eslint-plugin-markdown@next",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint",
"_resolved": "https://registry.npmjs.org/eslint-plugin-markdown/-/eslint-plugin-markdown-1.0.0-beta.4.tgz",
"_shasum": "82a19971399e4b1b62f7d4ac6424687c2c07ee7a",
"_spec": "eslint-plugin-markdown@1.0.0-beta.4",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Brandon Mills",
"url": "https://github.com/btmills"

67
tools/eslint/node_modules/eslint-scope/package.json

@ -1,57 +1,36 @@
{
"_args": [
[
{
"raw": "eslint-scope@^3.7.1",
"scope": null,
"escapedName": "eslint-scope",
"name": "eslint-scope",
"rawSpec": "^3.7.1",
"spec": ">=3.7.1 <4.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "eslint-scope@>=3.7.1 <4.0.0",
"_from": "eslint-scope@^3.7.1",
"_id": "eslint-scope@3.7.1",
"_inCache": true,
"_location": "/eslint-scope",
"_nodeVersion": "4.3.1",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/eslint-scope-3.7.1.tgz_1492031610481_0.544424896594137"
},
"_npmUser": {
"name": "ivolodin",
"email": "ivolodin@gmail.com"
},
"_npmVersion": "2.14.12",
"_inBundle": false,
"_integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
"_location": "/eslint/eslint-scope",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "eslint-scope@^3.7.1",
"scope": null,
"escapedName": "eslint-scope",
"name": "eslint-scope",
"escapedName": "eslint-scope",
"rawSpec": "^3.7.1",
"spec": ">=3.7.1 <4.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^3.7.1"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
"_shasum": "3d63c3edfda02e06e01a452ad88caacc7cdcb6e8",
"_shrinkwrap": null,
"_spec": "eslint-scope@^3.7.1",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"bugs": {
"url": "https://github.com/eslint/eslint-scope/issues"
},
"bundleDependencies": false,
"dependencies": {
"esrecurse": "^4.1.0",
"estraverse": "^4.1.1"
},
"deprecated": false,
"description": "ECMAScript scope analyzer for ESLint",
"devDependencies": {
"chai": "^3.4.1",
@ -66,11 +45,6 @@
"typescript": "~2.0.10",
"typescript-eslint-parser": "^1.0.0"
},
"directories": {},
"dist": {
"shasum": "3d63c3edfda02e06e01a452ad88caacc7cdcb6e8",
"tarball": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz"
},
"engines": {
"node": ">=4.0.0"
},
@ -79,27 +53,10 @@
"README.md",
"lib"
],
"gitHead": "bec1febf351ae7137a62241c18eb78876ee4fb7f",
"homepage": "http://github.com/eslint/eslint-scope",
"license": "BSD-2-Clause",
"main": "lib/index.js",
"maintainers": [
{
"name": "eslint",
"email": "nicholas+eslint@nczconsulting.com"
},
{
"name": "ivolodin",
"email": "ivolodin@gmail.com"
},
{
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
}
],
"name": "eslint-scope",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/eslint/eslint-scope.git"

91
tools/eslint/node_modules/espree/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "espree@^3.4.3",
"scope": null,
"escapedName": "espree",
"name": "espree",
"rawSpec": "^3.4.3",
"spec": ">=3.4.3 <4.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "espree@>=3.4.3 <4.0.0",
"_from": "espree@^3.4.3",
"_id": "espree@3.4.3",
"_inCache": true,
"_location": "/espree",
"_nodeVersion": "4.4.7",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/espree-3.4.3.tgz_1494016113798_0.18147883261553943"
},
"_npmUser": {
"name": "eslint",
"email": "nicholas+eslint@nczconsulting.com"
},
"_npmVersion": "2.15.8",
"_inBundle": false,
"_integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=",
"_location": "/eslint/espree",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "espree@^3.4.3",
"scope": null,
"escapedName": "espree",
"name": "espree",
"escapedName": "espree",
"rawSpec": "^3.4.3",
"spec": ">=3.4.3 <4.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^3.4.3"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz",
"_shasum": "2910b5ccd49ce893c2ffffaab4fd8b3a31b82374",
"_shrinkwrap": null,
"_spec": "espree@^3.4.3",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Nicholas C. Zakas",
"email": "nicholas+npm@nczconsulting.com"
@ -52,10 +29,12 @@
"bugs": {
"url": "http://github.com/eslint/espree.git"
},
"bundleDependencies": false,
"dependencies": {
"acorn": "^5.0.1",
"acorn-jsx": "^3.0.0"
},
"deprecated": false,
"description": "An Esprima-compatible JavaScript parser built on Acorn",
"devDependencies": {
"browserify": "^7.0.0",
@ -74,11 +53,6 @@
"shelljs-nodecli": "^0.1.1",
"unicode-6.3.0": "~0.1.0"
},
"directories": {},
"dist": {
"shasum": "2910b5ccd49ce893c2ffffaab4fd8b3a31b82374",
"tarball": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz"
},
"engines": {
"node": ">=0.10.0"
},
@ -86,7 +60,6 @@
"lib",
"espree.js"
],
"gitHead": "ea086113d26c40b91647b2184e5e8aa9190db654",
"homepage": "https://github.com/eslint/espree",
"keywords": [
"ast",
@ -98,47 +71,7 @@
],
"license": "BSD-2-Clause",
"main": "espree.js",
"maintainers": [
{
"name": "btmills",
"email": "mills.brandont@gmail.com"
},
{
"name": "eslint",
"email": "nicholas+eslint@nczconsulting.com"
},
{
"name": "gyandeeps",
"email": "gyandeeps@gmail.com"
},
{
"name": "ivolodin",
"email": "ivolodin@gmail.com"
},
{
"name": "kaicataldo",
"email": "kaicataldo@gmail.com"
},
{
"name": "mysticatea",
"email": "star.ctor@gmail.com"
},
{
"name": "not-an-aardvark",
"email": "notaardvark@gmail.com"
},
{
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
},
{
"name": "sharpbites",
"email": "alberto.email@gmail.com"
}
],
"name": "espree",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/eslint/espree.git"

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

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "esprima@^3.1.1",
"scope": null,
"escapedName": "esprima",
"name": "esprima",
"rawSpec": "^3.1.1",
"spec": ">=3.1.1 <4.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/js-yaml"
]
],
"_from": "esprima@>=3.1.1 <4.0.0",
"_from": "esprima@^3.1.1",
"_id": "esprima@3.1.3",
"_inCache": true,
"_location": "/esprima",
"_nodeVersion": "7.1.0",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/esprima-3.1.3.tgz_1482463104044_0.19027737597934902"
},
"_npmUser": {
"name": "ariya",
"email": "ariya.hidayat@gmail.com"
},
"_npmVersion": "3.10.9",
"_inBundle": false,
"_integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
"_location": "/eslint/esprima",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "esprima@^3.1.1",
"scope": null,
"escapedName": "esprima",
"name": "esprima",
"escapedName": "esprima",
"rawSpec": "^3.1.1",
"spec": ">=3.1.1 <4.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^3.1.1"
},
"_requiredBy": [
"/js-yaml"
"/eslint/js-yaml"
],
"_resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
"_shasum": "fdca51cee6133895e3c88d535ce49dbff62a4633",
"_shrinkwrap": null,
"_spec": "esprima@^3.1.1",
"_where": "/Users/trott/io.js/tools/node_modules/js-yaml",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/js-yaml",
"author": {
"name": "Ariya Hidayat",
"email": "ariya.hidayat@gmail.com"
@ -56,7 +33,8 @@
"bugs": {
"url": "https://github.com/jquery/esprima/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "ECMAScript parsing infrastructure for multipurpose analysis",
"devDependencies": {
"codecov.io": "~0.1.6",
@ -84,11 +62,6 @@
"unicode-8.0.0": "~0.7.0",
"webpack": "~1.13.2"
},
"directories": {},
"dist": {
"shasum": "fdca51cee6133895e3c88d535ce49dbff62a4633",
"tarball": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz"
},
"engines": {
"node": ">=4"
},
@ -96,7 +69,6 @@
"bin",
"dist/esprima.js"
],
"gitHead": "cd5909280f363d503142cb79077ec532132d9749",
"homepage": "http://esprima.org",
"keywords": [
"ast",
@ -110,13 +82,12 @@
"main": "dist/esprima.js",
"maintainers": [
{
"name": "ariya",
"email": "ariya.hidayat@gmail.com"
"name": "Ariya Hidayat",
"email": "ariya.hidayat@gmail.com",
"url": "http://ariya.ofilabs.com"
}
],
"name": "esprima",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/jquery/esprima.git"

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

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "esquery@^1.0.0",
"scope": null,
"escapedName": "esquery",
"name": "esquery",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "esquery@>=1.0.0 <2.0.0",
"_from": "esquery@^1.0.0",
"_id": "esquery@1.0.0",
"_inCache": true,
"_location": "/esquery",
"_nodeVersion": "7.5.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/esquery-1.0.0.tgz_1489187536588_0.0852991035208106"
},
"_npmUser": {
"name": "michaelficarra",
"email": "npm@michael.ficarra.me"
},
"_npmVersion": "4.1.2",
"_inBundle": false,
"_integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
"_location": "/eslint/esquery",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "esquery@^1.0.0",
"scope": null,
"escapedName": "esquery",
"name": "esquery",
"escapedName": "esquery",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
"_shasum": "cfba8b57d7fba93f17298a8a006a04cda13d80fa",
"_shrinkwrap": null,
"_spec": "esquery@^1.0.0",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Joel Feenstra",
"email": "jrfeenst+esquery@gmail.com"
@ -52,9 +29,11 @@
"bugs": {
"url": "https://github.com/jrfeenst/esquery/issues"
},
"bundleDependencies": false,
"dependencies": {
"estraverse": "^4.0.0"
},
"deprecated": false,
"description": "A query library for ECMAScript AST using a CSS selector like query language.",
"devDependencies": {
"commonjs-everywhere": "~0.9.4",
@ -62,11 +41,6 @@
"jstestr": ">=0.4",
"pegjs": "~0.7.0"
},
"directories": {},
"dist": {
"shasum": "cfba8b57d7fba93f17298a8a006a04cda13d80fa",
"tarball": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz"
},
"engines": {
"node": ">=0.6"
},
@ -76,7 +50,6 @@
"license.txt",
"README.md"
],
"gitHead": "c029e89dcef7bc4ca66588a503ec154bd68f0e05",
"homepage": "https://github.com/jrfeenst/esquery#readme",
"keywords": [
"ast",
@ -86,20 +59,8 @@
],
"license": "BSD",
"main": "esquery.js",
"maintainers": [
{
"name": "jrfeenst",
"email": "jrfeenst@gmail.com"
},
{
"name": "michaelficarra",
"email": "npm@michael.ficarra.me"
}
],
"name": "esquery",
"optionalDependencies": {},
"preferGlobal": false,
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/jrfeenst/esquery.git"

3
tools/eslint/node_modules/esrecurse/.babelrc

@ -0,0 +1,3 @@
{
"presets": ["es2015"]
}

170
tools/eslint/node_modules/esrecurse/README.md

@ -0,0 +1,170 @@
### Esrecurse [![Build Status](https://travis-ci.org/estools/esrecurse.svg?branch=master)](https://travis-ci.org/estools/esrecurse)
Esrecurse ([esrecurse](https://github.com/estools/esrecurse)) is
[ECMAScript](https://www.ecma-international.org/publications/standards/Ecma-262.htm)
recursive traversing functionality.
### Example Usage
The following code will output all variables declared at the root of a file.
```javascript
esrecurse.visit(ast, {
XXXStatement: function (node) {
this.visit(node.left);
// do something...
this.visit(node.right);
}
});
```
We can use `Visitor` instance.
```javascript
var visitor = new esrecurse.Visitor({
XXXStatement: function (node) {
this.visit(node.left);
// do something...
this.visit(node.right);
}
});
visitor.visit(ast);
```
We can inherit `Visitor` instance easily.
```javascript
class Derived extends esrecurse.Visitor {
constructor()
{
super(null);
}
XXXStatement(node) {
}
}
```javascript
function DerivedVisitor() {
esrecurse.Visitor.call(/* this for constructor */ this /* visitor object automatically becomes this. */);
}
util.inherits(DerivedVisitor, esrecurse.Visitor);
DerivedVisitor.prototype.XXXStatement = function (node) {
this.visit(node.left);
// do something...
this.visit(node.right);
};
```
And you can invoke default visiting operation inside custom visit operation.
```javascript
function DerivedVisitor() {
esrecurse.Visitor.call(/* this for constructor */ this /* visitor object automatically becomes this. */);
}
util.inherits(DerivedVisitor, esrecurse.Visitor);
DerivedVisitor.prototype.XXXStatement = function (node) {
// do something...
this.visitChildren(node);
};
```
The `childVisitorKeys` option does customize the behavoir of `this.visitChildren(node)`.
We can use user-defined node types.
```javascript
// This tree contains a user-defined `TestExpression` node.
var tree = {
type: 'TestExpression',
// This 'argument' is the property containing the other **node**.
argument: {
type: 'Literal',
value: 20
},
// This 'extended' is the property not containing the other **node**.
extended: true
};
esrecurse.visit(
ast,
{
Literal: function (node) {
// do something...
}
},
{
// Extending the existing traversing rules.
childVisitorKeys: {
// TargetNodeName: [ 'keys', 'containing', 'the', 'other', '**node**' ]
TestExpression: ['argument']
}
}
);
```
We can use the `fallback` option as well.
If the `fallback` option is `"iteration"`, `esrecurse` would visit all enumerable properties of unknown nodes.
Please note circular references cause the stack overflow. AST might have circular references in additional properties for some purpose (e.g. `node.parent`).
```javascript
esrecurse.visit(
ast,
{
Literal: function (node) {
// do something...
}
},
{
fallback: 'iteration'
}
);
```
If the `fallback` option is a function, `esrecurse` calls this function to determine the enumerable properties of unknown nodes.
Please note circular references cause the stack overflow. AST might have circular references in additional properties for some purpose (e.g. `node.parent`).
```javascript
esrecurse.visit(
ast,
{
Literal: function (node) {
// do something...
}
},
{
fallback: function (node) {
return Object.keys(node).filter(function(key) {
return key !== 'argument'
});
}
}
);
```
### License
Copyright (C) 2014 [Yusuke Suzuki](https://github.com/Constellation)
(twitter: [@Constellation](https://twitter.com/Constellation)) and other contributors.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

19
tools/eslint/node_modules/esrecurse/node_modules/estraverse/LICENSE.BSD

@ -1,19 +0,0 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

124
tools/eslint/node_modules/esrecurse/node_modules/estraverse/README.md

@ -1,124 +0,0 @@
### Estraverse [![Build Status](https://secure.travis-ci.org/estools/estraverse.png)](http://travis-ci.org/estools/estraverse)
Estraverse ([estraverse](http://github.com/estools/estraverse)) is
[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)
traversal functions from [esmangle project](http://github.com/estools/esmangle).
### Documentation
You can find usage docs at [wiki page](https://github.com/estools/estraverse/wiki/Usage).
### Example Usage
The following code will output all variables declared at the root of a file.
```javascript
estraverse.traverse(ast, {
enter: function (node, parent) {
if (node.type == 'FunctionExpression' || node.type == 'FunctionDeclaration')
return estraverse.VisitorOption.Skip;
},
leave: function (node, parent) {
if (node.type == 'VariableDeclarator')
console.log(node.id.name);
}
});
```
We can use `this.skip`, `this.remove` and `this.break` functions instead of using Skip, Remove and Break.
```javascript
estraverse.traverse(ast, {
enter: function (node) {
this.break();
}
});
```
And estraverse provides `estraverse.replace` function. When returning node from `enter`/`leave`, current node is replaced with it.
```javascript
result = estraverse.replace(tree, {
enter: function (node) {
// Replace it with replaced.
if (node.type === 'Literal')
return replaced;
}
});
```
By passing `visitor.keys` mapping, we can extend estraverse traversing functionality.
```javascript
// This tree contains a user-defined `TestExpression` node.
var tree = {
type: 'TestExpression',
// This 'argument' is the property containing the other **node**.
argument: {
type: 'Literal',
value: 20
},
// This 'extended' is the property not containing the other **node**.
extended: true
};
estraverse.traverse(tree, {
enter: function (node) { },
// Extending the existing traversing rules.
keys: {
// TargetNodeName: [ 'keys', 'containing', 'the', 'other', '**node**' ]
TestExpression: ['argument']
}
});
```
By passing `visitor.fallback` option, we can control the behavior when encountering unknown nodes.
```javascript
// This tree contains a user-defined `TestExpression` node.
var tree = {
type: 'TestExpression',
// This 'argument' is the property containing the other **node**.
argument: {
type: 'Literal',
value: 20
},
// This 'extended' is the property not containing the other **node**.
extended: true
};
estraverse.traverse(tree, {
enter: function (node) { },
// Iterating the child **nodes** of unknown nodes.
fallback: 'iteration'
});
```
### License
Copyright (C) 2012-2013 [Yusuke Suzuki](http://github.com/Constellation)
(twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

843
tools/eslint/node_modules/esrecurse/node_modules/estraverse/estraverse.js

@ -1,843 +0,0 @@
/*
Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/*jslint vars:false, bitwise:true*/
/*jshint indent:4*/
/*global exports:true*/
(function clone(exports) {
'use strict';
var Syntax,
isArray,
VisitorOption,
VisitorKeys,
objectCreate,
objectKeys,
BREAK,
SKIP,
REMOVE;
function ignoreJSHintError() { }
isArray = Array.isArray;
if (!isArray) {
isArray = function isArray(array) {
return Object.prototype.toString.call(array) === '[object Array]';
};
}
function deepCopy(obj) {
var ret = {}, key, val;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
val = obj[key];
if (typeof val === 'object' && val !== null) {
ret[key] = deepCopy(val);
} else {
ret[key] = val;
}
}
}
return ret;
}
function shallowCopy(obj) {
var ret = {}, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
ret[key] = obj[key];
}
}
return ret;
}
ignoreJSHintError(shallowCopy);
// based on LLVM libc++ upper_bound / lower_bound
// MIT License
function upperBound(array, func) {
var diff, len, i, current;
len = array.length;
i = 0;
while (len) {
diff = len >>> 1;
current = i + diff;
if (func(array[current])) {
len = diff;
} else {
i = current + 1;
len -= diff + 1;
}
}
return i;
}
function lowerBound(array, func) {
var diff, len, i, current;
len = array.length;
i = 0;
while (len) {
diff = len >>> 1;
current = i + diff;
if (func(array[current])) {
i = current + 1;
len -= diff + 1;
} else {
len = diff;
}
}
return i;
}
ignoreJSHintError(lowerBound);
objectCreate = Object.create || (function () {
function F() { }
return function (o) {
F.prototype = o;
return new F();
};
})();
objectKeys = Object.keys || function (o) {
var keys = [], key;
for (key in o) {
keys.push(key);
}
return keys;
};
function extend(to, from) {
var keys = objectKeys(from), key, i, len;
for (i = 0, len = keys.length; i < len; i += 1) {
key = keys[i];
to[key] = from[key];
}
return to;
}
Syntax = {
AssignmentExpression: 'AssignmentExpression',
AssignmentPattern: 'AssignmentPattern',
ArrayExpression: 'ArrayExpression',
ArrayPattern: 'ArrayPattern',
ArrowFunctionExpression: 'ArrowFunctionExpression',
AwaitExpression: 'AwaitExpression', // CAUTION: It's deferred to ES7.
BlockStatement: 'BlockStatement',
BinaryExpression: 'BinaryExpression',
BreakStatement: 'BreakStatement',
CallExpression: 'CallExpression',
CatchClause: 'CatchClause',
ClassBody: 'ClassBody',
ClassDeclaration: 'ClassDeclaration',
ClassExpression: 'ClassExpression',
ComprehensionBlock: 'ComprehensionBlock', // CAUTION: It's deferred to ES7.
ComprehensionExpression: 'ComprehensionExpression', // CAUTION: It's deferred to ES7.
ConditionalExpression: 'ConditionalExpression',
ContinueStatement: 'ContinueStatement',
DebuggerStatement: 'DebuggerStatement',
DirectiveStatement: 'DirectiveStatement',
DoWhileStatement: 'DoWhileStatement',
EmptyStatement: 'EmptyStatement',
ExportAllDeclaration: 'ExportAllDeclaration',
ExportDefaultDeclaration: 'ExportDefaultDeclaration',
ExportNamedDeclaration: 'ExportNamedDeclaration',
ExportSpecifier: 'ExportSpecifier',
ExpressionStatement: 'ExpressionStatement',
ForStatement: 'ForStatement',
ForInStatement: 'ForInStatement',
ForOfStatement: 'ForOfStatement',
FunctionDeclaration: 'FunctionDeclaration',
FunctionExpression: 'FunctionExpression',
GeneratorExpression: 'GeneratorExpression', // CAUTION: It's deferred to ES7.
Identifier: 'Identifier',
IfStatement: 'IfStatement',
ImportDeclaration: 'ImportDeclaration',
ImportDefaultSpecifier: 'ImportDefaultSpecifier',
ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',
ImportSpecifier: 'ImportSpecifier',
Literal: 'Literal',
LabeledStatement: 'LabeledStatement',
LogicalExpression: 'LogicalExpression',
MemberExpression: 'MemberExpression',
MetaProperty: 'MetaProperty',
MethodDefinition: 'MethodDefinition',
ModuleSpecifier: 'ModuleSpecifier',
NewExpression: 'NewExpression',
ObjectExpression: 'ObjectExpression',
ObjectPattern: 'ObjectPattern',
Program: 'Program',
Property: 'Property',
RestElement: 'RestElement',
ReturnStatement: 'ReturnStatement',
SequenceExpression: 'SequenceExpression',
SpreadElement: 'SpreadElement',
Super: 'Super',
SwitchStatement: 'SwitchStatement',
SwitchCase: 'SwitchCase',
TaggedTemplateExpression: 'TaggedTemplateExpression',
TemplateElement: 'TemplateElement',
TemplateLiteral: 'TemplateLiteral',
ThisExpression: 'ThisExpression',
ThrowStatement: 'ThrowStatement',
TryStatement: 'TryStatement',
UnaryExpression: 'UnaryExpression',
UpdateExpression: 'UpdateExpression',
VariableDeclaration: 'VariableDeclaration',
VariableDeclarator: 'VariableDeclarator',
WhileStatement: 'WhileStatement',
WithStatement: 'WithStatement',
YieldExpression: 'YieldExpression'
};
VisitorKeys = {
AssignmentExpression: ['left', 'right'],
AssignmentPattern: ['left', 'right'],
ArrayExpression: ['elements'],
ArrayPattern: ['elements'],
ArrowFunctionExpression: ['params', 'body'],
AwaitExpression: ['argument'], // CAUTION: It's deferred to ES7.
BlockStatement: ['body'],
BinaryExpression: ['left', 'right'],
BreakStatement: ['label'],
CallExpression: ['callee', 'arguments'],
CatchClause: ['param', 'body'],
ClassBody: ['body'],
ClassDeclaration: ['id', 'superClass', 'body'],
ClassExpression: ['id', 'superClass', 'body'],
ComprehensionBlock: ['left', 'right'], // CAUTION: It's deferred to ES7.
ComprehensionExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7.
ConditionalExpression: ['test', 'consequent', 'alternate'],
ContinueStatement: ['label'],
DebuggerStatement: [],
DirectiveStatement: [],
DoWhileStatement: ['body', 'test'],
EmptyStatement: [],
ExportAllDeclaration: ['source'],
ExportDefaultDeclaration: ['declaration'],
ExportNamedDeclaration: ['declaration', 'specifiers', 'source'],
ExportSpecifier: ['exported', 'local'],
ExpressionStatement: ['expression'],
ForStatement: ['init', 'test', 'update', 'body'],
ForInStatement: ['left', 'right', 'body'],
ForOfStatement: ['left', 'right', 'body'],
FunctionDeclaration: ['id', 'params', 'body'],
FunctionExpression: ['id', 'params', 'body'],
GeneratorExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7.
Identifier: [],
IfStatement: ['test', 'consequent', 'alternate'],
ImportDeclaration: ['specifiers', 'source'],
ImportDefaultSpecifier: ['local'],
ImportNamespaceSpecifier: ['local'],
ImportSpecifier: ['imported', 'local'],
Literal: [],
LabeledStatement: ['label', 'body'],
LogicalExpression: ['left', 'right'],
MemberExpression: ['object', 'property'],
MetaProperty: ['meta', 'property'],
MethodDefinition: ['key', 'value'],
ModuleSpecifier: [],
NewExpression: ['callee', 'arguments'],
ObjectExpression: ['properties'],
ObjectPattern: ['properties'],
Program: ['body'],
Property: ['key', 'value'],
RestElement: [ 'argument' ],
ReturnStatement: ['argument'],
SequenceExpression: ['expressions'],
SpreadElement: ['argument'],
Super: [],
SwitchStatement: ['discriminant', 'cases'],
SwitchCase: ['test', 'consequent'],
TaggedTemplateExpression: ['tag', 'quasi'],
TemplateElement: [],
TemplateLiteral: ['quasis', 'expressions'],
ThisExpression: [],
ThrowStatement: ['argument'],
TryStatement: ['block', 'handler', 'finalizer'],
UnaryExpression: ['argument'],
UpdateExpression: ['argument'],
VariableDeclaration: ['declarations'],
VariableDeclarator: ['id', 'init'],
WhileStatement: ['test', 'body'],
WithStatement: ['object', 'body'],
YieldExpression: ['argument']
};
// unique id
BREAK = {};
SKIP = {};
REMOVE = {};
VisitorOption = {
Break: BREAK,
Skip: SKIP,
Remove: REMOVE
};
function Reference(parent, key) {
this.parent = parent;
this.key = key;
}
Reference.prototype.replace = function replace(node) {
this.parent[this.key] = node;
};
Reference.prototype.remove = function remove() {
if (isArray(this.parent)) {
this.parent.splice(this.key, 1);
return true;
} else {
this.replace(null);
return false;
}
};
function Element(node, path, wrap, ref) {
this.node = node;
this.path = path;
this.wrap = wrap;
this.ref = ref;
}
function Controller() { }
// API:
// return property path array from root to current node
Controller.prototype.path = function path() {
var i, iz, j, jz, result, element;
function addToPath(result, path) {
if (isArray(path)) {
for (j = 0, jz = path.length; j < jz; ++j) {
result.push(path[j]);
}
} else {
result.push(path);
}
}
// root node
if (!this.__current.path) {
return null;
}
// first node is sentinel, second node is root element
result = [];
for (i = 2, iz = this.__leavelist.length; i < iz; ++i) {
element = this.__leavelist[i];
addToPath(result, element.path);
}
addToPath(result, this.__current.path);
return result;
};
// API:
// return type of current node
Controller.prototype.type = function () {
var node = this.current();
return node.type || this.__current.wrap;
};
// API:
// return array of parent elements
Controller.prototype.parents = function parents() {
var i, iz, result;
// first node is sentinel
result = [];
for (i = 1, iz = this.__leavelist.length; i < iz; ++i) {
result.push(this.__leavelist[i].node);
}
return result;
};
// API:
// return current node
Controller.prototype.current = function current() {
return this.__current.node;
};
Controller.prototype.__execute = function __execute(callback, element) {
var previous, result;
result = undefined;
previous = this.__current;
this.__current = element;
this.__state = null;
if (callback) {
result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node);
}
this.__current = previous;
return result;
};
// API:
// notify control skip / break
Controller.prototype.notify = function notify(flag) {
this.__state = flag;
};
// API:
// skip child nodes of current node
Controller.prototype.skip = function () {
this.notify(SKIP);
};
// API:
// break traversals
Controller.prototype['break'] = function () {
this.notify(BREAK);
};
// API:
// remove node
Controller.prototype.remove = function () {
this.notify(REMOVE);
};
Controller.prototype.__initialize = function(root, visitor) {
this.visitor = visitor;
this.root = root;
this.__worklist = [];
this.__leavelist = [];
this.__current = null;
this.__state = null;
this.__fallback = visitor.fallback === 'iteration';
this.__keys = VisitorKeys;
if (visitor.keys) {
this.__keys = extend(objectCreate(this.__keys), visitor.keys);
}
};
function isNode(node) {
if (node == null) {
return false;
}
return typeof node === 'object' && typeof node.type === 'string';
}
function isProperty(nodeType, key) {
return (nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === key;
}
Controller.prototype.traverse = function traverse(root, visitor) {
var worklist,
leavelist,
element,
node,
nodeType,
ret,
key,
current,
current2,
candidates,
candidate,
sentinel;
this.__initialize(root, visitor);
sentinel = {};
// reference
worklist = this.__worklist;
leavelist = this.__leavelist;
// initialize
worklist.push(new Element(root, null, null, null));
leavelist.push(new Element(null, null, null, null));
while (worklist.length) {
element = worklist.pop();
if (element === sentinel) {
element = leavelist.pop();
ret = this.__execute(visitor.leave, element);
if (this.__state === BREAK || ret === BREAK) {
return;
}
continue;
}
if (element.node) {
ret = this.__execute(visitor.enter, element);
if (this.__state === BREAK || ret === BREAK) {
return;
}
worklist.push(sentinel);
leavelist.push(element);
if (this.__state === SKIP || ret === SKIP) {
continue;
}
node = element.node;
nodeType = node.type || element.wrap;
candidates = this.__keys[nodeType];
if (!candidates) {
if (this.__fallback) {
candidates = objectKeys(node);
} else {
throw new Error('Unknown node type ' + nodeType + '.');
}
}
current = candidates.length;
while ((current -= 1) >= 0) {
key = candidates[current];
candidate = node[key];
if (!candidate) {
continue;
}
if (isArray(candidate)) {
current2 = candidate.length;
while ((current2 -= 1) >= 0) {
if (!candidate[current2]) {
continue;
}
if (isProperty(nodeType, candidates[current])) {
element = new Element(candidate[current2], [key, current2], 'Property', null);
} else if (isNode(candidate[current2])) {
element = new Element(candidate[current2], [key, current2], null, null);
} else {
continue;
}
worklist.push(element);
}
} else if (isNode(candidate)) {
worklist.push(new Element(candidate, key, null, null));
}
}
}
}
};
Controller.prototype.replace = function replace(root, visitor) {
function removeElem(element) {
var i,
key,
nextElem,
parent;
if (element.ref.remove()) {
// When the reference is an element of an array.
key = element.ref.key;
parent = element.ref.parent;
// If removed from array, then decrease following items' keys.
i = worklist.length;
while (i--) {
nextElem = worklist[i];
if (nextElem.ref && nextElem.ref.parent === parent) {
if (nextElem.ref.key < key) {
break;
}
--nextElem.ref.key;
}
}
}
}
var worklist,
leavelist,
node,
nodeType,
target,
element,
current,
current2,
candidates,
candidate,
sentinel,
outer,
key;
this.__initialize(root, visitor);
sentinel = {};
// reference
worklist = this.__worklist;
leavelist = this.__leavelist;
// initialize
outer = {
root: root
};
element = new Element(root, null, null, new Reference(outer, 'root'));
worklist.push(element);
leavelist.push(element);
while (worklist.length) {
element = worklist.pop();
if (element === sentinel) {
element = leavelist.pop();
target = this.__execute(visitor.leave, element);
// node may be replaced with null,
// so distinguish between undefined and null in this place
if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {
// replace
element.ref.replace(target);
}
if (this.__state === REMOVE || target === REMOVE) {
removeElem(element);
}
if (this.__state === BREAK || target === BREAK) {
return outer.root;
}
continue;
}
target = this.__execute(visitor.enter, element);
// node may be replaced with null,
// so distinguish between undefined and null in this place
if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {
// replace
element.ref.replace(target);
element.node = target;
}
if (this.__state === REMOVE || target === REMOVE) {
removeElem(element);
element.node = null;
}
if (this.__state === BREAK || target === BREAK) {
return outer.root;
}
// node may be null
node = element.node;
if (!node) {
continue;
}
worklist.push(sentinel);
leavelist.push(element);
if (this.__state === SKIP || target === SKIP) {
continue;
}
nodeType = node.type || element.wrap;
candidates = this.__keys[nodeType];
if (!candidates) {
if (this.__fallback) {
candidates = objectKeys(node);
} else {
throw new Error('Unknown node type ' + nodeType + '.');
}
}
current = candidates.length;
while ((current -= 1) >= 0) {
key = candidates[current];
candidate = node[key];
if (!candidate) {
continue;
}
if (isArray(candidate)) {
current2 = candidate.length;
while ((current2 -= 1) >= 0) {
if (!candidate[current2]) {
continue;
}
if (isProperty(nodeType, candidates[current])) {
element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2));
} else if (isNode(candidate[current2])) {
element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2));
} else {
continue;
}
worklist.push(element);
}
} else if (isNode(candidate)) {
worklist.push(new Element(candidate, key, null, new Reference(node, key)));
}
}
}
return outer.root;
};
function traverse(root, visitor) {
var controller = new Controller();
return controller.traverse(root, visitor);
}
function replace(root, visitor) {
var controller = new Controller();
return controller.replace(root, visitor);
}
function extendCommentRange(comment, tokens) {
var target;
target = upperBound(tokens, function search(token) {
return token.range[0] > comment.range[0];
});
comment.extendedRange = [comment.range[0], comment.range[1]];
if (target !== tokens.length) {
comment.extendedRange[1] = tokens[target].range[0];
}
target -= 1;
if (target >= 0) {
comment.extendedRange[0] = tokens[target].range[1];
}
return comment;
}
function attachComments(tree, providedComments, tokens) {
// At first, we should calculate extended comment ranges.
var comments = [], comment, len, i, cursor;
if (!tree.range) {
throw new Error('attachComments needs range information');
}
// tokens array is empty, we attach comments to tree as 'leadingComments'
if (!tokens.length) {
if (providedComments.length) {
for (i = 0, len = providedComments.length; i < len; i += 1) {
comment = deepCopy(providedComments[i]);
comment.extendedRange = [0, tree.range[0]];
comments.push(comment);
}
tree.leadingComments = comments;
}
return tree;
}
for (i = 0, len = providedComments.length; i < len; i += 1) {
comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens));
}
// This is based on John Freeman's implementation.
cursor = 0;
traverse(tree, {
enter: function (node) {
var comment;
while (cursor < comments.length) {
comment = comments[cursor];
if (comment.extendedRange[1] > node.range[0]) {
break;
}
if (comment.extendedRange[1] === node.range[0]) {
if (!node.leadingComments) {
node.leadingComments = [];
}
node.leadingComments.push(comment);
comments.splice(cursor, 1);
} else {
cursor += 1;
}
}
// already out of owned node
if (cursor === comments.length) {
return VisitorOption.Break;
}
if (comments[cursor].extendedRange[0] > node.range[1]) {
return VisitorOption.Skip;
}
}
});
cursor = 0;
traverse(tree, {
leave: function (node) {
var comment;
while (cursor < comments.length) {
comment = comments[cursor];
if (node.range[1] < comment.extendedRange[0]) {
break;
}
if (node.range[1] === comment.extendedRange[0]) {
if (!node.trailingComments) {
node.trailingComments = [];
}
node.trailingComments.push(comment);
comments.splice(cursor, 1);
} else {
cursor += 1;
}
}
// already out of owned node
if (cursor === comments.length) {
return VisitorOption.Break;
}
if (comments[cursor].extendedRange[0] > node.range[1]) {
return VisitorOption.Skip;
}
}
});
return tree;
}
exports.version = require('./package.json').version;
exports.Syntax = Syntax;
exports.traverse = traverse;
exports.replace = replace;
exports.attachComments = attachComments;
exports.VisitorKeys = VisitorKeys;
exports.VisitorOption = VisitorOption;
exports.Controller = Controller;
exports.cloneEnvironment = function () { return clone({}); };
return exports;
}(exports));
/* vim: set sw=4 ts=4 et tw=80 : */

100
tools/eslint/node_modules/esrecurse/node_modules/estraverse/package.json

@ -1,100 +0,0 @@
{
"_args": [
[
{
"raw": "estraverse@~4.1.0",
"scope": null,
"escapedName": "estraverse",
"name": "estraverse",
"rawSpec": "~4.1.0",
"spec": ">=4.1.0 <4.2.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/esrecurse"
]
],
"_from": "estraverse@>=4.1.0 <4.2.0",
"_id": "estraverse@4.1.1",
"_inCache": true,
"_location": "/esrecurse/estraverse",
"_nodeVersion": "4.1.1",
"_npmUser": {
"name": "constellation",
"email": "utatane.tea@gmail.com"
},
"_npmVersion": "2.14.4",
"_phantomChildren": {},
"_requested": {
"raw": "estraverse@~4.1.0",
"scope": null,
"escapedName": "estraverse",
"name": "estraverse",
"rawSpec": "~4.1.0",
"spec": ">=4.1.0 <4.2.0",
"type": "range"
},
"_requiredBy": [
"/esrecurse"
],
"_resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz",
"_shasum": "f6caca728933a850ef90661d0e17982ba47111a2",
"_shrinkwrap": null,
"_spec": "estraverse@~4.1.0",
"_where": "/Users/trott/io.js/tools/node_modules/esrecurse",
"bugs": {
"url": "https://github.com/estools/estraverse/issues"
},
"dependencies": {},
"description": "ECMAScript JS AST traversal functions",
"devDependencies": {
"chai": "^2.1.1",
"coffee-script": "^1.8.0",
"espree": "^1.11.0",
"gulp": "^3.8.10",
"gulp-bump": "^0.2.2",
"gulp-filter": "^2.0.0",
"gulp-git": "^1.0.1",
"gulp-tag-version": "^1.2.1",
"jshint": "^2.5.6",
"mocha": "^2.1.0"
},
"directories": {},
"dist": {
"shasum": "f6caca728933a850ef90661d0e17982ba47111a2",
"tarball": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"gitHead": "bbcccbfe98296585e4311c8755e1d00dcd581e3c",
"homepage": "https://github.com/estools/estraverse",
"license": "BSD-2-Clause",
"main": "estraverse.js",
"maintainers": [
{
"name": "constellation",
"email": "utatane.tea@gmail.com"
},
{
"name": "michaelficarra",
"email": "npm@michael.ficarra.me"
},
{
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
}
],
"name": "estraverse",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/estools/estraverse.git"
},
"scripts": {
"lint": "jshint estraverse.js",
"test": "npm run-script lint && npm run-script unit-test",
"unit-test": "mocha --compilers coffee:coffee-script/register"
},
"version": "4.1.1"
}

4322
tools/eslint/node_modules/esrecurse/package-lock.json

File diff suppressed because it is too large

102
tools/eslint/node_modules/esrecurse/package.json

@ -1,101 +1,73 @@
{
"_args": [
[
{
"raw": "esrecurse@^4.1.0",
"scope": null,
"escapedName": "esrecurse",
"name": "esrecurse",
"rawSpec": "^4.1.0",
"spec": ">=4.1.0 <5.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint-scope"
]
],
"_from": "esrecurse@>=4.1.0 <5.0.0",
"_id": "esrecurse@4.1.0",
"_inCache": true,
"_location": "/esrecurse",
"_nodeVersion": "0.12.9",
"_npmOperationalInternal": {
"host": "packages-13-west.internal.npmjs.com",
"tmp": "tmp/esrecurse-4.1.0.tgz_1457712782215_0.15950557170435786"
},
"_npmUser": {
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
},
"_npmVersion": "2.14.9",
"_from": "esrecurse@^4.1.0",
"_id": "esrecurse@4.2.0",
"_inBundle": false,
"_integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=",
"_location": "/eslint/esrecurse",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "esrecurse@^4.1.0",
"scope": null,
"escapedName": "esrecurse",
"name": "esrecurse",
"escapedName": "esrecurse",
"rawSpec": "^4.1.0",
"spec": ">=4.1.0 <5.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^4.1.0"
},
"_requiredBy": [
"/eslint-scope"
"/eslint/eslint-scope"
],
"_resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz",
"_shasum": "4713b6536adf7f2ac4f327d559e7756bff648220",
"_shrinkwrap": null,
"_resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz",
"_shasum": "fa9568d98d3823f9a41d91e902dcab9ea6e5b163",
"_spec": "esrecurse@^4.1.0",
"_where": "/Users/trott/io.js/tools/node_modules/eslint-scope",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/eslint-scope",
"babel": {
"presets": [
"es2015"
]
},
"bugs": {
"url": "https://github.com/estools/esrecurse/issues"
},
"bundleDependencies": false,
"dependencies": {
"estraverse": "~4.1.0",
"estraverse": "^4.1.0",
"object-assign": "^4.0.1"
},
"deprecated": false,
"description": "ECMAScript AST recursive visitor",
"devDependencies": {
"chai": "^3.3.0",
"coffee-script": "^1.9.1",
"esprima": "^2.1.0",
"babel-cli": "^6.24.1",
"babel-eslint": "^7.2.3",
"babel-preset-es2015": "^6.24.1",
"babel-register": "^6.24.1",
"chai": "^4.0.2",
"esprima": "^4.0.0",
"gulp": "^3.9.0",
"gulp-bump": "^1.0.0",
"gulp-eslint": "^1.0.0",
"gulp-filter": "^3.0.1",
"gulp-git": "^1.1.0",
"gulp-mocha": "^2.1.3",
"gulp-bump": "^2.7.0",
"gulp-eslint": "^4.0.0",
"gulp-filter": "^5.0.0",
"gulp-git": "^2.4.1",
"gulp-mocha": "^4.3.1",
"gulp-tag-version": "^1.2.1",
"jsdoc": "^3.3.0-alpha10",
"minimist": "^1.1.0"
},
"directories": {},
"dist": {
"shasum": "4713b6536adf7f2ac4f327d559e7756bff648220",
"tarball": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"gitHead": "63a34714834bd7ad2063054bd4abb24fb82ca667",
"homepage": "https://github.com/estools/esrecurse",
"license": "BSD-2-Clause",
"main": "esrecurse.js",
"maintainers": [
{
"name": "constellation",
"email": "utatane.tea@gmail.com"
},
{
"name": "michaelficarra",
"email": "npm@michael.ficarra.me"
},
{
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
"name": "Yusuke Suzuki",
"email": "utatane.tea@gmail.com",
"url": "https://github.com/Constellation"
}
],
"name": "esrecurse",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/estools/esrecurse.git"
@ -105,5 +77,5 @@
"test": "gulp travis",
"unit-test": "gulp test"
},
"version": "4.1.0"
"version": "4.2.0"
}

72
tools/eslint/node_modules/estraverse/package.json

@ -1,56 +1,35 @@
{
"_args": [
[
{
"raw": "estraverse@^4.2.0",
"scope": null,
"escapedName": "estraverse",
"name": "estraverse",
"rawSpec": "^4.2.0",
"spec": ">=4.2.0 <5.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "estraverse@>=4.2.0 <5.0.0",
"_from": "estraverse@^4.2.0",
"_id": "estraverse@4.2.0",
"_inCache": true,
"_location": "/estraverse",
"_nodeVersion": "0.12.9",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/estraverse-4.2.0.tgz_1457646738925_0.7118953282479197"
},
"_npmUser": {
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
},
"_npmVersion": "2.14.9",
"_inBundle": false,
"_integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
"_location": "/eslint/estraverse",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "estraverse@^4.2.0",
"scope": null,
"escapedName": "estraverse",
"name": "estraverse",
"escapedName": "estraverse",
"rawSpec": "^4.2.0",
"spec": ">=4.2.0 <5.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^4.2.0"
},
"_requiredBy": [
"/eslint",
"/eslint-scope",
"/esquery"
"/eslint/eslint-scope",
"/eslint/esquery",
"/eslint/esrecurse"
],
"_resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
"_shasum": "0dee3fed31fcd469618ce7342099fc1afa0bdb13",
"_shrinkwrap": null,
"_spec": "estraverse@^4.2.0",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"bugs": {
"url": "https://github.com/estools/estraverse/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "ECMAScript JS AST traversal functions",
"devDependencies": {
"babel-preset-es2015": "^6.3.13",
@ -65,35 +44,20 @@
"jshint": "^2.5.6",
"mocha": "^2.1.0"
},
"directories": {},
"dist": {
"shasum": "0dee3fed31fcd469618ce7342099fc1afa0bdb13",
"tarball": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"gitHead": "6f6a4e99653908e859c7c10d04d9518bf4844ede",
"homepage": "https://github.com/estools/estraverse",
"license": "BSD-2-Clause",
"main": "estraverse.js",
"maintainers": [
{
"name": "constellation",
"email": "utatane.tea@gmail.com"
},
{
"name": "michaelficarra",
"email": "npm@michael.ficarra.me"
},
{
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
"name": "Yusuke Suzuki",
"email": "utatane.tea@gmail.com",
"url": "http://github.com/Constellation"
}
],
"name": "estraverse",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/estools/estraverse.git"

64
tools/eslint/node_modules/esutils/package.json

@ -1,52 +1,34 @@
{
"_args": [
[
{
"raw": "esutils@^2.0.2",
"scope": null,
"escapedName": "esutils",
"name": "esutils",
"rawSpec": "^2.0.2",
"spec": ">=2.0.2 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "esutils@>=2.0.2 <3.0.0",
"_from": "esutils@^2.0.2",
"_id": "esutils@2.0.2",
"_inCache": true,
"_location": "/esutils",
"_nodeVersion": "0.12.0",
"_npmUser": {
"name": "michaelficarra",
"email": "npm@michael.ficarra.me"
},
"_npmVersion": "2.5.1",
"_inBundle": false,
"_integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
"_location": "/eslint/esutils",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "esutils@^2.0.2",
"scope": null,
"escapedName": "esutils",
"name": "esutils",
"escapedName": "esutils",
"rawSpec": "^2.0.2",
"spec": ">=2.0.2 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.2"
},
"_requiredBy": [
"/babel-code-frame",
"/doctrine",
"/eslint"
"/eslint",
"/eslint/babel-code-frame",
"/eslint/doctrine"
],
"_resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
"_shasum": "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b",
"_shrinkwrap": null,
"_spec": "esutils@^2.0.2",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"bugs": {
"url": "https://github.com/estools/esutils/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "utility box for ECMAScript language tools",
"devDependencies": {
"chai": "~1.7.2",
@ -59,10 +41,6 @@
"directories": {
"lib": "./lib"
},
"dist": {
"shasum": "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b",
"tarball": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz"
},
"engines": {
"node": ">=0.10.0"
},
@ -71,7 +49,6 @@
"README.md",
"lib"
],
"gitHead": "3ffd1c403f3f29db9e8a9574b1895682e57b6a7f",
"homepage": "https://github.com/estools/esutils",
"licenses": [
{
@ -82,17 +59,12 @@
"main": "lib/utils.js",
"maintainers": [
{
"name": "constellation",
"email": "utatane.tea@gmail.com"
},
{
"name": "michaelficarra",
"email": "npm@michael.ficarra.me"
"name": "Yusuke Suzuki",
"email": "utatane.tea@gmail.com",
"url": "http://github.com/Constellation"
}
],
"name": "esutils",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/estools/esutils.git"

2
tools/eslint/node_modules/extend/package.json

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
"_shasum": "a755ea7bc1adfcc5a31ce7e762dbaadc5e636444",
"_spec": "extend@^3.0.0",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\unified",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/remark-parse",
"author": {
"name": "Stefan Thomas",
"email": "justmoon@members.fsf.org",

61
tools/eslint/node_modules/external-editor/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "external-editor@^2.0.4",
"scope": null,
"escapedName": "external-editor",
"name": "external-editor",
"rawSpec": "^2.0.4",
"spec": ">=2.0.4 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/inquirer"
]
],
"_from": "external-editor@>=2.0.4 <3.0.0",
"_from": "external-editor@^2.0.4",
"_id": "external-editor@2.0.4",
"_inCache": true,
"_location": "/external-editor",
"_nodeVersion": "7.7.3",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/external-editor-2.0.4.tgz_1495568005250_0.5491060812491924"
},
"_npmUser": {
"name": "mrkmg",
"email": "kevin@mrkmg.com"
},
"_npmVersion": "4.1.2",
"_inBundle": false,
"_integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=",
"_location": "/eslint/external-editor",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "external-editor@^2.0.4",
"scope": null,
"escapedName": "external-editor",
"name": "external-editor",
"escapedName": "external-editor",
"rawSpec": "^2.0.4",
"spec": ">=2.0.4 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.4"
},
"_requiredBy": [
"/inquirer"
"/eslint/inquirer"
],
"_resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz",
"_shasum": "1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972",
"_shrinkwrap": null,
"_spec": "external-editor@^2.0.4",
"_where": "/Users/trott/io.js/tools/node_modules/inquirer",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
"name": "Kevin Gravier",
"email": "kevin@mrkmg.com",
@ -53,11 +30,13 @@
"bugs": {
"url": "https://github.com/mrkmg/node-external-editor/issues"
},
"bundleDependencies": false,
"dependencies": {
"iconv-lite": "^0.4.17",
"jschardet": "^1.4.2",
"tmp": "^0.0.31"
},
"deprecated": false,
"description": "Edit a string with the users preferred text editor using $VISUAL or $ENVIRONMENT",
"devDependencies": {
"chai": "^3.5.0",
@ -65,11 +44,6 @@
"coffeelint": "^1.14.2",
"mocha": "^3.2.0"
},
"directories": {},
"dist": {
"shasum": "1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972",
"tarball": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz"
},
"engines": {
"node": ">=0.12"
},
@ -78,7 +52,6 @@
"example_sync.js",
"example_async.js"
],
"gitHead": "caa73e5fb283ba64a3c67a51f69a0c49bb544960",
"homepage": "https://github.com/mrkmg/node-external-editor#readme",
"keywords": [
"editor",
@ -88,15 +61,7 @@
],
"license": "MIT",
"main": "main/index.js",
"maintainers": [
{
"name": "mrkmg",
"email": "kevin@mrkmg.com"
}
],
"name": "external-editor",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/mrkmg/node-external-editor.git"

62
tools/eslint/node_modules/fast-levenshtein/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "fast-levenshtein@~2.0.4",
"scope": null,
"escapedName": "fast-levenshtein",
"name": "fast-levenshtein",
"rawSpec": "~2.0.4",
"spec": ">=2.0.4 <2.1.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/optionator"
]
],
"_from": "fast-levenshtein@>=2.0.4 <2.1.0",
"_from": "fast-levenshtein@~2.0.4",
"_id": "fast-levenshtein@2.0.6",
"_inCache": true,
"_location": "/fast-levenshtein",
"_nodeVersion": "6.9.1",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/fast-levenshtein-2.0.6.tgz_1482873305730_0.48711988772265613"
},
"_npmUser": {
"name": "hiddentao",
"email": "ram@hiddentao.com"
},
"_npmVersion": "3.10.8",
"_inBundle": false,
"_integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"_location": "/eslint/fast-levenshtein",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "fast-levenshtein@~2.0.4",
"scope": null,
"escapedName": "fast-levenshtein",
"name": "fast-levenshtein",
"escapedName": "fast-levenshtein",
"rawSpec": "~2.0.4",
"spec": ">=2.0.4 <2.1.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "~2.0.4"
},
"_requiredBy": [
"/optionator"
"/eslint/optionator"
],
"_resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"_shasum": "3d8a5c66883a16a30ca8643e851f19baa7797917",
"_shrinkwrap": null,
"_spec": "fast-levenshtein@~2.0.4",
"_where": "/Users/trott/io.js/tools/node_modules/optionator",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/optionator",
"author": {
"name": "Ramesh Nair",
"email": "ram@hiddentao.com",
@ -53,7 +30,8 @@
"bugs": {
"url": "https://github.com/hiddentao/fast-levenshtein/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Efficient implementation of Levenshtein algorithm with locale-specific collator support.",
"devDependencies": {
"chai": "~1.5.0",
@ -68,15 +46,9 @@
"lodash": "^4.0.1",
"mocha": "~1.9.0"
},
"directories": {},
"dist": {
"shasum": "3d8a5c66883a16a30ca8643e851f19baa7797917",
"tarball": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
},
"files": [
"levenshtein.js"
],
"gitHead": "5bffe7151f99fb02f319f70a004e653105a760fb",
"homepage": "https://github.com/hiddentao/fast-levenshtein#readme",
"keywords": [
"levenshtein",
@ -85,15 +57,7 @@
],
"license": "MIT",
"main": "levenshtein.js",
"maintainers": [
{
"name": "hiddentao",
"email": "ram@hiddentao.com"
}
],
"name": "fast-levenshtein",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/hiddentao/fast-levenshtein.git"

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

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "figures@^2.0.0",
"scope": null,
"escapedName": "figures",
"name": "figures",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/inquirer"
]
],
"_from": "figures@>=2.0.0 <3.0.0",
"_from": "figures@^2.0.0",
"_id": "figures@2.0.0",
"_inCache": true,
"_location": "/figures",
"_nodeVersion": "4.6.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/figures-2.0.0.tgz_1476763139845_0.48903139564208686"
},
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "2.15.9",
"_inBundle": false,
"_integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
"_location": "/eslint/figures",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "figures@^2.0.0",
"scope": null,
"escapedName": "figures",
"name": "figures",
"escapedName": "figures",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/inquirer"
"/eslint/inquirer"
],
"_resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
"_shasum": "3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962",
"_shrinkwrap": null,
"_spec": "figures@^2.0.0",
"_where": "/Users/trott/io.js/tools/node_modules/inquirer",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/inquirer",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,9 +30,11 @@
"bugs": {
"url": "https://github.com/sindresorhus/figures/issues"
},
"bundleDependencies": false,
"dependencies": {
"escape-string-regexp": "^1.0.5"
},
"deprecated": false,
"description": "Unicode symbols with Windows CMD fallbacks",
"devDependencies": {
"ava": "*",
@ -63,18 +42,12 @@
"require-uncached": "^1.0.2",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962",
"tarball": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz"
},
"engines": {
"node": ">=4"
},
"files": [
"index.js"
],
"gitHead": "fee8887d9f776798ae87ff54386443273c92ad97",
"homepage": "https://github.com/sindresorhus/figures#readme",
"keywords": [
"unicode",
@ -90,15 +63,7 @@
"fallback"
],
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "figures",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/figures.git"

59
tools/eslint/node_modules/file-entry-cache/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "file-entry-cache@^2.0.0",
"scope": null,
"escapedName": "file-entry-cache",
"name": "file-entry-cache",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "file-entry-cache@>=2.0.0 <3.0.0",
"_from": "file-entry-cache@^2.0.0",
"_id": "file-entry-cache@2.0.0",
"_inCache": true,
"_location": "/file-entry-cache",
"_nodeVersion": "6.3.0",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/file-entry-cache-2.0.0.tgz_1471380536263_0.40089720860123634"
},
"_npmUser": {
"name": "royriojas",
"email": "royriojas@gmail.com"
},
"_npmVersion": "3.10.3",
"_inBundle": false,
"_integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
"_location": "/eslint/file-entry-cache",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "file-entry-cache@^2.0.0",
"scope": null,
"escapedName": "file-entry-cache",
"name": "file-entry-cache",
"escapedName": "file-entry-cache",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
"_shasum": "c392990c3e684783d838b8c84a45d8a048458361",
"_shrinkwrap": null,
"_spec": "file-entry-cache@^2.0.0",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Roy Riojas",
"url": "http://royriojas.com"
@ -52,6 +29,7 @@
"bugs": {
"url": "https://github.com/royriojas/file-entry-cache/issues"
},
"bundleDependencies": false,
"changelogx": {
"ignoreRegExp": [
"BLD: Release",
@ -68,6 +46,7 @@
"flat-cache": "^1.2.1",
"object-assign": "^4.0.1"
},
"deprecated": false,
"description": "Super simple cache for file metadata, useful for process that work o a given series of files and that only need to repeat the job on the changed ones since the previous run of the process",
"devDependencies": {
"chai": "^3.2.0",
@ -87,18 +66,12 @@
"watch-run": "^1.2.1",
"write": "^0.3.1"
},
"directories": {},
"dist": {
"shasum": "c392990c3e684783d838b8c84a45d8a048458361",
"tarball": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"cache.js"
],
"gitHead": "8c015253938e1756104b524c09ea48798e788aa0",
"homepage": "https://github.com/royriojas/file-entry-cache#readme",
"keywords": [
"file cache",
@ -110,21 +83,13 @@
],
"license": "MIT",
"main": "cache.js",
"maintainers": [
{
"name": "royriojas",
"email": "royriojas@gmail.com"
}
],
"name": "file-entry-cache",
"optionalDependencies": {},
"precommit": [
"npm run verify"
],
"prepush": [
"npm run verify"
],
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/royriojas/file-entry-cache.git"

61
tools/eslint/node_modules/flat-cache/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "flat-cache@^1.2.1",
"scope": null,
"escapedName": "flat-cache",
"name": "flat-cache",
"rawSpec": "^1.2.1",
"spec": ">=1.2.1 <2.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/file-entry-cache"
]
],
"_from": "flat-cache@>=1.2.1 <2.0.0",
"_from": "flat-cache@^1.2.1",
"_id": "flat-cache@1.2.2",
"_inCache": true,
"_location": "/flat-cache",
"_nodeVersion": "6.9.1",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/flat-cache-1.2.2.tgz_1482199463409_0.13759022881276906"
},
"_npmUser": {
"name": "royriojas",
"email": "royriojas@gmail.com"
},
"_npmVersion": "3.10.8",
"_inBundle": false,
"_integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=",
"_location": "/eslint/flat-cache",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "flat-cache@^1.2.1",
"scope": null,
"escapedName": "flat-cache",
"name": "flat-cache",
"escapedName": "flat-cache",
"rawSpec": "^1.2.1",
"spec": ">=1.2.1 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.2.1"
},
"_requiredBy": [
"/file-entry-cache"
"/eslint/file-entry-cache"
],
"_resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz",
"_shasum": "fa86714e72c21db88601761ecf2f555d1abc6b96",
"_shrinkwrap": null,
"_spec": "flat-cache@^1.2.1",
"_where": "/Users/trott/io.js/tools/node_modules/file-entry-cache",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/file-entry-cache",
"author": {
"name": "Roy Riojas",
"url": "http://royriojas.com"
@ -52,6 +29,7 @@
"bugs": {
"url": "https://github.com/royriojas/flat-cache/issues"
},
"bundleDependencies": false,
"changelogx": {
"ignoreRegExp": [
"BLD: Release",
@ -70,6 +48,7 @@
"graceful-fs": "^4.1.2",
"write": "^0.2.1"
},
"deprecated": false,
"description": "A stupidly simple key/value storage using files to persist some data",
"devDependencies": {
"chai": "^3.2.0",
@ -86,11 +65,6 @@
"sinon-chai": "^2.8.0",
"watch-run": "^1.2.2"
},
"directories": {},
"dist": {
"shasum": "fa86714e72c21db88601761ecf2f555d1abc6b96",
"tarball": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz"
},
"engines": {
"node": ">=0.10.0"
},
@ -98,7 +72,6 @@
"cache.js",
"utils.js"
],
"gitHead": "9fdf499efd3dfb950e563ed7486623d7dc3e26c8",
"homepage": "https://github.com/royriojas/flat-cache#readme",
"keywords": [
"json cache",
@ -110,21 +83,13 @@
],
"license": "MIT",
"main": "cache.js",
"maintainers": [
{
"name": "royriojas",
"email": "royriojas@gmail.com"
}
],
"name": "flat-cache",
"optionalDependencies": {},
"precommit": [
"npm run verify --silent"
],
"prepush": [
"npm run verify --silent"
],
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/royriojas/flat-cache.git"

61
tools/eslint/node_modules/fs.realpath/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "fs.realpath@^1.0.0",
"scope": null,
"escapedName": "fs.realpath",
"name": "fs.realpath",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/glob"
]
],
"_from": "fs.realpath@>=1.0.0 <2.0.0",
"_from": "fs.realpath@^1.0.0",
"_id": "fs.realpath@1.0.0",
"_inCache": true,
"_location": "/fs.realpath",
"_nodeVersion": "4.4.4",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/fs.realpath-1.0.0.tgz_1466015941059_0.3332864767871797"
},
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
"_npmVersion": "3.9.1",
"_inBundle": false,
"_integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"_location": "/eslint/fs.realpath",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "fs.realpath@^1.0.0",
"scope": null,
"escapedName": "fs.realpath",
"name": "fs.realpath",
"escapedName": "fs.realpath",
"rawSpec": "^1.0.0",
"spec": ">=1.0.0 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.0"
},
"_requiredBy": [
"/glob"
"/eslint/glob"
],
"_resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"_shasum": "1504ad2523158caa40db4a2787cb01411994ea4f",
"_shrinkwrap": null,
"_spec": "fs.realpath@^1.0.0",
"_where": "/Users/trott/io.js/tools/node_modules/glob",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/glob",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@ -53,19 +30,15 @@
"bugs": {
"url": "https://github.com/isaacs/fs.realpath/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "Use node's fs.realpath, but fall back to the JS implementation if the native one fails",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "1504ad2523158caa40db4a2787cb01411994ea4f",
"tarball": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
},
"files": [
"old.js",
"index.js"
],
"gitHead": "03e7c884431fe185dfebbc9b771aeca339c1807a",
"homepage": "https://github.com/isaacs/fs.realpath#readme",
"keywords": [
"realpath",
@ -74,15 +47,7 @@
],
"license": "ISC",
"main": "index.js",
"maintainers": [
{
"name": "isaacs",
"email": "i@izs.me"
}
],
"name": "fs.realpath",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/isaacs/fs.realpath.git"

2
tools/eslint/node_modules/function-bind/package.json

@ -21,7 +21,7 @@
"_resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz",
"_shasum": "16176714c801798e4e8f2cf7f7529467bb4a5771",
"_spec": "function-bind@^1.0.2",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\has",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/has",
"author": {
"name": "Raynos",
"email": "raynos2@gmail.com"

57
tools/eslint/node_modules/generate-function/package.json

@ -1,62 +1,39 @@
{
"_args": [
[
{
"raw": "generate-function@^2.0.0",
"scope": null,
"escapedName": "generate-function",
"name": "generate-function",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/is-my-json-valid"
]
],
"_from": "generate-function@>=2.0.0 <3.0.0",
"_from": "generate-function@^2.0.0",
"_id": "generate-function@2.0.0",
"_inCache": true,
"_location": "/generate-function",
"_npmUser": {
"name": "mafintosh",
"email": "mathiasbuus@gmail.com"
},
"_npmVersion": "1.4.23",
"_inBundle": false,
"_integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
"_location": "/eslint/generate-function",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "generate-function@^2.0.0",
"scope": null,
"escapedName": "generate-function",
"name": "generate-function",
"escapedName": "generate-function",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/is-my-json-valid"
"/eslint/is-my-json-valid"
],
"_resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
"_shasum": "6858fe7c0969b7d4e9093337647ac79f60dfbe74",
"_shrinkwrap": null,
"_spec": "generate-function@^2.0.0",
"_where": "/Users/trott/io.js/tools/node_modules/is-my-json-valid",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/is-my-json-valid",
"author": {
"name": "Mathias Buus"
},
"bugs": {
"url": "https://github.com/mafintosh/generate-function/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Module that helps you write generated functions in Node",
"devDependencies": {
"tape": "^2.13.4"
},
"directories": {},
"dist": {
"shasum": "6858fe7c0969b7d4e9093337647ac79f60dfbe74",
"tarball": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz"
},
"gitHead": "3d5fc8de5859be95f58e3af9bfb5f663edd95149",
"homepage": "https://github.com/mafintosh/generate-function",
"keywords": [
"generate",
@ -67,15 +44,7 @@
],
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "mafintosh",
"email": "mathiasbuus@gmail.com"
}
],
"name": "generate-function",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/mafintosh/generate-function.git"

57
tools/eslint/node_modules/generate-object-property/package.json

@ -1,46 +1,27 @@
{
"_args": [
[
{
"raw": "generate-object-property@^1.1.0",
"scope": null,
"escapedName": "generate-object-property",
"name": "generate-object-property",
"rawSpec": "^1.1.0",
"spec": ">=1.1.0 <2.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/is-my-json-valid"
]
],
"_from": "generate-object-property@>=1.1.0 <2.0.0",
"_from": "generate-object-property@^1.1.0",
"_id": "generate-object-property@1.2.0",
"_inCache": true,
"_location": "/generate-object-property",
"_nodeVersion": "2.0.1",
"_npmUser": {
"name": "mafintosh",
"email": "mathiasbuus@gmail.com"
},
"_npmVersion": "2.9.0",
"_inBundle": false,
"_integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"_location": "/eslint/generate-object-property",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "generate-object-property@^1.1.0",
"scope": null,
"escapedName": "generate-object-property",
"name": "generate-object-property",
"escapedName": "generate-object-property",
"rawSpec": "^1.1.0",
"spec": ">=1.1.0 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.1.0"
},
"_requiredBy": [
"/is-my-json-valid"
"/eslint/is-my-json-valid"
],
"_resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"_shasum": "9c0e1c40308ce804f4783618b937fa88f99d50d0",
"_shrinkwrap": null,
"_spec": "generate-object-property@^1.1.0",
"_where": "/Users/trott/io.js/tools/node_modules/is-my-json-valid",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/is-my-json-valid",
"author": {
"name": "Mathias Buus",
"url": "@mafintosh"
@ -48,31 +29,19 @@
"bugs": {
"url": "https://github.com/mafintosh/generate-object-property/issues"
},
"bundleDependencies": false,
"dependencies": {
"is-property": "^1.0.0"
},
"deprecated": false,
"description": "Generate safe JS code that can used to reference a object property",
"devDependencies": {
"tape": "^2.13.0"
},
"directories": {},
"dist": {
"shasum": "9c0e1c40308ce804f4783618b937fa88f99d50d0",
"tarball": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz"
},
"gitHead": "0dd7d411018de54b2eae63b424c15b3e50bd678c",
"homepage": "https://github.com/mafintosh/generate-object-property",
"license": "MIT",
"main": "index.js",
"maintainers": [
{
"name": "mafintosh",
"email": "mathiasbuus@gmail.com"
}
],
"name": "generate-object-property",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/mafintosh/generate-object-property.git"

64
tools/eslint/node_modules/glob/package.json

@ -1,52 +1,29 @@
{
"_args": [
[
{
"raw": "glob@^7.1.2",
"scope": null,
"escapedName": "glob",
"name": "glob",
"rawSpec": "^7.1.2",
"spec": ">=7.1.2 <8.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "glob@>=7.1.2 <8.0.0",
"_from": "glob@^7.1.2",
"_id": "glob@7.1.2",
"_inCache": true,
"_location": "/glob",
"_nodeVersion": "8.0.0-pre",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/glob-7.1.2.tgz_1495224925341_0.07115248567424715"
},
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
"_npmVersion": "5.0.0-beta.56",
"_inBundle": false,
"_integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"_location": "/eslint/glob",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "glob@^7.1.2",
"scope": null,
"escapedName": "glob",
"name": "glob",
"escapedName": "glob",
"rawSpec": "^7.1.2",
"spec": ">=7.1.2 <8.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^7.1.2"
},
"_requiredBy": [
"/eslint",
"/globby",
"/rimraf"
"/eslint/globby",
"/eslint/rimraf"
],
"_resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"_shasum": "c19c9df9a028702d678612384a6552404c636d15",
"_shrinkwrap": null,
"_spec": "glob@^7.1.2",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@ -55,6 +32,7 @@
"bugs": {
"url": "https://github.com/isaacs/node-glob/issues"
},
"bundleDependencies": false,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@ -63,6 +41,7 @@
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"deprecated": false,
"description": "a little globber",
"devDependencies": {
"mkdirp": "0",
@ -70,12 +49,6 @@
"tap": "^7.1.2",
"tick": "0.0.6"
},
"directories": {},
"dist": {
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"shasum": "c19c9df9a028702d678612384a6552404c636d15",
"tarball": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz"
},
"engines": {
"node": "*"
},
@ -84,19 +57,10 @@
"sync.js",
"common.js"
],
"gitHead": "8fa8d561e08c9eed1d286c6a35be2cd8123b2fb7",
"homepage": "https://github.com/isaacs/node-glob#readme",
"license": "ISC",
"main": "glob.js",
"maintainers": [
{
"name": "isaacs",
"email": "i@izs.me"
}
],
"name": "glob",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/node-glob.git"

73
tools/eslint/node_modules/globals/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "globals@^9.17.0",
"scope": null,
"escapedName": "globals",
"name": "globals",
"rawSpec": "^9.17.0",
"spec": ">=9.17.0 <10.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "globals@>=9.17.0 <10.0.0",
"_from": "globals@^9.17.0",
"_id": "globals@9.18.0",
"_inCache": true,
"_location": "/globals",
"_nodeVersion": "8.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/globals-9.18.0.tgz_1496827524121_0.8153965487144887"
},
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "5.0.0",
"_inBundle": false,
"_integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
"_location": "/eslint/globals",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "globals@^9.17.0",
"scope": null,
"escapedName": "globals",
"name": "globals",
"escapedName": "globals",
"rawSpec": "^9.17.0",
"spec": ">=9.17.0 <10.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^9.17.0"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
"_shasum": "aa3896b3e69b487f17e31ed2143d69a8e30c2d8a",
"_shrinkwrap": null,
"_spec": "globals@^9.17.0",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,17 +30,12 @@
"bugs": {
"url": "https://github.com/sindresorhus/globals/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Global identifiers from different JavaScript environments",
"devDependencies": {
"mocha": "*"
},
"directories": {},
"dist": {
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
"shasum": "aa3896b3e69b487f17e31ed2143d69a8e30c2d8a",
"tarball": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
@ -71,7 +43,6 @@
"index.js",
"globals.json"
],
"gitHead": "09ba8754235e5953507b8d0543d65098bc7bb78d",
"homepage": "https://github.com/sindresorhus/globals#readme",
"keywords": [
"globals",
@ -84,27 +55,7 @@
"environments"
],
"license": "MIT",
"maintainers": [
{
"name": "byk",
"email": "ben@byk.im"
},
{
"name": "lo1tuma",
"email": "schreck.mathias@gmail.com"
},
{
"name": "nzakas",
"email": "nicholas@nczconsulting.com"
},
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
}
],
"name": "globals",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/globals.git"

69
tools/eslint/node_modules/globby/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "globby@^5.0.0",
"scope": null,
"escapedName": "globby",
"name": "globby",
"rawSpec": "^5.0.0",
"spec": ">=5.0.0 <6.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/del"
]
],
"_from": "globby@>=5.0.0 <6.0.0",
"_from": "globby@^5.0.0",
"_id": "globby@5.0.0",
"_inCache": true,
"_location": "/globby",
"_nodeVersion": "5.11.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/globby-5.0.0.tgz_1465626598422_0.48254713881760836"
},
"_npmUser": {
"name": "ult_combo",
"email": "ult_combo@hotmail.com"
},
"_npmVersion": "3.7.5",
"_inBundle": false,
"_integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
"_location": "/eslint/globby",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "globby@^5.0.0",
"scope": null,
"escapedName": "globby",
"name": "globby",
"escapedName": "globby",
"rawSpec": "^5.0.0",
"spec": ">=5.0.0 <6.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^5.0.0"
},
"_requiredBy": [
"/del"
"/eslint/del"
],
"_resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
"_shasum": "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d",
"_shrinkwrap": null,
"_spec": "globby@^5.0.0",
"_where": "/Users/trott/io.js/tools/node_modules/del",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/del",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -53,6 +30,7 @@
"bugs": {
"url": "https://github.com/sindresorhus/globby/issues"
},
"bundleDependencies": false,
"dependencies": {
"array-union": "^1.0.1",
"arrify": "^1.0.0",
@ -61,6 +39,7 @@
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
},
"deprecated": false,
"description": "Extends `glob` with support for multiple patterns and exposes a Promise API",
"devDependencies": {
"ava": "*",
@ -70,18 +49,12 @@
"rimraf": "^2.2.8",
"xo": "*"
},
"directories": {},
"dist": {
"shasum": "ebd84667ca0dbb330b99bcfc68eac2bc54370e0d",
"tarball": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "2cb6d1f112407b3eca42ac87c810e7715189e708",
"homepage": "https://github.com/sindresorhus/globby#readme",
"keywords": [
"all",
@ -116,23 +89,7 @@
"promise"
],
"license": "MIT",
"maintainers": [
{
"name": "schnittstabil",
"email": "michael@schnittstabil.de"
},
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
{
"name": "ult_combo",
"email": "ultcombo@gmail.com"
}
],
"name": "globby",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/globby.git"

61
tools/eslint/node_modules/graceful-fs/package.json

@ -1,54 +1,32 @@
{
"_args": [
[
{
"raw": "graceful-fs@^4.1.2",
"scope": null,
"escapedName": "graceful-fs",
"name": "graceful-fs",
"rawSpec": "^4.1.2",
"spec": ">=4.1.2 <5.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/flat-cache"
]
],
"_from": "graceful-fs@>=4.1.2 <5.0.0",
"_from": "graceful-fs@^4.1.2",
"_id": "graceful-fs@4.1.11",
"_inCache": true,
"_location": "/graceful-fs",
"_nodeVersion": "6.5.0",
"_npmOperationalInternal": {
"host": "packages-18-east.internal.npmjs.com",
"tmp": "tmp/graceful-fs-4.1.11.tgz_1479843029430_0.2122855328489095"
},
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
"_npmVersion": "3.10.9",
"_inBundle": false,
"_integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"_location": "/eslint/graceful-fs",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "graceful-fs@^4.1.2",
"scope": null,
"escapedName": "graceful-fs",
"name": "graceful-fs",
"escapedName": "graceful-fs",
"rawSpec": "^4.1.2",
"spec": ">=4.1.2 <5.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^4.1.2"
},
"_requiredBy": [
"/flat-cache"
"/eslint/flat-cache"
],
"_resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"_shasum": "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658",
"_shrinkwrap": null,
"_spec": "graceful-fs@^4.1.2",
"_where": "/Users/trott/io.js/tools/node_modules/flat-cache",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/flat-cache",
"bugs": {
"url": "https://github.com/isaacs/node-graceful-fs/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "A drop-in replacement for fs, making various improvements.",
"devDependencies": {
"mkdirp": "^0.5.0",
@ -58,10 +36,6 @@
"directories": {
"test": "test"
},
"dist": {
"shasum": "0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658",
"tarball": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz"
},
"engines": {
"node": ">=0.4.0"
},
@ -71,7 +45,6 @@
"legacy-streams.js",
"polyfills.js"
],
"gitHead": "65cf80d1fd3413b823c16c626c1e7c326452bee5",
"homepage": "https://github.com/isaacs/node-graceful-fs#readme",
"keywords": [
"fs",
@ -91,15 +64,7 @@
],
"license": "ISC",
"main": "graceful-fs.js",
"maintainers": [
{
"name": "isaacs",
"email": "i@izs.me"
}
],
"name": "graceful-fs",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/isaacs/node-graceful-fs.git"

63
tools/eslint/node_modules/has-ansi/package.json

@ -1,46 +1,27 @@
{
"_args": [
[
{
"raw": "has-ansi@^2.0.0",
"scope": null,
"escapedName": "has-ansi",
"name": "has-ansi",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/chalk"
]
],
"_from": "has-ansi@>=2.0.0 <3.0.0",
"_from": "has-ansi@^2.0.0",
"_id": "has-ansi@2.0.0",
"_inCache": true,
"_location": "/has-ansi",
"_nodeVersion": "0.12.5",
"_npmUser": {
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
},
"_npmVersion": "2.11.2",
"_inBundle": false,
"_integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"_location": "/eslint/has-ansi",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "has-ansi@^2.0.0",
"scope": null,
"escapedName": "has-ansi",
"name": "has-ansi",
"escapedName": "has-ansi",
"rawSpec": "^2.0.0",
"spec": ">=2.0.0 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.0"
},
"_requiredBy": [
"/chalk"
"/eslint/chalk"
],
"_resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"_shasum": "34f5049ce1ecdf2b0649af3ef24e45ed35416d91",
"_shrinkwrap": null,
"_spec": "has-ansi@^2.0.0",
"_where": "/Users/trott/io.js/tools/node_modules/chalk",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/chalk",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
@ -49,26 +30,22 @@
"bugs": {
"url": "https://github.com/sindresorhus/has-ansi/issues"
},
"bundleDependencies": false,
"dependencies": {
"ansi-regex": "^2.0.0"
},
"deprecated": false,
"description": "Check if a string has ANSI escape codes",
"devDependencies": {
"ava": "0.0.4"
},
"directories": {},
"dist": {
"shasum": "34f5049ce1ecdf2b0649af3ef24e45ed35416d91",
"tarball": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"files": [
"index.js"
],
"gitHead": "0722275e1bef139fcd09137da6e5550c3cd368b9",
"homepage": "https://github.com/sindresorhus/has-ansi",
"homepage": "https://github.com/sindresorhus/has-ansi#readme",
"keywords": [
"ansi",
"styles",
@ -96,17 +73,17 @@
"license": "MIT",
"maintainers": [
{
"name": "sindresorhus",
"email": "sindresorhus@gmail.com"
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
"url": "sindresorhus.com"
},
{
"name": "jbnicolai",
"email": "jappelman@xebia.com"
"name": "Joshua Appelman",
"email": "jappelman@xebia.com",
"url": "jbnicolai.com"
}
],
"name": "has-ansi",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/sindresorhus/has-ansi.git"

4
tools/eslint/node_modules/has/package.json

@ -16,12 +16,12 @@
"fetchSpec": "^1.0.1"
},
"_requiredBy": [
"/remark-parse"
"/unified"
],
"_resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
"_shasum": "8461733f538b0837c9361e39a9ab9e9704dc2f28",
"_spec": "has@^1.0.1",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\remark-parse",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/unified",
"author": {
"name": "Thiago de Arruda",
"email": "tpadilha84@gmail.com"

2
tools/eslint/node_modules/iconv-lite/encodings/internal.js

@ -35,7 +35,7 @@ function InternalCodec(codecOptions, iconv) {
this.encoder = InternalEncoderCesu8;
// Add decoder for versions of Node not supporting CESU-8
if (new Buffer("eda080", 'hex').toString().length == 3) {
if (new Buffer('eda0bdedb2a9', 'hex').toString() !== '💩') {
this.decoder = InternalDecoderCesu8;
this.defaultCharUnicode = iconv.defaultCharUnicode;
}

70
tools/eslint/node_modules/iconv-lite/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "iconv-lite@^0.4.17",
"scope": null,
"escapedName": "iconv-lite",
"name": "iconv-lite",
"rawSpec": "^0.4.17",
"spec": ">=0.4.17 <0.5.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/external-editor"
]
],
"_from": "iconv-lite@>=0.4.17 <0.5.0",
"_id": "iconv-lite@0.4.17",
"_inCache": true,
"_location": "/iconv-lite",
"_nodeVersion": "6.10.2",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/iconv-lite-0.4.17.tgz_1493615411939_0.8651245310902596"
},
"_npmUser": {
"name": "ashtuchkin",
"email": "ashtuchkin@gmail.com"
},
"_npmVersion": "3.10.10",
"_from": "iconv-lite@^0.4.17",
"_id": "iconv-lite@0.4.18",
"_inBundle": false,
"_integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==",
"_location": "/eslint/iconv-lite",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "iconv-lite@^0.4.17",
"scope": null,
"escapedName": "iconv-lite",
"name": "iconv-lite",
"escapedName": "iconv-lite",
"rawSpec": "^0.4.17",
"spec": ">=0.4.17 <0.5.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^0.4.17"
},
"_requiredBy": [
"/external-editor"
"/eslint/external-editor"
],
"_resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.17.tgz",
"_shasum": "4fdaa3b38acbc2c031b045d0edcdfe1ecab18c8d",
"_shrinkwrap": null,
"_resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz",
"_shasum": "23d8656b16aae6742ac29732ea8f0336a4789cf2",
"_spec": "iconv-lite@^0.4.17",
"_where": "/Users/trott/io.js/tools/node_modules/external-editor",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/external-editor",
"author": {
"name": "Alexander Shtuchkin",
"email": "ashtuchkin@gmail.com"
@ -56,6 +33,7 @@
"bugs": {
"url": "https://github.com/ashtuchkin/iconv-lite/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Jinwu Zhan",
@ -106,7 +84,7 @@
"url": "https://github.com/nleush"
}
],
"dependencies": {},
"deprecated": false,
"description": "Convert character encodings in pure javascript.",
"devDependencies": {
"async": "*",
@ -118,15 +96,9 @@
"semver": "*",
"unorm": "*"
},
"directories": {},
"dist": {
"shasum": "4fdaa3b38acbc2c031b045d0edcdfe1ecab18c8d",
"tarball": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.17.tgz"
},
"engines": {
"node": ">=0.10.0"
},
"gitHead": "64d1e3d7403bbb5414966de83d325419e7ea14e2",
"homepage": "https://github.com/ashtuchkin/iconv-lite",
"keywords": [
"iconv",
@ -136,15 +108,7 @@
],
"license": "MIT",
"main": "./lib/index.js",
"maintainers": [
{
"name": "ashtuchkin",
"email": "ashtuchkin@gmail.com"
}
],
"name": "iconv-lite",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/ashtuchkin/iconv-lite.git"
@ -155,5 +119,5 @@
"test": "mocha --reporter spec --grep ."
},
"typings": "./lib/index.d.ts",
"version": "0.4.17"
"version": "0.4.18"
}

60
tools/eslint/node_modules/ignore/package.json

@ -1,57 +1,35 @@
{
"_args": [
[
{
"raw": "ignore@^3.3.3",
"scope": null,
"escapedName": "ignore",
"name": "ignore",
"rawSpec": "^3.3.3",
"spec": ">=3.3.3 <4.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "ignore@>=3.3.3 <4.0.0",
"_from": "ignore@^3.3.3",
"_id": "ignore@3.3.3",
"_inCache": true,
"_location": "/ignore",
"_nodeVersion": "7.10.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/ignore-3.3.3.tgz_1495192478088_0.7693700036033988"
},
"_npmUser": {
"name": "kael",
"email": "i@kael.me"
},
"_npmVersion": "4.2.0",
"_inBundle": false,
"_integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=",
"_location": "/eslint/ignore",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "ignore@^3.3.3",
"scope": null,
"escapedName": "ignore",
"name": "ignore",
"escapedName": "ignore",
"rawSpec": "^3.3.3",
"spec": ">=3.3.3 <4.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^3.3.3"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz",
"_shasum": "432352e57accd87ab3110e82d3fea0e47812156d",
"_shrinkwrap": null,
"_spec": "ignore@^3.3.3",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "kael"
},
"bugs": {
"url": "https://github.com/kaelzhang/node-ignore/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Ignore is a manager and filter for .gitignore rules.",
"devDependencies": {
"chai": "~1.7.2",
@ -59,17 +37,11 @@
"istanbul": "^0.4.5",
"mocha": "~1.13.0"
},
"directories": {},
"dist": {
"shasum": "432352e57accd87ab3110e82d3fea0e47812156d",
"tarball": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz"
},
"files": [
"ignore.js",
"index.d.ts",
"LICENSE-MIT"
],
"gitHead": "fc1aacc4d3a72c1f5f3fa5e9aadc12a14a382db4",
"homepage": "https://github.com/kaelzhang/node-ignore#readme",
"keywords": [
"ignore",
@ -88,15 +60,7 @@
],
"license": "MIT",
"main": "./ignore.js",
"maintainers": [
{
"name": "kael",
"email": "i@kael.me"
}
],
"name": "ignore",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+ssh://git@github.com/kaelzhang/node-ignore.git"

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

@ -1,45 +1,27 @@
{
"_args": [
[
{
"raw": "imurmurhash@^0.1.4",
"scope": null,
"escapedName": "imurmurhash",
"name": "imurmurhash",
"rawSpec": "^0.1.4",
"spec": ">=0.1.4 <0.2.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "imurmurhash@>=0.1.4 <0.2.0",
"_from": "imurmurhash@^0.1.4",
"_id": "imurmurhash@0.1.4",
"_inCache": true,
"_location": "/imurmurhash",
"_npmUser": {
"name": "jensyt",
"email": "jensyt@gmail.com"
},
"_npmVersion": "1.3.2",
"_inBundle": false,
"_integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"_location": "/eslint/imurmurhash",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "imurmurhash@^0.1.4",
"scope": null,
"escapedName": "imurmurhash",
"name": "imurmurhash",
"escapedName": "imurmurhash",
"rawSpec": "^0.1.4",
"spec": ">=0.1.4 <0.2.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^0.1.4"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"_shasum": "9218b9b2b928a238b13dc4fb6b6d576f231453ea",
"_shrinkwrap": null,
"_spec": "imurmurhash@^0.1.4",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Jens Taylor",
"email": "jensyt@gmail.com",
@ -48,14 +30,11 @@
"bugs": {
"url": "https://github.com/jensyt/imurmurhash-js/issues"
},
"bundleDependencies": false,
"dependencies": {},
"deprecated": false,
"description": "An incremental implementation of MurmurHash3",
"devDependencies": {},
"directories": {},
"dist": {
"shasum": "9218b9b2b928a238b13dc4fb6b6d576f231453ea",
"tarball": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
},
"engines": {
"node": ">=0.8.19"
},
@ -75,16 +54,7 @@
],
"license": "MIT",
"main": "imurmurhash.js",
"maintainers": [
{
"name": "jensyt",
"email": "jensyt@gmail.com"
}
],
"name": "imurmurhash",
"optionalDependencies": {},
"readme": "iMurmurHash.js\n==============\n\nAn incremental implementation of the MurmurHash3 (32-bit) hashing algorithm for JavaScript based on [Gary Court's implementation](https://github.com/garycourt/murmurhash-js) with [kazuyukitanimura's modifications](https://github.com/kazuyukitanimura/murmurhash-js).\n\nThis version works significantly faster than the non-incremental version if you need to hash many small strings into a single hash, since string concatenation (to build the single string to pass the non-incremental version) is fairly costly. In one case tested, using the incremental version was about 50% faster than concatenating 5-10 strings and then hashing.\n\nInstallation\n------------\n\nTo use iMurmurHash in the browser, [download the latest version](https://raw.github.com/jensyt/imurmurhash-js/master/imurmurhash.min.js) and include it as a script on your site.\n\n```html\n<script type=\"text/javascript\" src=\"/scripts/imurmurhash.min.js\"></script>\n<script>\n// Your code here, access iMurmurHash using the global object MurmurHash3\n</script>\n```\n\n---\n\nTo use iMurmurHash in Node.js, install the module using NPM:\n\n```bash\nnpm install imurmurhash\n```\n\nThen simply include it in your scripts:\n\n```javascript\nMurmurHash3 = require('imurmurhash');\n```\n\nQuick Example\n-------------\n\n```javascript\n// Create the initial hash\nvar hashState = MurmurHash3('string');\n\n// Incrementally add text\nhashState.hash('more strings');\nhashState.hash('even more strings');\n\n// All calls can be chained if desired\nhashState.hash('and').hash('some').hash('more');\n\n// Get a result\nhashState.result();\n// returns 0xe4ccfe6b\n```\n\nFunctions\n---------\n\n### MurmurHash3 ([string], [seed])\nGet a hash state object, optionally initialized with the given _string_ and _seed_. _Seed_ must be a positive integer if provided. Calling this function without the `new` keyword will return a cached state object that has been reset. This is safe to use as long as the object is only used from a single thread and no other hashes are created while operating on this one. If this constraint cannot be met, you can use `new` to create a new state object. For example:\n\n```javascript\n// Use the cached object, calling the function again will return the same\n// object (but reset, so the current state would be lost)\nhashState = MurmurHash3();\n...\n\n// Create a new object that can be safely used however you wish. Calling the\n// function again will simply return a new state object, and no state loss\n// will occur, at the cost of creating more objects.\nhashState = new MurmurHash3();\n```\n\nBoth methods can be mixed however you like if you have different use cases.\n\n---\n\n### MurmurHash3.prototype.hash (string)\nIncrementally add _string_ to the hash. This can be called as many times as you want for the hash state object, including after a call to `result()`. Returns `this` so calls can be chained.\n\n---\n\n### MurmurHash3.prototype.result ()\nGet the result of the hash as a 32-bit positive integer. This performs the tail and finalizer portions of the algorithm, but does not store the result in the state object. This means that it is perfectly safe to get results and then continue adding strings via `hash`.\n\n```javascript\n// Do the whole string at once\nMurmurHash3('this is a test string').result();\n// 0x70529328\n\n// Do part of the string, get a result, then the other part\nvar m = MurmurHash3('this is a');\nm.result();\n// 0xbfc4f834\nm.hash(' test string').result();\n// 0x70529328 (same as above)\n```\n\n---\n\n### MurmurHash3.prototype.reset ([seed])\nReset the state object for reuse, optionally using the given _seed_ (defaults to 0 like the constructor). Returns `this` so calls can be chained.\n\n---\n\nLicense (MIT)\n-------------\nCopyright (c) 2013 Gary Court, Jens Taylor\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n",
"readmeFilename": "README.md",
"repository": {
"type": "git",
"url": "git+https://github.com/jensyt/imurmurhash-js.git"

73
tools/eslint/node_modules/inflight/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "inflight@^1.0.4",
"scope": null,
"escapedName": "inflight",
"name": "inflight",
"rawSpec": "^1.0.4",
"spec": ">=1.0.4 <2.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/glob"
]
],
"_from": "inflight@>=1.0.4 <2.0.0",
"_from": "inflight@^1.0.4",
"_id": "inflight@1.0.6",
"_inCache": true,
"_location": "/inflight",
"_nodeVersion": "6.5.0",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/inflight-1.0.6.tgz_1476330807696_0.10388551792129874"
},
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
"_npmVersion": "3.10.7",
"_inBundle": false,
"_integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"_location": "/eslint/inflight",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "inflight@^1.0.4",
"scope": null,
"escapedName": "inflight",
"name": "inflight",
"escapedName": "inflight",
"rawSpec": "^1.0.4",
"spec": ">=1.0.4 <2.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^1.0.4"
},
"_requiredBy": [
"/glob"
"/eslint/glob"
],
"_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"_shasum": "49bd6331d7d02d0c09bc910a1075ba8165b56df9",
"_shrinkwrap": null,
"_spec": "inflight@^1.0.4",
"_where": "/Users/trott/io.js/tools/node_modules/glob",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/glob",
"author": {
"name": "Isaac Z. Schlueter",
"email": "i@izs.me",
@ -53,47 +30,23 @@
"bugs": {
"url": "https://github.com/isaacs/inflight/issues"
},
"bundleDependencies": false,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
},
"deprecated": false,
"description": "Add callbacks to requests in flight to avoid async duplication",
"devDependencies": {
"tap": "^7.1.2"
},
"directories": {},
"dist": {
"shasum": "49bd6331d7d02d0c09bc910a1075ba8165b56df9",
"tarball": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
},
"files": [
"inflight.js"
],
"gitHead": "a547881738c8f57b27795e584071d67cf6ac1a57",
"homepage": "https://github.com/isaacs/inflight",
"license": "ISC",
"main": "inflight.js",
"maintainers": [
{
"name": "iarna",
"email": "me@re-becca.org"
},
{
"name": "isaacs",
"email": "i@izs.me"
},
{
"name": "othiym23",
"email": "ogd@aoaioxxysz.net"
},
{
"name": "zkat",
"email": "kat@sykosomatic.org"
}
],
"name": "inflight",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/npm/inflight.git"

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

@ -1,71 +1,43 @@
{
"_args": [
[
{
"raw": "inherits@^2.0.3",
"scope": null,
"escapedName": "inherits",
"name": "inherits",
"rawSpec": "^2.0.3",
"spec": ">=2.0.3 <3.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/concat-stream"
]
],
"_from": "inherits@>=2.0.3 <3.0.0",
"_from": "inherits@^2.0.3",
"_id": "inherits@2.0.3",
"_inCache": true,
"_location": "/inherits",
"_nodeVersion": "6.5.0",
"_npmOperationalInternal": {
"host": "packages-16-east.internal.npmjs.com",
"tmp": "tmp/inherits-2.0.3.tgz_1473295776489_0.08142363070510328"
},
"_npmUser": {
"name": "isaacs",
"email": "i@izs.me"
},
"_npmVersion": "3.10.7",
"_inBundle": false,
"_integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"_location": "/eslint/inherits",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "inherits@^2.0.3",
"scope": null,
"escapedName": "inherits",
"name": "inherits",
"escapedName": "inherits",
"rawSpec": "^2.0.3",
"spec": ">=2.0.3 <3.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^2.0.3"
},
"_requiredBy": [
"/concat-stream",
"/glob",
"/readable-stream"
"/eslint/concat-stream",
"/eslint/glob",
"/eslint/readable-stream"
],
"_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"_shasum": "633c2c83e3da42a502f52466022480f4208261de",
"_shrinkwrap": null,
"_spec": "inherits@^2.0.3",
"_where": "/Users/trott/io.js/tools/node_modules/concat-stream",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/concat-stream",
"browser": "./inherits_browser.js",
"bugs": {
"url": "https://github.com/isaacs/inherits/issues"
},
"dependencies": {},
"bundleDependencies": false,
"deprecated": false,
"description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
"devDependencies": {
"tap": "^7.1.0"
},
"directories": {},
"dist": {
"shasum": "633c2c83e3da42a502f52466022480f4208261de",
"tarball": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
},
"files": [
"inherits.js",
"inherits_browser.js"
],
"gitHead": "e05d0fb27c61a3ec687214f0476386b765364d5f",
"homepage": "https://github.com/isaacs/inherits#readme",
"keywords": [
"inheritance",
@ -79,15 +51,7 @@
],
"license": "ISC",
"main": "./inherits.js",
"maintainers": [
{
"name": "isaacs",
"email": "i@izs.me"
}
],
"name": "inherits",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/inherits.git"

5
tools/eslint/node_modules/inquirer/lib/prompts/password.js

@ -108,13 +108,8 @@ Prompt.prototype.onEnd = function (state) {
Prompt.prototype.onError = function (state) {
this.render(state.isValid);
this.rl.output.unmute();
};
/**
* When user type
*/
Prompt.prototype.onKeypress = function () {
this.render();
};

102
tools/eslint/node_modules/inquirer/package.json

@ -1,50 +1,27 @@
{
"_args": [
[
{
"raw": "inquirer@^3.0.6",
"scope": null,
"escapedName": "inquirer",
"name": "inquirer",
"rawSpec": "^3.0.6",
"spec": ">=3.0.6 <4.0.0",
"type": "range"
},
"/Users/trott/io.js/tools/node_modules/eslint"
]
],
"_from": "inquirer@>=3.0.6 <4.0.0",
"_id": "inquirer@3.1.0",
"_inCache": true,
"_location": "/inquirer",
"_nodeVersion": "8.0.0",
"_npmOperationalInternal": {
"host": "s3://npm-registry-packages",
"tmp": "tmp/inquirer-3.1.0.tgz_1496835884412_0.5553199897985905"
},
"_npmUser": {
"name": "sboudrias",
"email": "admin@simonboudrias.com"
},
"_npmVersion": "5.0.1",
"_from": "inquirer@^3.0.6",
"_id": "inquirer@3.1.1",
"_inBundle": false,
"_integrity": "sha512-H50sHQwgvvaTBd3HpKMVtL/u6LoHDvYym51gd7bGQe/+9HkCE+J0/3N5FJLfd6O6oz44hHewC2Pc2LodzWVafQ==",
"_location": "/eslint/inquirer",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "inquirer@^3.0.6",
"scope": null,
"escapedName": "inquirer",
"name": "inquirer",
"escapedName": "inquirer",
"rawSpec": "^3.0.6",
"spec": ">=3.0.6 <4.0.0",
"type": "range"
"saveSpec": null,
"fetchSpec": "^3.0.6"
},
"_requiredBy": [
"/eslint"
],
"_resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.0.tgz",
"_shasum": "e05400d48b94937c2d3caa7038663ba9189aab01",
"_shrinkwrap": null,
"_resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.1.tgz",
"_shasum": "87621c4fba4072f48a8dd71c9f9df6f100b2d534",
"_spec": "inquirer@^3.0.6",
"_where": "/Users/trott/io.js/tools/node_modules/eslint",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint",
"author": {
"name": "Simon Boudrias",
"email": "admin@simonboudrias.com"
@ -52,6 +29,7 @@
"bugs": {
"url": "https://github.com/SBoudrias/Inquirer.js/issues"
},
"bundleDependencies": false,
"dependencies": {
"ansi-escapes": "^2.0.0",
"chalk": "^1.0.0",
@ -68,56 +46,30 @@
"strip-ansi": "^3.0.0",
"through": "^2.3.6"
},
"deprecated": false,
"description": "A collection of common interactive command line user interfaces.",
"devDependencies": {
"chai": "^4.0.1",
"cmdify": "^0.0.4",
"eslint": "^3.19.0",
"eslint": "^4.0.0",
"eslint-config-xo-space": "^0.16.0",
"gulp": "^3.9.0",
"gulp-codacy": "^1.0.0",
"gulp-coveralls": "^0.1.0",
"gulp-eslint": "^3.0.1",
"gulp-eslint": "^4.0.0",
"gulp-exclude-gitignore": "^1.0.0",
"gulp-istanbul": "^1.1.1",
"gulp-istanbul": "^1.1.2",
"gulp-line-ending-corrector": "^1.0.1",
"gulp-mocha": "^3.0.0",
"gulp-nsp": "^2.1.0",
"gulp-plumber": "^1.0.0",
"mocha": "^3.4.2",
"mockery": "^2.0.0",
"sinon": "^2.3.2"
},
"directories": {},
"dist": {
"integrity": "sha512-JLl89yPOEoGohLjeGs3XCekeovADbrEw/WRJQYgPED6zeJWrpIsY9i9/rn+VltZox/9w94lVYqo94QfEmniB1w==",
"shasum": "e05400d48b94937c2d3caa7038663ba9189aab01",
"tarball": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.0.tgz"
},
"eslintConfig": {
"extends": "xo-space",
"env": {
"mocha": true
},
"rules": {
"quotes": [
"error",
"single"
],
"no-multi-assign": "off",
"capitalized-comments": "off",
"no-unused-expressions": "off",
"handle-callback-err": "off",
"no-eq-null": "off",
"eqeqeq": [
"error",
"allow-null"
]
}
"sinon": "^2.3.4"
},
"files": [
"lib"
],
"gitHead": "e612cc5ad66dabead572cebb3b2bf6238e1112f5",
"homepage": "https://github.com/SBoudrias/Inquirer.js#readme",
"keywords": [
"command",
@ -129,19 +81,7 @@
],
"license": "MIT",
"main": "lib/inquirer.js",
"maintainers": [
{
"name": "mischah",
"email": "mail@michael-kuehnel.de"
},
{
"name": "sboudrias",
"email": "admin@simonboudrias.com"
}
],
"name": "inquirer",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "git+https://github.com/SBoudrias/Inquirer.js.git"
@ -150,5 +90,5 @@
"prepublish": "gulp prepublish",
"test": "gulp"
},
"version": "3.1.0"
"version": "3.1.1"
}

2
tools/eslint/node_modules/is-alphabetical/package.json

@ -22,7 +22,7 @@
"_resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.0.tgz",
"_shasum": "e2544c13058255f2144cb757066cd3342a1c8c46",
"_spec": "is-alphabetical@^1.0.0",
"_where": "j:\\temp\\_git\\node-fork\\tools\\eslint\\node_modules\\remark-parse",
"_where": "/Users/trott/io.js/tools/eslint-tmp/node_modules/eslint/node_modules/is-alphanumerical",
"author": {
"name": "Titus Wormer",
"email": "tituswormer@gmail.com",

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

Loading…
Cancel
Save