rollup-plugin-filesize
Advanced tools
Comparing version 7.0.0 to 8.0.0-0
@@ -5,78 +5,137 @@ 'use strict'; | ||
function _interopNamespace(e) { | ||
if (e && e.__esModule) { return e; } else { | ||
var n = {}; | ||
if (e) { | ||
Object.keys(e).forEach(function (k) { | ||
var d = Object.getOwnPropertyDescriptor(e, k); | ||
Object.defineProperty(n, k, d.get ? d : { | ||
enumerable: true, | ||
get: function () { | ||
return e[k]; | ||
} | ||
}); | ||
}); | ||
} | ||
n['default'] = e; | ||
return n; | ||
} | ||
} | ||
var fs = require('fs'); | ||
var util = require('util'); | ||
var path = require('path'); | ||
var fileSize = _interopDefault(require('filesize')); | ||
var boxen = _interopDefault(require('boxen')); | ||
var colors = _interopDefault(require('colors')); | ||
var merge = _interopDefault(require('lodash.merge')); | ||
var gzip = _interopDefault(require('gzip-size')); | ||
var terser = _interopDefault(require('terser')); | ||
var brotli = _interopDefault(require('brotli-size')); | ||
var pacote = _interopDefault(require('pacote')); | ||
function _toConsumableArray(arr) { | ||
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); | ||
} | ||
const readFile = util.promisify(fs.readFile); | ||
const thisDirectory = path.dirname(new URL((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index.js', document.baseURI).href))).pathname); | ||
function filesize(options = {}, env) { | ||
let { | ||
render, | ||
format = {}, | ||
theme = "dark", | ||
showBeforeSizes = "none", | ||
showGzippedSize = true, | ||
showBrotliSize = false, | ||
showMinifiedSize = true | ||
} = options; | ||
function _arrayWithoutHoles(arr) { | ||
if (Array.isArray(arr)) { | ||
for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; | ||
const getLoggingData = async function (outputOptions, bundle) { | ||
const { | ||
code, | ||
fileName | ||
} = bundle; | ||
const info = {}; | ||
let codeBefore; | ||
return arr2; | ||
} | ||
} | ||
if (showBeforeSizes !== "none") { | ||
let file = outputOptions.file || outputOptions.dest; | ||
function _iterableToArray(iter) { | ||
if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); | ||
} | ||
if (showBeforeSizes !== "build") { | ||
const { | ||
name | ||
} = await new Promise(function (resolve) { resolve(_interopNamespace(require(path.join(process.cwd(), "./package.json")))); }); | ||
function _nonIterableSpread() { | ||
throw new TypeError("Invalid attempt to spread non-iterable instance"); | ||
} | ||
try { | ||
const output = path.join(thisDirectory, "../.cache"); | ||
var brotli = require("brotli-size"); | ||
if (!fs.existsSync(output)) { | ||
await pacote.extract(`${name}@latest`, output); | ||
} | ||
function render(opt, outputOptions, info) { | ||
var primaryColor = opt.theme === "dark" ? "green" : "black"; | ||
var secondaryColor = opt.theme === "dark" ? "yellow" : "blue"; | ||
var title = colors[primaryColor].bold; | ||
var value = colors[secondaryColor]; | ||
var values = [].concat(_toConsumableArray(outputOptions.file ? ["".concat(title("Destination: ")).concat(value(outputOptions.file))] : info.fileName ? ["".concat(title("Bundle Name: "), " ").concat(value(info.fileName))] : []), ["".concat(title("Bundle Size: "), " ").concat(value(info.bundleSize))], _toConsumableArray(info.minSize ? ["".concat(title("Minified Size: "), " ").concat(value(info.minSize))] : []), _toConsumableArray(info.gzipSize ? ["".concat(title("Gzipped Size: "), " ").concat(value(info.gzipSize))] : []), _toConsumableArray(info.brotliSize ? ["".concat(title("Brotli size: ")).concat(value(info.brotliSize))] : [])); | ||
return boxen(values.join("\n"), { | ||
padding: 1 | ||
}); | ||
} | ||
file = path.join(output, file); | ||
} catch (err) { | ||
// Package might not exist | ||
file = null; | ||
} | ||
} | ||
function filesize() { | ||
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
var env = arguments.length > 1 ? arguments[1] : undefined; | ||
var defaultOptions = { | ||
format: {}, | ||
theme: "dark", | ||
render: render, | ||
showGzippedSize: true, | ||
showBrotliSize: false, | ||
showMinifiedSize: true | ||
}; | ||
var opts = merge({}, defaultOptions, options); | ||
if (file) { | ||
try { | ||
codeBefore = await readFile(file, "utf8"); | ||
} catch (err) {// File might not exist | ||
} | ||
} | ||
} | ||
if (options.render) { | ||
opts.render = options.render; | ||
} | ||
var getData = function getData(outputOptions, bundle) { | ||
var code = bundle.code, | ||
fileName = bundle.fileName; | ||
var info = {}; | ||
info.fileName = fileName; | ||
info.bundleSize = fileSize(Buffer.byteLength(code), opts.format); | ||
info.brotliSize = opts.showBrotliSize ? fileSize(brotli.sync(code), opts.format) : ""; | ||
info.bundleSize = fileSize(Buffer.byteLength(code), format); | ||
info.brotliSize = showBrotliSize ? fileSize((await brotli(code)), format) : ""; | ||
if (opts.showMinifiedSize || opts.showGzippedSize) { | ||
var minifiedCode = terser.minify(code).code; | ||
info.minSize = opts.showMinifiedSize ? fileSize(minifiedCode.length, opts.format) : ""; | ||
info.gzipSize = opts.showGzippedSize ? fileSize(gzip.sync(minifiedCode), opts.format) : ""; | ||
if (showMinifiedSize || showGzippedSize) { | ||
const minifiedCode = terser.minify(code).code; | ||
info.minSize = showMinifiedSize ? fileSize(minifiedCode.length, format) : ""; | ||
info.gzipSize = showGzippedSize ? fileSize(gzip.sync(minifiedCode), format) : ""; | ||
} | ||
return opts.render(opts, outputOptions, info); | ||
if (codeBefore) { | ||
info.bundleSizeBefore = fileSize(Buffer.byteLength(codeBefore), format); | ||
info.brotliSizeBefore = showBrotliSize ? fileSize((await brotli(codeBefore)), format) : ""; | ||
if (showMinifiedSize || showGzippedSize) { | ||
const minifiedCode = terser.minify(codeBefore).code; | ||
info.minSizeBefore = showMinifiedSize ? fileSize(minifiedCode.length, format) : ""; | ||
info.gzipSizeBefore = showGzippedSize ? fileSize(gzip.sync(minifiedCode), format) : ""; | ||
} | ||
} | ||
const opts = { | ||
format, | ||
theme, | ||
render, | ||
showBeforeSizes, | ||
showGzippedSize, | ||
showBrotliSize, | ||
showMinifiedSize | ||
}; | ||
if (render) { | ||
console.warn("`render` is now deprecated. Please use `reporter` instead."); | ||
return opts.render(opts, outputOptions, info); | ||
} | ||
const reporters = options.reporter ? Array.isArray(options.reporter) ? options.reporter : [options.reporter] : ["boxen"]; | ||
return (await Promise.all(reporters.map(async reporter => { | ||
if (typeof reporter === "string") { | ||
let p; | ||
if (reporter === "boxen") { | ||
p = new Promise(function (resolve) { resolve(_interopNamespace(require(path.dirname(new URL((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index.js', document.baseURI).href))).pathname) + "/reporters/boxen.js"))); }); | ||
} else { | ||
p = new Promise(function (resolve) { resolve(_interopNamespace(require(path.resolve(process.cwd(), reporter)))); }); | ||
} | ||
reporter = (await p).default; | ||
} | ||
return reporter(opts, outputOptions, info); | ||
}))).join(""); | ||
}; | ||
if (env === "test") { | ||
return getData; | ||
return getLoggingData; | ||
} | ||
@@ -86,7 +145,8 @@ | ||
name: "filesize", | ||
generateBundle: function generateBundle(outputOptions, bundle, isWrite) { | ||
Object.keys(bundle).map(function (fileName) { | ||
return bundle[fileName]; | ||
}).filter(function (currentBundle) { | ||
if (currentBundle.hasOwnProperty("type")) { | ||
async generateBundle(outputOptions, bundle | ||
/* , isWrite */ | ||
) { | ||
const dataStrs = await Promise.all(Object.keys(bundle).map(fileName => bundle[fileName]).filter(currentBundle => { | ||
if ({}.hasOwnProperty.call(currentBundle, "type")) { | ||
return currentBundle.type !== "asset"; | ||
@@ -96,6 +156,12 @@ } | ||
return !currentBundle.isAsset; | ||
}).forEach(function (currentBundle) { | ||
console.log(getData(outputOptions, currentBundle)); | ||
}).map(currentBundle => { | ||
return getLoggingData(outputOptions, currentBundle); | ||
})); | ||
dataStrs.forEach(str => { | ||
if (str) { | ||
console.log(str); | ||
} | ||
}); | ||
} | ||
}; | ||
@@ -105,1 +171,2 @@ } | ||
module.exports = filesize; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "rollup-plugin-filesize", | ||
"version": "7.0.0", | ||
"version": "8.0.0-0", | ||
"description": "A rollup plugin to show filesize in the cli", | ||
"main": "dist/index.js", | ||
"jsnext:main": "src/index.js", | ||
"module": "src/index.js", | ||
"files": [ | ||
@@ -13,7 +13,11 @@ "src", | ||
"scripts": { | ||
"test": "ava test/index.test.js", | ||
"lint": "eslint .", | ||
"test": "nyc ava test/index.test.js", | ||
"pretest": "rollup -c", | ||
"prepublish": "npm run test", | ||
"prebuild": "rm -rf dist/*" | ||
"prebuild": "rimraf dist/*" | ||
}, | ||
"engines": { | ||
"node": ">=8.0.0" | ||
}, | ||
"repository": { | ||
@@ -27,2 +31,3 @@ "type": "git", | ||
"author": "Ritesh Kumar", | ||
"contributors": [], | ||
"license": "MIT", | ||
@@ -34,30 +39,35 @@ "bugs": { | ||
"dependencies": { | ||
"boxen": "^4.1.0", | ||
"boxen": "^4.2.0", | ||
"brotli-size": "4.0.0", | ||
"colors": "^1.3.3", | ||
"filesize": "^4.1.2", | ||
"colors": "^1.4.0", | ||
"filesize": "^6.1.0", | ||
"gzip-size": "^5.1.1", | ||
"lodash.merge": "^4.6.2", | ||
"terser": "^4.1.3" | ||
"pacote": "^11.1.4", | ||
"terser": "^4.6.11" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.5.5", | ||
"@babel/preset-env": "^7.5.5", | ||
"@babel/register": "^7.5.5", | ||
"ava": "^2.2.0", | ||
"@babel/core": "^7.9.0", | ||
"@babel/plugin-syntax-import-meta": "^7.8.3", | ||
"@babel/preset-env": "^7.9.5", | ||
"@babel/register": "^7.9.0", | ||
"@rollup/plugin-json": "^4.0.3", | ||
"ava": "^3.7.1", | ||
"babel-eslint": "^10.1.0", | ||
"babel-register": "^6.26.0", | ||
"prettier": "^1.18.2", | ||
"rollup": "^1.19.4", | ||
"rollup-plugin-babel": "^4.3.3" | ||
"eslint": "^6.8.0", | ||
"eslint-config-prettier": "^6.10.1", | ||
"eslint-plugin-prettier": "^3.1.3", | ||
"esm": "^3.2.25", | ||
"nyc": "^15.0.1", | ||
"prettier": "^2.0.4", | ||
"rimraf": "^3.0.2", | ||
"rollup": "^2.6.1", | ||
"rollup-plugin-babel": "^4.4.0" | ||
}, | ||
"ava": { | ||
"require": [ | ||
"@babel/register" | ||
"esm", | ||
"./test/bootstrap/register.js" | ||
] | ||
}, | ||
"babel": { | ||
"presets": [ | ||
"@babel/preset-env" | ||
] | ||
} | ||
} |
@@ -30,2 +30,3 @@ # rollup-plugin-filesize | ||
#### showMinifiedSize | ||
type: `boolean` | ||
@@ -37,2 +38,3 @@ default: true | ||
#### showGzippedSize | ||
type: `boolean` | ||
@@ -44,2 +46,3 @@ default: true | ||
#### showBrotliSize | ||
type: `boolean` | ||
@@ -50,3 +53,26 @@ default: false | ||
#### showBeforeSizes | ||
**Note: this feature is experimental and may be changed in a future release.** | ||
type: `"release", ``"build"`, or `"none"` | ||
default: `"none"` | ||
Indicates how, if any, comparisons will be shown between the | ||
`output.file` file size as it was and as it is now being written. | ||
If set to `"release"`, will compare the file size at present to that of | ||
the last npm release. | ||
If set to `"build"`, the size of the file that is now being built will | ||
be compared to the immediately previous build. This means that if you run | ||
Rollup multiple times with this option, the info on the previous package | ||
size will be lost (since Rollup will have overwritten your copy), so with | ||
this option, you will need to consult your terminal history to see what the | ||
file size was prior to your changes. This option may be useful if you wish | ||
to compare size changes incrementally as you are developing rather than | ||
comparing to your last release. | ||
#### format | ||
type : `object` | ||
@@ -56,18 +82,30 @@ | ||
See the options [here](https://github.com/avoidwork/filesize.js) | ||
See the options [here](https://github.com/avoidwork/filesize.js#optional-settings) | ||
#### render | ||
type : `function` | ||
#### reporter | ||
return the command that you want to log. Eg: | ||
(Note that this replaces the deprecated optional `render` function option.) | ||
type : A reporter string (currently "boxen" only), a function, or an array thereof. | ||
Defaults to "boxen". | ||
After rendering occurs, you may wish to pass on the collected file data, | ||
e.g., to build a badge for filesizes (as does [filesize-badger](https://github.com/brettz9/filesize-badger)). | ||
You can use `reporter` to do so: | ||
```js | ||
filesize({ | ||
render : function (options, bundle, { minSize, gzipSize, brotliSize, bundleSize }){ | ||
return minSize; | ||
} | ||
}) | ||
reporter: [ | ||
function (options, bundle, { minSize, gzipSize, brotliSize, bundleSize }) { | ||
// If a promise is returned, it will be awaited before rendering. | ||
return promise; | ||
}, | ||
], | ||
}); | ||
``` | ||
#### theme | ||
type: `string` | ||
@@ -81,7 +119,4 @@ | ||
## License | ||
## License | ||
MIT | ||
196
src/index.js
@@ -0,72 +1,137 @@ | ||
import { readFile as origReadFile, existsSync } from "fs"; | ||
import { promisify } from "util"; | ||
import { dirname, resolve as pathResolve, join } from "path"; | ||
import fileSize from "filesize"; | ||
import boxen from "boxen"; | ||
import colors from "colors"; | ||
import merge from "lodash.merge"; | ||
import gzip from "gzip-size"; | ||
import terser from "terser"; | ||
import brotli from "brotli-size"; | ||
import pacote from "pacote"; | ||
const brotli = require("brotli-size"); | ||
const readFile = promisify(origReadFile); | ||
function render(opt, outputOptions, info) { | ||
const primaryColor = opt.theme === "dark" ? "green" : "black"; | ||
const secondaryColor = opt.theme === "dark" ? "yellow" : "blue"; | ||
const thisDirectory = dirname(new URL(import.meta.url).pathname); | ||
const title = colors[primaryColor].bold; | ||
const value = colors[secondaryColor]; | ||
export default function filesize(options = {}, env) { | ||
let { | ||
render, | ||
format = {}, | ||
theme = "dark", | ||
showBeforeSizes = "none", | ||
showGzippedSize = true, | ||
showBrotliSize = false, | ||
showMinifiedSize = true, | ||
} = options; | ||
const values = [ | ||
...(outputOptions.file ? | ||
[`${title("Destination: ")}${value(outputOptions.file)}`] : | ||
(info.fileName ? [`${title("Bundle Name: ")} ${value(info.fileName)}`] : [])), | ||
...[`${title("Bundle Size: ")} ${value(info.bundleSize)}`], | ||
...(info.minSize ? [`${title("Minified Size: ")} ${value(info.minSize)}`] : []), | ||
...(info.gzipSize ? [`${title("Gzipped Size: ")} ${value(info.gzipSize)}`] : []), | ||
...(info.brotliSize ? [`${title("Brotli size: ")}${value(info.brotliSize)}`] : []) | ||
]; | ||
const getLoggingData = async function (outputOptions, bundle) { | ||
const { code, fileName } = bundle; | ||
const info = {}; | ||
return boxen(values.join("\n"), { padding: 1 }); | ||
} | ||
let codeBefore; | ||
if (showBeforeSizes !== "none") { | ||
let file = outputOptions.file || outputOptions.dest; | ||
if (showBeforeSizes !== "build") { | ||
const { name } = await import(join(process.cwd(), "./package.json")); | ||
try { | ||
const output = join(thisDirectory, "../.cache"); | ||
if (!existsSync(output)) { | ||
await pacote.extract(`${name}@latest`, output); | ||
} | ||
file = join(output, file); | ||
} catch (err) { | ||
// Package might not exist | ||
file = null; | ||
} | ||
} | ||
export default function filesize(options = {}, env) { | ||
let defaultOptions = { | ||
format: {}, | ||
theme: "dark", | ||
render: render, | ||
showGzippedSize: true, | ||
showBrotliSize: false, | ||
showMinifiedSize: true | ||
}; | ||
if (file) { | ||
try { | ||
codeBefore = await readFile(file, "utf8"); | ||
} catch (err) { | ||
// File might not exist | ||
} | ||
} | ||
} | ||
let opts = merge({}, defaultOptions, options); | ||
if (options.render) { | ||
opts.render = options.render; | ||
} | ||
info.fileName = fileName; | ||
const getData = function(outputOptions, bundle) { | ||
const { code, fileName } = bundle; | ||
const info = {}; | ||
info.bundleSize = fileSize(Buffer.byteLength(code), format); | ||
info.fileName = fileName; | ||
info.bundleSize = fileSize(Buffer.byteLength(code), opts.format); | ||
info.brotliSize = opts.showBrotliSize | ||
? fileSize(brotli.sync(code), opts.format) | ||
info.brotliSize = showBrotliSize | ||
? fileSize(await brotli(code), format) | ||
: ""; | ||
if (opts.showMinifiedSize || opts.showGzippedSize) { | ||
if (showMinifiedSize || showGzippedSize) { | ||
const minifiedCode = terser.minify(code).code; | ||
info.minSize = opts.showMinifiedSize | ||
? fileSize(minifiedCode.length, opts.format) | ||
info.minSize = showMinifiedSize | ||
? fileSize(minifiedCode.length, format) | ||
: ""; | ||
info.gzipSize = opts.showGzippedSize | ||
? fileSize(gzip.sync(minifiedCode), opts.format) | ||
info.gzipSize = showGzippedSize | ||
? fileSize(gzip.sync(minifiedCode), format) | ||
: ""; | ||
} | ||
return opts.render(opts, outputOptions, info); | ||
if (codeBefore) { | ||
info.bundleSizeBefore = fileSize(Buffer.byteLength(codeBefore), format); | ||
info.brotliSizeBefore = showBrotliSize | ||
? fileSize(await brotli(codeBefore), format) | ||
: ""; | ||
if (showMinifiedSize || showGzippedSize) { | ||
const minifiedCode = terser.minify(codeBefore).code; | ||
info.minSizeBefore = showMinifiedSize | ||
? fileSize(minifiedCode.length, format) | ||
: ""; | ||
info.gzipSizeBefore = showGzippedSize | ||
? fileSize(gzip.sync(minifiedCode), format) | ||
: ""; | ||
} | ||
} | ||
const opts = { | ||
format, | ||
theme, | ||
render, | ||
showBeforeSizes, | ||
showGzippedSize, | ||
showBrotliSize, | ||
showMinifiedSize, | ||
}; | ||
if (render) { | ||
console.warn( | ||
"`render` is now deprecated. Please use `reporter` instead." | ||
); | ||
return opts.render(opts, outputOptions, info); | ||
} | ||
const reporters = options.reporter | ||
? Array.isArray(options.reporter) | ||
? options.reporter | ||
: [options.reporter] | ||
: ["boxen"]; | ||
return ( | ||
await Promise.all( | ||
reporters.map(async (reporter) => { | ||
if (typeof reporter === "string") { | ||
let p; | ||
if (reporter === "boxen") { | ||
p = import( | ||
dirname(new URL(import.meta.url).pathname) + | ||
"/reporters/boxen.js" | ||
); | ||
} else { | ||
p = import(pathResolve(process.cwd(), reporter)); | ||
} | ||
reporter = (await p).default; | ||
} | ||
return reporter(opts, outputOptions, info); | ||
}) | ||
) | ||
).join(""); | ||
}; | ||
if (env === "test") { | ||
return getData; | ||
return getLoggingData; | ||
} | ||
@@ -76,16 +141,23 @@ | ||
name: "filesize", | ||
generateBundle(outputOptions, bundle, isWrite) { | ||
Object.keys(bundle) | ||
.map(fileName => bundle[fileName]) | ||
.filter(currentBundle => { | ||
if (currentBundle.hasOwnProperty("type")) { | ||
return currentBundle.type !== "asset"; | ||
} | ||
return !currentBundle.isAsset; | ||
}) | ||
.forEach((currentBundle) => { | ||
console.log(getData(outputOptions, currentBundle)) | ||
}); | ||
} | ||
async generateBundle(outputOptions, bundle /* , isWrite */) { | ||
const dataStrs = await Promise.all( | ||
Object.keys(bundle) | ||
.map((fileName) => bundle[fileName]) | ||
.filter((currentBundle) => { | ||
if ({}.hasOwnProperty.call(currentBundle, "type")) { | ||
return currentBundle.type !== "asset"; | ||
} | ||
return !currentBundle.isAsset; | ||
}) | ||
.map((currentBundle) => { | ||
return getLoggingData(outputOptions, currentBundle); | ||
}) | ||
); | ||
dataStrs.forEach((str) => { | ||
if (str) { | ||
console.log(str); | ||
} | ||
}); | ||
}, | ||
}; | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
30497
8
358
117
17
1
7
1
+ Addedpacote@^11.1.4
+ Added@gar/promisify@1.1.3(transitive)
+ Added@npmcli/fs@1.1.1(transitive)
+ Added@npmcli/git@2.1.0(transitive)
+ Added@npmcli/installed-package-contents@1.0.7(transitive)
+ Added@npmcli/move-file@1.1.2(transitive)
+ Added@npmcli/node-gyp@1.0.3(transitive)
+ Added@npmcli/promise-spawn@1.3.2(transitive)
+ Added@npmcli/run-script@1.8.6(transitive)
+ Added@tootallnate/once@1.1.2(transitive)
+ Addedabbrev@1.1.1(transitive)
+ Addedagent-base@6.0.2(transitive)
+ Addedagentkeepalive@4.5.0(transitive)
+ Addedaggregate-error@3.1.0(transitive)
+ Addedajv@6.12.6(transitive)
+ Addedansi-regex@2.1.1(transitive)
+ Addedaproba@1.2.0(transitive)
+ Addedare-we-there-yet@1.1.7(transitive)
+ Addedasn1@0.2.6(transitive)
+ Addedassert-plus@1.0.0(transitive)
+ Addedasynckit@0.4.0(transitive)
+ Addedaws-sign2@0.7.0(transitive)
+ Addedaws4@1.13.2(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbcrypt-pbkdf@1.0.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedbuiltins@1.0.3(transitive)
+ Addedcacache@15.3.0(transitive)
+ Addedcaseless@0.12.0(transitive)
+ Addedchownr@2.0.0(transitive)
+ Addedclean-stack@2.2.0(transitive)
+ Addedcode-point-at@1.1.0(transitive)
+ Addedcombined-stream@1.0.8(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedconsole-control-strings@1.1.0(transitive)
+ Addedcore-util-is@1.0.21.0.3(transitive)
+ Addeddashdash@1.14.1(transitive)
+ Addeddebug@4.3.7(transitive)
+ Addeddelayed-stream@1.0.0(transitive)
+ Addeddelegates@1.0.0(transitive)
+ Addedecc-jsbn@0.1.2(transitive)
+ Addedencoding@0.1.13(transitive)
+ Addedenv-paths@2.2.1(transitive)
+ Addederr-code@2.0.3(transitive)
+ Addedextend@3.0.2(transitive)
+ Addedextsprintf@1.3.0(transitive)
+ Addedfast-deep-equal@3.1.3(transitive)
+ Addedfast-json-stable-stringify@2.1.0(transitive)
+ Addedfilesize@6.4.0(transitive)
+ Addedforever-agent@0.6.1(transitive)
+ Addedform-data@2.3.3(transitive)
+ Addedfs-minipass@2.1.0(transitive)
+ Addedfs.realpath@1.0.0(transitive)
+ Addedgauge@2.7.4(transitive)
+ Addedgetpass@0.1.7(transitive)
+ Addedglob@7.2.3(transitive)
+ Addedgraceful-fs@4.2.11(transitive)
+ Addedhar-schema@2.0.0(transitive)
+ Addedhar-validator@5.1.5(transitive)
+ Addedhas-unicode@2.0.1(transitive)
+ Addedhosted-git-info@4.1.0(transitive)
+ Addedhttp-cache-semantics@4.1.1(transitive)
+ Addedhttp-proxy-agent@4.0.1(transitive)
+ Addedhttp-signature@1.2.0(transitive)
+ Addedhttps-proxy-agent@5.0.1(transitive)
+ Addedhumanize-ms@1.2.1(transitive)
+ Addediconv-lite@0.6.3(transitive)
+ Addedignore-walk@3.0.4(transitive)
+ Addedimurmurhash@0.1.4(transitive)
+ Addedindent-string@4.0.0(transitive)
+ Addedinfer-owner@1.0.4(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedip-address@9.0.5(transitive)
+ Addedis-fullwidth-code-point@1.0.0(transitive)
+ Addedis-lambda@1.0.1(transitive)
+ Addedis-typedarray@1.0.0(transitive)
+ Addedisarray@1.0.0(transitive)
+ Addedisexe@2.0.0(transitive)
+ Addedisstream@0.1.2(transitive)
+ Addedjsbn@0.1.11.1.0(transitive)
+ Addedjson-parse-even-better-errors@2.3.1(transitive)
+ Addedjson-schema@0.4.0(transitive)
+ Addedjson-schema-traverse@0.4.1(transitive)
+ Addedjson-stringify-safe@5.0.1(transitive)
+ Addedjsonparse@1.3.1(transitive)
+ Addedjsprim@1.4.2(transitive)
+ Addedlru-cache@6.0.0(transitive)
+ Addedmake-fetch-happen@9.1.0(transitive)
+ Addedmime-db@1.52.0(transitive)
+ Addedmime-types@2.1.35(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedminipass@3.3.65.0.0(transitive)
+ Addedminipass-collect@1.0.2(transitive)
+ Addedminipass-fetch@1.4.1(transitive)
+ Addedminipass-flush@1.0.5(transitive)
+ Addedminipass-json-stream@1.0.2(transitive)
+ Addedminipass-pipeline@1.2.4(transitive)
+ Addedminipass-sized@1.0.3(transitive)
+ Addedminizlib@2.1.2(transitive)
+ Addedmkdirp@1.0.4(transitive)
+ Addedms@2.1.3(transitive)
+ Addednegotiator@0.6.4(transitive)
+ Addednode-gyp@7.1.2(transitive)
+ Addednopt@5.0.0(transitive)
+ Addednpm-bundled@1.1.2(transitive)
+ Addednpm-install-checks@4.0.0(transitive)
+ Addednpm-normalize-package-bin@1.0.1(transitive)
+ Addednpm-package-arg@8.1.5(transitive)
+ Addednpm-packlist@2.2.2(transitive)
+ Addednpm-pick-manifest@6.1.1(transitive)
+ Addednpm-registry-fetch@11.0.0(transitive)
+ Addednpmlog@4.1.2(transitive)
+ Addednumber-is-nan@1.0.1(transitive)
+ Addedoauth-sign@0.9.0(transitive)
+ Addedobject-assign@4.1.1(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedp-map@4.0.0(transitive)
+ Addedpacote@11.3.5(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedperformance-now@2.1.0(transitive)
+ Addedprocess-nextick-args@2.0.1(transitive)
+ Addedpromise-inflight@1.0.1(transitive)
+ Addedpromise-retry@2.0.1(transitive)
+ Addedpsl@1.9.0(transitive)
+ Addedpunycode@2.3.1(transitive)
+ Addedqs@6.5.3(transitive)
+ Addedread-package-json-fast@2.0.3(transitive)
+ Addedreadable-stream@2.3.8(transitive)
+ Addedrequest@2.88.2(transitive)
+ Addedretry@0.12.0(transitive)
+ Addedrimraf@3.0.2(transitive)
+ Addedsafe-buffer@5.1.2(transitive)
+ Addedsafer-buffer@2.1.2(transitive)
+ Addedsemver@7.6.3(transitive)
+ Addedset-blocking@2.0.0(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedsmart-buffer@4.2.0(transitive)
+ Addedsocks@2.8.3(transitive)
+ Addedsocks-proxy-agent@6.2.1(transitive)
+ Addedsprintf-js@1.1.3(transitive)
+ Addedsshpk@1.18.0(transitive)
+ Addedssri@8.0.1(transitive)
+ Addedstring-width@1.0.2(transitive)
+ Addedstring_decoder@1.1.1(transitive)
+ Addedstrip-ansi@3.0.1(transitive)
+ Addedtar@6.2.1(transitive)
+ Addedtough-cookie@2.5.0(transitive)
+ Addedtunnel-agent@0.6.0(transitive)
+ Addedtweetnacl@0.14.5(transitive)
+ Addedunique-filename@1.1.1(transitive)
+ Addedunique-slug@2.0.2(transitive)
+ Addeduri-js@4.4.1(transitive)
+ Addedutil-deprecate@1.0.2(transitive)
+ Addeduuid@3.4.0(transitive)
+ Addedvalidate-npm-package-name@3.0.0(transitive)
+ Addedverror@1.10.0(transitive)
+ Addedwhich@2.0.2(transitive)
+ Addedwide-align@1.1.5(transitive)
+ Addedwrappy@1.0.2(transitive)
+ Addedyallist@4.0.0(transitive)
- Removedlodash.merge@^4.6.2
- Removedfilesize@4.2.1(transitive)
- Removedlodash.merge@4.6.2(transitive)
Updatedboxen@^4.2.0
Updatedcolors@^1.4.0
Updatedfilesize@^6.1.0
Updatedterser@^4.6.11