diff --git a/node_modules/graceful-fs/README.md b/node_modules/graceful-fs/README.md
index 5273a50ad6..82d6e4daf0 100644
--- a/node_modules/graceful-fs/README.md
+++ b/node_modules/graceful-fs/README.md
@@ -30,9 +30,19 @@ the directory.
var fs = require('graceful-fs')
// now go and do stuff with it...
-fs.readFileSync('some-file-or-whatever')
+fs.readFile('some-file-or-whatever', (err, data) => {
+ // Do stuff here.
+})
```
+## Sync methods
+
+This module cannot intercept or handle `EMFILE` or `ENFILE` errors from sync
+methods. If you use sync methods which open file descriptors then you are
+responsible for dealing with any errors.
+
+This is a known limitation, not a bug.
+
## Global Patching
If you want to patch the global fs module (or any other fs-like
diff --git a/node_modules/graceful-fs/clone.js b/node_modules/graceful-fs/clone.js
index 028356c96e..dff3cc8c50 100644
--- a/node_modules/graceful-fs/clone.js
+++ b/node_modules/graceful-fs/clone.js
@@ -2,12 +2,16 @@
module.exports = clone
+var getPrototypeOf = Object.getPrototypeOf || function (obj) {
+ return obj.__proto__
+}
+
function clone (obj) {
if (obj === null || typeof obj !== 'object')
return obj
if (obj instanceof Object)
- var copy = { __proto__: obj.__proto__ }
+ var copy = { __proto__: getPrototypeOf(obj) }
else
var copy = Object.create(null)
diff --git a/node_modules/graceful-fs/graceful-fs.js b/node_modules/graceful-fs/graceful-fs.js
index 8c75ee259e..947cd94bb4 100644
--- a/node_modules/graceful-fs/graceful-fs.js
+++ b/node_modules/graceful-fs/graceful-fs.js
@@ -21,6 +21,14 @@ if (typeof Symbol === 'function' && typeof Symbol.for === 'function') {
function noop () {}
+function publishQueue(context, queue) {
+ Object.defineProperty(context, gracefulQueue, {
+ get: function() {
+ return queue
+ }
+ })
+}
+
var debug = noop
if (util.debuglog)
debug = util.debuglog('gfs4')
@@ -32,14 +40,10 @@ else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || ''))
}
// Once time initialization
-if (!global[gracefulQueue]) {
+if (!fs[gracefulQueue]) {
// This queue can be shared by multiple loaded instances
- var queue = []
- Object.defineProperty(global, gracefulQueue, {
- get: function() {
- return queue
- }
- })
+ var queue = global[gracefulQueue] || []
+ publishQueue(fs, queue)
// Patch fs.close/closeSync to shared queue version, because we need
// to retry() whenever a close happens *anywhere* in the program.
@@ -50,7 +54,7 @@ if (!global[gracefulQueue]) {
return fs$close.call(fs, fd, function (err) {
// This function uses the graceful-fs shared queue
if (!err) {
- retry()
+ resetQueue()
}
if (typeof cb === 'function')
@@ -68,7 +72,7 @@ if (!global[gracefulQueue]) {
function closeSync (fd) {
// This function uses the graceful-fs shared queue
fs$closeSync.apply(fs, arguments)
- retry()
+ resetQueue()
}
Object.defineProperty(closeSync, previousSymbol, {
@@ -79,12 +83,16 @@ if (!global[gracefulQueue]) {
if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) {
process.on('exit', function() {
- debug(global[gracefulQueue])
- require('assert').equal(global[gracefulQueue].length, 0)
+ debug(fs[gracefulQueue])
+ require('assert').equal(fs[gracefulQueue].length, 0)
})
}
}
+if (!global[gracefulQueue]) {
+ publishQueue(global, fs[gracefulQueue]);
+}
+
module.exports = patch(clone(fs))
if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {
module.exports = patch(fs)
@@ -106,14 +114,13 @@ function patch (fs) {
return go$readFile(path, options, cb)
- function go$readFile (path, options, cb) {
+ function go$readFile (path, options, cb, startTime) {
return fs$readFile(path, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$readFile, [path, options, cb]])
+ enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
- retry()
}
})
}
@@ -127,14 +134,13 @@ function patch (fs) {
return go$writeFile(path, data, options, cb)
- function go$writeFile (path, data, options, cb) {
+ function go$writeFile (path, data, options, cb, startTime) {
return fs$writeFile(path, data, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$writeFile, [path, data, options, cb]])
+ enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
- retry()
}
})
}
@@ -149,14 +155,35 @@ function patch (fs) {
return go$appendFile(path, data, options, cb)
- function go$appendFile (path, data, options, cb) {
+ function go$appendFile (path, data, options, cb, startTime) {
return fs$appendFile(path, data, options, function (err) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$appendFile, [path, data, options, cb]])
+ enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])
+ else {
+ if (typeof cb === 'function')
+ cb.apply(this, arguments)
+ }
+ })
+ }
+ }
+
+ var fs$copyFile = fs.copyFile
+ if (fs$copyFile)
+ fs.copyFile = copyFile
+ function copyFile (src, dest, flags, cb) {
+ if (typeof flags === 'function') {
+ cb = flags
+ flags = 0
+ }
+ return go$copyFile(src, dest, flags, cb)
+
+ function go$copyFile (src, dest, flags, cb, startTime) {
+ return fs$copyFile(src, dest, flags, function (err) {
+ if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
- retry()
}
})
}
@@ -165,35 +192,26 @@ function patch (fs) {
var fs$readdir = fs.readdir
fs.readdir = readdir
function readdir (path, options, cb) {
- var args = [path]
- if (typeof options !== 'function') {
- args.push(options)
- } else {
- cb = options
- }
- args.push(go$readdir$cb)
-
- return go$readdir(args)
+ if (typeof options === 'function')
+ cb = options, options = null
- function go$readdir$cb (err, files) {
- if (files && files.sort)
- files.sort()
+ return go$readdir(path, options, cb)
- if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$readdir, [args]])
+ function go$readdir (path, options, cb, startTime) {
+ return fs$readdir(path, options, function (err, files) {
+ if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
+ enqueue([go$readdir, [path, options, cb], err, startTime || Date.now(), Date.now()])
+ else {
+ if (files && files.sort)
+ files.sort()
- else {
- if (typeof cb === 'function')
- cb.apply(this, arguments)
- retry()
- }
+ if (typeof cb === 'function')
+ cb.call(this, err, files)
+ }
+ })
}
}
- function go$readdir (args) {
- return fs$readdir.apply(fs, args)
- }
-
if (process.version.substr(0, 4) === 'v0.8') {
var legStreams = legacy(fs)
ReadStream = legStreams.ReadStream
@@ -316,14 +334,13 @@ function patch (fs) {
return go$open(path, flags, mode, cb)
- function go$open (path, flags, mode, cb) {
+ function go$open (path, flags, mode, cb, startTime) {
return fs$open(path, flags, mode, function (err, fd) {
if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))
- enqueue([go$open, [path, flags, mode, cb]])
+ enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])
else {
if (typeof cb === 'function')
cb.apply(this, arguments)
- retry()
}
})
}
@@ -334,13 +351,79 @@ function patch (fs) {
function enqueue (elem) {
debug('ENQUEUE', elem[0].name, elem[1])
- global[gracefulQueue].push(elem)
+ fs[gracefulQueue].push(elem)
+ retry()
+}
+
+// keep track of the timeout between retry() calls
+var retryTimer
+
+// reset the startTime and lastTime to now
+// this resets the start of the 60 second overall timeout as well as the
+// delay between attempts so that we'll retry these jobs sooner
+function resetQueue () {
+ var now = Date.now()
+ for (var i = 0; i < fs[gracefulQueue].length; ++i) {
+ // entries that are only a length of 2 are from an older version, don't
+ // bother modifying those since they'll be retried anyway.
+ if (fs[gracefulQueue][i].length > 2) {
+ fs[gracefulQueue][i][3] = now // startTime
+ fs[gracefulQueue][i][4] = now // lastTime
+ }
+ }
+ // call retry to make sure we're actively processing the queue
+ retry()
}
function retry () {
- var elem = global[gracefulQueue].shift()
- if (elem) {
- debug('RETRY', elem[0].name, elem[1])
- elem[0].apply(null, elem[1])
+ // clear the timer and remove it to help prevent unintended concurrency
+ clearTimeout(retryTimer)
+ retryTimer = undefined
+
+ if (fs[gracefulQueue].length === 0)
+ return
+
+ var elem = fs[gracefulQueue].shift()
+ var fn = elem[0]
+ var args = elem[1]
+ // these items may be unset if they were added by an older graceful-fs
+ var err = elem[2]
+ var startTime = elem[3]
+ var lastTime = elem[4]
+
+ // if we don't have a startTime we have no way of knowing if we've waited
+ // long enough, so go ahead and retry this item now
+ if (startTime === undefined) {
+ debug('RETRY', fn.name, args)
+ fn.apply(null, args)
+ } else if (Date.now() - startTime >= 60000) {
+ // it's been more than 60 seconds total, bail now
+ debug('TIMEOUT', fn.name, args)
+ var cb = args.pop()
+ if (typeof cb === 'function')
+ cb.call(null, err)
+ } else {
+ // the amount of time between the last attempt and right now
+ var sinceAttempt = Date.now() - lastTime
+ // the amount of time between when we first tried, and when we last tried
+ // rounded up to at least 1
+ var sinceStart = Math.max(lastTime - startTime, 1)
+ // backoff. wait longer than the total time we've been retrying, but only
+ // up to a maximum of 100ms
+ var desiredDelay = Math.min(sinceStart * 1.2, 100)
+ // it's been long enough since the last retry, do it again
+ if (sinceAttempt >= desiredDelay) {
+ debug('RETRY', fn.name, args)
+ fn.apply(null, args.concat([startTime]))
+ } else {
+ // if we can't do this job yet, push it to the end of the queue
+ // and let the next iteration check again
+ fs[gracefulQueue].push(elem)
+ }
+ }
+
+ // schedule our next run if one isn't already scheduled
+ if (retryTimer === undefined) {
+ retryTimer = setTimeout(retry, 0)
}
}
diff --git a/node_modules/graceful-fs/package.json b/node_modules/graceful-fs/package.json
index 77a29b3dac..1c646a8166 100644
--- a/node_modules/graceful-fs/package.json
+++ b/node_modules/graceful-fs/package.json
@@ -1,7 +1,7 @@
{
"name": "graceful-fs",
"description": "A drop-in replacement for fs, making various improvements.",
- "version": "4.2.3",
+ "version": "4.2.8",
"repository": {
"type": "git",
"url": "https://github.com/isaacs/node-graceful-fs"
@@ -14,7 +14,8 @@
"preversion": "npm test",
"postversion": "npm publish",
"postpublish": "git push origin --follow-tags",
- "test": "node test.js | tap -"
+ "test": "nyc --silent node test.js | tap -c -",
+ "posttest": "nyc report"
},
"keywords": [
"fs",
@@ -45,6 +46,5 @@
"legacy-streams.js",
"polyfills.js",
"clone.js"
- ],
- "dependencies": {}
+ ]
}
\ No newline at end of file
diff --git a/node_modules/graceful-fs/polyfills.js b/node_modules/graceful-fs/polyfills.js
index a5808d23f1..1287da1aa4 100644
--- a/node_modules/graceful-fs/polyfills.js
+++ b/node_modules/graceful-fs/polyfills.js
@@ -14,10 +14,14 @@ try {
process.cwd()
} catch (er) {}
-var chdir = process.chdir
-process.chdir = function(d) {
- cwd = null
- chdir.call(process, d)
+// This check is needed until node.js 12 is required
+if (typeof process.chdir === 'function') {
+ var chdir = process.chdir
+ process.chdir = function (d) {
+ cwd = null
+ chdir.call(process, d)
+ }
+ if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)
}
module.exports = patch
@@ -132,7 +136,7 @@ function patch (fs) {
}
// This ensures `util.promisify` works as it does for native `fs.read`.
- read.__proto__ = fs$read
+ if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)
return read
})(fs.read)
diff --git a/node_modules/ieee754/LICENSE b/node_modules/ieee754/LICENSE
new file mode 100644
index 0000000000..5aac82c78c
--- /dev/null
+++ b/node_modules/ieee754/LICENSE
@@ -0,0 +1,11 @@
+Copyright 2008 Fair Oaks Labs, Inc.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. 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.
+
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+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 THE COPYRIGHT HOLDER OR CONTRIBUTORS 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.
diff --git a/node_modules/ieee754/README.md b/node_modules/ieee754/README.md
new file mode 100644
index 0000000000..cb7527b3ce
--- /dev/null
+++ b/node_modules/ieee754/README.md
@@ -0,0 +1,51 @@
+# ieee754 [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
+
+[travis-image]: https://img.shields.io/travis/feross/ieee754/master.svg
+[travis-url]: https://travis-ci.org/feross/ieee754
+[npm-image]: https://img.shields.io/npm/v/ieee754.svg
+[npm-url]: https://npmjs.org/package/ieee754
+[downloads-image]: https://img.shields.io/npm/dm/ieee754.svg
+[downloads-url]: https://npmjs.org/package/ieee754
+[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
+[standard-url]: https://standardjs.com
+
+[![saucelabs][saucelabs-image]][saucelabs-url]
+
+[saucelabs-image]: https://saucelabs.com/browser-matrix/ieee754.svg
+[saucelabs-url]: https://saucelabs.com/u/ieee754
+
+### Read/write IEEE754 floating point numbers from/to a Buffer or array-like object.
+
+## install
+
+```
+npm install ieee754
+```
+
+## methods
+
+`var ieee754 = require('ieee754')`
+
+The `ieee754` object has the following functions:
+
+```
+ieee754.read = function (buffer, offset, isLE, mLen, nBytes)
+ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes)
+```
+
+The arguments mean the following:
+
+- buffer = the buffer
+- offset = offset into the buffer
+- value = value to set (only for `write`)
+- isLe = is little endian?
+- mLen = mantissa length
+- nBytes = number of bytes
+
+## what is ieee754?
+
+The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point computation. [Read more](http://en.wikipedia.org/wiki/IEEE_floating_point).
+
+## license
+
+BSD 3 Clause. Copyright (c) 2008, Fair Oaks Labs, Inc.
diff --git a/node_modules/ieee754/index.d.ts b/node_modules/ieee754/index.d.ts
new file mode 100644
index 0000000000..f1e435487f
--- /dev/null
+++ b/node_modules/ieee754/index.d.ts
@@ -0,0 +1,10 @@
+declare namespace ieee754 {
+ export function read(
+ buffer: Uint8Array, offset: number, isLE: boolean, mLen: number,
+ nBytes: number): number;
+ export function write(
+ buffer: Uint8Array, value: number, offset: number, isLE: boolean,
+ mLen: number, nBytes: number): void;
+ }
+
+ export = ieee754;
\ No newline at end of file
diff --git a/node_modules/ieee754/index.js b/node_modules/ieee754/index.js
new file mode 100644
index 0000000000..81d26c343c
--- /dev/null
+++ b/node_modules/ieee754/index.js
@@ -0,0 +1,85 @@
+/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh
*/
+exports.read = function (buffer, offset, isLE, mLen, nBytes) {
+ var e, m
+ var eLen = (nBytes * 8) - mLen - 1
+ var eMax = (1 << eLen) - 1
+ var eBias = eMax >> 1
+ var nBits = -7
+ var i = isLE ? (nBytes - 1) : 0
+ var d = isLE ? -1 : 1
+ var s = buffer[offset + i]
+
+ i += d
+
+ e = s & ((1 << (-nBits)) - 1)
+ s >>= (-nBits)
+ nBits += eLen
+ for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}
+
+ m = e & ((1 << (-nBits)) - 1)
+ e >>= (-nBits)
+ nBits += mLen
+ for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}
+
+ if (e === 0) {
+ e = 1 - eBias
+ } else if (e === eMax) {
+ return m ? NaN : ((s ? -1 : 1) * Infinity)
+ } else {
+ m = m + Math.pow(2, mLen)
+ e = e - eBias
+ }
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
+}
+
+exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
+ var e, m, c
+ var eLen = (nBytes * 8) - mLen - 1
+ var eMax = (1 << eLen) - 1
+ var eBias = eMax >> 1
+ var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
+ var i = isLE ? 0 : (nBytes - 1)
+ var d = isLE ? 1 : -1
+ var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
+
+ value = Math.abs(value)
+
+ if (isNaN(value) || value === Infinity) {
+ m = isNaN(value) ? 1 : 0
+ e = eMax
+ } else {
+ e = Math.floor(Math.log(value) / Math.LN2)
+ if (value * (c = Math.pow(2, -e)) < 1) {
+ e--
+ c *= 2
+ }
+ if (e + eBias >= 1) {
+ value += rt / c
+ } else {
+ value += rt * Math.pow(2, 1 - eBias)
+ }
+ if (value * c >= 2) {
+ e++
+ c /= 2
+ }
+
+ if (e + eBias >= eMax) {
+ m = 0
+ e = eMax
+ } else if (e + eBias >= 1) {
+ m = ((value * c) - 1) * Math.pow(2, mLen)
+ e = e + eBias
+ } else {
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
+ e = 0
+ }
+ }
+
+ for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+
+ e = (e << mLen) | m
+ eLen += mLen
+ for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+
+ buffer[offset + i - d] |= s * 128
+}
diff --git a/node_modules/ieee754/package.json b/node_modules/ieee754/package.json
new file mode 100644
index 0000000000..03fafe1329
--- /dev/null
+++ b/node_modules/ieee754/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "ieee754",
+ "description": "Read/write IEEE754 floating point numbers from/to a Buffer or array-like object",
+ "version": "1.2.1",
+ "author": {
+ "name": "Feross Aboukhadijeh",
+ "email": "feross@feross.org",
+ "url": "https://feross.org"
+ },
+ "contributors": [
+ "Romain Beauxis "
+ ],
+ "devDependencies": {
+ "airtap": "^3.0.0",
+ "standard": "*",
+ "tape": "^5.0.1"
+ },
+ "keywords": [
+ "IEEE 754",
+ "buffer",
+ "convert",
+ "floating point",
+ "ieee754"
+ ],
+ "license": "BSD-3-Clause",
+ "main": "index.js",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/feross/ieee754.git"
+ },
+ "scripts": {
+ "test": "standard && npm run test-node && npm run test-browser",
+ "test-browser": "airtap -- test/*.js",
+ "test-browser-local": "airtap --local -- test/*.js",
+ "test-node": "tape test/*.js"
+ },
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/node_modules/ignore-by-default/README.md b/node_modules/ignore-by-default/README.md
index ee7719119a..90a908d2e8 100644
--- a/node_modules/ignore-by-default/README.md
+++ b/node_modules/ignore-by-default/README.md
@@ -12,7 +12,7 @@ It's used by [AVA](https://www.npmjs.com/package/ava) and
## Installation
```
-npm install --save ignore-by-default
+npm install ignore-by-default
```
## Usage
@@ -22,5 +22,5 @@ return an array of directory names. These are the ones you should ignore.
```js
// ['.git', '.sass_cache', …]
-var ignoredDirectories = require('ignore-by-default').directories()
+const ignoredDirectories = require('ignore-by-default').directories()
```
diff --git a/node_modules/ignore-by-default/index.js b/node_modules/ignore-by-default/index.js
index c65857da50..74e03ea22d 100644
--- a/node_modules/ignore-by-default/index.js
+++ b/node_modules/ignore-by-default/index.js
@@ -1,12 +1,11 @@
'use strict'
-exports.directories = function () {
- return [
- '.git', // Git repository files, see
- '.nyc_output', // Temporary directory where nyc stores coverage data, see
- '.sass-cache', // Cache folder for node-sass, see
- 'bower_components', // Where Bower packages are installed, see
- 'coverage', // Standard output directory for code coverage reports, see
- 'node_modules' // Where Node modules are installed, see
- ]
-}
+exports.directories = () => [
+ '.git', // Git repository files, see
+ '.log', // Log files emitted by tools such as `tsserver`, see
+ '.nyc_output', // Temporary directory where nyc stores coverage data, see
+ '.sass-cache', // Cache folder for node-sass, see
+ 'bower_components', // Where Bower packages are installed, see
+ 'coverage', // Standard output directory for code coverage reports, see
+ 'node_modules' // Where Node modules are installed, see
+]
diff --git a/node_modules/ignore-by-default/package.json b/node_modules/ignore-by-default/package.json
index 30225ada37..67feb562c2 100644
--- a/node_modules/ignore-by-default/package.json
+++ b/node_modules/ignore-by-default/package.json
@@ -1,7 +1,10 @@
{
"name": "ignore-by-default",
- "version": "1.0.1",
+ "version": "2.0.0",
"description": "A list of directories you should ignore by default",
+ "engines": {
+ "node": ">=10 <11 || >=12 <13 || >=14"
+ },
"main": "index.js",
"files": [
"index.js"
@@ -28,7 +31,7 @@
},
"homepage": "https://github.com/novemberborn/ignore-by-default#readme",
"devDependencies": {
- "figures": "^1.4.0",
- "standard": "^6.0.4"
+ "figures": "^3.2.0",
+ "standard": "^14.3.4"
}
}
\ No newline at end of file
diff --git a/node_modules/ini/ini.js b/node_modules/ini/ini.js
index b576f08d7a..7d05a719b0 100644
--- a/node_modules/ini/ini.js
+++ b/node_modules/ini/ini.js
@@ -1,16 +1,11 @@
-exports.parse = exports.decode = decode
+const { hasOwnProperty } = Object.prototype
-exports.stringify = exports.encode = encode
-
-exports.safe = safe
-exports.unsafe = unsafe
-
-var eol = typeof process !== 'undefined' &&
+const eol = typeof process !== 'undefined' &&
process.platform === 'win32' ? '\r\n' : '\n'
-function encode (obj, opt) {
- var children = []
- var out = ''
+const encode = (obj, opt) => {
+ const children = []
+ let out = ''
if (typeof opt === 'string') {
opt = {
@@ -18,93 +13,90 @@ function encode (obj, opt) {
whitespace: false,
}
} else {
- opt = opt || {}
+ opt = opt || Object.create(null)
opt.whitespace = opt.whitespace === true
}
- var separator = opt.whitespace ? ' = ' : '='
+ const separator = opt.whitespace ? ' = ' : '='
- Object.keys(obj).forEach(function (k, _, __) {
- var val = obj[k]
+ for (const k of Object.keys(obj)) {
+ const val = obj[k]
if (val && Array.isArray(val)) {
- val.forEach(function (item) {
+ for (const item of val)
out += safe(k + '[]') + separator + safe(item) + '\n'
- })
} else if (val && typeof val === 'object')
children.push(k)
else
out += safe(k) + separator + safe(val) + eol
- })
+ }
if (opt.section && out.length)
out = '[' + safe(opt.section) + ']' + eol + out
- children.forEach(function (k, _, __) {
- var nk = dotSplit(k).join('\\.')
- var section = (opt.section ? opt.section + '.' : '') + nk
- var child = encode(obj[k], {
- section: section,
- whitespace: opt.whitespace,
+ for (const k of children) {
+ const nk = dotSplit(k).join('\\.')
+ const section = (opt.section ? opt.section + '.' : '') + nk
+ const { whitespace } = opt
+ const child = encode(obj[k], {
+ section,
+ whitespace,
})
if (out.length && child.length)
out += eol
out += child
- })
+ }
return out
}
-function dotSplit (str) {
- return str.replace(/\1/g, '\u0002LITERAL\\1LITERAL\u0002')
+const dotSplit = str =>
+ str.replace(/\1/g, '\u0002LITERAL\\1LITERAL\u0002')
.replace(/\\\./g, '\u0001')
- .split(/\./).map(function (part) {
- return part.replace(/\1/g, '\\.')
- .replace(/\2LITERAL\\1LITERAL\2/g, '\u0001')
- })
-}
-
-function decode (str) {
- var out = {}
- var p = out
- var section = null
+ .split(/\./)
+ .map(part =>
+ part.replace(/\1/g, '\\.')
+ .replace(/\2LITERAL\\1LITERAL\2/g, '\u0001'))
+
+const decode = str => {
+ const out = Object.create(null)
+ let p = out
+ let section = null
// section |key = value
- var re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i
- var lines = str.split(/[\r\n]+/g)
+ const re = /^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i
+ const lines = str.split(/[\r\n]+/g)
- lines.forEach(function (line, _, __) {
+ for (const line of lines) {
if (!line || line.match(/^\s*[;#]/))
- return
- var match = line.match(re)
+ continue
+ const match = line.match(re)
if (!match)
- return
+ continue
if (match[1] !== undefined) {
section = unsafe(match[1])
if (section === '__proto__') {
// not allowed
// keep parsing the section, but don't attach it.
- p = {}
- return
+ p = Object.create(null)
+ continue
}
- p = out[section] = out[section] || {}
- return
+ p = out[section] = out[section] || Object.create(null)
+ continue
}
- var key = unsafe(match[2])
+ const keyRaw = unsafe(match[2])
+ const isArray = keyRaw.length > 2 && keyRaw.slice(-2) === '[]'
+ const key = isArray ? keyRaw.slice(0, -2) : keyRaw
if (key === '__proto__')
- return
- var value = match[3] ? unsafe(match[4]) : true
- switch (value) {
- case 'true':
- case 'false':
- case 'null': value = JSON.parse(value)
- }
+ continue
+ const valueRaw = match[3] ? unsafe(match[4]) : true
+ const value = valueRaw === 'true' ||
+ valueRaw === 'false' ||
+ valueRaw === 'null' ? JSON.parse(valueRaw)
+ : valueRaw
// Convert keys with '[]' suffix to an array
- if (key.length > 2 && key.slice(-2) === '[]') {
- key = key.substring(0, key.length - 2)
- if (key === '__proto__')
- return
- if (!p[key])
+ if (isArray) {
+ if (!hasOwnProperty.call(p, key))
p[key] = []
else if (!Array.isArray(p[key]))
p[key] = [p[key]]
@@ -116,48 +108,48 @@ function decode (str) {
p[key].push(value)
else
p[key] = value
- })
+ }
// {a:{y:1},"a.b":{x:2}} --> {a:{y:1,b:{x:2}}}
// use a filter to return the keys that have to be deleted.
- Object.keys(out).filter(function (k, _, __) {
- if (!out[k] ||
- typeof out[k] !== 'object' ||
- Array.isArray(out[k]))
- return false
+ const remove = []
+ for (const k of Object.keys(out)) {
+ if (!hasOwnProperty.call(out, k) ||
+ typeof out[k] !== 'object' ||
+ Array.isArray(out[k]))
+ continue
// see if the parent section is also an object.
// if so, add it to that, and mark this one for deletion
- var parts = dotSplit(k)
- var p = out
- var l = parts.pop()
- var nl = l.replace(/\\\./g, '.')
- parts.forEach(function (part, _, __) {
+ const parts = dotSplit(k)
+ let p = out
+ const l = parts.pop()
+ const nl = l.replace(/\\\./g, '.')
+ for (const part of parts) {
if (part === '__proto__')
- return
- if (!p[part] || typeof p[part] !== 'object')
- p[part] = {}
+ continue
+ if (!hasOwnProperty.call(p, part) || typeof p[part] !== 'object')
+ p[part] = Object.create(null)
p = p[part]
- })
+ }
if (p === out && nl === l)
- return false
+ continue
p[nl] = out[k]
- return true
- }).forEach(function (del, _, __) {
+ remove.push(k)
+ }
+ for (const del of remove)
delete out[del]
- })
return out
}
-function isQuoted (val) {
- return (val.charAt(0) === '"' && val.slice(-1) === '"') ||
+const isQuoted = val =>
+ (val.charAt(0) === '"' && val.slice(-1) === '"') ||
(val.charAt(0) === "'" && val.slice(-1) === "'")
-}
-function safe (val) {
- return (typeof val !== 'string' ||
+const safe = val =>
+ (typeof val !== 'string' ||
val.match(/[=\r\n]/) ||
val.match(/^\[/) ||
(val.length > 1 &&
@@ -165,9 +157,8 @@ function safe (val) {
val !== val.trim())
? JSON.stringify(val)
: val.replace(/;/g, '\\;').replace(/#/g, '\\#')
-}
-function unsafe (val, doUnesc) {
+const unsafe = (val, doUnesc) => {
val = (val || '').trim()
if (isQuoted(val)) {
// remove the single quotes before calling JSON.parse
@@ -179,10 +170,10 @@ function unsafe (val, doUnesc) {
} catch (_) {}
} else {
// walk the val to find the first not-escaped ; character
- var esc = false
- var unesc = ''
- for (var i = 0, l = val.length; i < l; i++) {
- var c = val.charAt(i)
+ let esc = false
+ let unesc = ''
+ for (let i = 0, l = val.length; i < l; i++) {
+ const c = val.charAt(i)
if (esc) {
if ('\\;#'.indexOf(c) !== -1)
unesc += c
@@ -204,3 +195,12 @@ function unsafe (val, doUnesc) {
}
return val
}
+
+module.exports = {
+ parse: decode,
+ decode,
+ stringify: encode,
+ encode,
+ safe,
+ unsafe,
+}
diff --git a/node_modules/ini/package.json b/node_modules/ini/package.json
index 10738d91b5..d636647ff6 100644
--- a/node_modules/ini/package.json
+++ b/node_modules/ini/package.json
@@ -2,7 +2,7 @@
"author": "Isaac Z. Schlueter (http://blog.izs.me/)",
"name": "ini",
"description": "An ini encoder/decoder for node",
- "version": "1.3.8",
+ "version": "2.0.0",
"repository": {
"type": "git",
"url": "git://github.com/isaacs/ini.git"
@@ -29,5 +29,8 @@
"license": "ISC",
"files": [
"ini.js"
- ]
+ ],
+ "engines": {
+ "node": ">=10"
+ }
}
\ No newline at end of file
diff --git a/node_modules/is-installed-globally/index.js b/node_modules/is-installed-globally/index.js
index 0fb4285782..7fefcda3e8 100644
--- a/node_modules/is-installed-globally/index.js
+++ b/node_modules/is-installed-globally/index.js
@@ -9,7 +9,7 @@ module.exports = (() => {
isPathInside(__dirname, globalDirs.yarn.packages) ||
isPathInside(__dirname, fs.realpathSync(globalDirs.npm.packages))
);
- } catch (_) {
+ } catch {
return false;
}
})();
diff --git a/node_modules/is-installed-globally/license b/node_modules/is-installed-globally/license
index e7af2f7710..fa7ceba3eb 100644
--- a/node_modules/is-installed-globally/license
+++ b/node_modules/is-installed-globally/license
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) Sindre Sorhus (sindresorhus.com)
+Copyright (c) Sindre Sorhus (https://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:
diff --git a/node_modules/is-installed-globally/package.json b/node_modules/is-installed-globally/package.json
index bad8f8918d..2a7457ea20 100644
--- a/node_modules/is-installed-globally/package.json
+++ b/node_modules/is-installed-globally/package.json
@@ -1,6 +1,6 @@
{
"name": "is-installed-globally",
- "version": "0.3.2",
+ "version": "0.4.0",
"description": "Check if your package was installed globally",
"license": "MIT",
"repository": "sindresorhus/is-installed-globally",
@@ -8,10 +8,10 @@
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
+ "url": "https://sindresorhus.com"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"scripts": {
"test": "xo && ava && tsd"
@@ -39,16 +39,16 @@
"binary"
],
"dependencies": {
- "global-dirs": "^2.0.1",
- "is-path-inside": "^3.0.1"
+ "global-dirs": "^3.0.0",
+ "is-path-inside": "^3.0.2"
},
"devDependencies": {
"ava": "^2.4.0",
- "cpy": "^7.3.0",
- "del": "^5.1.0",
- "execa": "^2.0.4",
- "make-dir": "^3.0.0",
- "tsd": "^0.10.0",
- "xo": "^0.25.3"
+ "cpy": "^8.1.1",
+ "del": "^6.0.0",
+ "execa": "^5.0.0",
+ "make-dir": "^3.1.0",
+ "tsd": "^0.14.0",
+ "xo": "^0.37.1"
}
}
\ No newline at end of file
diff --git a/node_modules/is-installed-globally/readme.md b/node_modules/is-installed-globally/readme.md
index 545439ef23..ef9e18a68f 100644
--- a/node_modules/is-installed-globally/readme.md
+++ b/node_modules/is-installed-globally/readme.md
@@ -1,17 +1,15 @@
-# is-installed-globally [![Build Status](https://travis-ci.org/sindresorhus/is-installed-globally.svg?branch=master)](https://travis-ci.org/sindresorhus/is-installed-globally)
+# is-installed-globally
> Check if your package was installed globally
Can be useful if your CLI needs different behavior when installed globally and locally.
-
## Install
```
$ npm install is-installed-globally
```
-
## Usage
```js
@@ -26,7 +24,6 @@ console.log(isInstalledGlobally);
//=> true
```
-
## Related
- [import-global](https://github.com/sindresorhus/import-global) - Import a globally installed module
diff --git a/node_modules/is-npm/index.js b/node_modules/is-npm/index.js
index 270f1b149d..000a893cf9 100644
--- a/node_modules/is-npm/index.js
+++ b/node_modules/is-npm/index.js
@@ -1,9 +1,11 @@
'use strict';
+const packageJson = process.env.npm_package_json;
const userAgent = process.env.npm_config_user_agent;
const isYarn = Boolean(userAgent && userAgent.startsWith('yarn'));
const isNpm = Boolean(userAgent && userAgent.startsWith('npm'));
+const isNpm7 = Boolean(packageJson && packageJson.endsWith('package.json'));
-module.exports.isNpmOrYarn = isNpm || isYarn;
-module.exports.isNpm = isNpm;
+module.exports.isNpmOrYarn = isNpm || isNpm7 || isYarn;
+module.exports.isNpm = isNpm || isNpm7;
module.exports.isYarn = isYarn;
diff --git a/node_modules/is-npm/license b/node_modules/is-npm/license
index e7af2f7710..fa7ceba3eb 100644
--- a/node_modules/is-npm/license
+++ b/node_modules/is-npm/license
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) Sindre Sorhus (sindresorhus.com)
+Copyright (c) Sindre Sorhus (https://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:
diff --git a/node_modules/is-npm/package.json b/node_modules/is-npm/package.json
index 07c9dcb40b..e350335430 100644
--- a/node_modules/is-npm/package.json
+++ b/node_modules/is-npm/package.json
@@ -1,19 +1,20 @@
{
"name": "is-npm",
- "version": "4.0.0",
+ "version": "5.0.0",
"description": "Check if your code is running as an npm script",
"license": "MIT",
"repository": "sindresorhus/is-npm",
+ "funding": "https://github.com/sponsors/sindresorhus",
"author": {
"name": "Sindre Sorhus",
"email": "sindresorhus@gmail.com",
- "url": "sindresorhus.com"
+ "url": "https://sindresorhus.com"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
},
"scripts": {
- "test": "xo && ava && tsd-check"
+ "test": "xo && ava && tsd"
},
"files": [
"index.js",
@@ -21,6 +22,7 @@
],
"keywords": [
"npm",
+ "yarn",
"is",
"check",
"detect",
@@ -31,7 +33,7 @@
],
"devDependencies": {
"ava": "^2.4.0",
- "tsd-check": "^0.6.0",
- "xo": "^0.25.3"
+ "tsd": "^0.11.0",
+ "xo": "^0.30.0"
}
}
\ No newline at end of file
diff --git a/node_modules/is-npm/readme.md b/node_modules/is-npm/readme.md
index 1f730bf29e..b18ba102c8 100644
--- a/node_modules/is-npm/readme.md
+++ b/node_modules/is-npm/readme.md
@@ -1,15 +1,13 @@
-# is-npm [![Build Status](https://travis-ci.org/sindresorhus/is-npm.svg?branch=master)](https://travis-ci.org/sindresorhus/is-npm)
+# is-npm [![Build Status](https://travis-ci.com/sindresorhus/is-npm.svg?branch=master)](https://travis-ci.com/sindresorhus/is-npm)
> Check if your code is running as an [npm](https://docs.npmjs.com/misc/scripts) or [yarn](https://yarnpkg.com/lang/en/docs/cli/run/) script
-
## Install
```
$ npm install is-npm
```
-
## Usage
```js
@@ -45,6 +43,9 @@ $ yarn run foo
# └─────────────┴────────┘
```
+## Related
+
+- [is-npm-cli](https://github.com/sindresorhus/is-npm-cli) - CLI for this module
---
diff --git a/node_modules/is-path-inside/index.js b/node_modules/is-path-inside/index.js
index ea08e8af65..28ed79c0f3 100644
--- a/node_modules/is-path-inside/index.js
+++ b/node_modules/is-path-inside/index.js
@@ -2,20 +2,11 @@
const path = require('path');
module.exports = (childPath, parentPath) => {
- childPath = path.resolve(childPath);
- parentPath = path.resolve(parentPath);
-
- if (process.platform === 'win32') {
- childPath = childPath.toLowerCase();
- parentPath = parentPath.toLowerCase();
- }
-
- if (childPath === parentPath) {
- return false;
- }
-
- childPath += path.sep;
- parentPath += path.sep;
-
- return childPath.startsWith(parentPath);
+ const relation = path.relative(parentPath, childPath);
+ return Boolean(
+ relation &&
+ relation !== '..' &&
+ !relation.startsWith(`..${path.sep}`) &&
+ relation !== path.resolve(childPath)
+ );
};
diff --git a/node_modules/is-path-inside/package.json b/node_modules/is-path-inside/package.json
index 8d9d9343ae..c28f8c4d38 100644
--- a/node_modules/is-path-inside/package.json
+++ b/node_modules/is-path-inside/package.json
@@ -1,6 +1,6 @@
{
"name": "is-path-inside",
- "version": "3.0.2",
+ "version": "3.0.3",
"description": "Check if a path is inside another path",
"license": "MIT",
"repository": "sindresorhus/is-path-inside",
diff --git a/node_modules/is-path-inside/readme.md b/node_modules/is-path-inside/readme.md
index 38cb42dd6e..e8c4f928eb 100644
--- a/node_modules/is-path-inside/readme.md
+++ b/node_modules/is-path-inside/readme.md
@@ -1,4 +1,4 @@
-# is-path-inside [![Build Status](https://travis-ci.org/sindresorhus/is-path-inside.svg?branch=master)](https://travis-ci.org/sindresorhus/is-path-inside)
+# is-path-inside
> Check if a path is inside another path
diff --git a/node_modules/is-plain-object/README.md b/node_modules/is-plain-object/README.md
index 60b7b591fe..5c074ab062 100644
--- a/node_modules/is-plain-object/README.md
+++ b/node_modules/is-plain-object/README.md
@@ -1,6 +1,6 @@
# is-plain-object [![NPM version](https://img.shields.io/npm/v/is-plain-object.svg?style=flat)](https://www.npmjs.com/package/is-plain-object) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![NPM total downloads](https://img.shields.io/npm/dt/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-plain-object.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-plain-object)
-> Returns true if an object was created by the `Object` constructor.
+> Returns true if an object was created by the `Object` constructor, or Object.create(null).
Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
@@ -16,11 +16,17 @@ Use [isobject](https://github.com/jonschlinkert/isobject) if you only want to ch
## Usage
+with es modules
```js
-import isPlainObject from 'is-plain-object';
+import { isPlainObject } from 'is-plain-object';
```
-**true** when created by the `Object` constructor.
+or with commonjs
+```js
+const { isPlainObject } = require('is-plain-object');
+```
+
+**true** when created by the `Object` constructor, or Object.create(null).
```js
isPlainObject(Object.create({}));
@@ -31,6 +37,8 @@ isPlainObject({foo: 'bar'});
//=> true
isPlainObject({});
//=> true
+isPlainObject(null);
+//=> true
```
**false** when not created by the `Object` constructor.
@@ -44,8 +52,6 @@ isPlainObject([]);
//=> false
isPlainObject(new Foo);
//=> false
-isPlainObject(null);
-//=> false
isPlainObject(Object.create(null));
//=> false
```
@@ -116,4 +122,4 @@ Released under the [MIT License](LICENSE).
***
-_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._
\ No newline at end of file
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._
diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.js b/node_modules/is-plain-object/dist/is-plain-object.js
similarity index 100%
rename from node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.js
rename to node_modules/is-plain-object/dist/is-plain-object.js
diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.mjs b/node_modules/is-plain-object/dist/is-plain-object.mjs
similarity index 100%
rename from node_modules/@octokit/endpoint/node_modules/is-plain-object/dist/is-plain-object.mjs
rename to node_modules/is-plain-object/dist/is-plain-object.mjs
diff --git a/node_modules/is-plain-object/index.cjs.js b/node_modules/is-plain-object/index.cjs.js
deleted file mode 100644
index d7dda95107..0000000000
--- a/node_modules/is-plain-object/index.cjs.js
+++ /dev/null
@@ -1,48 +0,0 @@
-'use strict';
-
-/*!
- * isobject
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-function isObject(val) {
- return val != null && typeof val === 'object' && Array.isArray(val) === false;
-}
-
-/*!
- * is-plain-object
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-function isObjectObject(o) {
- return isObject(o) === true
- && Object.prototype.toString.call(o) === '[object Object]';
-}
-
-function isPlainObject(o) {
- var ctor,prot;
-
- if (isObjectObject(o) === false) return false;
-
- // If has modified constructor
- ctor = o.constructor;
- if (typeof ctor !== 'function') return false;
-
- // If has modified prototype
- prot = ctor.prototype;
- if (isObjectObject(prot) === false) return false;
-
- // If constructor does not have an Object-specific method
- if (prot.hasOwnProperty('isPrototypeOf') === false) {
- return false;
- }
-
- // Most likely a plain Object
- return true;
-}
-
-module.exports = isPlainObject;
diff --git a/node_modules/is-plain-object/index.d.ts b/node_modules/is-plain-object/index.d.ts
deleted file mode 100644
index fd131f01cb..0000000000
--- a/node_modules/is-plain-object/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare function isPlainObject(o: any): boolean;
-
-export default isPlainObject;
diff --git a/node_modules/is-plain-object/index.js b/node_modules/is-plain-object/index.js
deleted file mode 100644
index 565ce9e437..0000000000
--- a/node_modules/is-plain-object/index.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*!
- * is-plain-object
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-import isObject from 'isobject';
-
-function isObjectObject(o) {
- return isObject(o) === true
- && Object.prototype.toString.call(o) === '[object Object]';
-}
-
-export default function isPlainObject(o) {
- var ctor,prot;
-
- if (isObjectObject(o) === false) return false;
-
- // If has modified constructor
- ctor = o.constructor;
- if (typeof ctor !== 'function') return false;
-
- // If has modified prototype
- prot = ctor.prototype;
- if (isObjectObject(prot) === false) return false;
-
- // If constructor does not have an Object-specific method
- if (prot.hasOwnProperty('isPrototypeOf') === false) {
- return false;
- }
-
- // Most likely a plain Object
- return true;
-};
diff --git a/node_modules/@octokit/endpoint/node_modules/is-plain-object/is-plain-object.d.ts b/node_modules/is-plain-object/is-plain-object.d.ts
similarity index 100%
rename from node_modules/@octokit/endpoint/node_modules/is-plain-object/is-plain-object.d.ts
rename to node_modules/is-plain-object/is-plain-object.d.ts
diff --git a/node_modules/is-plain-object/package.json b/node_modules/is-plain-object/package.json
index 986ffab261..dd823ea9b4 100644
--- a/node_modules/is-plain-object/package.json
+++ b/node_modules/is-plain-object/package.json
@@ -1,28 +1,35 @@
{
"name": "is-plain-object",
- "description": "Returns true if an object was created by the `Object` constructor.",
- "version": "3.0.0",
+ "description": "Returns true if an object was created by the `Object` constructor, or Object.create(null).",
+ "version": "5.0.0",
"homepage": "https://github.com/jonschlinkert/is-plain-object",
"author": "Jon Schlinkert (https://github.com/jonschlinkert)",
"contributors": [
"Jon Schlinkert (http://twitter.com/jonschlinkert)",
"Osman Nuri Okumuş (http://onokumus.com)",
"Steven Vachon (https://svachon.com)",
- "(https://github.com/wtgtybhertgeghgtwtg)"
+ "(https://github.com/wtgtybhertgeghgtwtg)",
+ "Bogdan Chadkin (https://github.com/TrySound)"
],
"repository": "jonschlinkert/is-plain-object",
"bugs": {
"url": "https://github.com/jonschlinkert/is-plain-object/issues"
},
"license": "MIT",
- "main": "index.cjs.js",
- "module": "index.js",
- "types": "index.d.ts",
+ "main": "dist/is-plain-object.js",
+ "module": "dist/is-plain-object.mjs",
+ "types": "is-plain-object.d.ts",
"files": [
- "index.d.ts",
- "index.js",
- "index.cjs.js"
+ "is-plain-object.d.ts",
+ "dist"
],
+ "exports": {
+ ".": {
+ "import": "./dist/is-plain-object.mjs",
+ "require": "./dist/is-plain-object.js"
+ },
+ "./package.json": "./package.json"
+ },
"engines": {
"node": ">=0.10.0"
},
@@ -33,17 +40,13 @@
"test": "npm run test_node && npm run build && npm run test_browser",
"prepare": "rollup -c"
},
- "dependencies": {
- "isobject": "^4.0.0"
- },
"devDependencies": {
"chai": "^4.2.0",
"esm": "^3.2.22",
"gulp-format-md": "^1.0.0",
"mocha": "^6.1.4",
- "mocha-headless-chrome": "^2.0.2",
- "rollup": "^1.10.1",
- "rollup-plugin-node-resolve": "^4.2.3"
+ "mocha-headless-chrome": "^3.1.0",
+ "rollup": "^2.22.1"
},
"keywords": [
"check",
diff --git a/node_modules/is-promise/index.d.ts b/node_modules/is-promise/index.d.ts
index bf76299c2a..2107b42898 100644
--- a/node_modules/is-promise/index.d.ts
+++ b/node_modules/is-promise/index.d.ts
@@ -1,2 +1,2 @@
-declare function isPromise(obj: Promise | S): obj is Promise;
-export default isPromise;
\ No newline at end of file
+declare function isPromise(obj: PromiseLike | S): obj is PromiseLike;
+export default isPromise;
diff --git a/node_modules/is-promise/package.json b/node_modules/is-promise/package.json
index e729cac00f..2a3b769b05 100644
--- a/node_modules/is-promise/package.json
+++ b/node_modules/is-promise/package.json
@@ -1,6 +1,6 @@
{
"name": "is-promise",
- "version": "3.0.0",
+ "version": "4.0.0",
"description": "Test whether an object looks like a promises-a+ promise",
"main": "./index.js",
"scripts": {
diff --git a/node_modules/is-unicode-supported/index.d.ts b/node_modules/is-unicode-supported/index.d.ts
new file mode 100644
index 0000000000..275b37bde7
--- /dev/null
+++ b/node_modules/is-unicode-supported/index.d.ts
@@ -0,0 +1,14 @@
+/**
+Detect whether the terminal supports Unicode.
+
+@example
+```
+import isUnicodeSupported = require('is-unicode-supported');
+
+isUnicodeSupported();
+//=> true
+```
+*/
+declare function isUnicodeSupported(): boolean;
+
+export = isUnicodeSupported;
diff --git a/node_modules/is-unicode-supported/index.js b/node_modules/is-unicode-supported/index.js
new file mode 100644
index 0000000000..b5a11bee9d
--- /dev/null
+++ b/node_modules/is-unicode-supported/index.js
@@ -0,0 +1,13 @@
+'use strict';
+
+module.exports = () => {
+ if (process.platform !== 'win32') {
+ return true;
+ }
+
+ return Boolean(process.env.CI) ||
+ Boolean(process.env.WT_SESSION) || // Windows Terminal
+ process.env.TERM_PROGRAM === 'vscode' ||
+ process.env.TERM === 'xterm-256color' ||
+ process.env.TERM === 'alacritty';
+};
diff --git a/node_modules/normalize-url/license b/node_modules/is-unicode-supported/license
similarity index 100%
rename from node_modules/normalize-url/license
rename to node_modules/is-unicode-supported/license
diff --git a/node_modules/is-unicode-supported/package.json b/node_modules/is-unicode-supported/package.json
new file mode 100644
index 0000000000..86244bfa53
--- /dev/null
+++ b/node_modules/is-unicode-supported/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "is-unicode-supported",
+ "version": "0.1.0",
+ "description": "Detect whether the terminal supports Unicode",
+ "license": "MIT",
+ "repository": "sindresorhus/is-unicode-supported",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "https://sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "terminal",
+ "unicode",
+ "detect",
+ "utf8",
+ "console",
+ "shell",
+ "support",
+ "supports",
+ "supported",
+ "check",
+ "detection"
+ ],
+ "devDependencies": {
+ "ava": "^2.4.0",
+ "tsd": "^0.14.0",
+ "xo": "^0.38.2"
+ }
+}
\ No newline at end of file
diff --git a/node_modules/is-unicode-supported/readme.md b/node_modules/is-unicode-supported/readme.md
new file mode 100644
index 0000000000..a82e34d483
--- /dev/null
+++ b/node_modules/is-unicode-supported/readme.md
@@ -0,0 +1,35 @@
+# is-unicode-supported
+
+> Detect whether the terminal supports Unicode
+
+This can be useful to decide whether to use Unicode characters or fallback ASCII characters in command-line output.
+
+Note that the check is quite naive. It just assumes all non-Windows terminals support Unicode and hard-codes which Windows terminals that do support Unicode. However, I have been using this logic in some popular packages for years without problems.
+
+## Install
+
+```
+$ npm install is-unicode-supported
+```
+
+## Usage
+
+```js
+const isUnicodeSupported = require('is-unicode-supported');
+
+isUnicodeSupported();
+//=> true
+```
+
+## API
+
+### isUnicodeSupported()
+
+Returns a `boolean` for whether the terminal supports Unicode.
+
+## Related
+
+- [is-interactive](https://github.com/sindresorhus/is-interactive) - Check if stdout or stderr is interactive
+- [supports-color](https://github.com/chalk/supports-color) - Detect whether a terminal supports color
+- [figures](https://github.com/sindresorhus/figures) - Unicode symbols with Windows fallbacks
+- [log-symbols](https://github.com/sindresorhus/log-symbols) - Colored symbols for various log levels
diff --git a/node_modules/isobject/README.md b/node_modules/isobject/README.md
deleted file mode 100644
index 1c6e21fa0c..0000000000
--- a/node_modules/isobject/README.md
+++ /dev/null
@@ -1,127 +0,0 @@
-# isobject [![NPM version](https://img.shields.io/npm/v/isobject.svg?style=flat)](https://www.npmjs.com/package/isobject) [![NPM monthly downloads](https://img.shields.io/npm/dm/isobject.svg?style=flat)](https://npmjs.org/package/isobject) [![NPM total downloads](https://img.shields.io/npm/dt/isobject.svg?style=flat)](https://npmjs.org/package/isobject) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/isobject.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/isobject)
-
-> Returns true if the value is an object and not an array or null.
-
-Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install --save isobject
-```
-
-Use [is-plain-object](https://github.com/jonschlinkert/is-plain-object) if you want only objects that are created by the `Object` constructor.
-
-## Install
-
-Install with [npm](https://www.npmjs.com/):
-
-```sh
-$ npm install isobject
-```
-
-## Usage
-
-```js
-import isObject from 'isobject';
-```
-
-**True**
-
-All of the following return `true`:
-
-```js
-isObject({});
-isObject(Object.create({}));
-isObject(Object.create(Object.prototype));
-isObject(Object.create(null));
-isObject({});
-isObject(new Foo);
-isObject(/foo/);
-```
-
-**False**
-
-All of the following return `false`:
-
-```js
-isObject();
-isObject(function () {});
-isObject(1);
-isObject([]);
-isObject(undefined);
-isObject(null);
-```
-
-## About
-
-
-Contributing
-
-Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
-
-
-
-
-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
-```
-
-
-
-
-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
-```
-
-
-
-### Related projects
-
-You might also be interested in these projects:
-
-* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.")
-* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
-* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
-* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep "Recursively merge values in a javascript object.")
-
-### Contributors
-
-| **Commits** | **Contributor** |
-| --- | --- |
-| 30 | [jonschlinkert](https://github.com/jonschlinkert) |
-| 8 | [doowb](https://github.com/doowb) |
-| 7 | [TrySound](https://github.com/TrySound) |
-| 3 | [onokumus](https://github.com/onokumus) |
-| 1 | [LeSuisse](https://github.com/LeSuisse) |
-| 1 | [tmcw](https://github.com/tmcw) |
-| 1 | [ZhouHansen](https://github.com/ZhouHansen) |
-
-### Author
-
-**Jon Schlinkert**
-
-* [GitHub Profile](https://github.com/jonschlinkert)
-* [Twitter Profile](https://twitter.com/jonschlinkert)
-* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
-
-### License
-
-Copyright © 2019, [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.8.0, on April 28, 2019._
\ No newline at end of file
diff --git a/node_modules/isobject/index.cjs.js b/node_modules/isobject/index.cjs.js
deleted file mode 100644
index 49debe7365..0000000000
--- a/node_modules/isobject/index.cjs.js
+++ /dev/null
@@ -1,14 +0,0 @@
-'use strict';
-
-/*!
- * isobject
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-function isObject(val) {
- return val != null && typeof val === 'object' && Array.isArray(val) === false;
-}
-
-module.exports = isObject;
diff --git a/node_modules/isobject/index.d.ts b/node_modules/isobject/index.d.ts
deleted file mode 100644
index c471c71567..0000000000
--- a/node_modules/isobject/index.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare function isObject(val: any): boolean;
-
-export default isObject;
diff --git a/node_modules/isobject/index.js b/node_modules/isobject/index.js
deleted file mode 100644
index e9f038225f..0000000000
--- a/node_modules/isobject/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/*!
- * isobject
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */
-
-export default function isObject(val) {
- return val != null && typeof val === 'object' && Array.isArray(val) === false;
-};
diff --git a/node_modules/isobject/package.json b/node_modules/isobject/package.json
deleted file mode 100644
index c59d1ba3a9..0000000000
--- a/node_modules/isobject/package.json
+++ /dev/null
@@ -1,80 +0,0 @@
-{
- "name": "isobject",
- "description": "Returns true if the value is an object and not an array or null.",
- "version": "4.0.0",
- "homepage": "https://github.com/jonschlinkert/isobject",
- "author": "Jon Schlinkert (https://github.com/jonschlinkert)",
- "contributors": [
- "(https://github.com/LeSuisse)",
- "Brian Woodward (https://twitter.com/doowb)",
- "Jon Schlinkert (http://twitter.com/jonschlinkert)",
- "Magnús Dæhlen (https://github.com/magnudae)",
- "Tom MacWright (https://macwright.org)"
- ],
- "repository": "jonschlinkert/isobject",
- "bugs": {
- "url": "https://github.com/jonschlinkert/isobject/issues"
- },
- "license": "MIT",
- "files": [
- "index.d.ts",
- "index.cjs.js",
- "index.js"
- ],
- "main": "index.cjs.js",
- "module": "index.js",
- "engines": {
- "node": ">=0.10.0"
- },
- "scripts": {
- "build": "rollup -i index.js -o index.cjs.js -f cjs",
- "test": "mocha -r esm",
- "prepublish": "npm run build"
- },
- "dependencies": {},
- "devDependencies": {
- "esm": "^3.2.22",
- "gulp-format-md": "^0.1.9",
- "mocha": "^2.4.5",
- "rollup": "^1.10.1"
- },
- "keywords": [
- "check",
- "is",
- "is-object",
- "isobject",
- "kind",
- "kind-of",
- "kindof",
- "native",
- "object",
- "type",
- "typeof",
- "value"
- ],
- "types": "index.d.ts",
- "verb": {
- "related": {
- "list": [
- "extend-shallow",
- "is-plain-object",
- "kind-of",
- "merge-deep"
- ]
- },
- "toc": false,
- "layout": "default",
- "tasks": [
- "readme"
- ],
- "plugins": [
- "gulp-format-md"
- ],
- "lint": {
- "reflinks": true
- },
- "reflinks": [
- "verb"
- ]
- }
-}
\ No newline at end of file
diff --git a/node_modules/lodash.flattendeep/README.md b/node_modules/lodash.flattendeep/README.md
deleted file mode 100644
index afcd03c704..0000000000
--- a/node_modules/lodash.flattendeep/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# lodash.flattendeep v4.4.0
-
-The [lodash](https://lodash.com/) method `_.flattenDeep` exported as a [Node.js](https://nodejs.org/) module.
-
-## Installation
-
-Using npm:
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash.flattendeep
-```
-
-In Node.js:
-```js
-var flattenDeep = require('lodash.flattendeep');
-```
-
-See the [documentation](https://lodash.com/docs#flattenDeep) or [package source](https://github.com/lodash/lodash/blob/4.4.0-npm-packages/lodash.flattendeep) for more details.
diff --git a/node_modules/lodash.flattendeep/index.js b/node_modules/lodash.flattendeep/index.js
deleted file mode 100644
index 254b88435a..0000000000
--- a/node_modules/lodash.flattendeep/index.js
+++ /dev/null
@@ -1,350 +0,0 @@
-/**
- * lodash (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright jQuery Foundation and other contributors
- * Released under MIT license
- * Based on Underscore.js 1.8.3
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- */
-
-/** Used as references for various `Number` constants. */
-var INFINITY = 1 / 0,
- MAX_SAFE_INTEGER = 9007199254740991;
-
-/** `Object#toString` result references. */
-var argsTag = '[object Arguments]',
- funcTag = '[object Function]',
- genTag = '[object GeneratorFunction]';
-
-/** Detect free variable `global` from Node.js. */
-var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
-
-/** Detect free variable `self`. */
-var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
-
-/** Used as a reference to the global object. */
-var root = freeGlobal || freeSelf || Function('return this')();
-
-/**
- * Appends the elements of `values` to `array`.
- *
- * @private
- * @param {Array} array The array to modify.
- * @param {Array} values The values to append.
- * @returns {Array} Returns `array`.
- */
-function arrayPush(array, values) {
- var index = -1,
- length = values.length,
- offset = array.length;
-
- while (++index < length) {
- array[offset + index] = values[index];
- }
- return array;
-}
-
-/** Used for built-in method references. */
-var objectProto = Object.prototype;
-
-/** Used to check objects for own properties. */
-var hasOwnProperty = objectProto.hasOwnProperty;
-
-/**
- * Used to resolve the
- * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
- * of values.
- */
-var objectToString = objectProto.toString;
-
-/** Built-in value references. */
-var Symbol = root.Symbol,
- propertyIsEnumerable = objectProto.propertyIsEnumerable,
- spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
-
-/**
- * The base implementation of `_.flatten` with support for restricting flattening.
- *
- * @private
- * @param {Array} array The array to flatten.
- * @param {number} depth The maximum recursion depth.
- * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
- * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
- * @param {Array} [result=[]] The initial result value.
- * @returns {Array} Returns the new flattened array.
- */
-function baseFlatten(array, depth, predicate, isStrict, result) {
- var index = -1,
- length = array.length;
-
- predicate || (predicate = isFlattenable);
- result || (result = []);
-
- while (++index < length) {
- var value = array[index];
- if (depth > 0 && predicate(value)) {
- if (depth > 1) {
- // Recursively flatten arrays (susceptible to call stack limits).
- baseFlatten(value, depth - 1, predicate, isStrict, result);
- } else {
- arrayPush(result, value);
- }
- } else if (!isStrict) {
- result[result.length] = value;
- }
- }
- return result;
-}
-
-/**
- * Checks if `value` is a flattenable `arguments` object or array.
- *
- * @private
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
- */
-function isFlattenable(value) {
- return isArray(value) || isArguments(value) ||
- !!(spreadableSymbol && value && value[spreadableSymbol]);
-}
-
-/**
- * Recursively flattens `array`.
- *
- * @static
- * @memberOf _
- * @since 3.0.0
- * @category Array
- * @param {Array} array The array to flatten.
- * @returns {Array} Returns the new flattened array.
- * @example
- *
- * _.flattenDeep([1, [2, [3, [4]], 5]]);
- * // => [1, 2, 3, 4, 5]
- */
-function flattenDeep(array) {
- var length = array ? array.length : 0;
- return length ? baseFlatten(array, INFINITY) : [];
-}
-
-/**
- * Checks if `value` is likely an `arguments` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an `arguments` object,
- * else `false`.
- * @example
- *
- * _.isArguments(function() { return arguments; }());
- * // => true
- *
- * _.isArguments([1, 2, 3]);
- * // => false
- */
-function isArguments(value) {
- // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
- return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
- (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
-}
-
-/**
- * Checks if `value` is classified as an `Array` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array, else `false`.
- * @example
- *
- * _.isArray([1, 2, 3]);
- * // => true
- *
- * _.isArray(document.body.children);
- * // => false
- *
- * _.isArray('abc');
- * // => false
- *
- * _.isArray(_.noop);
- * // => false
- */
-var isArray = Array.isArray;
-
-/**
- * Checks if `value` is array-like. A value is considered array-like if it's
- * not a function and has a `value.length` that's an integer greater than or
- * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
- * @example
- *
- * _.isArrayLike([1, 2, 3]);
- * // => true
- *
- * _.isArrayLike(document.body.children);
- * // => true
- *
- * _.isArrayLike('abc');
- * // => true
- *
- * _.isArrayLike(_.noop);
- * // => false
- */
-function isArrayLike(value) {
- return value != null && isLength(value.length) && !isFunction(value);
-}
-
-/**
- * This method is like `_.isArrayLike` except that it also checks if `value`
- * is an object.
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an array-like object,
- * else `false`.
- * @example
- *
- * _.isArrayLikeObject([1, 2, 3]);
- * // => true
- *
- * _.isArrayLikeObject(document.body.children);
- * // => true
- *
- * _.isArrayLikeObject('abc');
- * // => false
- *
- * _.isArrayLikeObject(_.noop);
- * // => false
- */
-function isArrayLikeObject(value) {
- return isObjectLike(value) && isArrayLike(value);
-}
-
-/**
- * Checks if `value` is classified as a `Function` object.
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a function, else `false`.
- * @example
- *
- * _.isFunction(_);
- * // => true
- *
- * _.isFunction(/abc/);
- * // => false
- */
-function isFunction(value) {
- // The use of `Object#toString` avoids issues with the `typeof` operator
- // in Safari 8-9 which returns 'object' for typed array and other constructors.
- var tag = isObject(value) ? objectToString.call(value) : '';
- return tag == funcTag || tag == genTag;
-}
-
-/**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This method is loosely based on
- * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
-function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-}
-
-/**
- * Checks if `value` is the
- * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
- * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
- *
- * @static
- * @memberOf _
- * @since 0.1.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is an object, else `false`.
- * @example
- *
- * _.isObject({});
- * // => true
- *
- * _.isObject([1, 2, 3]);
- * // => true
- *
- * _.isObject(_.noop);
- * // => true
- *
- * _.isObject(null);
- * // => false
- */
-function isObject(value) {
- var type = typeof value;
- return !!value && (type == 'object' || type == 'function');
-}
-
-/**
- * Checks if `value` is object-like. A value is object-like if it's not `null`
- * and has a `typeof` result of "object".
- *
- * @static
- * @memberOf _
- * @since 4.0.0
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
- * @example
- *
- * _.isObjectLike({});
- * // => true
- *
- * _.isObjectLike([1, 2, 3]);
- * // => true
- *
- * _.isObjectLike(_.noop);
- * // => false
- *
- * _.isObjectLike(null);
- * // => false
- */
-function isObjectLike(value) {
- return !!value && typeof value == 'object';
-}
-
-module.exports = flattenDeep;
diff --git a/node_modules/lodash.flattendeep/package.json b/node_modules/lodash.flattendeep/package.json
deleted file mode 100644
index 24bf32a748..0000000000
--- a/node_modules/lodash.flattendeep/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "lodash.flattendeep",
- "version": "4.4.0",
- "description": "The lodash method `_.flattenDeep` exported as a module.",
- "homepage": "https://lodash.com/",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "keywords": "lodash-modularized, flattendeep",
- "author": "John-David Dalton (http://allyoucanleet.com/)",
- "contributors": [
- "John-David Dalton (http://allyoucanleet.com/)",
- "Blaine Bublitz (https://github.com/phated)",
- "Mathias Bynens (https://mathiasbynens.be/)"
- ],
- "repository": "lodash/lodash",
- "scripts": {
- "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
- }
-}
\ No newline at end of file
diff --git a/node_modules/lodash.islength/LICENSE b/node_modules/lodash.islength/LICENSE
deleted file mode 100644
index bcbe13d67a..0000000000
--- a/node_modules/lodash.islength/LICENSE
+++ /dev/null
@@ -1,23 +0,0 @@
-The MIT License (MIT)
-
-Copyright 2012-2016 The Dojo Foundation
-Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors
-
-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/node_modules/lodash.islength/README.md b/node_modules/lodash.islength/README.md
deleted file mode 100644
index 9935dd467d..0000000000
--- a/node_modules/lodash.islength/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# lodash.islength v4.0.1
-
-The [lodash](https://lodash.com/) method `_.isLength` exported as a [Node.js](https://nodejs.org/) module.
-
-## Installation
-
-Using npm:
-```bash
-$ {sudo -H} npm i -g npm
-$ npm i --save lodash.islength
-```
-
-In Node.js:
-```js
-var isLength = require('lodash.islength');
-```
-
-See the [documentation](https://lodash.com/docs#isLength) or [package source](https://github.com/lodash/lodash/blob/4.0.1-npm-packages/lodash.islength) for more details.
diff --git a/node_modules/lodash.islength/index.js b/node_modules/lodash.islength/index.js
deleted file mode 100644
index aeb54e7b5c..0000000000
--- a/node_modules/lodash.islength/index.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * lodash 4.0.1 (Custom Build)
- * Build: `lodash modularize exports="npm" -o ./`
- * Copyright 2012-2016 The Dojo Foundation
- * Based on Underscore.js 1.8.3
- * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
- * Available under MIT license
- */
-
-/** Used as references for various `Number` constants. */
-var MAX_SAFE_INTEGER = 9007199254740991;
-
-/**
- * Checks if `value` is a valid array-like length.
- *
- * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
- *
- * @static
- * @memberOf _
- * @category Lang
- * @param {*} value The value to check.
- * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
- * @example
- *
- * _.isLength(3);
- * // => true
- *
- * _.isLength(Number.MIN_VALUE);
- * // => false
- *
- * _.isLength(Infinity);
- * // => false
- *
- * _.isLength('3');
- * // => false
- */
-function isLength(value) {
- return typeof value == 'number' &&
- value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
-}
-
-module.exports = isLength;
diff --git a/node_modules/lodash.islength/package.json b/node_modules/lodash.islength/package.json
deleted file mode 100644
index e8687664b2..0000000000
--- a/node_modules/lodash.islength/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "lodash.islength",
- "version": "4.0.1",
- "description": "The lodash method `_.isLength` exported as a module.",
- "homepage": "https://lodash.com/",
- "icon": "https://lodash.com/icon.svg",
- "license": "MIT",
- "keywords": "lodash-modularized, islength",
- "author": "John-David Dalton (http://allyoucanleet.com/)",
- "contributors": [
- "John-David Dalton (http://allyoucanleet.com/)",
- "Blaine Bublitz (https://github.com/phated)",
- "Mathias Bynens (https://mathiasbynens.be/)"
- ],
- "repository": "lodash/lodash",
- "scripts": {
- "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
- }
-}
\ No newline at end of file
diff --git a/node_modules/log-symbols/index.d.ts b/node_modules/log-symbols/index.d.ts
index 4d3b7d185b..8e4bdc59a0 100644
--- a/node_modules/log-symbols/index.d.ts
+++ b/node_modules/log-symbols/index.d.ts
@@ -8,8 +8,8 @@ Includes fallbacks for Windows CMD which only supports a [limited character set]
import logSymbols = require('log-symbols');
console.log(logSymbols.success, 'Finished successfully!');
-// On good OSes: ✔ Finished successfully!
-// On Windows: √ Finished successfully!
+// Terminals with Unicode support: ✔ Finished successfully!
+// Terminals without Unicode support: √ Finished successfully!
```
*/
declare const logSymbols: {
diff --git a/node_modules/log-symbols/index.js b/node_modules/log-symbols/index.js
index 247bb59d91..12347e0946 100644
--- a/node_modules/log-symbols/index.js
+++ b/node_modules/log-symbols/index.js
@@ -1,7 +1,6 @@
'use strict';
const chalk = require('chalk');
-
-const isSupported = process.platform !== 'win32' || process.env.CI || process.env.TERM === 'xterm-256color';
+const isUnicodeSupported = require('is-unicode-supported');
const main = {
info: chalk.blue('ℹ'),
@@ -10,11 +9,11 @@ const main = {
error: chalk.red('✖')
};
-const fallbacks = {
+const fallback = {
info: chalk.blue('i'),
success: chalk.green('√'),
warning: chalk.yellow('‼'),
error: chalk.red('×')
};
-module.exports = isSupported ? main : fallbacks;
+module.exports = isUnicodeSupported() ? main : fallback;
diff --git a/node_modules/log-symbols/license b/node_modules/log-symbols/license
index e7af2f7710..fa7ceba3eb 100644
--- a/node_modules/log-symbols/license
+++ b/node_modules/log-symbols/license
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) Sindre Sorhus (sindresorhus.com)
+Copyright (c) Sindre Sorhus (https://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:
diff --git a/node_modules/log-symbols/node_modules/ansi-styles/index.d.ts b/node_modules/log-symbols/node_modules/ansi-styles/index.d.ts
new file mode 100644
index 0000000000..44a907e580
--- /dev/null
+++ b/node_modules/log-symbols/node_modules/ansi-styles/index.d.ts
@@ -0,0 +1,345 @@
+declare type CSSColor =
+ | 'aliceblue'
+ | 'antiquewhite'
+ | 'aqua'
+ | 'aquamarine'
+ | 'azure'
+ | 'beige'
+ | 'bisque'
+ | 'black'
+ | 'blanchedalmond'
+ | 'blue'
+ | 'blueviolet'
+ | 'brown'
+ | 'burlywood'
+ | 'cadetblue'
+ | 'chartreuse'
+ | 'chocolate'
+ | 'coral'
+ | 'cornflowerblue'
+ | 'cornsilk'
+ | 'crimson'
+ | 'cyan'
+ | 'darkblue'
+ | 'darkcyan'
+ | 'darkgoldenrod'
+ | 'darkgray'
+ | 'darkgreen'
+ | 'darkgrey'
+ | 'darkkhaki'
+ | 'darkmagenta'
+ | 'darkolivegreen'
+ | 'darkorange'
+ | 'darkorchid'
+ | 'darkred'
+ | 'darksalmon'
+ | 'darkseagreen'
+ | 'darkslateblue'
+ | 'darkslategray'
+ | 'darkslategrey'
+ | 'darkturquoise'
+ | 'darkviolet'
+ | 'deeppink'
+ | 'deepskyblue'
+ | 'dimgray'
+ | 'dimgrey'
+ | 'dodgerblue'
+ | 'firebrick'
+ | 'floralwhite'
+ | 'forestgreen'
+ | 'fuchsia'
+ | 'gainsboro'
+ | 'ghostwhite'
+ | 'gold'
+ | 'goldenrod'
+ | 'gray'
+ | 'green'
+ | 'greenyellow'
+ | 'grey'
+ | 'honeydew'
+ | 'hotpink'
+ | 'indianred'
+ | 'indigo'
+ | 'ivory'
+ | 'khaki'
+ | 'lavender'
+ | 'lavenderblush'
+ | 'lawngreen'
+ | 'lemonchiffon'
+ | 'lightblue'
+ | 'lightcoral'
+ | 'lightcyan'
+ | 'lightgoldenrodyellow'
+ | 'lightgray'
+ | 'lightgreen'
+ | 'lightgrey'
+ | 'lightpink'
+ | 'lightsalmon'
+ | 'lightseagreen'
+ | 'lightskyblue'
+ | 'lightslategray'
+ | 'lightslategrey'
+ | 'lightsteelblue'
+ | 'lightyellow'
+ | 'lime'
+ | 'limegreen'
+ | 'linen'
+ | 'magenta'
+ | 'maroon'
+ | 'mediumaquamarine'
+ | 'mediumblue'
+ | 'mediumorchid'
+ | 'mediumpurple'
+ | 'mediumseagreen'
+ | 'mediumslateblue'
+ | 'mediumspringgreen'
+ | 'mediumturquoise'
+ | 'mediumvioletred'
+ | 'midnightblue'
+ | 'mintcream'
+ | 'mistyrose'
+ | 'moccasin'
+ | 'navajowhite'
+ | 'navy'
+ | 'oldlace'
+ | 'olive'
+ | 'olivedrab'
+ | 'orange'
+ | 'orangered'
+ | 'orchid'
+ | 'palegoldenrod'
+ | 'palegreen'
+ | 'paleturquoise'
+ | 'palevioletred'
+ | 'papayawhip'
+ | 'peachpuff'
+ | 'peru'
+ | 'pink'
+ | 'plum'
+ | 'powderblue'
+ | 'purple'
+ | 'rebeccapurple'
+ | 'red'
+ | 'rosybrown'
+ | 'royalblue'
+ | 'saddlebrown'
+ | 'salmon'
+ | 'sandybrown'
+ | 'seagreen'
+ | 'seashell'
+ | 'sienna'
+ | 'silver'
+ | 'skyblue'
+ | 'slateblue'
+ | 'slategray'
+ | 'slategrey'
+ | 'snow'
+ | 'springgreen'
+ | 'steelblue'
+ | 'tan'
+ | 'teal'
+ | 'thistle'
+ | 'tomato'
+ | 'turquoise'
+ | 'violet'
+ | 'wheat'
+ | 'white'
+ | 'whitesmoke'
+ | 'yellow'
+ | 'yellowgreen';
+
+declare namespace ansiStyles {
+ interface ColorConvert {
+ /**
+ The RGB color space.
+
+ @param red - (`0`-`255`)
+ @param green - (`0`-`255`)
+ @param blue - (`0`-`255`)
+ */
+ rgb(red: number, green: number, blue: number): string;
+
+ /**
+ The RGB HEX color space.
+
+ @param hex - A hexadecimal string containing RGB data.
+ */
+ hex(hex: string): string;
+
+ /**
+ @param keyword - A CSS color name.
+ */
+ keyword(keyword: CSSColor): string;
+
+ /**
+ The HSL color space.
+
+ @param hue - (`0`-`360`)
+ @param saturation - (`0`-`100`)
+ @param lightness - (`0`-`100`)
+ */
+ hsl(hue: number, saturation: number, lightness: number): string;
+
+ /**
+ The HSV color space.
+
+ @param hue - (`0`-`360`)
+ @param saturation - (`0`-`100`)
+ @param value - (`0`-`100`)
+ */
+ hsv(hue: number, saturation: number, value: number): string;
+
+ /**
+ The HSV color space.
+
+ @param hue - (`0`-`360`)
+ @param whiteness - (`0`-`100`)
+ @param blackness - (`0`-`100`)
+ */
+ hwb(hue: number, whiteness: number, blackness: number): string;
+
+ /**
+ Use a [4-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4-bit) to set text color.
+ */
+ ansi(ansi: number): string;
+
+ /**
+ Use an [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color.
+ */
+ ansi256(ansi: number): string;
+ }
+
+ interface CSPair {
+ /**
+ The ANSI terminal control sequence for starting this style.
+ */
+ readonly open: string;
+
+ /**
+ The ANSI terminal control sequence for ending this style.
+ */
+ readonly close: string;
+ }
+
+ interface ColorBase {
+ readonly ansi: ColorConvert;
+ readonly ansi256: ColorConvert;
+ readonly ansi16m: ColorConvert;
+
+ /**
+ The ANSI terminal control sequence for ending this color.
+ */
+ readonly close: string;
+ }
+
+ interface Modifier {
+ /**
+ Resets the current color chain.
+ */
+ readonly reset: CSPair;
+
+ /**
+ Make text bold.
+ */
+ readonly bold: CSPair;
+
+ /**
+ Emitting only a small amount of light.
+ */
+ readonly dim: CSPair;
+
+ /**
+ Make text italic. (Not widely supported)
+ */
+ readonly italic: CSPair;
+
+ /**
+ Make text underline. (Not widely supported)
+ */
+ readonly underline: CSPair;
+
+ /**
+ Inverse background and foreground colors.
+ */
+ readonly inverse: CSPair;
+
+ /**
+ Prints the text, but makes it invisible.
+ */
+ readonly hidden: CSPair;
+
+ /**
+ Puts a horizontal line through the center of the text. (Not widely supported)
+ */
+ readonly strikethrough: CSPair;
+ }
+
+ interface ForegroundColor {
+ readonly black: CSPair;
+ readonly red: CSPair;
+ readonly green: CSPair;
+ readonly yellow: CSPair;
+ readonly blue: CSPair;
+ readonly cyan: CSPair;
+ readonly magenta: CSPair;
+ readonly white: CSPair;
+
+ /**
+ Alias for `blackBright`.
+ */
+ readonly gray: CSPair;
+
+ /**
+ Alias for `blackBright`.
+ */
+ readonly grey: CSPair;
+
+ readonly blackBright: CSPair;
+ readonly redBright: CSPair;
+ readonly greenBright: CSPair;
+ readonly yellowBright: CSPair;
+ readonly blueBright: CSPair;
+ readonly cyanBright: CSPair;
+ readonly magentaBright: CSPair;
+ readonly whiteBright: CSPair;
+ }
+
+ interface BackgroundColor {
+ readonly bgBlack: CSPair;
+ readonly bgRed: CSPair;
+ readonly bgGreen: CSPair;
+ readonly bgYellow: CSPair;
+ readonly bgBlue: CSPair;
+ readonly bgCyan: CSPair;
+ readonly bgMagenta: CSPair;
+ readonly bgWhite: CSPair;
+
+ /**
+ Alias for `bgBlackBright`.
+ */
+ readonly bgGray: CSPair;
+
+ /**
+ Alias for `bgBlackBright`.
+ */
+ readonly bgGrey: CSPair;
+
+ readonly bgBlackBright: CSPair;
+ readonly bgRedBright: CSPair;
+ readonly bgGreenBright: CSPair;
+ readonly bgYellowBright: CSPair;
+ readonly bgBlueBright: CSPair;
+ readonly bgCyanBright: CSPair;
+ readonly bgMagentaBright: CSPair;
+ readonly bgWhiteBright: CSPair;
+ }
+}
+
+declare const ansiStyles: {
+ readonly modifier: ansiStyles.Modifier;
+ readonly color: ansiStyles.ForegroundColor & ansiStyles.ColorBase;
+ readonly bgColor: ansiStyles.BackgroundColor & ansiStyles.ColorBase;
+ readonly codes: ReadonlyMap;
+} & ansiStyles.BackgroundColor & ansiStyles.ForegroundColor & ansiStyles.Modifier;
+
+export = ansiStyles;
diff --git a/node_modules/log-symbols/node_modules/ansi-styles/index.js b/node_modules/log-symbols/node_modules/ansi-styles/index.js
new file mode 100644
index 0000000000..5d82581a13
--- /dev/null
+++ b/node_modules/log-symbols/node_modules/ansi-styles/index.js
@@ -0,0 +1,163 @@
+'use strict';
+
+const wrapAnsi16 = (fn, offset) => (...args) => {
+ const code = fn(...args);
+ return `\u001B[${code + offset}m`;
+};
+
+const wrapAnsi256 = (fn, offset) => (...args) => {
+ const code = fn(...args);
+ return `\u001B[${38 + offset};5;${code}m`;
+};
+
+const wrapAnsi16m = (fn, offset) => (...args) => {
+ const rgb = fn(...args);
+ return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+};
+
+const ansi2ansi = n => n;
+const rgb2rgb = (r, g, b) => [r, g, b];
+
+const setLazyProperty = (object, property, get) => {
+ Object.defineProperty(object, property, {
+ get: () => {
+ const value = get();
+
+ Object.defineProperty(object, property, {
+ value,
+ enumerable: true,
+ configurable: true
+ });
+
+ return value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+};
+
+/** @type {typeof import('color-convert')} */
+let colorConvert;
+const makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {
+ if (colorConvert === undefined) {
+ colorConvert = require('color-convert');
+ }
+
+ const offset = isBackground ? 10 : 0;
+ const styles = {};
+
+ for (const [sourceSpace, suite] of Object.entries(colorConvert)) {
+ const name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;
+ if (sourceSpace === targetSpace) {
+ styles[name] = wrap(identity, offset);
+ } else if (typeof suite === 'object') {
+ styles[name] = wrap(suite[targetSpace], offset);
+ }
+ }
+
+ return styles;
+};
+
+function assembleStyles() {
+ const codes = new Map();
+ const styles = {
+ modifier: {
+ reset: [0, 0],
+ // 21 isn't widely supported and 22 does the same thing
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ color: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+
+ // Bright color
+ blackBright: [90, 39],
+ redBright: [91, 39],
+ greenBright: [92, 39],
+ yellowBright: [93, 39],
+ blueBright: [94, 39],
+ magentaBright: [95, 39],
+ cyanBright: [96, 39],
+ whiteBright: [97, 39]
+ },
+ bgColor: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+
+ // Bright color
+ bgBlackBright: [100, 49],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ };
+
+ // Alias bright black as gray (and grey)
+ styles.color.gray = styles.color.blackBright;
+ styles.bgColor.bgGray = styles.bgColor.bgBlackBright;
+ styles.color.grey = styles.color.blackBright;
+ styles.bgColor.bgGrey = styles.bgColor.bgBlackBright;
+
+ for (const [groupName, group] of Object.entries(styles)) {
+ for (const [styleName, style] of Object.entries(group)) {
+ styles[styleName] = {
+ open: `\u001B[${style[0]}m`,
+ close: `\u001B[${style[1]}m`
+ };
+
+ group[styleName] = styles[styleName];
+
+ codes.set(style[0], style[1]);
+ }
+
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+ }
+
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
+
+ styles.color.close = '\u001B[39m';
+ styles.bgColor.close = '\u001B[49m';
+
+ setLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));
+ setLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));
+ setLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));
+ setLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));
+ setLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));
+ setLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));
+
+ return styles;
+}
+
+// Make the export immutable
+Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+});
diff --git a/node_modules/ava/node_modules/escape-string-regexp/license b/node_modules/log-symbols/node_modules/ansi-styles/license
similarity index 100%
rename from node_modules/ava/node_modules/escape-string-regexp/license
rename to node_modules/log-symbols/node_modules/ansi-styles/license
diff --git a/node_modules/log-symbols/node_modules/ansi-styles/package.json b/node_modules/log-symbols/node_modules/ansi-styles/package.json
new file mode 100644
index 0000000000..ec506b2fd5
--- /dev/null
+++ b/node_modules/log-symbols/node_modules/ansi-styles/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "ansi-styles",
+ "version": "4.3.0",
+ "description": "ANSI escape codes for styling strings in the terminal",
+ "license": "MIT",
+ "repository": "chalk/ansi-styles",
+ "funding": "https://github.com/chalk/ansi-styles?sponsor=1",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "scripts": {
+ "test": "xo && ava && tsd",
+ "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
+ },
+ "files": [
+ "index.js",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "devDependencies": {
+ "@types/color-convert": "^1.9.0",
+ "ava": "^2.3.0",
+ "svg-term-cli": "^2.1.1",
+ "tsd": "^0.11.0",
+ "xo": "^0.25.3"
+ }
+}
\ No newline at end of file
diff --git a/node_modules/log-symbols/node_modules/ansi-styles/readme.md b/node_modules/log-symbols/node_modules/ansi-styles/readme.md
new file mode 100644
index 0000000000..24883de808
--- /dev/null
+++ b/node_modules/log-symbols/node_modules/ansi-styles/readme.md
@@ -0,0 +1,152 @@
+# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
+
+> [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
+
+You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
+
+
+
+## Install
+
+```
+$ npm install ansi-styles
+```
+
+## Usage
+
+```js
+const style = require('ansi-styles');
+
+console.log(`${style.green.open}Hello world!${style.green.close}`);
+
+
+// Color conversion between 16/256/truecolor
+// NOTE: If conversion goes to 16 colors or 256 colors, the original color
+// may be degraded to fit that color palette. This means terminals
+// that do not support 16 million colors will best-match the
+// original color.
+console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close);
+console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close);
+console.log(style.color.ansi16m.hex('#abcdef') + 'Hello world!' + style.color.close);
+```
+
+## API
+
+Each style has an `open` and `close` property.
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(Not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(Not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `magenta`
+- `cyan`
+- `white`
+- `blackBright` (alias: `gray`, `grey`)
+- `redBright`
+- `greenBright`
+- `yellowBright`
+- `blueBright`
+- `magentaBright`
+- `cyanBright`
+- `whiteBright`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+- `bgBlackBright` (alias: `bgGray`, `bgGrey`)
+- `bgRedBright`
+- `bgGreenBright`
+- `bgYellowBright`
+- `bgBlueBright`
+- `bgMagentaBright`
+- `bgCyanBright`
+- `bgWhiteBright`
+
+## Advanced usage
+
+By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
+
+- `style.modifier`
+- `style.color`
+- `style.bgColor`
+
+###### Example
+
+```js
+console.log(style.color.green.open);
+```
+
+Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values.
+
+###### Example
+
+```js
+console.log(style.codes.get(36));
+//=> 39
+```
+
+## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728)
+
+`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors.
+
+The following color spaces from `color-convert` are supported:
+
+- `rgb`
+- `hex`
+- `keyword`
+- `hsl`
+- `hsv`
+- `hwb`
+- `ansi`
+- `ansi256`
+
+To use these, call the associated conversion function with the intended output, for example:
+
+```js
+style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code
+style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code
+
+style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+
+style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code
+style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code
+```
+
+## Related
+
+- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+## For enterprise
+
+Available as part of the Tidelift Subscription.
+
+The maintainers of `ansi-styles` 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-ansi-styles?utm_source=npm-ansi-styles&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/node_modules/log-symbols/node_modules/chalk/index.d.ts b/node_modules/log-symbols/node_modules/chalk/index.d.ts
new file mode 100644
index 0000000000..9cd88f38be
--- /dev/null
+++ b/node_modules/log-symbols/node_modules/chalk/index.d.ts
@@ -0,0 +1,415 @@
+/**
+Basic foreground colors.
+
+[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
+*/
+declare type ForegroundColor =
+ | 'black'
+ | 'red'
+ | 'green'
+ | 'yellow'
+ | 'blue'
+ | 'magenta'
+ | 'cyan'
+ | 'white'
+ | 'gray'
+ | 'grey'
+ | 'blackBright'
+ | 'redBright'
+ | 'greenBright'
+ | 'yellowBright'
+ | 'blueBright'
+ | 'magentaBright'
+ | 'cyanBright'
+ | 'whiteBright';
+
+/**
+Basic background colors.
+
+[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
+*/
+declare type BackgroundColor =
+ | 'bgBlack'
+ | 'bgRed'
+ | 'bgGreen'
+ | 'bgYellow'
+ | 'bgBlue'
+ | 'bgMagenta'
+ | 'bgCyan'
+ | 'bgWhite'
+ | 'bgGray'
+ | 'bgGrey'
+ | 'bgBlackBright'
+ | 'bgRedBright'
+ | 'bgGreenBright'
+ | 'bgYellowBright'
+ | 'bgBlueBright'
+ | 'bgMagentaBright'
+ | 'bgCyanBright'
+ | 'bgWhiteBright';
+
+/**
+Basic colors.
+
+[More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support)
+*/
+declare type Color = ForegroundColor | BackgroundColor;
+
+declare type Modifiers =
+ | 'reset'
+ | 'bold'
+ | 'dim'
+ | 'italic'
+ | 'underline'
+ | 'inverse'
+ | 'hidden'
+ | 'strikethrough'
+ | 'visible';
+
+declare namespace chalk {
+ /**
+ Levels:
+ - `0` - All colors disabled.
+ - `1` - Basic 16 colors support.
+ - `2` - ANSI 256 colors support.
+ - `3` - Truecolor 16 million colors support.
+ */
+ type Level = 0 | 1 | 2 | 3;
+
+ interface Options {
+ /**
+ Specify the color support for Chalk.
+
+ By default, color support is automatically detected based on the environment.
+
+ Levels:
+ - `0` - All colors disabled.
+ - `1` - Basic 16 colors support.
+ - `2` - ANSI 256 colors support.
+ - `3` - Truecolor 16 million colors support.
+ */
+ level?: Level;
+ }
+
+ /**
+ Return a new Chalk instance.
+ */
+ type Instance = new (options?: Options) => Chalk;
+
+ /**
+ Detect whether the terminal supports color.
+ */
+ interface ColorSupport {
+ /**
+ The color level used by Chalk.
+ */
+ level: Level;
+
+ /**
+ Return whether Chalk supports basic 16 colors.
+ */
+ hasBasic: boolean;
+
+ /**
+ Return whether Chalk supports ANSI 256 colors.
+ */
+ has256: boolean;
+
+ /**
+ Return whether Chalk supports Truecolor 16 million colors.
+ */
+ has16m: boolean;
+ }
+
+ interface ChalkFunction {
+ /**
+ Use a template string.
+
+ @remarks Template literals are unsupported for nested calls (see [issue #341](https://github.com/chalk/chalk/issues/341))
+
+ @example
+ ```
+ import chalk = require('chalk');
+
+ log(chalk`
+ CPU: {red ${cpu.totalPercent}%}
+ RAM: {green ${ram.used / ram.total * 100}%}
+ DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
+ `);
+ ```
+
+ @example
+ ```
+ import chalk = require('chalk');
+
+ log(chalk.red.bgBlack`2 + 3 = {bold ${2 + 3}}`)
+ ```
+ */
+ (text: TemplateStringsArray, ...placeholders: unknown[]): string;
+
+ (...text: unknown[]): string;
+ }
+
+ interface Chalk extends ChalkFunction {
+ /**
+ Return a new Chalk instance.
+ */
+ Instance: Instance;
+
+ /**
+ The color support for Chalk.
+
+ By default, color support is automatically detected based on the environment.
+
+ Levels:
+ - `0` - All colors disabled.
+ - `1` - Basic 16 colors support.
+ - `2` - ANSI 256 colors support.
+ - `3` - Truecolor 16 million colors support.
+ */
+ level: Level;
+
+ /**
+ Use HEX value to set text color.
+
+ @param color - Hexadecimal value representing the desired color.
+
+ @example
+ ```
+ import chalk = require('chalk');
+
+ chalk.hex('#DEADED');
+ ```
+ */
+ hex(color: string): Chalk;
+
+ /**
+ Use keyword color value to set text color.
+
+ @param color - Keyword value representing the desired color.
+
+ @example
+ ```
+ import chalk = require('chalk');
+
+ chalk.keyword('orange');
+ ```
+ */
+ keyword(color: string): Chalk;
+
+ /**
+ Use RGB values to set text color.
+ */
+ rgb(red: number, green: number, blue: number): Chalk;
+
+ /**
+ Use HSL values to set text color.
+ */
+ hsl(hue: number, saturation: number, lightness: number): Chalk;
+
+ /**
+ Use HSV values to set text color.
+ */
+ hsv(hue: number, saturation: number, value: number): Chalk;
+
+ /**
+ Use HWB values to set text color.
+ */
+ hwb(hue: number, whiteness: number, blackness: number): Chalk;
+
+ /**
+ Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set text color.
+
+ 30 <= code && code < 38 || 90 <= code && code < 98
+ For example, 31 for red, 91 for redBright.
+ */
+ ansi(code: number): Chalk;
+
+ /**
+ Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color.
+ */
+ ansi256(index: number): Chalk;
+
+ /**
+ Use HEX value to set background color.
+
+ @param color - Hexadecimal value representing the desired color.
+
+ @example
+ ```
+ import chalk = require('chalk');
+
+ chalk.bgHex('#DEADED');
+ ```
+ */
+ bgHex(color: string): Chalk;
+
+ /**
+ Use keyword color value to set background color.
+
+ @param color - Keyword value representing the desired color.
+
+ @example
+ ```
+ import chalk = require('chalk');
+
+ chalk.bgKeyword('orange');
+ ```
+ */
+ bgKeyword(color: string): Chalk;
+
+ /**
+ Use RGB values to set background color.
+ */
+ bgRgb(red: number, green: number, blue: number): Chalk;
+
+ /**
+ Use HSL values to set background color.
+ */
+ bgHsl(hue: number, saturation: number, lightness: number): Chalk;
+
+ /**
+ Use HSV values to set background color.
+ */
+ bgHsv(hue: number, saturation: number, value: number): Chalk;
+
+ /**
+ Use HWB values to set background color.
+ */
+ bgHwb(hue: number, whiteness: number, blackness: number): Chalk;
+
+ /**
+ Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set background color.
+
+ 30 <= code && code < 38 || 90 <= code && code < 98
+ For example, 31 for red, 91 for redBright.
+ Use the foreground code, not the background code (for example, not 41, nor 101).
+ */
+ bgAnsi(code: number): Chalk;
+
+ /**
+ Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color.
+ */
+ bgAnsi256(index: number): Chalk;
+
+ /**
+ Modifier: Resets the current color chain.
+ */
+ readonly reset: Chalk;
+
+ /**
+ Modifier: Make text bold.
+ */
+ readonly bold: Chalk;
+
+ /**
+ Modifier: Emitting only a small amount of light.
+ */
+ readonly dim: Chalk;
+
+ /**
+ Modifier: Make text italic. (Not widely supported)
+ */
+ readonly italic: Chalk;
+
+ /**
+ Modifier: Make text underline. (Not widely supported)
+ */
+ readonly underline: Chalk;
+
+ /**
+ Modifier: Inverse background and foreground colors.
+ */
+ readonly inverse: Chalk;
+
+ /**
+ Modifier: Prints the text, but makes it invisible.
+ */
+ readonly hidden: Chalk;
+
+ /**
+ Modifier: Puts a horizontal line through the center of the text. (Not widely supported)
+ */
+ readonly strikethrough: Chalk;
+
+ /**
+ Modifier: Prints the text only when Chalk has a color support level > 0.
+ Can be useful for things that are purely cosmetic.
+ */
+ readonly visible: Chalk;
+
+ readonly black: Chalk;
+ readonly red: Chalk;
+ readonly green: Chalk;
+ readonly yellow: Chalk;
+ readonly blue: Chalk;
+ readonly magenta: Chalk;
+ readonly cyan: Chalk;
+ readonly white: Chalk;
+
+ /*
+ Alias for `blackBright`.
+ */
+ readonly gray: Chalk;
+
+ /*
+ Alias for `blackBright`.
+ */
+ readonly grey: Chalk;
+
+ readonly blackBright: Chalk;
+ readonly redBright: Chalk;
+ readonly greenBright: Chalk;
+ readonly yellowBright: Chalk;
+ readonly blueBright: Chalk;
+ readonly magentaBright: Chalk;
+ readonly cyanBright: Chalk;
+ readonly whiteBright: Chalk;
+
+ readonly bgBlack: Chalk;
+ readonly bgRed: Chalk;
+ readonly bgGreen: Chalk;
+ readonly bgYellow: Chalk;
+ readonly bgBlue: Chalk;
+ readonly bgMagenta: Chalk;
+ readonly bgCyan: Chalk;
+ readonly bgWhite: Chalk;
+
+ /*
+ Alias for `bgBlackBright`.
+ */
+ readonly bgGray: Chalk;
+
+ /*
+ Alias for `bgBlackBright`.
+ */
+ readonly bgGrey: Chalk;
+
+ readonly bgBlackBright: Chalk;
+ readonly bgRedBright: Chalk;
+ readonly bgGreenBright: Chalk;
+ readonly bgYellowBright: Chalk;
+ readonly bgBlueBright: Chalk;
+ readonly bgMagentaBright: Chalk;
+ readonly bgCyanBright: Chalk;
+ readonly bgWhiteBright: Chalk;
+ }
+}
+
+/**
+Main Chalk object that allows to chain styles together.
+Call the last one as a method with a string argument.
+Order doesn't matter, and later styles take precedent in case of a conflict.
+This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`.
+*/
+declare const chalk: chalk.Chalk & chalk.ChalkFunction & {
+ supportsColor: chalk.ColorSupport | false;
+ Level: chalk.Level;
+ Color: Color;
+ ForegroundColor: ForegroundColor;
+ BackgroundColor: BackgroundColor;
+ Modifiers: Modifiers;
+ stderr: chalk.Chalk & {supportsColor: chalk.ColorSupport | false};
+};
+
+export = chalk;
diff --git a/node_modules/boxen/node_modules/type-fest/license b/node_modules/log-symbols/node_modules/chalk/license
similarity index 100%
rename from node_modules/boxen/node_modules/type-fest/license
rename to node_modules/log-symbols/node_modules/chalk/license
diff --git a/node_modules/log-symbols/node_modules/chalk/package.json b/node_modules/log-symbols/node_modules/chalk/package.json
new file mode 100644
index 0000000000..df5b74e54c
--- /dev/null
+++ b/node_modules/log-symbols/node_modules/chalk/package.json
@@ -0,0 +1,68 @@
+{
+ "name": "chalk",
+ "version": "4.1.2",
+ "description": "Terminal string styling done right",
+ "license": "MIT",
+ "repository": "chalk/chalk",
+ "funding": "https://github.com/chalk/chalk?sponsor=1",
+ "main": "source",
+ "engines": {
+ "node": ">=10"
+ },
+ "scripts": {
+ "test": "xo && nyc ava && tsd",
+ "bench": "matcha benchmark.js"
+ },
+ "files": [
+ "source",
+ "index.d.ts"
+ ],
+ "keywords": [
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "str",
+ "ansi",
+ "style",
+ "styles",
+ "tty",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "devDependencies": {
+ "ava": "^2.4.0",
+ "coveralls": "^3.0.7",
+ "execa": "^4.0.0",
+ "import-fresh": "^3.1.0",
+ "matcha": "^0.7.0",
+ "nyc": "^15.0.0",
+ "resolve-from": "^5.0.0",
+ "tsd": "^0.7.4",
+ "xo": "^0.28.2"
+ },
+ "xo": {
+ "rules": {
+ "unicorn/prefer-string-slice": "off",
+ "unicorn/prefer-includes": "off",
+ "@typescript-eslint/member-ordering": "off",
+ "no-redeclare": "off",
+ "unicorn/string-content": "off",
+ "unicorn/better-regex": "off"
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/log-symbols/node_modules/chalk/readme.md b/node_modules/log-symbols/node_modules/chalk/readme.md
new file mode 100644
index 0000000000..a055d21c97
--- /dev/null
+++ b/node_modules/log-symbols/node_modules/chalk/readme.md
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+
+
+
+> Terminal string styling done right
+
+[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![npm dependents](https://badgen.net/npm/dependents/chalk)](https://www.npmjs.com/package/chalk?activeTab=dependents) [![Downloads](https://badgen.net/npm/dt/chalk)](https://www.npmjs.com/package/chalk) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) ![TypeScript-ready](https://img.shields.io/npm/types/chalk.svg) [![run on repl.it](https://repl.it/badge/github/chalk/chalk)](https://repl.it/github/chalk/chalk)
+
+
+
+
+
+---
+
+
+
+---
+
+
+
+## Highlights
+
+- Expressive API
+- Highly performant
+- Ability to nest styles
+- [256/Truecolor color support](#256-and-truecolor-color-support)
+- Auto-detects color support
+- Doesn't extend `String.prototype`
+- Clean and focused
+- Actively maintained
+- [Used by ~50,000 packages](https://www.npmjs.com/browse/depended/chalk) as of January 1, 2020
+
+## Install
+
+```console
+$ npm install chalk
+```
+
+## Usage
+
+```js
+const chalk = require('chalk');
+
+console.log(chalk.blue('Hello world!'));
+```
+
+Chalk comes with an easy to use composable API where you just chain and nest the styles you want.
+
+```js
+const chalk = require('chalk');
+const log = console.log;
+
+// Combine styled and normal strings
+log(chalk.blue('Hello') + ' World' + chalk.red('!'));
+
+// Compose multiple styles using the chainable API
+log(chalk.blue.bgRed.bold('Hello world!'));
+
+// Pass in multiple arguments
+log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));
+
+// Nest styles
+log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));
+
+// Nest styles of the same type even (color, underline, background)
+log(chalk.green(
+ 'I am a green line ' +
+ chalk.blue.underline.bold('with a blue substring') +
+ ' that becomes green again!'
+));
+
+// ES2015 template literal
+log(`
+CPU: ${chalk.red('90%')}
+RAM: ${chalk.green('40%')}
+DISK: ${chalk.yellow('70%')}
+`);
+
+// ES2015 tagged template literal
+log(chalk`
+CPU: {red ${cpu.totalPercent}%}
+RAM: {green ${ram.used / ram.total * 100}%}
+DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
+`);
+
+// Use RGB colors in terminal emulators that support it.
+log(chalk.keyword('orange')('Yay for orange colored text!'));
+log(chalk.rgb(123, 45, 67).underline('Underlined reddish color'));
+log(chalk.hex('#DEADED').bold('Bold gray!'));
+```
+
+Easily define your own themes:
+
+```js
+const chalk = require('chalk');
+
+const error = chalk.bold.red;
+const warning = chalk.keyword('orange');
+
+console.log(error('Error!'));
+console.log(warning('Warning!'));
+```
+
+Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args):
+
+```js
+const name = 'Sindre';
+console.log(chalk.green('Hello %s'), name);
+//=> 'Hello Sindre'
+```
+
+## API
+
+### chalk.`