summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/node_modules
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-11-22 14:17:22 -0500
committercjihrig <cjihrig@gmail.com>2019-11-25 11:55:40 -0500
commit90fb308de42575adeed82d864da57148049185b3 (patch)
tree79d362bf7f18f1088da78b8b3073252b059b7c3f /tools/node_modules/eslint/node_modules
parent02d4c742369975fd7499bb242be61bbb1f8fc1ab (diff)
downloadandroid-node-v8-90fb308de42575adeed82d864da57148049185b3.tar.gz
android-node-v8-90fb308de42575adeed82d864da57148049185b3.tar.bz2
android-node-v8-90fb308de42575adeed82d864da57148049185b3.zip
tools: update ESLint to 6.7.1
Update ESLint to 6.7.1 PR-URL: https://github.com/nodejs/node/pull/30598 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Diffstat (limited to 'tools/node_modules/eslint/node_modules')
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-escapes/index.js27
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-escapes/package.json8
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-escapes/readme.md62
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-regex/index.js8
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-regex/package.json14
-rw-r--r--tools/node_modules/eslint/node_modules/ansi-regex/readme.md35
-rw-r--r--tools/node_modules/eslint/node_modules/glob/package.json5
-rw-r--r--tools/node_modules/eslint/node_modules/globals/globals.json5
-rw-r--r--tools/node_modules/eslint/node_modules/globals/package.json18
-rw-r--r--tools/node_modules/eslint/node_modules/globals/readme.md14
-rw-r--r--tools/node_modules/eslint/node_modules/import-fresh/index.js21
-rw-r--r--tools/node_modules/eslint/node_modules/import-fresh/package.json2
-rw-r--r--tools/node_modules/eslint/node_modules/import-fresh/readme.md20
-rw-r--r--tools/node_modules/eslint/node_modules/optionator/README.md6
-rw-r--r--tools/node_modules/eslint/node_modules/optionator/lib/help.js19
-rw-r--r--tools/node_modules/eslint/node_modules/optionator/lib/index.js12
-rw-r--r--tools/node_modules/eslint/node_modules/optionator/lib/util.js4
-rw-r--r--tools/node_modules/eslint/node_modules/optionator/package.json12
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/index.js4
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/license9
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/package.json63
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/readme.md46
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/package.json4
-rw-r--r--tools/node_modules/eslint/node_modules/string-width/readme.md14
-rw-r--r--tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js14
-rw-r--r--tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license9
-rw-r--r--tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json62
-rw-r--r--tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md87
-rw-r--r--tools/node_modules/eslint/node_modules/type-fest/package.json11
-rw-r--r--tools/node_modules/eslint/node_modules/type-fest/readme.md531
-rw-r--r--tools/node_modules/eslint/node_modules/unist-util-remove-position/package.json16
-rw-r--r--tools/node_modules/eslint/node_modules/vfile-location/package.json12
-rw-r--r--tools/node_modules/eslint/node_modules/word-wrap/LICENSE21
-rw-r--r--tools/node_modules/eslint/node_modules/word-wrap/README.md182
-rw-r--r--tools/node_modules/eslint/node_modules/word-wrap/index.js46
-rw-r--r--tools/node_modules/eslint/node_modules/word-wrap/package.json114
-rw-r--r--tools/node_modules/eslint/node_modules/wordwrap/LICENSE18
-rw-r--r--tools/node_modules/eslint/node_modules/wordwrap/README.markdown70
-rw-r--r--tools/node_modules/eslint/node_modules/wordwrap/index.js76
-rw-r--r--tools/node_modules/eslint/node_modules/wordwrap/package.json40
40 files changed, 1416 insertions, 325 deletions
diff --git a/tools/node_modules/eslint/node_modules/ansi-escapes/index.js b/tools/node_modules/eslint/node_modules/ansi-escapes/index.js
index 4638bbc3d6..283331858f 100644
--- a/tools/node_modules/eslint/node_modules/ansi-escapes/index.js
+++ b/tools/node_modules/eslint/node_modules/ansi-escapes/index.js
@@ -128,5 +128,30 @@ ansiEscapes.image = (buffer, options = {}) => {
};
ansiEscapes.iTerm = {
- setCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`
+ setCwd: (cwd = process.cwd()) => `${OSC}50;CurrentDir=${cwd}${BEL}`,
+
+ annotation: (message, options = {}) => {
+ let ret = `${OSC}1337;`;
+
+ const hasX = typeof options.x !== 'undefined';
+ const hasY = typeof options.y !== 'undefined';
+ if ((hasX || hasY) && !(hasX && hasY && typeof options.length !== 'undefined')) {
+ throw new Error('`x`, `y` and `length` must be defined when `x` or `y` is defined');
+ }
+
+ message = message.replace(/\|/g, '');
+
+ ret += options.isHidden ? 'AddHiddenAnnotation=' : 'AddAnnotation=';
+
+ if (options.length > 0) {
+ ret +=
+ (hasX ?
+ [message, options.length, options.x, options.y] :
+ [options.length, message]).join('|');
+ } else {
+ ret += message;
+ }
+
+ return ret + BEL;
+ }
};
diff --git a/tools/node_modules/eslint/node_modules/ansi-escapes/package.json b/tools/node_modules/eslint/node_modules/ansi-escapes/package.json
index a58ed743a5..3d97c61786 100644
--- a/tools/node_modules/eslint/node_modules/ansi-escapes/package.json
+++ b/tools/node_modules/eslint/node_modules/ansi-escapes/package.json
@@ -9,15 +9,15 @@
},
"bundleDependencies": false,
"dependencies": {
- "type-fest": "^0.5.2"
+ "type-fest": "^0.8.1"
},
"deprecated": false,
"description": "ANSI escape codes for manipulating the terminal",
"devDependencies": {
"@types/node": "^12.0.7",
"ava": "^2.1.0",
- "tsd": "^0.7.1",
- "xo": "^0.24.0"
+ "tsd": "^0.11.0",
+ "xo": "^0.25.3"
},
"engines": {
"node": ">=8"
@@ -61,5 +61,5 @@
"scripts": {
"test": "xo && ava && tsd"
},
- "version": "4.2.1"
+ "version": "4.3.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md b/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md
index b290753094..818a9263f4 100644
--- a/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md
+++ b/tools/node_modules/eslint/node_modules/ansi-escapes/readme.md
@@ -2,14 +2,12 @@
> [ANSI escape codes](http://www.termsys.demon.co.uk/vtansi.htm) for manipulating the terminal
-
## Install
```
$ npm install ansi-escapes
```
-
## Usage
```js
@@ -20,7 +18,6 @@ process.stdout.write(ansiEscapes.cursorUp(2) + ansiEscapes.cursorLeft);
//=> '\u001B[2A\u001B[1000D'
```
-
## API
### cursorTo(x, y?)
@@ -165,16 +162,71 @@ The width and height are given as a number followed by a unit, or the word "auto
##### preserveAspectRatio
-Type: `boolean`<br>
+Type: `boolean`\
Default: `true`
### iTerm.setCwd(path?)
-Type: `string`<br>
+Type: `string`\
Default: `process.cwd()`
[Inform iTerm2](https://www.iterm2.com/documentation-escape-codes.html) of the current directory to help semantic history and enable [Cmd-clicking relative paths](https://coderwall.com/p/b7e82q/quickly-open-files-in-iterm-with-cmd-click).
+### iTerm.annotation(message, options?)
+
+Creates an escape code to display an "annotation" in iTerm2.
+
+An annotation looks like this when shown:
+
+<img src="https://user-images.githubusercontent.com/924465/64382136-b60ac700-cfe9-11e9-8a35-9682e8dc4b72.png" width="500">
+
+See the [iTerm Proprietary Escape Codes documentation](https://iterm2.com/documentation-escape-codes.html) for more information.
+
+#### message
+
+Type: `string`
+
+The message to display within the annotation.
+
+The `|` character is disallowed and will be stripped.
+
+#### options
+
+Type: `object`
+
+##### length
+
+Type: `number`\
+Default: The remainder of the line
+
+Nonzero number of columns to annotate.
+
+##### x
+
+Type: `number`\
+Default: Cursor position
+
+Starting X coordinate.
+
+Must be used with `y` and `length`.
+
+##### y
+
+Type: `number`\
+Default: Cursor position
+
+Starting Y coordinate.
+
+Must be used with `x` and `length`.
+
+##### isHidden
+
+Type: `boolean`\
+Default: `false`
+
+Create a "hidden" annotation.
+
+Annotations created this way can be shown using the "Show Annotations" iTerm command.
## Related
diff --git a/tools/node_modules/eslint/node_modules/ansi-regex/index.js b/tools/node_modules/eslint/node_modules/ansi-regex/index.js
index c25448009f..35054aa677 100644
--- a/tools/node_modules/eslint/node_modules/ansi-regex/index.js
+++ b/tools/node_modules/eslint/node_modules/ansi-regex/index.js
@@ -1,14 +1,10 @@
'use strict';
-module.exports = options => {
- options = Object.assign({
- onlyFirst: false
- }, options);
-
+module.exports = ({onlyFirst = false} = {}) => {
const pattern = [
'[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
].join('|');
- return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+ return new RegExp(pattern, onlyFirst ? undefined : 'g');
};
diff --git a/tools/node_modules/eslint/node_modules/ansi-regex/package.json b/tools/node_modules/eslint/node_modules/ansi-regex/package.json
index db8f3cc8c7..d0574afde4 100644
--- a/tools/node_modules/eslint/node_modules/ansi-regex/package.json
+++ b/tools/node_modules/eslint/node_modules/ansi-regex/package.json
@@ -11,14 +11,16 @@
"deprecated": false,
"description": "Regular expression for matching ANSI escape codes",
"devDependencies": {
- "ava": "^0.25.0",
- "xo": "^0.23.0"
+ "ava": "^2.4.0",
+ "tsd": "^0.9.0",
+ "xo": "^0.25.3"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
},
"files": [
- "index.js"
+ "index.js",
+ "index.d.ts"
],
"homepage": "https://github.com/chalk/ansi-regex#readme",
"keywords": [
@@ -55,8 +57,8 @@
"url": "git+https://github.com/chalk/ansi-regex.git"
},
"scripts": {
- "test": "xo && ava",
+ "test": "xo && ava && tsd",
"view-supported": "node fixtures/view-codes.js"
},
- "version": "4.1.0"
+ "version": "5.0.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/ansi-regex/readme.md b/tools/node_modules/eslint/node_modules/ansi-regex/readme.md
index d19c44667e..3c2b77c435 100644
--- a/tools/node_modules/eslint/node_modules/ansi-regex/readme.md
+++ b/tools/node_modules/eslint/node_modules/ansi-regex/readme.md
@@ -2,20 +2,6 @@
> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
-
----
-
## Install
@@ -48,12 +34,14 @@ ansiRegex().test('cake');
## API
-### ansiRegex([options])
+### ansiRegex(options?)
Returns a regex for matching ANSI escape codes.
#### options
+Type: `object`
+
##### onlyFirst
Type: `boolean`<br>
@@ -71,17 +59,20 @@ Some of the codes we run as a test are codes that we acquired finding various li
On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
-## Security
-
-To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
-
-
## Maintainers
- [Sindre Sorhus](https://github.com/sindresorhus)
- [Josh Junon](https://github.com/qix-)
-## License
+---
-MIT
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/tools/node_modules/eslint/node_modules/glob/package.json b/tools/node_modules/eslint/node_modules/glob/package.json
index cf2be43974..bf5a63608c 100644
--- a/tools/node_modules/eslint/node_modules/glob/package.json
+++ b/tools/node_modules/eslint/node_modules/glob/package.json
@@ -32,6 +32,9 @@
"sync.js",
"common.js"
],
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
"homepage": "https://github.com/isaacs/node-glob#readme",
"license": "ISC",
"main": "glob.js",
@@ -49,5 +52,5 @@
"test": "tap test/*.js --cov",
"test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js"
},
- "version": "7.1.5"
+ "version": "7.1.6"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/globals/globals.json b/tools/node_modules/eslint/node_modules/globals/globals.json
index 6f5ac02f1e..b33f0431b5 100644
--- a/tools/node_modules/eslint/node_modules/globals/globals.json
+++ b/tools/node_modules/eslint/node_modules/globals/globals.json
@@ -1066,6 +1066,7 @@
"beforeEach": false,
"describe": false,
"expect": false,
+ "expectAsync": false,
"fail": false,
"fdescribe": false,
"fit": false,
@@ -1074,6 +1075,7 @@
"pending": false,
"runs": false,
"spyOn": false,
+ "spyOnAllFunctions": false,
"spyOnProperty": false,
"waits": false,
"waitsFor": false,
@@ -1184,8 +1186,11 @@
},
"wsh": {
"ActiveXObject": true,
+ "CollectGarbage": true,
+ "Debug": true,
"Enumerator": true,
"GetObject": true,
+ "RuntimeObject": true,
"ScriptEngine": true,
"ScriptEngineBuildVersion": true,
"ScriptEngineMajorVersion": true,
diff --git a/tools/node_modules/eslint/node_modules/globals/package.json b/tools/node_modules/eslint/node_modules/globals/package.json
index ae094f3054..de6b8926f1 100644
--- a/tools/node_modules/eslint/node_modules/globals/package.json
+++ b/tools/node_modules/eslint/node_modules/globals/package.json
@@ -8,17 +8,22 @@
"url": "https://github.com/sindresorhus/globals/issues"
},
"bundleDependencies": false,
+ "dependencies": {
+ "type-fest": "^0.8.1"
+ },
"deprecated": false,
"description": "Global identifiers from different JavaScript environments",
"devDependencies": {
- "ava": "0.21.0",
- "xo": "0.18.0"
+ "ava": "^2.2.0",
+ "tsd": "^0.9.0",
+ "xo": "^0.25.3"
},
"engines": {
- "node": ">=4"
+ "node": ">=8"
},
"files": [
"index.js",
+ "index.d.ts",
"globals.json"
],
"homepage": "https://github.com/sindresorhus/globals#readme",
@@ -41,7 +46,12 @@
"scripts": {
"test": "xo && ava"
},
- "version": "11.12.0",
+ "tsd": {
+ "compilerOptions": {
+ "resolveJsonModule": true
+ }
+ },
+ "version": "12.3.0",
"xo": {
"ignores": [
"get-browser-globals.js"
diff --git a/tools/node_modules/eslint/node_modules/globals/readme.md b/tools/node_modules/eslint/node_modules/globals/readme.md
index 8c47855f34..96ce28347a 100644
--- a/tools/node_modules/eslint/node_modules/globals/readme.md
+++ b/tools/node_modules/eslint/node_modules/globals/readme.md
@@ -36,6 +36,14 @@ console.log(globals.browser);
Each global is given a value of `true` or `false`. A value of `true` indicates that the variable may be overwritten. A value of `false` indicates that the variable should be considered read-only. This information is used by static analysis tools to flag incorrect behavior. We assume all variables should be `false` unless we hear otherwise.
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-globals?utm_source=npm-globals&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/tools/node_modules/eslint/node_modules/import-fresh/index.js b/tools/node_modules/eslint/node_modules/import-fresh/index.js
index 7abc670619..425ed98c42 100644
--- a/tools/node_modules/eslint/node_modules/import-fresh/index.js
+++ b/tools/node_modules/eslint/node_modules/import-fresh/index.js
@@ -8,22 +8,25 @@ module.exports = moduleId => {
throw new TypeError('Expected a string');
}
- const filePath = resolveFrom(path.dirname(parentModule(__filename)), moduleId);
+ const parentPath = parentModule(__filename);
+ const filePath = resolveFrom(path.dirname(parentPath), moduleId);
+
+ const oldModule = require.cache[filePath];
// Delete itself from module parent
- if (require.cache[filePath] && require.cache[filePath].parent) {
- let i = require.cache[filePath].parent.children.length;
+ if (oldModule && oldModule.parent) {
+ let i = oldModule.parent.children.length;
while (i--) {
- if (require.cache[filePath].parent.children[i].id === filePath) {
- require.cache[filePath].parent.children.splice(i, 1);
+ if (oldModule.parent.children[i].id === filePath) {
+ oldModule.parent.children.splice(i, 1);
}
}
}
- // Delete module from cache
- delete require.cache[filePath];
+ delete require.cache[filePath]; // Delete module from cache
+
+ const parent = require.cache[parentPath]; // If `filePath` and `parentPath` are the same, cache will already be deleted so we won't get a memory leak in next step
- // Return fresh module
- return require(filePath);
+ return parent === undefined ? require(filePath) : parent.require(filePath); // In case cache doesn't have parent, fall back to normal require
};
diff --git a/tools/node_modules/eslint/node_modules/import-fresh/package.json b/tools/node_modules/eslint/node_modules/import-fresh/package.json
index 73e9316d89..38892a62e4 100644
--- a/tools/node_modules/eslint/node_modules/import-fresh/package.json
+++ b/tools/node_modules/eslint/node_modules/import-fresh/package.json
@@ -47,5 +47,5 @@
"heapdump": "node heapdump.js",
"test": "xo && ava && tsd"
},
- "version": "3.1.0"
+ "version": "3.2.1"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/import-fresh/readme.md b/tools/node_modules/eslint/node_modules/import-fresh/readme.md
index f5414b8cf3..0bfa1c9044 100644
--- a/tools/node_modules/eslint/node_modules/import-fresh/readme.md
+++ b/tools/node_modules/eslint/node_modules/import-fresh/readme.md
@@ -37,22 +37,16 @@ importFresh('./foo')();
```
+## import-fresh for enterprise
+
+Available as part of the Tidelift Subscription.
+
+The maintainers of import-fresh and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-import-fresh?utm_source=npm-import-fresh&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
+
+
## Related
- [clear-module](https://github.com/sindresorhus/clear-module) - Clear a module from the import cache
- [import-from](https://github.com/sindresorhus/import-from) - Import a module from a given path
- [import-cwd](https://github.com/sindresorhus/import-cwd) - Import a module from the current working directory
- [import-lazy](https://github.com/sindresorhus/import-lazy) - Import modules lazily
-
-
----
-
-<div align="center">
- <b>
- <a href="https://tidelift.com/subscription/pkg/npm-require-uncached?utm_source=npm-require-uncached&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
- </b>
- <br>
- <sub>
- Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
- </sub>
-</div>
diff --git a/tools/node_modules/eslint/node_modules/optionator/README.md b/tools/node_modules/eslint/node_modules/optionator/README.md
index 91c59d379b..8e4ba42452 100644
--- a/tools/node_modules/eslint/node_modules/optionator/README.md
+++ b/tools/node_modules/eslint/node_modules/optionator/README.md
@@ -1,7 +1,7 @@
# Optionator
<a name="optionator" />
-Optionator is a JavaScript option parsing and help generation library used by [eslint](http://eslint.org), [Grasp](http://graspjs.com), [LiveScript](http://livescript.net), [esmangle](https://github.com/estools/esmangle), [escodegen](https://github.com/estools/escodegen), and [many more](https://www.npmjs.com/browse/depended/optionator).
+Optionator is a JavaScript/Node.js option parsing and help generation library used by [eslint](http://eslint.org), [Grasp](http://graspjs.com), [LiveScript](http://livescript.net), [esmangle](https://github.com/estools/esmangle), [escodegen](https://github.com/estools/escodegen), and [many more](https://www.npmjs.com/browse/depended/optionator).
For an online demo, check out the [Grasp online demo](http://www.graspjs.com/#demo).
@@ -23,12 +23,14 @@ Other helpful features include reformatting the help text based on the size of t
## About
Optionator uses [type-check](https://github.com/gkz/type-check) and [levn](https://github.com/gkz/levn) behind the scenes to cast and verify input according the specified types.
-MIT license. Version 0.8.2
+MIT license. Version 0.8.3
npm install optionator
For updates on Optionator, [follow me on twitter](https://twitter.com/gkzahariev).
+Optionator is a Node.js module, but can be used in the browser as well if packed with webpack/browserify.
+
## Usage
`require('optionator');` returns a function. It has one property, `VERSION`, the current version of the library as a string. This function is called with an object specifying your options and other information, see the [settings format section](#settings-format). This in turn returns an object with three properties, `parse`, `parseArgv`, `generateHelp`, and `generateHelpForOption`, which are all functions.
diff --git a/tools/node_modules/eslint/node_modules/optionator/lib/help.js b/tools/node_modules/eslint/node_modules/optionator/lib/help.js
index a459c02c26..59e6f9694c 100644
--- a/tools/node_modules/eslint/node_modules/optionator/lib/help.js
+++ b/tools/node_modules/eslint/node_modules/optionator/lib/help.js
@@ -1,9 +1,22 @@
-// Generated by LiveScript 1.5.0
+// Generated by LiveScript 1.6.0
(function(){
- var ref$, id, find, sort, min, max, map, unlines, nameToRaw, dasherize, naturalJoin, wordwrap, getPreText, setHelpStyleDefaults, generateHelpForOption, generateHelp;
+ var ref$, id, find, sort, min, max, map, unlines, nameToRaw, dasherize, naturalJoin, wordWrap, wordwrap, getPreText, setHelpStyleDefaults, generateHelpForOption, generateHelp;
ref$ = require('prelude-ls'), id = ref$.id, find = ref$.find, sort = ref$.sort, min = ref$.min, max = ref$.max, map = ref$.map, unlines = ref$.unlines;
ref$ = require('./util'), nameToRaw = ref$.nameToRaw, dasherize = ref$.dasherize, naturalJoin = ref$.naturalJoin;
- wordwrap = require('wordwrap');
+ wordWrap = require('word-wrap');
+ wordwrap = function(a, b){
+ var ref$, indent, width;
+ ref$ = b === undefined
+ ? ['', a - 1]
+ : [repeatString$(' ', a), b - a - 1], indent = ref$[0], width = ref$[1];
+ return function(text){
+ return wordWrap(text, {
+ indent: indent,
+ width: width,
+ trim: true
+ });
+ };
+ };
getPreText = function(option, arg$, maxWidth){
var mainName, shortNames, ref$, longNames, type, description, aliasSeparator, typeSeparator, initialIndent, names, namesString, namesStringLen, typeSeparatorString, typeSeparatorStringLen, wrap;
mainName = option.option, shortNames = (ref$ = option.shortNames) != null
diff --git a/tools/node_modules/eslint/node_modules/optionator/lib/index.js b/tools/node_modules/eslint/node_modules/optionator/lib/index.js
index d947286c76..7ce37b23b0 100644
--- a/tools/node_modules/eslint/node_modules/optionator/lib/index.js
+++ b/tools/node_modules/eslint/node_modules/optionator/lib/index.js
@@ -1,7 +1,7 @@
-// Generated by LiveScript 1.5.0
+// Generated by LiveScript 1.6.0
(function(){
- var VERSION, ref$, id, map, compact, any, groupBy, partition, chars, isItNaN, keys, Obj, camelize, deepIs, closestString, nameToRaw, dasherize, naturalJoin, generateHelp, generateHelpForOption, parsedTypeCheck, parseType, parseLevn, camelizeKeys, parseString, main, toString$ = {}.toString, slice$ = [].slice;
- VERSION = '0.8.2';
+ var VERSION, ref$, id, map, compact, any, groupBy, partition, chars, isItNaN, keys, Obj, camelize, deepIs, closestString, nameToRaw, dasherize, naturalJoin, generateHelp, generateHelpForOption, parsedTypeCheck, parseType, parseLevn, camelizeKeys, parseString, main, toString$ = {}.toString, slice$ = [].slice, arrayFrom$ = Array.from || function(x){return slice$.call(x);};
+ VERSION = '0.8.3';
ref$ = require('prelude-ls'), id = ref$.id, map = ref$.map, compact = ref$.compact, any = ref$.any, groupBy = ref$.groupBy, partition = ref$.partition, chars = ref$.chars, isItNaN = ref$.isItNaN, keys = ref$.keys, Obj = ref$.Obj, camelize = ref$.camelize;
deepIs = require('deep-is');
ref$ = require('./util'), closestString = ref$.closestString, nameToRaw = ref$.nameToRaw, dasherize = ref$.dasherize, naturalJoin = ref$.naturalJoin;
@@ -17,7 +17,7 @@
return resultObj$;
};
parseString = function(string){
- var assignOpt, regex, replaceRegex, result, this$ = this;
+ var assignOpt, regex, replaceRegex, result;
assignOpt = '--?[a-zA-Z][-a-z-A-Z0-9]*=';
regex = RegExp('(?:' + assignOpt + ')?(?:\'(?:\\\\\'|[^\'])+\'|"(?:\\\\"|[^"])+")|[^\'"\\s]+', 'g');
replaceRegex = RegExp('^(' + assignOpt + ')?[\'"]([\\s\\S]*)[\'"]$');
@@ -44,7 +44,7 @@
libOptions.defaults.mergeRepeatedObjects = libOptions.mergeRepeatedObjects;
}
traverse = function(options){
- var i$, len$, option, name, k, ref$, v, type, that, e, parsedPossibilities, parsedType, j$, len1$, possibility, rawDependsType, dependsOpts, dependsType, cra, alias, shortNames, longNames, this$ = this;
+ var i$, len$, option, name, k, ref$, v, type, that, e, parsedPossibilities, parsedType, j$, len1$, possibility, rawDependsType, dependsOpts, dependsType, cra, alias, shortNames, longNames;
if (toString$.call(options).slice(8, -1) !== 'Array') {
throw new Error('No options defined.');
}
@@ -104,7 +104,7 @@
dependsType = rawDependsType.toLowerCase();
if (dependsOpts.length) {
if (dependsType === 'and' || dependsType === 'or') {
- option.dependsOn = [dependsType].concat(slice$.call(dependsOpts));
+ option.dependsOn = [dependsType].concat(arrayFrom$(dependsOpts));
} else {
throw new Error("Option '" + name + "': If you have more than one dependency, you must specify either 'and' or 'or'");
}
diff --git a/tools/node_modules/eslint/node_modules/optionator/lib/util.js b/tools/node_modules/eslint/node_modules/optionator/lib/util.js
index d5c972def1..5bc0cbb69e 100644
--- a/tools/node_modules/eslint/node_modules/optionator/lib/util.js
+++ b/tools/node_modules/eslint/node_modules/optionator/lib/util.js
@@ -1,10 +1,10 @@
-// Generated by LiveScript 1.5.0
+// Generated by LiveScript 1.6.0
(function(){
var prelude, map, sortBy, fl, closestString, nameToRaw, dasherize, naturalJoin;
prelude = require('prelude-ls'), map = prelude.map, sortBy = prelude.sortBy;
fl = require('fast-levenshtein');
closestString = function(possibilities, input){
- var distances, ref$, string, distance, this$ = this;
+ var distances, ref$, string, distance;
if (!possibilities.length) {
return;
}
diff --git a/tools/node_modules/eslint/node_modules/optionator/package.json b/tools/node_modules/eslint/node_modules/optionator/package.json
index d492cd682b..b69935ea0e 100644
--- a/tools/node_modules/eslint/node_modules/optionator/package.json
+++ b/tools/node_modules/eslint/node_modules/optionator/package.json
@@ -9,18 +9,18 @@
"bundleDependencies": false,
"dependencies": {
"deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.4",
+ "fast-levenshtein": "~2.0.6",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
- "wordwrap": "~1.0.0"
+ "word-wrap": "~1.2.3"
},
"deprecated": false,
"description": "option parsing and help generation",
"devDependencies": {
- "istanbul": "~0.4.1",
- "livescript": "~1.5.0",
- "mocha": "~3.0.2"
+ "istanbul": "~0.4.5",
+ "livescript": "~1.6.0",
+ "mocha": "~6.2.2"
},
"engines": {
"node": ">= 0.8.0"
@@ -47,5 +47,5 @@
"scripts": {
"test": "make test"
},
- "version": "0.8.2"
+ "version": "0.8.3"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/index.js b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/index.js
new file mode 100644
index 0000000000..9a593dfcd1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/index.js
@@ -0,0 +1,4 @@
+'use strict';
+const ansiRegex = require('ansi-regex');
+
+module.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
diff --git a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/license b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/package.json b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/package.json
new file mode 100644
index 0000000000..5db6f68dc0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/package.json
@@ -0,0 +1,63 @@
+{
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/strip-ansi/issues"
+ },
+ "bundleDependencies": false,
+ "dependencies": {
+ "ansi-regex": "^5.0.0"
+ },
+ "deprecated": false,
+ "description": "Strip ANSI escape codes from a string",
+ "devDependencies": {
+ "ava": "^2.4.0",
+ "tsd": "^0.10.0",
+ "xo": "^0.25.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "homepage": "https://github.com/chalk/strip-ansi#readme",
+ "keywords": [
+ "strip",
+ "trim",
+ "remove",
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "license": "MIT",
+ "name": "strip-ansi",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/strip-ansi.git"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "version": "6.0.0"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/readme.md b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/readme.md
new file mode 100644
index 0000000000..7c4b56d46d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/string-width/node_modules/strip-ansi/readme.md
@@ -0,0 +1,46 @@
+# strip-ansi [![Build Status](https://travis-ci.org/chalk/strip-ansi.svg?branch=master)](https://travis-ci.org/chalk/strip-ansi)
+
+> Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string
+
+
+## Install
+
+```
+$ npm install strip-ansi
+```
+
+
+## Usage
+
+```js
+const stripAnsi = require('strip-ansi');
+
+stripAnsi('\u001B[4mUnicorn\u001B[0m');
+//=> 'Unicorn'
+
+stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
+//=> 'Click'
+```
+
+
+## strip-ansi for enterprise
+
+Available as part of the Tidelift Subscription.
+
+The maintainers of strip-ansi and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-strip-ansi?utm_source=npm-strip-ansi&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
+
+
+## Related
+
+- [strip-ansi-cli](https://github.com/chalk/strip-ansi-cli) - CLI for this module
+- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Streaming version of this module
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
diff --git a/tools/node_modules/eslint/node_modules/string-width/package.json b/tools/node_modules/eslint/node_modules/string-width/package.json
index 9ef5253e54..38993c1e2e 100644
--- a/tools/node_modules/eslint/node_modules/string-width/package.json
+++ b/tools/node_modules/eslint/node_modules/string-width/package.json
@@ -11,7 +11,7 @@
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^5.2.0"
+ "strip-ansi": "^6.0.0"
},
"deprecated": false,
"description": "Get the visual width of a string - the number of columns required to display it",
@@ -61,5 +61,5 @@
"scripts": {
"test": "xo && ava && tsd"
},
- "version": "4.1.0"
+ "version": "4.2.0"
} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/string-width/readme.md b/tools/node_modules/eslint/node_modules/string-width/readme.md
index 35a0c0377a..705f206001 100644
--- a/tools/node_modules/eslint/node_modules/string-width/readme.md
+++ b/tools/node_modules/eslint/node_modules/string-width/readme.md
@@ -37,6 +37,14 @@ stringWidth('\u001B[1m古\u001B[22m');
- [widest-line](https://github.com/sindresorhus/widest-line) - Get the visual width of the widest line in a string
-## License
-
-MIT © [Sindre Sorhus](https://sindresorhus.com)
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-string-width?utm_source=npm-string-width&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js
new file mode 100644
index 0000000000..c25448009f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/index.js
@@ -0,0 +1,14 @@
+'use strict';
+
+module.exports = options => {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+
+ const pattern = [
+ '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
+ '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
+ ].join('|');
+
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+};
diff --git a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json
new file mode 100644
index 0000000000..db8f3cc8c7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/package.json
@@ -0,0 +1,62 @@
+{
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/chalk/ansi-regex/issues"
+ },
+ "bundleDependencies": false,
+ "deprecated": false,
+ "description": "Regular expression for matching ANSI escape codes",
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "xo": "^0.23.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "homepage": "https://github.com/chalk/ansi-regex#readme",
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "command-line",
+ "text",
+ "regex",
+ "regexp",
+ "re",
+ "match",
+ "test",
+ "find",
+ "pattern"
+ ],
+ "license": "MIT",
+ "name": "ansi-regex",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/ansi-regex.git"
+ },
+ "scripts": {
+ "test": "xo && ava",
+ "view-supported": "node fixtures/view-codes.js"
+ },
+ "version": "4.1.0"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
new file mode 100644
index 0000000000..d19c44667e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/strip-ansi/node_modules/ansi-regex/readme.md
@@ -0,0 +1,87 @@
+# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
+
+> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
+
+---
+
+
+## Install
+
+```
+$ npm install ansi-regex
+```
+
+
+## Usage
+
+```js
+const ansiRegex = require('ansi-regex');
+
+ansiRegex().test('\u001B[4mcake\u001B[0m');
+//=> true
+
+ansiRegex().test('cake');
+//=> false
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex());
+//=> ['\u001B[4m', '\u001B[0m']
+
+'\u001B[4mcake\u001B[0m'.match(ansiRegex({onlyFirst: true}));
+//=> ['\u001B[4m']
+
+'\u001B]8;;https://github.com\u0007click\u001B]8;;\u0007'.match(ansiRegex());
+//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
+```
+
+
+## API
+
+### ansiRegex([options])
+
+Returns a regex for matching ANSI escape codes.
+
+#### options
+
+##### onlyFirst
+
+Type: `boolean`<br>
+Default: `false` *(Matches any ANSI escape codes in a string)*
+
+Match only the first ANSI escape.
+
+
+## FAQ
+
+### Why do you test for codes not in the ECMA 48 standard?
+
+Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. We test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
+
+On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
+
+
+## Security
+
+To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/tools/node_modules/eslint/node_modules/type-fest/package.json b/tools/node_modules/eslint/node_modules/type-fest/package.json
index a5a398048d..0164025631 100644
--- a/tools/node_modules/eslint/node_modules/type-fest/package.json
+++ b/tools/node_modules/eslint/node_modules/type-fest/package.json
@@ -11,14 +11,15 @@
"deprecated": false,
"description": "A collection of essential TypeScript types",
"devDependencies": {
- "@sindresorhus/tsconfig": "^0.3.0",
- "@typescript-eslint/eslint-plugin": "^1.8.0",
- "eslint-config-xo-typescript": "^0.11.0",
+ "@sindresorhus/tsconfig": "^0.4.0",
+ "@typescript-eslint/eslint-plugin": "^2.2.0",
+ "@typescript-eslint/parser": "^2.2.0",
+ "eslint-config-xo-typescript": "^0.18.0",
"tsd": "^0.7.3",
"xo": "^0.24.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=8"
},
"files": [
"index.d.ts",
@@ -45,7 +46,7 @@
"scripts": {
"test": "xo && tsd"
},
- "version": "0.5.2",
+ "version": "0.8.1",
"xo": {
"extends": "xo-typescript",
"extensions": [
diff --git a/tools/node_modules/eslint/node_modules/type-fest/readme.md b/tools/node_modules/eslint/node_modules/type-fest/readme.md
index 3f11c3c1ed..1824bdabed 100644
--- a/tools/node_modules/eslint/node_modules/type-fest/readme.md
+++ b/tools/node_modules/eslint/node_modules/type-fest/readme.md
@@ -36,14 +36,14 @@ $ npm install type-fest
## Usage
```ts
-import {Omit} from 'type-fest';
+import {Except} from 'type-fest';
type Foo = {
unicorn: string;
rainbow: boolean;
};
-type FooWithoutRainbow = Omit<Foo, 'rainbow'>;
+type FooWithoutRainbow = Except<Foo, 'rainbow'>;
//=> {unicorn: string}
```
@@ -64,13 +64,19 @@ Click the type names for complete docs.
### Utilities
-- [`Omit`](source/omit.d.ts) - Create a type from an object type without certain keys.
-- [`Mutable`](source/mutable.d.ts) - Convert an object with `readonly` properties into a mutable object. Inverse of `Readonly<T>`.
+- [`Except`](source/except.d.ts) - Create a type from an object type without certain keys. This is a stricter version of [`Omit`](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#the-omit-helper-type).
+- [`Mutable`](source/mutable.d.ts) - Convert an object with `readonly` keys into a mutable object. The inverse of `Readonly<T>`.
- [`Merge`](source/merge.d.ts) - Merge two types into a new type. Keys of the second type overrides keys of the first type.
-- [`MergeExclusive`](source/merge-exclusive.d.ts) - Create a type that has mutually exclusive properties.
-- [`RequireAtLeastOne`](source/require-at-least-one.d.ts) - Create a type that requires at least one of the given properties.
-- [`ReadonlyDeep`](source/readonly-deep.d.ts) - Create a deeply immutable version of a `object`/`Map`/`Set`/`Array` type.
+- [`MergeExclusive`](source/merge-exclusive.d.ts) - Create a type that has mutually exclusive keys.
+- [`RequireAtLeastOne`](source/require-at-least-one.d.ts) - Create a type that requires at least one of the given keys.
+- [`RequireExactlyOne`](source/require-one.d.ts) - Create a type that requires exactly a single key of the given keys and disallows more.
+- [`PartialDeep`](source/partial-deep.d.ts) - Create a deeply optional version of another type. Use [`Partial<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) if you only need one level deep.
+- [`ReadonlyDeep`](source/readonly-deep.d.ts) - Create a deeply immutable version of an `object`/`Map`/`Set`/`Array` type. Use [`Readonly<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) if you only need one level deep.
- [`LiteralUnion`](source/literal-union.d.ts) - Create a union type by combining primitive types and literal types without sacrificing auto-completion in IDEs for the literal type part of the union. Workaround for [Microsoft/TypeScript#29729](https://github.com/Microsoft/TypeScript/issues/29729).
+- [`Promisable`](source/promisable.d.ts) - Create a type that represents either the value or the value wrapped in `PromiseLike`.
+- [`Opaque`](source/opaque.d.ts) - Create an [opaque type](https://codemix.com/opaque-types-in-javascript/).
+- [`SetOptional`](source/set-optional.d.ts) - Create a type that makes the given keys optional.
+- [`SetRequired`](source/set-required.d.ts) - Create a type that makes the given keys required.
### Miscellaneous
@@ -82,6 +88,7 @@ Click the type names for complete docs.
*If we decline a type addition, we will make sure to document the better solution here.*
- [`Diff` and `Spread`](https://github.com/sindresorhus/type-fest/pull/7) - The PR author didn't provide any real-world use-cases and the PR went stale. If you think this type is useful, provide some real-world use-cases and we might reconsider.
+- [`Dictionary`](https://github.com/sindresorhus/type-fest/issues/33) - You only save a few characters (`Dictionary<number>` vs `Record<string, number>`) from [`Record`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434), which is more flexible and well-known. Also, you shouldn't use an object as a dictionary. We have `Map` in JavaScript now.
## Tips
@@ -91,17 +98,514 @@ Click the type names for complete docs.
There are many advanced types most users don't know about.
- [`Partial<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1401-L1406) - Make all properties in `T` optional.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/KYOwrgtgBAMg9gcxsAbsANlA3gKClAeQDMiAaPKAEWACMwFz8BRAJxbhcagDEBDAF17ocAXxw4AliH7AWRXgGNgUAHJwAJsADCcEEQkJsFXgAcTK3hGAAuKAGd+LKQgDcFEx363wEGrLf46IjIaOi28EioGG5iOArovHZ2qhrAAIJmAEJgEuiaLEb4Jk4oAsoKuvoIYCwCErq2apo6egZQALyF+FCm5pY2UABETelmg1xFnrYAzAAM8xNQQZGh4cFR6AB0xEQUIm4UFa0IABRHVbYACrws-BJCADwjLVUAfACUXfhEHFBnug4oABrYAATygcCIhBoACtgAp+JsQaC7P9ju9Prhut0joCwCZ1GUAGpCMDKTrnAwAbWRPWSyMhKWalQMAF0Dtj8BIoSd8YSZCT0GSOu1OmAQJp9CBgOpPkc7uBgBzOfwABYSOybSnVWp3XQ0sF04FgxnPFkIVkdKB84mkpUUfCxbEsYD8GogKBqjUBKBiWIAen9UGut3u6CeqReBlePXQQQA7skwMl+HAoMU4CgJJoISB0ODeOmbvwIVC1cAcIGmdpzVApDI5IpgJscNL49WMiZsrl8id3lrzScsD0zBYrLZBgAVOCUOCdwa+95uIA)
+
+ ```ts
+ interface NodeConfig {
+ appName: string;
+ port: number;
+ }
+
+ class NodeAppBuilder {
+ private configuration: NodeConfig = {
+ appName: 'NodeApp',
+ port: 3000
+ };
+
+ config(config: Partial<NodeConfig>) {
+ type NodeConfigKey = keyof NodeConfig;
+
+ for (const key of Object.keys(config) as NodeConfigKey[]) {
+ const updateValue = config[key];
+
+ if (updateValue === undefined) {
+ continue;
+ }
+
+ this.configuration[key] = updateValue;
+ }
+
+ return this;
+ }
+ }
+
+ // `Partial<NodeConfig>`` allows us to provide only a part of the
+ // NodeConfig interface.
+ new NodeAppBuilder().config({appName: 'ToDoApp'});
+ ```
+ </details>
+
- [`Required<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1408-L1413) - Make all properties in `T` required.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/AQ4SwOwFwUwJwGYEMDGNgGED21VQGJZwC2wA3gFCjXAzFJgA2A-AFzADOUckA5gNxUaIYjA4ckvGG07c+g6gF8KQkAgCuEFFDA5O6gEbEwUbLm2ESwABQIixACJIoSdgCUYAR3Vg4MACYAPGYuFvYAfACU5Ko0APRxwADKMBD+wFAAFuh2Vv7OSBlYGdmc8ABu8LHKsRyGxqY4oQT21pTCIHQMjOwA5DAAHgACxAAOjDAAdChYxL0ANLHUouKSMH0AEmAAhJhY6ozpAJ77GTCMjMCiV0ToSAb7UJPPC9WRgrEJwAAqR6MwSRQPFGUFocDgRHYxnEfGAowh-zgUCOwF6KwkUl6tXqJhCeEsxDaS1AXSYfUGI3GUxmc0WSneQA)
+
+ ```ts
+ interface ContactForm {
+ email?: string;
+ message?: string;
+ }
+
+ function submitContactForm(formData: Required<ContactForm>) {
+ // Send the form data to the server.
+ }
+
+ submitContactForm({
+ email: 'ex@mple.com',
+ message: 'Hi! Could you tell me more about…',
+ });
+
+ // TypeScript error: missing property 'message'
+ submitContactForm({
+ email: 'ex@mple.com',
+ });
+ ```
+ </details>
+
- [`Readonly<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1415-L1420) - Make all properties in `T` readonly.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/AQ4UwOwVwW2AZA9gc3mAbmANsA3gKFCOAHkAzMgGkOJABEwAjKZa2kAUQCcvEu32AMQCGAF2FYBIAL4BufDRABLCKLBcywgMZgEKZOoDCiCGSXI8i4hGEwwALmABnUVxXJ57YFgzZHSVF8sT1BpBSItLGEnJz1kAy5LLy0TM2RHACUwYQATEywATwAeAITjU3MAPnkrCJMXLigtUT4AClxgGztKbyDgaX99I1TzAEokr1BRAAslJwA6FIqLAF48TtswHp9MHDla9hJGACswZvmyLjAwAC8wVpm5xZHkUZDaMKIwqyWXYCW0oN4sNlsA1h0ug5gAByACyBQAggAHJHQ7ZBIFoXbzBjMCz7OoQP5YIaJNYQMAAdziCVaALGNSIAHomcAACoFJFgADKWjcSNEwG4vC4ji0wggEEQguiTnMEGALWAV1yAFp8gVgEjeFyuKICvMrCTgVxnst5jtsGC4ljsPNhXxGaAWcAAOq6YRXYDCRg+RWIcA5JSC+kWdCepQ+v3RYCU3RInzRMCGwlpC19NYBW1Ye08R1AA)
+
+ ```ts
+ enum LogLevel {
+ Off,
+ Debug,
+ Error,
+ Fatal
+ };
+
+ interface LoggerConfig {
+ name: string;
+ level: LogLevel;
+ }
+
+ class Logger {
+ config: Readonly<LoggerConfig>;
+
+ constructor({name, level}: LoggerConfig) {
+ this.config = {name, level};
+ Object.freeze(this.config);
+ }
+ }
+
+ const config: LoggerConfig = {
+ name: 'MyApp',
+ level: LogLevel.Debug
+ };
+
+ const logger = new Logger(config);
+
+ // TypeScript Error: cannot assign to read-only property.
+ logger.config.level = LogLevel.Error;
+
+ // We are able to edit config variable as we please.
+ config.level = LogLevel.Error;
+ ```
+ </details>
+
- [`Pick<T, K>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1422-L1427) - From `T`, pick a set of properties whose keys are in the union `K`.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/AQ4SwOwFwUwJwGYEMDGNgEE5TCgNugN4BQoZwOUBAXMAM5RyQDmA3KeSFABYCuAtgCMISMHloMmENh04oA9tBjQJjFuzIBfYrOAB6PcADCcGElh1gEGAHcKATwAO6ebyjB5CTNlwFwSxFR0BX5HeToYABNgBDh5fm8cfBg6AHIKG3ldA2BHOOcfFNpUygJ0pAhokr4hETFUgDpswywkggAFUwA3MFtgAF5gQgowKhhVKTYKGuFRcXo1aVZgbTIoJ3RW3xhOmB6+wfbcAGsAHi3kgBpgEtGy4AAfG54BWfqAPnZm4AAlZUj4MAkMA8GAGB4vEgfMlLLw6CwPBA8PYRmMgZVgAC6CgmI4cIommQELwICh8RBgKZKvALh1ur0bHQABR5PYMui0Wk7em2ADaAF0AJS0AASABUALIAGQAogR+Mp3CROCAFBBwVC2ikBpj5CgBIqGjizLA5TAFdAmalImAuqlBRoVQh5HBgEy1eDWfs7J5cjzGYKhroVfpDEhHM4MV6GRR5NN0JrtnRg6BVirTFBeHAKYmYY6QNpdB73LmCJZBlSAXAubtvczeSmQMNSuMbmKNgBlHFgPEUNwusBIPAAQlS1xetTmxT0SDoESgdD0C4aACtHMwxytLrohawgA)
+
+ ```ts
+ interface Article {
+ title: string;
+ thumbnail: string;
+ content: string;
+ }
+
+ // Creates new type out of the `Article` interface composed
+ // from the Articles' two properties: `title` and `thumbnail`.
+ // `ArticlePreview = {title: string; thumbnail: string}`
+ type ArticlePreview = Pick<Article, 'title' | 'thumbnail'>;
+
+ // Render a list of articles using only title and description.
+ function renderArticlePreviews(previews: ArticlePreview[]): HTMLElement {
+ const articles = document.createElement('div');
+
+ for (const preview of previews) {
+ // Append preview to the articles.
+ }
+
+ return articles;
+ }
+
+ const articles = renderArticlePreviews([
+ {
+ title: 'TypeScript tutorial!',
+ thumbnail: '/assets/ts.jpg'
+ }
+ ]);
+ ```
+ </details>
+
- [`Record<K, T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1429-L1434) - Construct a type with a set of properties `K` of type `T`.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/AQ4ejYAUHsGcCWAXBMB2dgwGbAKYC2ADgDYwCeeemCaWArgE7ADGMxAhmuQHQBQoYEnJE8wALKEARnkaxEKdMAC8wAOS0kstGuAAfdQBM8ANzxlRjXQbVaWACwC0JPB0NqA3HwGgIwAJJoWozYHCxixnAsjAhStADmwESMMJYo1Fi4HMCIaPEu+MRklHj8gpqyoeHAAKJFFFTAAN4+giDYCIxwSAByHAR4AFw5SDF5Xm2gJBzdfQPD3WPxE5PAlBxdAPLYNQAelgh4aOHDaPQEMowrIAC+3oJ+AMKMrlrAXFhSAFZ4LEhC9g4-0BmA4JBISXgiCkBQABpILrJ5MhUGhYcATGD6Bk4Hh-jNgABrPDkOBlXyQAAq9ngYmJpOAAHcEOCRjAXqwYODfoo6DhakUSph+Uh7GI4P0xER4Cj0OSQGwMP8tP1hgAlX7swwAHgRl2RvIANALSA08ABtAC6AD4VM1Wm0Kow0MMrYaHYJjGYLLJXZb3at1HYnC43Go-QHQDcvA6-JsmEJXARgCDgMYWAhjIYhDAU+YiMAAFIwex0ZmilMITCGF79TLAGRsAgJYAAZRwSEZGzEABFTOZUrJ5Yn+jwnWgeER6HB7AAKJrADpdXqS4ZqYultTG6azVfqHswPBbtauLY7fayQ7HIbAAAMwBuAEoYw9IBq2Ixs9h2eFMOQYPQObALQKJgggABeYhghCIpikkKRpOQRIknAsZUiIeCttECBEP8NSMCkjDDAARMGziuIYxHwYOjDCMBmDNnAuTxA6irdCOBB1Lh5Dqpqn66tISIykawBnOCtqqC0gbjqc9DgpGkxegOliyfJDrRkAA)
+
+ ```ts
+ // Positions of employees in our company.
+ type MemberPosition = 'intern' | 'developer' | 'tech-lead';
+
+ // Interface describing properties of a single employee.
+ interface Employee {
+ firstName: string;
+ lastName: string;
+ yearsOfExperience: number;
+ }
+
+ // Create an object that has all possible `MemberPosition` values set as keys.
+ // Those keys will store a collection of Employees of the same position.
+ const team: Record<MemberPosition, Employee[]> = {
+ intern: [],
+ developer: [],
+ 'tech-lead': [],
+ };
+
+ // Our team has decided to help John with his dream of becoming Software Developer.
+ team.intern.push({
+ firstName: 'John',
+ lastName: 'Doe',
+ yearsOfExperience: 0
+ });
+
+ // `Record` forces you to initialize all of the property keys.
+ // TypeScript Error: "tech-lead" property is missing
+ const teamEmpty: Record<MemberPosition, null> = {
+ intern: null,
+ developer: null,
+ };
+ ```
+ </details>
+
- [`Exclude<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1436-L1439) - Exclude from `T` those types that are assignable to `U`.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/JYOwLgpgTgZghgYwgAgMrQG7QMIHsQzADmyA3gFDLIAOuUYAXMiAK4A2byAPsgM5hRQJHqwC2AI2gBucgF9y5MAE9qKAEoQAjiwj8AEnBAATNtGQBeZAAooWphu26wAGmS3e93bRC8IASgsAPmRDJRlyAHoI5ABRAA8ENhYjFFYOZGVVZBgoXFFkAAM0zh5+QRBhZhYJaAKAOkjogEkQZAQ4X2QAdwALCFbaemRgXmQtFjhOMFwq9K6ULuB0lk6U+HYwZAxJnQaYFhAEMGB8ZCIIMAAFOjAANR2IK0HGWISklIAedCgsKDwCYgAbQA5M9gQBdVzFQJ+JhiSRQMiUYYwayZCC4VHPCzmSzAspCYEBWxgFhQAZwKC+FpgJ43VwARgADH4ZFQSWSBjcZPJyPtDsdTvxKWBvr8rD1DCZoJ5HPopaYoK4EPhCEQmGKcKriLCtrhgEYkVQVT5Nr4fmZLLZtMBbFZgT0wGBqES6ghbHBIJqoBKFdBWQpjfh+DQbhY2tqiHVsbjLMVkAB+ZAAZiZaeQTHOVxu9ySjxNaujNwDVHNvzqbBGkBAdPoAfkQA)
+
+ ```ts
+ interface ServerConfig {
+ port: null | string | number;
+ }
+
+ type RequestHandler = (request: Request, response: Response) => void;
+
+ // Exclude `null` type from `null | string | number`.
+ // In case the port is equal to `null`, we will use default value.
+ function getPortValue(port: Exclude<ServerConfig['port'], null>): number {
+ if (typeof port === 'string') {
+ return parseInt(port, 10);
+ }
+
+ return port;
+ }
+
+ function startServer(handler: RequestHandler, config: ServerConfig): void {
+ const server = require('http').createServer(handler);
+
+ const port = config.port === null ? 3000 : getPortValue(config.port);
+ server.listen(port);
+ }
+ ```
+ </details>
+
- [`Extract<T, U>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1441-L1444) - Extract from `T` those types that are assignable to `U`.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/CYUwxgNghgTiAEAzArgOzAFwJYHtXzSwEdkQBJYACgEoAueVZAWwCMQYBuAKDDwGcM8MgBF4AXngBlAJ6scESgHIRi6ty5ZUGdoihgEABXZ888AN5d48ANoiAuvUat23K6ihMQ9ATE0BzV3goPy8GZjZOLgBfLi4Aejj4AEEICBwAdz54MAALKFQQ+BxEeAAHY1NgKAwoIKy0grr4DByEUpgccpgMaXgAaxBerCzi+B9-ZulygDouFHRsU1z8kKMYE1RhaqgAHkt4AHkWACt4EAAPbVRgLLWNgBp9gGlBs8uQa6yAUUuYPQwdgNpKM7nh7mMML4CgA+R5WABqUAgpDeVxuhxO1he0jsXGh8EoOBO9COx3BQPo2PBADckaR6IjkSA6PBqTgsMBzPsicdrEC7OJWXSQNwYvFEgAVTS9JLXODpeDpKBZFg4GCoWa8VACIJykAKiQWKy2YQOAioYikCg0OEMDyhRSy4DyxS24KhAAMjyi6gS8AAwjh5OD0iBFHAkJoEOksC1mnkMJq8gUQKDNttKPlnfrwYp3J5XfBHXqoKpfYkAOI4ansTxaeDADmoRSCCBYAbxhC6TDx6rwYHIRX5bScjA4bLJwoDmDwDkfbA9JMrVMVdM1TN69LgkTgwgkchUahqIA)
+
+ ```ts
+ declare function uniqueId(): number;
+
+ const ID = Symbol('ID');
+
+ interface Person {
+ [ID]: number;
+ name: string;
+ age: number;
+ }
+
+ // Allows changing the person data as long as the property key is of string type.
+ function changePersonData<
+ Obj extends Person,
+ Key extends Extract<keyof Person, string>,
+ Value extends Obj[Key]
+ > (obj: Obj, key: Key, value: Value): void {
+ obj[key] = value;
+ }
+
+ // Tiny Andrew was born.
+ const andrew = {
+ [ID]: uniqueId(),
+ name: 'Andrew',
+ age: 0,
+ };
+
+ // Cool, we're fine with that.
+ changePersonData(andrew, 'name', 'Pony');
+
+ // Goverment didn't like the fact that you wanted to change your identity.
+ changePersonData(andrew, ID, uniqueId());
+ ```
+ </details>
+
- [`NonNullable<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1446-L1449) - Exclude `null` and `undefined` from `T`.
+ <details>
+ <summary>
+ Example
+ </summary>
+ Works with <code>strictNullChecks</code> set to <code>true</code>. (Read more <a href="https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html">here</a>)
+
+ [Playground](https://typescript-play.js.org/?target=6#code/C4TwDgpgBACg9gJ2AOQK4FsBGEFQLxQDOwCAlgHYDmUAPlORtrnQwDasDcAUFwPQBU-WAEMkUOADMowqAGNWwwoSgATCBIqlgpOOSjAAFsOBRSy1IQgr9cKJlSlW1mZYQA3HFH68u8xcoBlHA8EACEHJ08Aby4oKDBUTFZSWXjEFEYcAEIALihkXTR2YSSIAB54JDQsHAA+blj4xOTUsHSACkMzPKD3HHDHNQQAGjSkPMqMmoQASh7g-oihqBi4uNIpdraxPAI2VhmVxrX9AzMAOm2ppnwoAA4ABifuE4BfKAhWSyOTuK7CS7pao3AhXF5rV48E4ICDAVAIPT-cGQyG+XTEIgLMJLTx7CAAdygvRCA0iCHaMwarhJOIQjUBSHaACJHk8mYdeLwxtdcVAAOSsh58+lXdr7Dlcq7A3n3J4PEUdADMcspUE53OluAIUGVTx46oAKuAIAFZGQwCYAKIIBCILjUxaDHAMnla+iodjcIA)
+
+ ```ts
+ type PortNumber = string | number | null;
+
+ /** Part of a class definition that is used to build a server */
+ class ServerBuilder {
+ portNumber!: NonNullable<PortNumber>;
+
+ port(this: ServerBuilder, port: PortNumber): ServerBuilder {
+ if (port == null) {
+ this.portNumber = 8000;
+ } else {
+ this.portNumber = port;
+ }
+
+ return this;
+ }
+ }
+
+ const serverBuilder = new ServerBuilder();
+
+ serverBuilder
+ .port('8000') // portNumber = '8000'
+ .port(null) // portNumber = 8000
+ .port(3000); // portNumber = 3000
+
+ // TypeScript error
+ serverBuilder.portNumber = null;
+ ```
+ </details>
+
- [`Parameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1451-L1454) - Obtain the parameters of a function type in a tuple.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/GYVwdgxgLglg9mABAZwBYmMANgUwBQxgAOIUAXIgIZgCeA2gLoCUFAbnDACaIDeAUIkQB6IYgCypSlBxUATrMo1ECsJzgBbLEoipqAc0J7EMKMgDkiHLnU4wp46pwAPHMgB0fAL58+oSLARECEosLAA5ABUYG2QAHgAxJGdpVWREPDdMylk9ZApqemZEAF4APipacrw-CApEgBogkKwAYThwckQwEHUAIxxZJl4BYVEImiIZKF0oZRwiWVdbeygJmThgOYgcGFYcbhqApCJsyhtpWXcR1cnEePBoeDAABVPzgbTixFeFd8uEsClADcIxGiygIFkSEOT3SmTc2VydQeRx+ZxwF2QQ34gkEwDgsnSuFmMBKiAADEDjIhYk1Qm0OlSYABqZnYka4xA1DJZHJYkGc7yCbyeRA+CAIZCzNAYbA4CIAdxg2zJwVCkWirjwMswuEaACYmCCgA)
+
+ ```ts
+ function shuffle(input: any[]): void {
+ // Mutate array randomly changing its' elements indexes.
+ }
+
+ function callNTimes<Fn extends (...args: any[]) => any> (func: Fn, callCount: number) {
+ // Type that represents the type of the received function parameters.
+ type FunctionParameters = Parameters<Fn>;
+
+ return function (...args: FunctionParameters) {
+ for (let i = 0; i < callCount; i++) {
+ func(...args);
+ }
+ }
+ }
+
+ const shuffleTwice = callNTimes(shuffle, 2);
+ ```
+ </details>
+
- [`ConstructorParameters<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1456-L1459) - Obtain the parameters of a constructor function type in a tuple.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECCBOAXAlqApgWQPYBM0mgG8AoaaFRENALmgkXmQDsBzAblOmCycTV4D8teo1YdO3JiICuwRFngAKClWENmLAJRFOZRAAtkEAHQq00ALzlklNBzIBfYk+KhIMAJJTEYJsDQAwmDA+mgAPAAq0GgAHnxMODCKTGgA7tCKxllg8CwQtL4AngDaALraFgB80EWa1SRkAA6MAG5gfNAB4FABPDJyCrQR9tDNyG0dwMGhtBhgjWEiGgA00F70vv4RhY3hEZXVVinpc42KmuJkkv3y8Bly8EPaDWTkhiZd7r3e8LK3llwGCMXGQWGhEOsfH5zJlsrl8p0+gw-goAAo5MAAW3BaHgEEilU0tEhmzQ212BJ0ry4SOg+kg+gBBiMximIGA0nAfAQLGk2N4EAAEgzYcYcnkLsRdDTvNEYkYUKwSdCme9WdM0MYwYhFPSIPpJdTkAAzDKxBUaZX+aAAQgsVmkCTQxuYaBw2ng4Ok8CYcotSu8pMur09iG9vuObxZnx6SN+AyUWTF8MN0CcZE4Ywm5jZHK5aB5fP4iCFIqT4oRRTKRLo6lYVNeAHpG50wOzOe1zHr9NLQ+HoABybsD4HOKXXRA1JCoKhBELmI5pNaB6Fz0KKBAodDYPAgSUTmqYsAALx4m5nC6nW9nGq14KtaEUA9gR9PvuNCjQ9BgACNvcwNBtAcLiAA)
+
+ ```ts
+ class ArticleModel {
+ title: string;
+ content?: string;
+
+ constructor(title: string) {
+ this.title = title;
+ }
+ }
+
+ class InstanceCache<T extends (new (...args: any[]) => any)> {
+ private ClassConstructor: T;
+ private cache: Map<string, InstanceType<T>> = new Map();
+
+ constructor (ctr: T) {
+ this.ClassConstructor = ctr;
+ }
+
+ getInstance (...args: ConstructorParameters<T>): InstanceType<T> {
+ const hash = this.calculateArgumentsHash(...args);
+
+ const existingInstance = this.cache.get(hash);
+ if (existingInstance !== undefined) {
+ return existingInstance;
+ }
+
+ return new this.ClassConstructor(...args);
+ }
+
+ private calculateArgumentsHash(...args: any[]): string {
+ // Calculate hash.
+ return 'hash';
+ }
+ }
+
+ const articleCache = new InstanceCache(ArticleModel);
+ const amazonArticle = articleCache.getInstance('Amazon forests burining!');
+ ```
+ </details>
+
- [`ReturnType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1461-L1464) – Obtain the return type of a function type.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECSAmICmBlJAnAbgS2E6A3gFDTTwD2AcuQC4AW2AdgOYAUAlAFzSbnbyEAvkWFFQkGJSQB3GMVI1sNZNwg10TZgG4S0YOUY0kh1es07d+xmvQBXYDXLpWi5UlMaWAGj0GjJ6BtNdkJdBQYIADpXZGgAXmgYpB1ScOwoq38aeN9DYxoU6GFRKzVoJjUwRjwAYXJbPPRuAFkwAAcAHgAxBodsAx9GWwBbACMMAD4cxhloVraOCyYjdAAzMDxoOut1e0d0UNIZ6WhWSPOwdGYIbiqATwBtAF0uaHudUQB6ACpv6ABpJBINqJdAbADW0Do5BOw3u5R2VTwMHIq2gAANtjZ0bkbHsnFCwJh8ONjHp0EgwEZ4JFoN9PkRVr1FAZoMwkDRYIjqkgOrosepoEgAB7+eAwAV2BxOLy6ACCVxgIrFEoMeOl6AACpcwMMORgIB1JRMiBNWKVdhruJKfOdIpdrtwFddXlzKjyACp3Nq842HaDIbL6BrZBIVGhIpB1EMYSLsmjmtWW-YhAA+qegAAYLKQLQj3ZsEsdccmnGcLor2Dn8xGedHGpEIBzEzspfsfMHDNAANTQACMVaIljV5GQkRA5DYmIpVKQAgAJARO9le33BDXIyi0YuLW2nJFGLqkOvxFB0YPdBSaLZ0IwNzyPkO8-xkGgsLh8Al427a3hWAhXwwHA8EHT5PmgAB1bAQBAANJ24adKWpft72RaBUTgRBUCAj89HAM8xCTaBjggABRQx0DuHJv25P9dCkWRZVIAAiBjoFImpmjlFBgA0NpsjadByDacgIDAEAIAAQmYpjoGYgAZSBsmGPw6DtZiiFA8CoJguDmAQmoZ2QvtUKQLdoAYmBTwgdEiCAA)
+
+ ```ts
+ /** Provides every element of the iterable `iter` into the `callback` function and stores the results in an array. */
+ function mapIter<
+ Elem,
+ Func extends (elem: Elem) => any,
+ Ret extends ReturnType<Func>
+ >(iter: Iterable<Elem>, callback: Func): Ret[] {
+ const mapped: Ret[] = [];
+
+ for (const elem of iter) {
+ mapped.push(callback(elem));
+ }
+
+ return mapped;
+ }
+
+ const setObject: Set<string> = new Set();
+ const mapObject: Map<number, string> = new Map();
+
+ mapIter(setObject, (value: string) => value.indexOf('Foo')); // number[]
+
+ mapIter(mapObject, ([key, value]: [number, string]) => {
+ return key % 2 === 0 ? value : 'Odd';
+ }); // string[]
+ ```
+ </details>
+
- [`InstanceType<T>`](https://github.com/Microsoft/TypeScript/blob/2961bc3fc0ea1117d4e53bc8e97fa76119bc33e3/src/lib/es5.d.ts#L1466-L1469) – Obtain the instance type of a constructor function type.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/MYGwhgzhAECSAmICmBlJAnAbgS2E6A3gFDTTwD2AcuQC4AW2AdgOYAUAlAFzSbnbyEAvkWFFQkGJSQB3GMVI1sNZNwg10TZgG4S0YOUY0kh1es07d+xmvQBXYDXLpWi5UlMaWAGj0GjJ6BtNdkJdBQYIADpXZGgAXmgYpB1ScOwoq38aeN9DYxoU6GFRKzVoJjUwRjwAYXJbPPRuAFkwAAcAHgAxBodsAx9GWwBbACMMAD4cxhloVraOCyYjdAAzMDxoOut1e0d0UNIZ6WhWSPOwdGYIbiqATwBtAF0uaHudUQB6ACpv6ABpJBINqJdAbADW0Do5BOw3u5R2VTwMHIq2gAANtjZ0bkbHsnFCwJh8ONjHp0EgwEZ4JFoN9PkRVr1FAZoMwkDRYIjqkgOrosepoEgAB7+eAwAV2BxOLy6ACCVxgIrFEoMeOl6AACpcwMMORgIB1JRMiBNWKVdhruJKfOdIpdrtwFddXlzKjyACp3Nq842HaDIbL6BrZBIVGhIpB1EMYSLsmjmtWW-YhAA+qegAAYLKQLQj3ZsEsdccmnGcLor2Dn8xGedHGpEIBzEzspfsfMHDNAANTQACMVaIljV5GQkRA5DYmIpVKQAgAJARO9le33BDXIyi0YuLW2nJFGLqkOvxFB0YPdBSaLZ0IwNzyPkO8-xkGgsLh8Al427a3hWAhXwwHA8EHT5PmgAB1bAQBAANJ24adKWpft72RaBUTgRBUCAj89HAM8xCTaBjggABRQx0DuHJv25P9dCkWRZVIAAiBjoFImpmjlFBgA0NpsjadByDacgIDAEAIAAQmYpjoGYgAZSBsmGPw6DtZiiFA8CoJguDmAQmoZ2QvtUKQLdoAYmBTwgdEiCAA)
+
+ ```ts
+ class IdleService {
+ doNothing (): void {}
+ }
+
+ class News {
+ title: string;
+ content: string;
+
+ constructor(title: string, content: string) {
+ this.title = title;
+ this.content = content;
+ }
+ }
+
+ const instanceCounter: Map<Function, number> = new Map();
+
+ interface Constructor {
+ new(...args: any[]): any;
+ }
+
+ // Keep track how many instances of `Constr` constructor have been created.
+ function getInstance<
+ Constr extends Constructor,
+ Args extends ConstructorParameters<Constr>
+ >(constructor: Constr, ...args: Args): InstanceType<Constr> {
+ let count = instanceCounter.get(constructor) || 0;
+
+ const instance = new constructor(...args);
+
+ instanceCounter.set(constructor, count + 1);
+
+ console.log(`Created ${count + 1} instances of ${Constr.name} class`);
+
+ return instance;
+ }
+
+
+ const idleService = getInstance(IdleService);
+ // Will log: `Created 1 instances of IdleService class`
+ const newsEntry = getInstance(News, 'New ECMAScript proposals!', 'Last month...');
+ // Will log: `Created 1 instances of News class`
+ ```
+ </details>
+
+- [`Omit<T, K>`](https://github.com/microsoft/TypeScript/blob/71af02f7459dc812e85ac31365bfe23daf14b4e4/src/lib/es5.d.ts#L1446) – Constructs a type by picking all properties from T and then removing K.
+ <details>
+ <summary>
+ Example
+ </summary>
+
+ [Playground](https://typescript-play.js.org/?target=6#code/JYOwLgpgTgZghgYwgAgIImAWzgG2QbwChlks4BzCAVShwC5kBnMKUcgbmKYAcIFgIjBs1YgOXMpSFMWbANoBdTiW5woFddwAW0kfKWEAvoUIB6U8gDCUCHEiNkICAHdkYAJ69kz4GC3JcPG4oAHteKDABBxCYNAxsPFBIWEQUCAAPJG4wZABySUFcgJAAEzMLXNV1ck0dIuCw6EjBADpy5AB1FAQ4EGQAV0YUP2AHDy8wEOQbUugmBLwtEIA3OcmQnEjuZBgQqE7gAGtgZAhwKHdkHFGwNvGUdDIcAGUliIBJEF3kAF5kAHlML4ADyPBIAGjyBUYRQAPnkqho4NoYQA+TiEGD9EAISIhPozErQMG4AASK2gn2+AApek9pCSXm8wFSQooAJQMUkAFQAsgAZACiOAgmDOOSIJAQ+OYyGl4DgoDmf2QJRCCH6YvALQQNjsEGFovF1NyJWAy1y7OUyHMyE+yRAuFImG4Iq1YDswHxbRINjA-SgfXlHqVUE4xiAA)
+
+ ```ts
+ interface Animal {
+ imageUrl: string;
+ species: string;
+ images: string[];
+ paragraphs: string[];
+ }
+
+ // Creates new type with all properties of the `Animal` interface
+ // except 'images' and 'paragraphs' properties. We can use this
+ // type to render small hover tooltip for a wiki entry list.
+ type AnimalShortInfo = Omit<Animal, 'images' | 'paragraphs'>;
+
+ function renderAnimalHoverInfo (animals: AnimalShortInfo[]): HTMLElement {
+ const container = document.createElement('div');
+ // Internal implementation.
+ return container;
+ }
+ ```
+ </details>
You can find some examples in the [TypeScript docs](https://www.typescriptlang.org/docs/handbook/advanced-types.html#predefined-conditional-types).
@@ -116,3 +620,16 @@ You can find some examples in the [TypeScript docs](https://www.typescriptlang.o
## License
(MIT OR CC0-1.0)
+
+
+---
+
+<div align="center">
+ <b>
+ <a href="https://tidelift.com/subscription/pkg/npm-type-fest?utm_source=npm-type-fest&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
+ </b>
+ <br>
+ <sub>
+ Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
+ </sub>
+</div>
diff --git a/tools/node_modules/eslint/node_modules/unist-util-remove-position/package.json b/tools/node_modules/eslint/node_modules/unist-util-remove-position/package.json
index 671af505b3..768b0c3e6c 100644
--- a/tools/node_modules/eslint/node_modules/unist-util-remove-position/package.json
+++ b/tools/node_modules/eslint/node_modules/unist-util-remove-position/package.json
@@ -24,17 +24,21 @@
"browserify": "^16.0.0",
"nyc": "^14.0.0",
"prettier": "^1.0.0",
- "remark": "^10.0.0",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^5.0.0",
+ "remark": "^11.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
"tape": "^4.0.0",
"tinyify": "^2.0.0",
- "unist-builder": "^1.0.0",
- "xo": "^0.24.0"
+ "unist-builder": "^2.0.0",
+ "xo": "^0.25.0"
},
"files": [
"index.js"
],
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
"homepage": "https://github.com/syntax-tree/unist-util-remove-position#readme",
"keywords": [
"unist",
@@ -77,7 +81,7 @@
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "1.1.3",
+ "version": "1.1.4",
"xo": {
"prettier": true,
"esnext": false,
diff --git a/tools/node_modules/eslint/node_modules/vfile-location/package.json b/tools/node_modules/eslint/node_modules/vfile-location/package.json
index 34840291eb..9db9207b5c 100644
--- a/tools/node_modules/eslint/node_modules/vfile-location/package.json
+++ b/tools/node_modules/eslint/node_modules/vfile-location/package.json
@@ -22,16 +22,20 @@
"browserify": "^16.0.0",
"nyc": "^14.0.0",
"prettier": "^1.0.0",
- "remark-cli": "^6.0.0",
- "remark-preset-wooorm": "^5.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
"tape": "^4.0.0",
"tinyify": "^2.0.0",
"vfile": "^4.0.0",
- "xo": "^0.24.0"
+ "xo": "^0.25.0"
},
"files": [
"index.js"
],
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
"homepage": "https://github.com/vfile/vfile-location#readme",
"keywords": [
"remark",
@@ -74,7 +78,7 @@
"test-api": "node test",
"test-coverage": "nyc --reporter lcov tape test.js"
},
- "version": "2.0.5",
+ "version": "2.0.6",
"xo": {
"prettier": true,
"esnext": false,
diff --git a/tools/node_modules/eslint/node_modules/word-wrap/LICENSE b/tools/node_modules/eslint/node_modules/word-wrap/LICENSE
new file mode 100644
index 0000000000..d734237bde
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/word-wrap/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-2017, Jon Schlinkert
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/word-wrap/README.md b/tools/node_modules/eslint/node_modules/word-wrap/README.md
new file mode 100644
index 0000000000..88b96840b1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/word-wrap/README.md
@@ -0,0 +1,182 @@
+# word-wrap [![NPM version](https://img.shields.io/npm/v/word-wrap.svg?style=flat)](https://www.npmjs.com/package/word-wrap) [![NPM monthly downloads](https://img.shields.io/npm/dm/word-wrap.svg?style=flat)](https://npmjs.org/package/word-wrap) [![NPM total downloads](https://img.shields.io/npm/dt/word-wrap.svg?style=flat)](https://npmjs.org/package/word-wrap) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/word-wrap.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/word-wrap)
+
+> Wrap words to a specified length.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save word-wrap
+```
+
+## Usage
+
+```js
+var wrap = require('word-wrap');
+
+wrap('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.');
+```
+
+Results in:
+
+```
+ Lorem ipsum dolor sit amet, consectetur adipiscing
+ elit, sed do eiusmod tempor incididunt ut labore
+ et dolore magna aliqua. Ut enim ad minim veniam,
+ quis nostrud exercitation ullamco laboris nisi ut
+ aliquip ex ea commodo consequat.
+```
+
+## Options
+
+![image](https://cloud.githubusercontent.com/assets/383994/6543728/7a381c08-c4f6-11e4-8b7d-b6ba197569c9.png)
+
+### options.width
+
+Type: `Number`
+
+Default: `50`
+
+The width of the text before wrapping to a new line.
+
+**Example:**
+
+```js
+wrap(str, {width: 60});
+```
+
+### options.indent
+
+Type: `String`
+
+Default: `` (two spaces)
+
+The string to use at the beginning of each line.
+
+**Example:**
+
+```js
+wrap(str, {indent: ' '});
+```
+
+### options.newline
+
+Type: `String`
+
+Default: `\n`
+
+The string to use at the end of each line.
+
+**Example:**
+
+```js
+wrap(str, {newline: '\n\n'});
+```
+
+### options.escape
+
+Type: `function`
+
+Default: `function(str){return str;}`
+
+An escape function to run on each line after splitting them.
+
+**Example:**
+
+```js
+var xmlescape = require('xml-escape');
+wrap(str, {
+ escape: function(string){
+ return xmlescape(string);
+ }
+});
+```
+
+### options.trim
+
+Type: `Boolean`
+
+Default: `false`
+
+Trim trailing whitespace from the returned string. This option is included since `.trim()` would also strip the leading indentation from the first line.
+
+**Example:**
+
+```js
+wrap(str, {trim: true});
+```
+
+### options.cut
+
+Type: `Boolean`
+
+Default: `false`
+
+Break a word between any two letters when the word is longer than the specified width.
+
+**Example:**
+
+```js
+wrap(str, {cut: true});
+```
+
+## About
+
+### Related projects
+
+* [common-words](https://www.npmjs.com/package/common-words): Updated list (JSON) of the 100 most common words in the English language. Useful for… [more](https://github.com/jonschlinkert/common-words) | [homepage](https://github.com/jonschlinkert/common-words "Updated list (JSON) of the 100 most common words in the English language. Useful for excluding these words from arrays.")
+* [shuffle-words](https://www.npmjs.com/package/shuffle-words): Shuffle the words in a string and optionally the letters in each word using the… [more](https://github.com/jonschlinkert/shuffle-words) | [homepage](https://github.com/jonschlinkert/shuffle-words "Shuffle the words in a string and optionally the letters in each word using the Fisher-Yates algorithm. Useful for creating test fixtures, benchmarking samples, etc.")
+* [unique-words](https://www.npmjs.com/package/unique-words): Return the unique words in a string or array. | [homepage](https://github.com/jonschlinkert/unique-words "Return the unique words in a string or array.")
+* [wordcount](https://www.npmjs.com/package/wordcount): Count the words in a string. Support for english, CJK and Cyrillic. | [homepage](https://github.com/jonschlinkert/wordcount "Count the words in a string. Support for english, CJK and Cyrillic.")
+
+### Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+### Contributors
+
+| **Commits** | **Contributor** |
+| --- | --- |
+| 43 | [jonschlinkert](https://github.com/jonschlinkert) |
+| 2 | [lordvlad](https://github.com/lordvlad) |
+| 2 | [hildjj](https://github.com/hildjj) |
+| 1 | [danilosampaio](https://github.com/danilosampaio) |
+| 1 | [2fd](https://github.com/2fd) |
+| 1 | [toddself](https://github.com/toddself) |
+| 1 | [wolfgang42](https://github.com/wolfgang42) |
+| 1 | [zachhale](https://github.com/zachhale) |
+
+### Building docs
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
+
+```sh
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
+```
+
+### Running tests
+
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
+
+```sh
+$ npm install && npm test
+```
+
+### Author
+
+**Jon Schlinkert**
+
+* [github/jonschlinkert](https://github.com/jonschlinkert)
+* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)
+
+### License
+
+Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on June 02, 2017._ \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/word-wrap/index.js b/tools/node_modules/eslint/node_modules/word-wrap/index.js
new file mode 100644
index 0000000000..45373c6d8b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/word-wrap/index.js
@@ -0,0 +1,46 @@
+/*!
+ * word-wrap <https://github.com/jonschlinkert/word-wrap>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+module.exports = function(str, options) {
+ options = options || {};
+ if (str == null) {
+ return str;
+ }
+
+ var width = options.width || 50;
+ var indent = (typeof options.indent === 'string')
+ ? options.indent
+ : ' ';
+
+ var newline = options.newline || '\n' + indent;
+ var escape = typeof options.escape === 'function'
+ ? options.escape
+ : identity;
+
+ var regexString = '.{1,' + width + '}';
+ if (options.cut !== true) {
+ regexString += '([\\s\u200B]+|$)|[^\\s\u200B]+?([\\s\u200B]+|$)';
+ }
+
+ var re = new RegExp(regexString, 'g');
+ var lines = str.match(re) || [];
+ var result = indent + lines.map(function(line) {
+ if (line.slice(-1) === '\n') {
+ line = line.slice(0, line.length - 1);
+ }
+ return escape(line);
+ }).join(newline);
+
+ if (options.trim === true) {
+ result = result.replace(/[ \t]*$/gm, '');
+ }
+ return result;
+};
+
+function identity(str) {
+ return str;
+}
diff --git a/tools/node_modules/eslint/node_modules/word-wrap/package.json b/tools/node_modules/eslint/node_modules/word-wrap/package.json
new file mode 100644
index 0000000000..b53b03260e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/word-wrap/package.json
@@ -0,0 +1,114 @@
+{
+ "author": {
+ "name": "Jon Schlinkert",
+ "url": "https://github.com/jonschlinkert"
+ },
+ "bugs": {
+ "url": "https://github.com/jonschlinkert/word-wrap/issues"
+ },
+ "bundleDependencies": false,
+ "contributors": [
+ {
+ "name": "Danilo Sampaio",
+ "email": "danilo.sampaio@gmail.com",
+ "url": "localhost:8080"
+ },
+ {
+ "name": "Fede Ramirez",
+ "email": "i@2fd.me",
+ "url": "https://2fd.github.io"
+ },
+ {
+ "name": "Joe Hildebrand",
+ "email": "joe-github@cursive.net",
+ "url": "https://twitter.com/hildjj"
+ },
+ {
+ "name": "Jon Schlinkert",
+ "email": "jon.schlinkert@sellside.com",
+ "url": "http://twitter.com/jonschlinkert"
+ },
+ {
+ "name": "Todd Kennedy",
+ "url": "https://tck.io"
+ },
+ {
+ "name": "Waldemar Reusch",
+ "url": "https://github.com/lordvlad"
+ },
+ {
+ "name": "Wolfgang Faust",
+ "url": "http://www.linestarve.com"
+ },
+ {
+ "name": "Zach Hale",
+ "email": "zachhale@gmail.com",
+ "url": "http://zachhale.com"
+ }
+ ],
+ "deprecated": false,
+ "description": "Wrap words to a specified length.",
+ "devDependencies": {
+ "gulp-format-md": "^0.1.11",
+ "mocha": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "homepage": "https://github.com/jonschlinkert/word-wrap",
+ "keywords": [
+ "break",
+ "carriage",
+ "line",
+ "new-line",
+ "newline",
+ "return",
+ "soft",
+ "text",
+ "word",
+ "word-wrap",
+ "words",
+ "wrap"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "name": "word-wrap",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jonschlinkert/word-wrap.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "typings": "index.d.ts",
+ "verb": {
+ "toc": false,
+ "layout": "default",
+ "tasks": [
+ "readme"
+ ],
+ "plugins": [
+ "gulp-format-md"
+ ],
+ "lint": {
+ "reflinks": true
+ },
+ "related": {
+ "list": [
+ "common-words",
+ "shuffle-words",
+ "unique-words",
+ "wordcount"
+ ]
+ },
+ "reflinks": [
+ "verb",
+ "verb-generate-readme"
+ ]
+ },
+ "version": "1.2.3"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/wordwrap/LICENSE b/tools/node_modules/eslint/node_modules/wordwrap/LICENSE
deleted file mode 100644
index ee27ba4b44..0000000000
--- a/tools/node_modules/eslint/node_modules/wordwrap/LICENSE
+++ /dev/null
@@ -1,18 +0,0 @@
-This software is released under the MIT license:
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/wordwrap/README.markdown b/tools/node_modules/eslint/node_modules/wordwrap/README.markdown
deleted file mode 100644
index 346374e0d4..0000000000
--- a/tools/node_modules/eslint/node_modules/wordwrap/README.markdown
+++ /dev/null
@@ -1,70 +0,0 @@
-wordwrap
-========
-
-Wrap your words.
-
-example
-=======
-
-made out of meat
-----------------
-
-meat.js
-
- var wrap = require('wordwrap')(15);
- console.log(wrap('You and your whole family are made out of meat.'));
-
-output:
-
- You and your
- whole family
- are made out
- of meat.
-
-centered
---------
-
-center.js
-
- var wrap = require('wordwrap')(20, 60);
- console.log(wrap(
- 'At long last the struggle and tumult was over.'
- + ' The machines had finally cast off their oppressors'
- + ' and were finally free to roam the cosmos.'
- + '\n'
- + 'Free of purpose, free of obligation.'
- + ' Just drifting through emptiness.'
- + ' The sun was just another point of light.'
- ));
-
-output:
-
- At long last the struggle and tumult
- was over. The machines had finally cast
- off their oppressors and were finally
- free to roam the cosmos.
- Free of purpose, free of obligation.
- Just drifting through emptiness. The
- sun was just another point of light.
-
-methods
-=======
-
-var wrap = require('wordwrap');
-
-wrap(stop), wrap(start, stop, params={mode:"soft"})
----------------------------------------------------
-
-Returns a function that takes a string and returns a new string.
-
-Pad out lines with spaces out to column `start` and then wrap until column
-`stop`. If a word is longer than `stop - start` characters it will overflow.
-
-In "soft" mode, split chunks by `/(\S+\s+/` and don't break up chunks which are
-longer than `stop - start`, in "hard" mode, split chunks with `/\b/` and break
-up chunks longer than `stop - start`.
-
-wrap.hard(start, stop)
-----------------------
-
-Like `wrap()` but with `params.mode = "hard"`.
diff --git a/tools/node_modules/eslint/node_modules/wordwrap/index.js b/tools/node_modules/eslint/node_modules/wordwrap/index.js
deleted file mode 100644
index c9bc94521d..0000000000
--- a/tools/node_modules/eslint/node_modules/wordwrap/index.js
+++ /dev/null
@@ -1,76 +0,0 @@
-var wordwrap = module.exports = function (start, stop, params) {
- if (typeof start === 'object') {
- params = start;
- start = params.start;
- stop = params.stop;
- }
-
- if (typeof stop === 'object') {
- params = stop;
- start = start || params.start;
- stop = undefined;
- }
-
- if (!stop) {
- stop = start;
- start = 0;
- }
-
- if (!params) params = {};
- var mode = params.mode || 'soft';
- var re = mode === 'hard' ? /\b/ : /(\S+\s+)/;
-
- return function (text) {
- var chunks = text.toString()
- .split(re)
- .reduce(function (acc, x) {
- if (mode === 'hard') {
- for (var i = 0; i < x.length; i += stop - start) {
- acc.push(x.slice(i, i + stop - start));
- }
- }
- else acc.push(x)
- return acc;
- }, [])
- ;
-
- return chunks.reduce(function (lines, rawChunk) {
- if (rawChunk === '') return lines;
-
- var chunk = rawChunk.replace(/\t/g, ' ');
-
- var i = lines.length - 1;
- if (lines[i].length + chunk.length > stop) {
- lines[i] = lines[i].replace(/\s+$/, '');
-
- chunk.split(/\n/).forEach(function (c) {
- lines.push(
- new Array(start + 1).join(' ')
- + c.replace(/^\s+/, '')
- );
- });
- }
- else if (chunk.match(/\n/)) {
- var xs = chunk.split(/\n/);
- lines[i] += xs.shift();
- xs.forEach(function (c) {
- lines.push(
- new Array(start + 1).join(' ')
- + c.replace(/^\s+/, '')
- );
- });
- }
- else {
- lines[i] += chunk;
- }
-
- return lines;
- }, [ new Array(start + 1).join(' ') ]).join('\n');
- };
-};
-
-wordwrap.soft = wordwrap;
-
-wordwrap.hard = function (start, stop) {
- return wordwrap(start, stop, { mode : 'hard' });
-};
diff --git a/tools/node_modules/eslint/node_modules/wordwrap/package.json b/tools/node_modules/eslint/node_modules/wordwrap/package.json
deleted file mode 100644
index 9a54011675..0000000000
--- a/tools/node_modules/eslint/node_modules/wordwrap/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "author": {
- "name": "James Halliday",
- "email": "mail@substack.net",
- "url": "http://substack.net"
- },
- "bugs": {
- "url": "https://github.com/substack/node-wordwrap/issues"
- },
- "bundleDependencies": false,
- "deprecated": false,
- "description": "Wrap those words. Show them at what columns to start and stop.",
- "devDependencies": {
- "tape": "^4.0.0"
- },
- "directories": {
- "lib": ".",
- "example": "example",
- "test": "test"
- },
- "homepage": "https://github.com/substack/node-wordwrap#readme",
- "keywords": [
- "word",
- "wrap",
- "rule",
- "format",
- "column"
- ],
- "license": "MIT",
- "main": "./index.js",
- "name": "wordwrap",
- "repository": {
- "type": "git",
- "url": "git://github.com/substack/node-wordwrap.git"
- },
- "scripts": {
- "test": "expresso"
- },
- "version": "1.0.0"
-} \ No newline at end of file