From 78b745dcf45aed474caed213b3fda154f4d4db48 Mon Sep 17 00:00:00 2001 From: Charlie Robbins Date: Sat, 26 Jan 2019 14:44:49 -0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=E2=9C=A8=F0=9F=91=8D=20[PRE-RELEASE]?= =?UTF-8?q?=20winston@3.2.0=20(#1576)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial changelog for 3.2.0 * [doc] CHANGELOG.md through November 2018. * [doc] Entire CHANGELOG.md * [doc] Update Roadmap. * [dist] Regenerate package-lock.json with latest. * [doc] Add examples/quick-start.js and document it in `README.md` * [doc] Update README.md * [tiny doc] Correct order in TOC. * [doc] Tighten up CHANGELOG.md * [doc] Add note about 3.2.0 board. --- CHANGELOG.md | 113 ++++++++++++ CONTRIBUTING.md | 26 +-- README.md | 103 ++++++++--- examples/quick-start.js | 99 ++++++++++ package-lock.json | 390 ++++++++++++++++++++++++++-------------- 5 files changed, 558 insertions(+), 173 deletions(-) create mode 100644 examples/quick-start.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 286825e5c..30e75d170 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,118 @@ # CHANGELOG +## v3.2.0 / 2018-01-26 +### SORRY IT TOO SO LONG EDITION + +> **NOTE:** this was our first release using Github Projects. See the +> [3.2.0 Release Project](https://github.com/orgs/winstonjs/projects/3). + +### New Features! + +- [#1471], (@kibertoad) Implement child loggers. +- [#1462], (@drazisil) Add handleRejection support. + - [#1555], (@DABH) Add fixes from [#1355] to unhandled rejection handler. +- [#1418], (@mfrisbey) Precompile ES6 syntax before publishing to npm. + - [#1533], (@kibertoad) Update to Babel 7. +- [#1562], (@indexzero) [fix] Better handling of `new Error(string)` + throughout the pipeline(s). (Fixes [#1338], [#1486]). + +### Bug Fixes + +- [#1355], (@DABH) Fix issues with ExceptionHandler (Fixes [#1289]). +- [#1463], (@SerayaEryn) Bubble transport `warn` events up to logger in + addition to `error`s. +- [#1480], [#1503], (@SerayaEryn) File tailrolling fix. +- [#1483], (@soldair) Assign log levels to un-bound functions. +- [#1513], (@TilaTheHun0) Set maxListeners for Console transport. +- [#1521], (@jamesbechet) Fix Transform from `readable-stream` using CRA. +- [#1434], (@Kouzukii) Fixes logger.query function (regression from `3.0.0`) +- [#1526], (@pixtron) Log file without .gz for tailable (Fixes [#1525]). +- [#1559], (@eubnara) Fix typo related to `exitOnError`. +- [#1556], (@adoyle-h) Support to create log directory if it doesn't exist + for FileTransport. + +#### New `splat` behavior + +- [#1552], (@indexzero) Consistent handling of meta with (and without) + interpolation in `winston` and `logform`. +- [#1499], (@DABH) Provide all of `SPLAT` to formats (Fixes [#1485]). +- [#1485], (@mpabst) Fixing off-by-one when using both meta and splat. + +Previously `splat` would have added a `meta` property for any additional +`info[SPLAT]` beyond the expected number of tokens. + +**As of `logform@2.0.0`,** `format.splat` assumes additional splat paramters +(aka "metas") are objects and merges enumerable properties into the `info`. +e.g. **BE ADVISED** previous "metas" that _were not objects_ will very likely +lead to odd behavior. e.g. + +``` js +const { createLogger, format, transports } = require('winston'); +const { splat } = format; +const { MESSAGE, LEVEL, SPLAT } = require('triple-beam'); + +const logger = createLogger({ + format: format.combine( + format.splat(), + format.json() + ), + transports: [new transports.Console()] +}); + +// Expects two tokens, but four splat parameters provided. +logger.info( + 'Let us %s for %j', // message + 'objects', // used for %s + { label: 'sure' }, // used for %j + 'lol', ['ok', 'why'] // Multiple additional meta values +); + +// winston < 3.2.0 && logform@1.x behavior: +// Added "meta" property. +// +// { level: 'info', +// message: 'Let us objects for {"label":"sure"}', +// meta: ['lol', ['ok', 'why']], +// [Symbol(level)]: 'info', +// [Symbol(message)]: 'Let us %s for %j', +// [Symbol(splat)]: [ 'objects', { label: 'sure' } ] } + +// winston >= 3.2.0 && logform@2.x behavior: Enumerable properties +// assigned into `info`. Since **strings and Arrays only have NUMERIC +// enumerable properties we get this behavior!** +// +// { '0': 'ok', +// '1': 'why', +// '2': 'l', +// level: 'info', +// message: 'Let us objects for {"label":"sure"}', +// [Symbol(level)]: 'info', +// [Symbol(message)]: 'Let us %s for %j', +// [Symbol(splat)]: [ 'objects', { label: 'sure' } ] } +``` + +## Maintenance & Documentation + +- Documentation Updates + - [#1410], (@hakanostrom) Add docs reference to transport for Cloudant. + - [#1467], (@SeryaEryn) Add fast-file-rotate transport to transport.md. + - [#1488], (@adamcohen) Fix multi logger documentation. + - [#1531], (@mapleeit) Add links to transports. + - [#1548], (@ejmartin504) Fix `README.md` for awaiting logs. + - [#1554], (@indexzero) Document the solution to [#1486] as by design. + - Other small improvements: [#1509]. +- Improved TypeScript support + - [#1470], (@jd-carroll) Export all transport options (Fixes [#1469]). + - [#1474], (@jd-carroll) Correct import to avoid conflict (Fixed [#1472]). + - [#1546], (@alewiahmed) Add consoleWarnLevels field to the + `ConsoleTransportOptions` interface type definition. + - [#1557], (@negezor) Add missing `child()` method. +- Dependency management + - [#1560], (@kibertoad) Update dependencies. + - [#1512], (@SerayaEryn) Add node@11 and disallow failures on node@10. + - [#1516], (@SerayaEryn) Update `readable-stream` to `v3.0.6`. + - [#1534], (@kibertoad) Update `@types/node`, `nyc`, and `through2`. + ## v3.1.0 / 2018-08-22 ### RELEASES ON A PLANE EDITION diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5c808e937..664811431 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,7 +13,7 @@ Looking for somewhere to help? Checkout the [Roadmap](#roadmap) & help triage op ## What makes up `winston`? -As of `winston@3.0.0` the project has been broken out into a few modules: +As of `winston@3` the project has been broken out into a few modules: - [winston-transport]: `Transport` stream implementation & legacy `Transport` wrapper. - [logform]: All formats exports through `winston.format` @@ -35,8 +35,8 @@ const logger = createLogger({ format: combine( label({ label: 'right meow!' }), timestamp(), - printf(nfo => { - return `${nfo.timestamp} [${nfo.label}] ${nfo.level}: ${nfo.message}`; + printf(({ level, message, lable, timestamp }) => { + return `${timestamp} [${label}] ${level}: ${message}`; }) ), transports: [new transports.Console()] @@ -69,9 +69,9 @@ This can be accomplished with using [custom formats](https://github.com/winstonj Below is the list of items that make up the roadmap through `3.4.0`. We are actively triaging the open issues, so it is likely a few more critical path items will be added to this list before the next release goes out. -- [Version 3.2.0](#version-320) -- [Version 3.3.0](#version-330) -- [Version 3.4.0](#version-340) +- [Version 3.3.0](#version-320) +- [Version 3.4.0](#version-330) +- [Version 3.5.0](#version-340) ## Legend @@ -79,12 +79,14 @@ Below is the list of items that make up the roadmap through `3.4.0`. We are acti - [x] Finished work. - [-] Partially finished or in-progress work. -## Version `3.2.0` +## Version `3.3.0` ### High priority issues (non-blocking) +- [ ] Move `File` transport into `winston-file`. - [Browser support](https://github.com/winstonjs/winston/issues/287) - [ ] Unit tests for `webpack` & `rollup` - [ ] Replicate browser-only transpilation for `winston`, `winston-transport`, `triple-beam`. +- [-] Full JSDoc coverage - Benchmarking for `File` and `Stream` transports: - [x] Benchmarking integration in `pino`. - [x] Upgrade `pino` to latest `winston`. @@ -95,15 +97,15 @@ Below is the list of items that make up the roadmap through `3.4.0`. We are acti ### Increased code & scenario coverage - [-] Replace all `vows`-based tests. - [-] `test/transports/*-test.js` -- [ ] Code coverage tests above 80% for `winston` _(currently `~72%`)_. +- [ ] Code coverage tests above 80% for `winston` _(currently `~70%`)_. - [-] Core scenarios covered in `abstract-winston-transport`. + - [-] Full integration tests for all `logform` transports ### Communications / Compatibility - [ ] `README.md` for `winston-compat`. -- [ ] All formats documented in `logform`. -- [ ] All existing transports documented in `docs/transports.md`. +- [ ] Update all transports documented in `docs/transports.md` for `winston@3`. -## Version `3.3.0` +## Version `3.4.0` ### Querying, Streaming, Uncaught Exceptions - [-] Streaming @@ -111,7 +113,7 @@ Below is the list of items that make up the roadmap through `3.4.0`. We are acti ### Communications / Compatibility - [ ] `winstonjs.org` documentation site. -## Version `3.4.0` +## Version `3.5.0` ### Querying, Streaming, Uncaught Exceptions - [-] Querying diff --git a/README.md b/README.md index fab703967..ecc8a6252 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ A logger for just about everything. [![Join the chat at https://gitter.im/winstonjs/winston](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/winstonjs/winston?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -## winston@3.0.0 +## winston@3.2.0 See the [Upgrade Guide](UPGRADE-3.0.md) for more information. Bug reports and PRs welcome! @@ -34,6 +34,13 @@ ensuring those APIs decoupled from the implementation of transport logging (i.e. how the logs are stored / indexed, see: [Adding Custom Transports]) to the API that they exposed to the programmer. +## Quick Start + +TL;DR? Check out the [quick start example][quick-example] in `./examples/`. +There are a number of other examples in [`./examples/*.js`][examples]. +Don't see an example you think should be there? Submit a pull request +to add it! + ## Usage The recommended way to use `winston` is to create your own logger. The @@ -43,7 +50,7 @@ simplest way to do this is using `winston.createLogger`: const logger = winston.createLogger({ level: 'info', format: winston.format.json(), - defaultMeta: {service: 'user-service'}, + defaultMeta: { service: 'user-service' }, transports: [ // // - Write to all logs with level `info` and below to `combined.log` @@ -71,6 +78,10 @@ logger to use throughout your application if you so choose. ## Table of contents +* [Motivation](#motivation) +* [Quick Start](#quick-start) +* [Usage](#usage) +* [Table of Contents](#table-of-contents) * [Logging](#logging) * [Creating your logger](#creating-your-own-logger) * [Streams, `objectMode`, and `info` objects](#streams-objectmode-and-info-objects) @@ -129,14 +140,14 @@ const logger = winston.createLogger({ A logger accepts the following parameters: -| Name | Default | Description | -| ------------- | ---------------------- | --------------- | -| `level` | `'info'` | Log only if [`info.level`](#streams-objectmode-and-info-objects) less than or equal to this level | -| `levels` | `winston.config.npm.levels` | Levels (and colors) representing log priorities | -| `format` | `winston.format.json` | Formatting for `info` messages (see: [Formats]) | -| `transports` | `[]` _(No transports)_ | Set of logging targets for `info` messages | -| `exitOnError` | `true` | If false, handled exceptions will not cause `process.exit` | -| `silent` | `false` | If true, all logs are suppressed | +| Name | Default | Description | +| ------------- | --------------------------- | --------------- | +| `level` | `'info'` | Log only if [`info.level`](#streams-objectmode-and-info-objects) less than or equal to this level | +| `levels` | `winston.config.npm.levels` | Levels (and colors) representing log priorities | +| `format` | `winston.format.json` | Formatting for `info` messages (see: [Formats]) | +| `transports` | `[]` _(No transports)_ | Set of logging targets for `info` messages | +| `exitOnError` | `true` | If false, handled exceptions will not cause `process.exit` | +| `silent` | `false` | If true, all logs are suppressed | The levels provided to `createLogger` will be defined as convenience methods on the `logger` returned. @@ -210,30 +221,63 @@ const childLogger = logger.child({ requestId: '451' }); In `winston`, both `Logger` and `Transport` instances are treated as [`objectMode`](https://nodejs.org/api/stream.html#stream_object_mode) -streams that accept an `info` object. The `info` object represents a -single log message. The object itself is mutable. Every `info` must -have at least the `level` and `message` properties: +streams that accept an `info` object. + +The `info` parameter provided to a given format represents a single log +message. The object itself is mutable. Every `info` must have at least the +`level` and `message` properties: ``` js -{ +const info = { level: 'info', // Level of the logging message message: 'Hey! Log something?' // Descriptive message being logged. -} +}; +``` + +Properties **besides level and message** are considered as "`meta`". i.e.: + +``` js +const { level, message, ...meta } = info; ``` -`winston.format` itself exposes several additional properties: +Several of the formats in `logform` itself add additional properties: -- `splat`: string interpolation splat for `%d %s`-style messages. -- `timestamp`: timestamp the message was received. -- `label`: custom label associated with each message. +| Property | Format added by | Description | +| ----------- | --------------- | ----------- | +| `splat` | `splat()` | String interpolation splat for `%d %s`-style messages. | +| `timestamp` | `timestamp()` | timestamp the message was received. | +| `label` | `label()` | Custom label associated with each message. | +| `ms` | `ms()` | Number of milliseconds since the previous log message. | As a consumer you may add whatever properties you wish – _internal state is maintained by `Symbol` properties:_ -- `Symbol.for('level')` _**(READ-ONLY)**:_ equal to `level` property. Is -treated as immutable by all code. -- `Symbol.for('message'):` complete string message set by "finalizing -formats": `json`, `logstash`, `printf`, `prettyPrint`, and `simple`. +- `Symbol.for('level')` _**(READ-ONLY)**:_ equal to `level` property. + **Is treated as immutable by all code.** +- `Symbol.for('message'):` complete string message set by "finalizing formats": + - `json` + - `logstash` + - `printf` + - `prettyPrint` + - `simple` +- `Symbol.for('splat')`: additional string interpolation arguments. _Used + exclusively by `splat()` format._ + +These Symbols are stored in another package: `triple-beam` so that all +consumers of `logform` can have the same Symbol reference. i.e.: + +``` js +const { LEVEL, MESSAGE, SPLAT } = require('triple-beam'); + +console.log(LEVEL === Symbol.for('level')); +// true + +console.log(MESSAGE === Symbol.for('message')); +// true + +console.log(SPLAT === Symbol.for('splat')); +// true +``` > **NOTE:** any `{ message }` property in a `meta` object provided will > automatically be concatenated to any `msg` already provided: For @@ -259,8 +303,8 @@ format your logs, `winston.format.printf` is for you: const { createLogger, format, transports } = require('winston'); const { combine, timestamp, label, printf } = format; -const myFormat = printf(info => { - return `${info.timestamp} [${info.label}] ${info.level}: ${info.message}`; +const myFormat = printf(({ level, message, label, timestamp }) => { + return `${timestamp} [${label}] ${level}: ${message}`; }); const logger = createLogger({ @@ -274,8 +318,7 @@ const logger = createLogger({ ``` To see what built-in formats are available and learn more about creating your -own custom logging formats, see -[`logform`](https://github.com/winstonjs/logform). +own custom logging formats, see [`logform`][logform]. ### Combining formats @@ -310,7 +353,7 @@ logger.log({ ### String interpolation The `log` method provides the string interpolation using [util.format]. **It -must be enabled using `format.splat`.** +must be enabled using `format.splat()`.** Below is an example that defines a format with string interpolation of messages using `format.splat` and then serializes the entire `info` message @@ -1088,9 +1131,13 @@ npm test [mocha]: https://mochajs.org [nyc]: https://github.com/istanbuljs/nyc [assume]: https://github.com/bigpipe/assume +[logform]: https://github.com/winstonjs/logform#readme [Read the `winston@2.x` documentation]: https://github.com/winstonjs/winston/tree/2.x +[quick-example]: https://github.com/winstonjs/winston/blob/master/examples/quick-start.js +[examples]: https://github.com/winstonjs/winston/tree/master/examples + [Charlie Robbins]: http://github.com/indexzero [Jarrett Cruger]: https://github.com/jcrugzz [David Hyde]: https://github.com/dabh diff --git a/examples/quick-start.js b/examples/quick-start.js new file mode 100644 index 000000000..04442c616 --- /dev/null +++ b/examples/quick-start.js @@ -0,0 +1,99 @@ +const { createLogger, format, transports } = require('../'); + +const logger = createLogger({ + level: 'info', + format: format.combine( + format.timestamp({ + format: 'YYYY-MM-DD HH:mm:ss' + }), + format.errors({ stack: true }), + format.splat(), + format.json() + ), + defaultMeta: { service: 'your-service-name' }, + transports: [ + // + // - Write to all logs with level `info` and below to `combined.log` + // - Write all logs error (and below) to `error.log`. + // + new transports.File({ filename: 'quick-start-error.log', level: 'error' }), + new transports.File({ filename: 'quick-start-combined.log' }) + ] +}); + +// +// If we're not in production then **ALSO** log to the `console` +// with the colorized simple format. +// +if (process.env.NODE_ENV !== 'production') { + logger.add(new transports.Console({ + format: format.combine( + format.colorize(), + format.simple() + ) + })); +} + +// *************** +// Allows for JSON logging +// *************** + +logger.log({ + level: 'info', + message: 'Pass an object and this works', + additional: 'properties', + are: 'passed along' +}); + +logger.info({ + message: 'Use a helper method if you want', + additional: 'properties', + are: 'passed along' +}); + +// *************** +// Allows for parameter-based logging +// *************** + +logger.log('info', 'Pass a message and this works', { + additional: 'properties', + are: 'passed along' +}); + +logger.info('Use a helper method if you want', { + additional: 'properties', + are: 'passed along' +}); + +// *************** +// Allows for string interpolation +// *************** + +// info: test message my string {} +logger.log('info', 'test message %s', 'my string'); + +// info: test message my 123 {} +logger.log('info', 'test message %d', 123); + +// info: test message first second {number: 123} +logger.log('info', 'test message %s, %s', 'first', 'second', { number: 123 }); + +// prints "Found error at %s" +logger.info('Found %s at %s', 'error', new Date()); +logger.info('Found %s at %s', 'error', new Error('chill winston')); +logger.info('Found %s at %s', 'error', /WUT/); +logger.info('Found %s at %s', 'error', true); +logger.info('Found %s at %s', 'error', 100.00); +logger.info('Found %s at %s', 'error', ['1, 2, 3']); + +// *************** +// Allows for logging Error instances +// *************** + +logger.warn(new Error('Error passed as info')); +logger.log('error', new Error('Error passed as message')); + +logger.warn('Maybe important error: ', new Error('Error passed as meta')); +logger.log('error', 'Important error: ', new Error('Error passed as meta')); + +logger.error(new Error('Error as info')); diff --git a/package-lock.json b/package-lock.json index 06324ea40..a7476fd66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,12 +65,12 @@ } }, "@babel/generator": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.2.2.tgz", - "integrity": "sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.0.tgz", + "integrity": "sha512-dZTwMvTgWfhmibq4V9X+LMf6Bgl7zAodRn9PvcPdhlzFMbvUutx74dbEv7Atz3ToeEpevYEJtAwfxq/bDCzHWg==", "dev": true, "requires": { - "@babel/types": "^7.2.2", + "@babel/types": "^7.3.0", "jsesc": "^2.5.1", "lodash": "^4.17.10", "source-map": "^0.5.0", @@ -270,14 +270,14 @@ } }, "@babel/helpers": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.2.0.tgz", - "integrity": "sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", + "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", "dev": true, "requires": { "@babel/template": "^7.1.2", "@babel/traverse": "^7.1.5", - "@babel/types": "^7.2.0" + "@babel/types": "^7.3.0" } }, "@babel/highlight": { @@ -292,9 +292,9 @@ } }, "@babel/parser": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.2.3.tgz", - "integrity": "sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.1.tgz", + "integrity": "sha512-ATz6yX/L8LEnC3dtLQnIx4ydcPxhLcoy9Vl6re00zb2w5lG6itY6Vhnr1KFRPq/FHNsgl/gh2mjNN20f9iJTTA==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { @@ -319,9 +319,9 @@ } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.1.tgz", + "integrity": "sha512-Nmmv1+3LqxJu/V5jU9vJmxR/KIRWFk2qLHmbB56yRRRFhlaSuOVXscX3gUmhaKgUhzA3otOHVubbIEVYsZ0eZg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", @@ -557,6 +557,15 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz", + "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==", + "dev": true, + "requires": { + "regexp-tree": "^0.1.0" + } + }, "@babel/plugin-transform-new-target": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz", @@ -655,19 +664,20 @@ } }, "@babel/preset-env": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.2.3.tgz", - "integrity": "sha512-AuHzW7a9rbv5WXmvGaPX7wADxFkZIqKlbBh1dmZUQp4iwiPpkE/Qnrji6SC4UQCQzvWY/cpHET29eUhXS9cLPw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.1.tgz", + "integrity": "sha512-FHKrD6Dxf30e8xgHQO0zJZpUPfVZg+Xwgz5/RdSWCbza9QLNk4Qbp40ctRoqDxml3O8RMzB1DU55SXeDG6PqHQ==", "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-async-generator-functions": "^7.2.0", "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.2.0", + "@babel/plugin-proposal-object-rest-spread": "^7.3.1", "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-json-strings": "^7.2.0", "@babel/plugin-syntax-object-rest-spread": "^7.2.0", "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", "@babel/plugin-transform-arrow-functions": "^7.2.0", @@ -687,6 +697,7 @@ "@babel/plugin-transform-modules-commonjs": "^7.2.0", "@babel/plugin-transform-modules-systemjs": "^7.2.0", "@babel/plugin-transform-modules-umd": "^7.2.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0", "@babel/plugin-transform-new-target": "^7.0.0", "@babel/plugin-transform-object-super": "^7.2.0", "@babel/plugin-transform-parameters": "^7.2.0", @@ -743,9 +754,9 @@ } }, "@babel/types": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.2.2.tgz", - "integrity": "sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.0.tgz", + "integrity": "sha512-QkFPw68QqWU1/RVPyBe8SO7lXbPfjtqAxRYQKpFpaB8yMq7X2qAqfwK5LKoQufEkSmO5NQ70O6Kc3Afk03RwXw==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -816,9 +827,9 @@ "dev": true }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "ansi-styles": { @@ -934,6 +945,12 @@ "js-tokens": "^3.0.2" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -1090,13 +1107,13 @@ "dev": true }, "browserslist": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.3.7.tgz", - "integrity": "sha512-pWQv51Ynb0MNk9JGMCZ8VkM785/4MQNXiFYtPqI7EEP0TJO+/d/NqRVn1uiAN0DNbnlUSpL2sh16Kspasv3pUQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.1.tgz", + "integrity": "sha512-pEBxEXg7JwaakBXjATYw/D1YZh4QUSCX/Mnd/wnqSRPPSi1U39iDhDoKGoBUcraKdxDlrYqJxSI5nNvD+dWP2A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000925", - "electron-to-chromium": "^1.3.96", + "caniuse-lite": "^1.0.30000929", + "electron-to-chromium": "^1.3.103", "node-releases": "^1.1.3" } }, @@ -1151,9 +1168,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30000927", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000927.tgz", - "integrity": "sha512-ogq4NbUWf1uG/j66k0AmiO3GjqJAlQyF8n4w8a954cbCyFKmYGvRtgz6qkq2fWuduTXHibX7GyYL5Pg58Aks2g==", + "version": "1.0.30000932", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000932.tgz", + "integrity": "sha512-4bghJFItvzz8m0T3lLZbacmEY9X1Z2AtIzTr7s7byqZIOumASfr4ynDx7rtm0J85nDmx8vsgR6vnaSoeU8Oh0A==", "dev": true }, "chalk": { @@ -1233,6 +1250,17 @@ "restore-cursor": "^2.0.0" } }, + "cli-table3": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "dev": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^2.1.1" + } + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -1240,45 +1268,14 @@ "dev": true }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } } }, "co": { @@ -1573,9 +1570,9 @@ } }, "electron-to-chromium": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.100.tgz", - "integrity": "sha512-cEUzis2g/RatrVf8x26L8lK5VEls1AGnLHk6msluBUg/NTB4wcXzExTsGscFq+Vs4WBBU2zbLLySvD4C0C3hwg==", + "version": "1.3.108", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.108.tgz", + "integrity": "sha512-/QI4hMpAh48a1Sea6PALGv+kuVne9A2EWGd8HrWHMdYhIzGtbhVVHh6heL5fAzGaDnZuPyrlWJRl8WPm4RyiQQ==", "dev": true }, "enabled": { @@ -1695,6 +1692,117 @@ "which": "^1.2.8", "window-size": "0.3.0", "yargs": "^8.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } } }, "eslint-plugin-json": { @@ -1716,9 +1824,9 @@ } }, "eslint-rule-documentation": { - "version": "1.0.21", - "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.21.tgz", - "integrity": "sha512-XW/SKOQnvyg6SJQ7BcM4R5vJ6N5ivA6Jqbh4GPPjBwee4Jj1Bne9R1JM5duMObtNiYfeQt/yYIAsHCDttFbTsA==", + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/eslint-rule-documentation/-/eslint-rule-documentation-1.0.22.tgz", + "integrity": "sha512-HVc7wTszrCcZli7BCnOnRH7vS8x9bBcenu74JTYVLjsMABvx65A/+wraWa4budF94j08/G6a9c/tbhgPyi3EYQ==", "dev": true }, "eslint-scope": { @@ -2055,9 +2163,9 @@ "dev": true }, "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", "dev": true, "optional": true, "requires": { @@ -2083,7 +2191,7 @@ "optional": true }, "are-we-there-yet": { - "version": "1.1.4", + "version": "1.1.5", "bundled": true, "dev": true, "optional": true, @@ -2107,7 +2215,7 @@ } }, "chownr": { - "version": "1.0.1", + "version": "1.1.1", "bundled": true, "dev": true, "optional": true @@ -2143,7 +2251,7 @@ } }, "deep-extend": { - "version": "0.5.1", + "version": "0.6.0", "bundled": true, "dev": true, "optional": true @@ -2192,7 +2300,7 @@ } }, "glob": { - "version": "7.1.2", + "version": "7.1.3", "bundled": true, "dev": true, "optional": true, @@ -2212,12 +2320,12 @@ "optional": true }, "iconv-lite": { - "version": "0.4.21", + "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { - "safer-buffer": "^2.1.0" + "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { @@ -2278,16 +2386,16 @@ "dev": true }, "minipass": { - "version": "2.2.4", + "version": "2.3.5", "bundled": true, "dev": true, "requires": { - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { - "version": "1.1.0", + "version": "1.2.1", "bundled": true, "dev": true, "optional": true, @@ -2310,7 +2418,7 @@ "optional": true }, "needle": { - "version": "2.2.0", + "version": "2.2.4", "bundled": true, "dev": true, "optional": true, @@ -2321,18 +2429,18 @@ } }, "node-pre-gyp": { - "version": "0.10.0", + "version": "0.10.3", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", - "needle": "^2.2.0", + "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", - "rc": "^1.1.7", + "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" @@ -2349,13 +2457,13 @@ } }, "npm-bundled": { - "version": "1.0.3", + "version": "1.0.5", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.1.10", + "version": "1.2.0", "bundled": true, "dev": true, "optional": true, @@ -2430,12 +2538,12 @@ "optional": true }, "rc": { - "version": "1.2.7", + "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { - "deep-extend": "^0.5.1", + "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" @@ -2465,16 +2573,16 @@ } }, "rimraf": { - "version": "2.6.2", + "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "safe-buffer": { - "version": "5.1.1", + "version": "5.1.2", "bundled": true, "dev": true }, @@ -2491,7 +2599,7 @@ "optional": true }, "semver": { - "version": "5.5.0", + "version": "5.6.0", "bundled": true, "dev": true, "optional": true @@ -2542,17 +2650,17 @@ "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -2563,12 +2671,12 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -2577,7 +2685,7 @@ "dev": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true, "dev": true } @@ -2645,9 +2753,9 @@ } }, "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", + "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", "dev": true }, "graceful-fs": { @@ -2669,6 +2777,14 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } } }, "has-flag": { @@ -3024,9 +3140,9 @@ } }, "js-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.4.tgz", - "integrity": "sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", "dev": true }, "js-tokens": { @@ -4969,6 +5085,17 @@ "safe-regex": "^1.1.0" } }, + "regexp-tree": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.0.tgz", + "integrity": "sha512-rHQv+tzu+0l3KS/ERabas1yK49ahNVxuH40WcPg53CzP5p8TgmmyBgHELLyJcvjhTD0e5ahSY6C76LbEVtr7cg==", + "dev": true, + "requires": { + "cli-table3": "^0.5.0", + "colors": "^1.1.2", + "yargs": "^10.0.3" + } + }, "regexpp": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", @@ -5053,9 +5180,9 @@ } }, "resolve": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.9.0.tgz", - "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -5469,14 +5596,6 @@ "dev": true, "requires": { "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - } } }, "strip-bom": { @@ -5916,6 +6035,12 @@ "strip-ansi": "^3.0.1" }, "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -5981,30 +6106,29 @@ "dev": true }, "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", + "cliui": "^4.0.0", "decamelize": "^1.1.1", + "find-up": "^2.1.0", "get-caller-file": "^1.0.1", "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" + "yargs-parser": "^8.1.0" } }, "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { "camelcase": "^4.1.0"