From 31293bd257eff09858e7458917d3197238201d56 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 27 Jul 2018 06:50:15 +0100 Subject: [PATCH 01/52] feat(next-id): minimal implementation of getNextId, using `getOnly` --- src/MongooseIdAssigner.js.flow | 17 +++++ src/MongooseIdAssigner.ts | 82 +++++++++++++++++++++++- src/__tests__/MongooseIdAssigner.spec.ts | 47 +++++++++++++- 3 files changed, 143 insertions(+), 3 deletions(-) diff --git a/src/MongooseIdAssigner.js.flow b/src/MongooseIdAssigner.js.flow index f81289d..752403e 100644 --- a/src/MongooseIdAssigner.js.flow +++ b/src/MongooseIdAssigner.js.flow @@ -1,5 +1,6 @@ /* @flow */ +import type { ObjectId } from 'mongoose'; import EventEmitter from 'events'; import type { MongooseSchema, MongooseModel } from 'mongoose'; import type { AssignerOptions, FieldConfig } from './assigner.interfaces'; @@ -36,6 +37,22 @@ declare export class MongooseIdAssigner extends EventEmitter { options: AssignerOptions, ): MongooseIdAssigner; refreshOptions(): Promise; + getFieldConfig( + field: string, + discriminator?: string, + ): FieldConfig | typeof undefined; + getNextId( + field: string, + discriminator?: string, + ): Promise< + | void + | ObjectId + | Buffer + | string + | number + | Promise + | Promise, + >; appendState(state: $Shape): void; initialise(modelInstance: MongooseModel): Promise; } diff --git a/src/MongooseIdAssigner.ts b/src/MongooseIdAssigner.ts index b3ff582..a54368c 100644 --- a/src/MongooseIdAssigner.ts +++ b/src/MongooseIdAssigner.ts @@ -1,12 +1,22 @@ import * as eventToPromise from 'event-to-promise'; import { EventEmitter } from 'events'; -import { Collection } from 'mongodb'; +import { Binary, Collection, ObjectId } from 'mongodb'; import { Document, Model, Schema } from 'mongoose'; -import { AssignerOptions, FieldConfig } from './assigner.interfaces'; +import { + AssignerOptions, + FieldConfig, + FieldConfigTypes, + NumberFieldConfig, +} from './assigner.interfaces'; import { localStateStore, SchemaState } from './LocalStateStore'; import { initialiseOptions, normaliseOptions, throwPluginError } from './utils'; import { refreshOptions } from './utils/assign-fields-ids'; import { configureSchema } from './utils/configure-schema'; +import { + getNextIdNumber, + getNextIdString, + getNextIdUUID, +} from './utils/get-next-ids'; /** * Options stored in db, plus modelName @@ -95,6 +105,74 @@ export class MongooseIdAssigner extends EventEmitter { return refreshOptions(this); } + getFieldConfig( + field: string, + discriminator?: string, + ): FieldConfig | undefined { + if (discriminator && this.options.discriminators) { + for (const [key, value] of this.options.discriminators.entries()) { + if (key === discriminator) { + for (const [k, v] of value.entries()) { + if (k === field) { + return v; + } + } + } + } + } + if (this.options.fields) { + for (const [k, v] of this.options.fields.entries()) { + if (k === field) { + return v; + } + } + } + return; + } + + async getNextId( + field: string, + discriminator?: string, + ): Promise< + | void + | ObjectId + | Binary + | string + | number + | Promise + | Promise + > { + const fieldConfig = this.getFieldConfig(field, discriminator); + + if (!fieldConfig) { + return throwPluginError( + `Requested Field, [${field}] does not have a Field Configuration!`, + this.modelName, + ); + } + + switch (fieldConfig.type) { + case FieldConfigTypes.ObjectId: + return new ObjectId(); + case FieldConfigTypes.UUID: + return getNextIdUUID(fieldConfig); + + case FieldConfigTypes.Number: + await this.refreshOptions(); + return getNextIdNumber( + field, + this, + fieldConfig as NumberFieldConfig, + '', + 0, + true, + ); + case FieldConfigTypes.String: + await this.refreshOptions(); + return getNextIdString(field, this, fieldConfig, '', 0, true); + } + } + appendState(state: Partial) { localStateStore.setState(this.schema, { ...this.state, ...state }); } diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index dd3642e..14bdfbf 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -21,7 +21,9 @@ describe('MongooseIdAssigner', () => { let exampleModel: Model; - afterEach(async () => mongoose.connection.dropDatabase()); + afterEach(async () => { + await mongoose.connection.dropDatabase(); + }); describe('basics', () => { it('should save state to localStateStore', () => { @@ -421,4 +423,47 @@ describe('MongooseIdAssigner', () => { } }); }); + + describe('getNextId()', () => { + it('should throw error message if field not found', async () => { + const characterSchema = getSchema(1); + + const options: AssignerOptions = { + modelName: 'example13', + discriminators: { + Person13: { + license: 4444, + }, + }, + }; + + const characterIA = MongooseIdAssigner.plugin(characterSchema, options); + + try { + await characterIA.getNextId('not-found', 'Person13'); + } catch (e) { + expect(e.message).toMatch( + /(\[not-found] does not have a Field Configuration)/, + ); + } + }); + it('should return nextId depending on fieldConfig', async () => { + const options: AssignerOptions = { + modelName: 'example14', + fields: { + photoId: 4444, + }, + }; + + const exampleIA = MongooseIdAssigner.plugin(exampleSchema, options); + const model = mongoose.model('example14', exampleSchema); + + try { + await model.create({ photoId: 21 }); + expect(await exampleIA.getNextId('photoId')).toBe(4445); + } catch (e) { + expect(e).toBeUndefined(); + } + }); + }); }); From c3d8e0adcab94325d1dfcb39f59f4fe6de8416c4 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 27 Jul 2018 08:07:12 +0100 Subject: [PATCH 02/52] doc: update `Plugin Options` on README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 63c275c..481b12a 100644 --- a/README.md +++ b/README.md @@ -24,10 +24,13 @@ npm install mongoose-id-assigner ## Basic Usage ### Plugin Options TypeName: **AssignerOptions** -- `modelName`: **String** Name for the Model your are working with. +- `modelName`: **String** Name of the Model your are working with. If discriminators, then provide baseModel Name. - `fields`: **AssignerFieldsConfigMap?** The configuration Map of the fields you want the assigner to assign ids to. If undefined, then plugin assigns ids to `_id` field, (ObjectId). - [fieldName: string]: FieldConfig | string | number | boolean | 'GUID' | 'UUID' +- `discriminators`: **[discriminatorName: string]: AssignerFieldsConfigMap?** An Object with Keys `discriminatorName` + and value a Configuration Map for fields on that discriminator that need unique values. Any discriminator without a + fieldConfig will use that of the baseModel. ### Point to Note At every Network Assigner init(i.e Assigner with Number, String FieldConfigTypes), the Assigner(for a Model) refreshes and syncs with the db stored options. Take example micro-service cluster, From 7fb1f53a7f268df32687bd5fadd59bb7bcda18f6 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 27 Jul 2018 08:34:44 +0100 Subject: [PATCH 03/52] chore: set support range for `uuid` to `>=3.0.1` --- package.json | 2 +- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b1dc67b..e580a58 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ }, "dependencies": { "event-to-promise": "^0.8.0", - "uuid": "^3.3.2" + "uuid": ">=3.0.1" }, "peerDependencies": { "mongoose": ">=4.0.0 || >=5.0.0" diff --git a/yarn.lock b/yarn.lock index 69774b3..2591eff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4469,7 +4469,7 @@ util.promisify@^1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2: +uuid@>=3.0.1, uuid@^3.1.0, uuid@^3.2.1: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" From 1b101ede10fb5cbbb3158cc57b0e68c58f8286d6 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 27 Jul 2018 09:11:44 +0100 Subject: [PATCH 04/52] fix(next-id): wrap `string-incrementer` error in `throw-plugin-error` rename max_id to nextId --- .../get-next-ids/utils/string-incrementer.ts | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/utils/get-next-ids/utils/string-incrementer.ts b/src/utils/get-next-ids/utils/string-incrementer.ts index 80c20a5..da9e2df 100644 --- a/src/utils/get-next-ids/utils/string-incrementer.ts +++ b/src/utils/get-next-ids/utils/string-incrementer.ts @@ -1,36 +1,40 @@ +import { throwPluginError } from '../../others'; + /** - * Increments a given id from max_id + * Increments a given id from nextId * - * @param {string} max_id + * @param {string} nextId * @param {string} separator * @return {string} */ -export function stringIncrementer(max_id: string, separator = '-'): string { - const maxLength = max_id.length; +export function stringIncrementer(nextId: string, separator = '-'): string { + const maxLength = nextId.length; let firstDash = -1; // consider firstDash maxLength Position let lastSig = maxLength + 1; // Position of last significant figure for (let i = maxLength - 1; i >= 0; i--) { - if (max_id[i] === separator) { + if (nextId[i] === separator) { firstDash = i; if (maxLength - 1 === i) { lastSig = maxLength + 1; // case 99909- } break; - } else if (/[1-9]/.test(max_id[i])) { + } else if (/[1-9]/.test(nextId[i])) { lastSig = i; - } else if (max_id[i] === '0' && maxLength - 1 === i) { + } else if (nextId[i] === '0' && maxLength - 1 === i) { lastSig = maxLength; // case 99909-0 } } - let digits = max_id.substr(firstDash + 1) as any; + let digits = nextId.substr(firstDash + 1) as any; if (isNaN(digits++)) { - // increment - throw Error(`Error Wrong Max_id format, must end with number from separator: (${separator}) - e.g 9434034, 4dc34-34, IBSN${separator}093JDS${separator}number. Could not increment from Max_id: ${max_id}`); + throwPluginError( + `Wrong nextId format, must end with number from separator. ` + + `e.g separator: - nextIds => 9434034, 4dc34-34, IBSN-093JDS-number. ` + + `Could not increment from nextId: ${nextId}, separator: : (${separator})`, + ); } // Get next Significant figure (10 if count = 1) @@ -38,8 +42,8 @@ export function stringIncrementer(max_id: string, separator = '-'): string { // if has moved up one digit(significant figure) and if lashDash will be cut out at location ltCount -1 if (digits >= nextSig) { - return `${max_id.substr(0, lastSig - 1)}${digits}`; + return `${nextId.substr(0, lastSig - 1)}${digits}`; } - return `${max_id.substr(0, lastSig)}${digits}`; + return `${nextId.substr(0, lastSig)}${digits}`; } From dc351e3499ad9428a45e121e59ad88ec55af65e6 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 27 Jul 2018 11:40:58 +0100 Subject: [PATCH 05/52] fix: fix `Stored Options not Found for Ready Model!` when assigner not manually initialised Fixes the reliance on initialising the assigner --- src/__tests__/MongooseIdAssigner.spec.ts | 1 + src/utils/assign-fields-ids.ts | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index 14bdfbf..e72270a 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -231,6 +231,7 @@ describe('MongooseIdAssigner', () => { // initialise to ensure that // model is set and db is connected // before performing heavy tasks + // or you can set max event listeners to 100 to suppress waits const state = await plugin.initialise(exampleModel); expect(state).toBe(1); diff --git a/src/utils/assign-fields-ids.ts b/src/utils/assign-fields-ids.ts index fd98ecc..d1af730 100644 --- a/src/utils/assign-fields-ids.ts +++ b/src/utils/assign-fields-ids.ts @@ -8,11 +8,12 @@ import { getNextIdUUID, } from './get-next-ids'; import { checkAndUpdateOptions } from './initialise-options'; -import { throwPluginError } from './others'; +import { throwPluginError, waitPromise } from './others'; import { isNumber, isObjectId, isString, isUUID } from './type-guards'; export async function refreshOptions( assigner: MongooseIdAssigner, + retries = 0, ): Promise { const collection = assigner.collection; @@ -22,6 +23,10 @@ export async function refreshOptions( }); if (!freshOptions && assigner.options.network && assigner.readyState) { + if (retries < 10) { + await waitPromise(10 * retries); // wait and retry + return refreshOptions(assigner, ++retries); + } throwPluginError( 'Stored Options not Found for Ready Model!', assigner.modelName, From 15fffa94b0bcceb5c25ed677adfc8338e81102ef Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 27 Jul 2018 11:54:21 +0100 Subject: [PATCH 06/52] doc: add table of content to README.md --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 481b12a..f96299e 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,21 @@ This plugin assigns values base on your configurations, be it `MongoDB's ObjectI It creates a collection with name `id_assigner` that store the `nextId` for a configured field. This only happens if you have fields configured with type `String` or `Number`. As `ObjectId` and `UUID` can be generated locally unique, they do not use this collection for assigning values. -This is the perfect tool if you wish to work with `discriminators` and have `_id` field(and/or other fields) values different amongst the discriminators instances. See examples below for demonstration. +This is the perfect tool if you wish to work with `discriminators` and have `_id` field(and/or other fields) values different amongst the discriminators instances. See examples below for demonstration. + +----- + +# Table of Content +- [Installation](#installation) +- [Basic Usage](#basic-usage) + - [Plugin Options](#plugin-options) + - [Point to Note](#point-to-note) +- [Examples](#examples) + - [Configuration Methods](#configuration-methods) +- [Working with Discriminators](#working-with-discriminators) +- [TypeDefinitions](#typedefinitions) +- [Strain Test](#strain-test,-performs-the-task-below-on-a-locally-hosted-db-instance.) +- [License](#license) ## Installation ``` @@ -82,6 +96,8 @@ console.log(doc.uuidFieldString) ---> '7729e2e0-8f8b-11e8-882d-2dade78bb893' ``` **Method 2**: Request Assigner Instance, If you have initialisation logic, you need to initialise the plugin. +Calling initialise is really optional, except you want to query nextIds, or your collection is really a very busy one. +You may just call it and ignore the promise. ```js const options = { modelName: 'ExampleModel', From 885a4730095709444fdd2caebbd4d8e8fb8c9657 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 10 Aug 2018 06:08:34 +0100 Subject: [PATCH 07/52] test: setup `IN_MEM` test environment var, determines the DB type to use --- package.json | 4 ++-- src/__mocks__/mongoose.config.ts | 11 ++--------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index e580a58..56fde11 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,8 @@ "tsc": "tsc", "flow": "./node_modules/.bin/flow", "lint": "tslint -p ./", - "jest:watch": "jest --watch", - "coverage": "jest --coverage --maxWorkers 2", + "jest:watch": "IN_MEM=true jest --watch", + "coverage": "IN_MEM=true jest --coverage --maxWorkers 2", "test": "yarn run prettier && yarn run coverage && yarn run lint && yarn run tsc && yarn run flow", "clean": "rimraf lib", "prettier": "yarn run prettier-ts && yarn run prettier-flow", diff --git a/src/__mocks__/mongoose.config.ts b/src/__mocks__/mongoose.config.ts index 10ec6d3..e9d703c 100644 --- a/src/__mocks__/mongoose.config.ts +++ b/src/__mocks__/mongoose.config.ts @@ -3,10 +3,10 @@ import * as mongoose from 'mongoose'; (mongoose as any).Promise = Promise; -const TEST_SITE = process.env.TEST_SITE; +const IN_MEM = !!process.env.IN_MEM; export function getMongoose() { - if (TEST_SITE === 'travis-ci') { + if (IN_MEM) { jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; const originalConnect = mongoose.connect; @@ -40,13 +40,6 @@ export function getMongoose() { return mongoose; } else { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; - /*const originalConnect = mongoose.connect; - - (mongoose as any).connect = () => { - originalConnect.bind(mongoose)('mongodb://localhost:27017/test_ia', { - useNewUrlParser: true, - }); - };*/ mongoose.connect( 'mongodb://localhost:27017/demoDB', { useNewUrlParser: true }, From 4eefbde1ec78fd644a4fdb3999672c7eef54a151 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 10 Aug 2018 06:27:26 +0100 Subject: [PATCH 08/52] BREAKING CHANGE: `MongooseIdAssigner.plugin` will NOT return IdAssigner instance. Use `MongooseIdAssigner Constructor` to get Instance. The interface `AssignerOptions` also changed, modelName not needed. Use `AssignerPluginOptions` when using with `schema.plugin(..., options)`. --- src/MongooseIdAssigner.js.flow | 8 +- src/MongooseIdAssigner.ts | 56 +++++-- src/__tests__/LocalStateStore.spec.ts | 28 ++-- src/__tests__/MongooseIdAssigner.spec.ts | 98 ++++++------ src/assigner.interfaces.js.flow | 7 +- src/assigner.interfaces.ts | 5 + src/utils/__tests__/normalise-options.spec.ts | 139 +++++++++--------- src/utils/normalise-options.ts | 18 +-- 8 files changed, 195 insertions(+), 164 deletions(-) diff --git a/src/MongooseIdAssigner.js.flow b/src/MongooseIdAssigner.js.flow index 752403e..08dbaa1 100644 --- a/src/MongooseIdAssigner.js.flow +++ b/src/MongooseIdAssigner.js.flow @@ -3,7 +3,7 @@ import type { ObjectId } from 'mongoose'; import EventEmitter from 'events'; import type { MongooseSchema, MongooseModel } from 'mongoose'; -import type { AssignerOptions, FieldConfig } from './assigner.interfaces'; +import type { AssignerOptions, AssignerPluginOptions, FieldConfig } from './assigner.interfaces'; import type { SchemaState } from './LocalStateStore'; export interface NormalisedOptions { @@ -29,13 +29,13 @@ declare export class MongooseIdAssigner extends EventEmitter { retryMillis: number; options: NormalisedOptions; readyState: number; - constructor(schema: MongooseSchema, options: AssignerOptions): this; + constructor(model: MongooseModel, options?: AssignerOptions): this; state: SchemaState; collection: any; static plugin( schema: MongooseSchema, - options: AssignerOptions, - ): MongooseIdAssigner; + options: AssignerPluginOptions, + ): boolean; refreshOptions(): Promise; getFieldConfig( field: string, diff --git a/src/MongooseIdAssigner.ts b/src/MongooseIdAssigner.ts index a54368c..d2be95f 100644 --- a/src/MongooseIdAssigner.ts +++ b/src/MongooseIdAssigner.ts @@ -4,6 +4,7 @@ import { Binary, Collection, ObjectId } from 'mongodb'; import { Document, Model, Schema } from 'mongoose'; import { AssignerOptions, + AssignerPluginOptions, FieldConfig, FieldConfigTypes, NumberFieldConfig, @@ -41,38 +42,56 @@ export class MongooseIdAssigner extends EventEmitter { public readonly modelName: string; public readonly discriminatorKey: string; - public readonly retryMillis: number; public readonly retryTime: number; + public readonly retryMillis: number; public readonly options: NormalisedOptions; - constructor(schema: Schema, options: AssignerOptions) { + private readonly asPlugin: boolean; + + constructor(model: Model, options?: AssignerOptions, asPlugin = false) { super(); - if (!schema) { - throwPluginError('Provide a schema for the plugin!'); + if (!asPlugin && (!model || !model.schema || !model.modelName)) { + throwPluginError( + `Provide a Model to the Constructor, you provided ${model}!`, + ); + } + let schema: Schema; + let modelName: string; + + if (asPlugin) { + modelName = (options as AssignerPluginOptions).modelName; + schema = model as any; + } else { + modelName = model.modelName; + schema = model.schema; } if (localStateStore.getState(schema)) { throwPluginError( - 'Provided schema already have an Assigner Instance!', - options.modelName, + 'Provided Model already has an Assigner Instance!', + modelName, ); } this.schema = schema; - this.modelName = options.modelName; + this.asPlugin = asPlugin; + this.modelName = modelName; this.discriminatorKey = schema.get('discriminatorKey'); this.retryTime = 20; this.retryMillis = 20; // after 20 millis - this.options = normaliseOptions(schema, options); + this.options = normaliseOptions(modelName, schema, options); - this.options.modelName = this.modelName; this.appendState({ modelName: this.modelName, readyState: 0, idAssigner: this, }); configureSchema(this); + if (!asPlugin) { + this.appendState({ model }); + this.initialise().then(); + } } get readyState() { @@ -97,8 +116,15 @@ export class MongooseIdAssigner extends EventEmitter { ); } - static plugin(schema: Schema, options: AssignerOptions) { - return new MongooseIdAssigner(schema, options); + static plugin(schema: Schema, options: AssignerPluginOptions) { + if (!schema) { + throwPluginError('Should be called using schema.plugin'); + } + if (!options) { + throw throwPluginError('Plugin Options not specified!'); + } + const IA = new MongooseIdAssigner(schema as any, options, true); + return !!IA; } refreshOptions(): Promise { @@ -177,11 +203,15 @@ export class MongooseIdAssigner extends EventEmitter { localStateStore.setState(this.schema, { ...this.state, ...state }); } - initialise(modelInstance: Model): Promise { + initialise(modelInstance?: Model): Promise { if (this.state.readyState === 0) { this.appendState({ readyState: 2 }); - return initialiseOptions(modelInstance, this); + if (!this.asPlugin) { + modelInstance = this.state.model; + } + + return initialiseOptions(modelInstance as any, this); } return this.state.readyState === 1 diff --git a/src/__tests__/LocalStateStore.spec.ts b/src/__tests__/LocalStateStore.spec.ts index df41592..0c589ee 100644 --- a/src/__tests__/LocalStateStore.spec.ts +++ b/src/__tests__/LocalStateStore.spec.ts @@ -39,21 +39,17 @@ describe('LocalStateStore', () => { describe('setCollName()', () => { let exampleIA: MongooseIdAssigner; - - beforeAll(() => { - localStateStore.clear(); - exampleIA = new MongooseIdAssigner(ExampleSchema, { - modelName: 'Example', - }); - }); + let count = 0; it('should set Assigner collection Name', async () => { // at bootstrapping, before any IA initialises + localStateStore.clear(); localStateStore.setCollName('newName'); - const ExampleModel = mongoose.model('Example', ExampleSchema); + const ExampleModel = mongoose.model('Example' + ++count, ExampleSchema); + exampleIA = new MongooseIdAssigner(ExampleModel); try { - await exampleIA.initialise(ExampleModel); + await exampleIA.initialise(); expect(exampleIA.collection.collectionName).toBe('newName'); } catch (e) { expect(e).toBeUndefined(); @@ -61,10 +57,12 @@ describe('LocalStateStore', () => { }); it('should throw Error if an Assigner already Initialised', async () => { - const ExampleModel = mongoose.model('Example', ExampleSchema); + localStateStore.clear(); + const ExampleModel = mongoose.model('Example' + ++count, ExampleSchema); + exampleIA = new MongooseIdAssigner(ExampleModel); try { - await exampleIA.initialise(ExampleModel); + await exampleIA.initialise(); expect(() => localStateStore.setCollName('newName')).toThrowError( /(setCollName)/, ); @@ -79,9 +77,11 @@ describe('LocalStateStore', () => { beforeAll(() => { localStateStore.clear(); - exampleIA = new MongooseIdAssigner(ExampleSchema, { - modelName: 'Example', - }); + exampleIA = new MongooseIdAssigner( + ExampleSchema as any, + { modelName: 'example' } as any, + true, + ); }); it('should emit events on idAssigner corresponding to idAssigner readyState', async () => { diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index e72270a..e244167 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -2,9 +2,14 @@ import { Binary } from 'bson'; import { Document, Model, Schema, Types } from 'mongoose'; import { getMongoose } from '../__mocks__/mongoose.config'; import { getSchema } from '../__mocks__/test.models'; -import { AssignerOptions, FieldConfigTypes } from '../assigner.interfaces'; +import { + AssignerOptions, + AssignerPluginOptions, + FieldConfigTypes, +} from '../assigner.interfaces'; import { localStateStore } from '../LocalStateStore'; import { MongooseIdAssigner } from '../MongooseIdAssigner'; +import { waitPromise } from '../utils'; const mongoose = getMongoose(); @@ -27,12 +32,11 @@ describe('MongooseIdAssigner', () => { describe('basics', () => { it('should save state to localStateStore', () => { - const plugin = MongooseIdAssigner.plugin(exampleSchema, { + MongooseIdAssigner.plugin(exampleSchema, { modelName: 'example', }); expect(localStateStore.getState(exampleSchema)).toBeDefined(); - expect(plugin.state).toEqual(localStateStore.getState(exampleSchema)); }); it('should assign _id field if only modelName option passed', async () => { @@ -47,27 +51,25 @@ describe('MongooseIdAssigner', () => { expect(doc._id).toBeTruthy(); }); - it('should apply plugin by calling new MongooseIdAssigner', async () => { - const plugin = new MongooseIdAssigner(exampleSchema, { - modelName: 'example2', - }); - - expect(plugin).toBeInstanceOf(MongooseIdAssigner); - + it('should apply and initialise plugin by calling new MongooseIdAssigner with model', async () => { exampleModel = mongoose.model('example2', exampleSchema); + const ExampleIA = new MongooseIdAssigner(exampleModel); + expect(ExampleIA).toBeInstanceOf(MongooseIdAssigner); + // next tick + await waitPromise(1); + expect(ExampleIA.readyState).toBe(1); + const doc = await exampleModel.create({ personId: 'mernxl' }); expect(doc._id).toBeTruthy(); }); it('should apply plugin with method MongooseIdAssigner.plugin', async () => { - const plugin = MongooseIdAssigner.plugin(exampleSchema, { + MongooseIdAssigner.plugin(exampleSchema, { modelName: 'example3', }); - expect(plugin).toBeInstanceOf(MongooseIdAssigner); - exampleModel = mongoose.model('example3', exampleSchema); const doc = await exampleModel.create({ personId: 'mernxl' }); @@ -76,20 +78,19 @@ describe('MongooseIdAssigner', () => { }); it('should create noNetwork with UUID and ObjectId', async () => { - const plugin = MongooseIdAssigner.plugin(exampleSchema, { - modelName: 'example4', + exampleModel = mongoose.model('example4', exampleSchema); + + const ExampleIA = new MongooseIdAssigner(exampleModel, { fields: { _id: FieldConfigTypes.UUID, objectIdField: FieldConfigTypes.ObjectId, }, }); - exampleModel = mongoose.model('example4', exampleSchema); - try { const doc = await exampleModel.create({ personId: 'mernxl' }); - expect(plugin.options.network).toBe(false); + expect(ExampleIA.options.network).toBe(false); expect((doc as any).objectIdField).toBeInstanceOf(Types.ObjectId); } catch (e) { expect(e).toBeUndefined(); @@ -97,7 +98,7 @@ describe('MongooseIdAssigner', () => { }); it('should assign _ids to Model instances with options', async () => { - MongooseIdAssigner.plugin(exampleSchema, { + exampleSchema.plugin(MongooseIdAssigner.plugin, { modelName: 'example5', fields: { _id: { @@ -120,7 +121,7 @@ describe('MongooseIdAssigner', () => { }); it('should assign multiple ids to fields', async () => { - const options: AssignerOptions = { + const options: AssignerPluginOptions = { modelName: 'example6', fields: { _id: '33333', @@ -166,7 +167,7 @@ describe('MongooseIdAssigner', () => { }); it('should use nextIdFunction passed at fieldConfig', async () => { - const options: AssignerOptions = { + const options: AssignerPluginOptions = { modelName: 'example7', fields: { _id: '33333', @@ -203,7 +204,6 @@ describe('MongooseIdAssigner', () => { it('should be robust enough to avoid duplicates', async () => { const options: AssignerOptions = { - modelName: 'example8', fields: { _id: '33333', photoId: 44444, @@ -224,17 +224,17 @@ describe('MongooseIdAssigner', () => { }; try { - const plugin = MongooseIdAssigner.plugin(exampleSchema, options); - exampleModel = mongoose.model('example8', exampleSchema); + const ExampleIA = new MongooseIdAssigner(exampleModel, options); + expect(ExampleIA.readyState).toBe(2); // initialising // initialise to ensure that // model is set and db is connected // before performing heavy tasks - // or you can set max event listeners to 100 to suppress waits - const state = await plugin.initialise(exampleModel); + // or you can set max event listeners to 100 to suppress warnings on waits + await ExampleIA.initialise(); - expect(state).toBe(1); + expect(ExampleIA.readyState).toBe(1); const promises = []; for (let i = 0; i < 100; i++) { @@ -276,9 +276,9 @@ describe('MongooseIdAssigner', () => { }); describe('initialise()', () => { - it('should initialise the plugin', () => { - const plugin = MongooseIdAssigner.plugin(exampleSchema, { - modelName: 'example9', + it('should initialise the plugin without passing model', () => { + exampleModel = mongoose.model('example9', exampleSchema); + const ExampleIA = new MongooseIdAssigner(exampleModel, { fields: { _id: { type: FieldConfigTypes.String, @@ -288,18 +288,15 @@ describe('MongooseIdAssigner', () => { }, }); - exampleModel = mongoose.model('example9', exampleSchema); - - return plugin - .initialise(exampleModel) + return ExampleIA.initialise() .then(state => expect(state).toBe(1)) .catch(e => expect(e).toBeUndefined()); }); it('should return state if called multiple times', () => { expect.assertions(2); - const plugin = MongooseIdAssigner.plugin(exampleSchema, { - modelName: 'example10', + exampleModel = mongoose.model('example10', exampleSchema); + const ExampleIA = new MongooseIdAssigner(exampleModel, { fields: { _id: { type: FieldConfigTypes.String, @@ -309,15 +306,11 @@ describe('MongooseIdAssigner', () => { }, }); - exampleModel = mongoose.model('example10', exampleSchema); - - plugin - .initialise(exampleModel) + ExampleIA.initialise(exampleModel) .then(state => expect(state).toBe(1)) .catch(e => expect(e).toBeUndefined()); - return plugin - .initialise(exampleModel) + return ExampleIA.initialise() .then(state => expect(state).toBe(1)) .catch(e => expect(e).toBeUndefined()); }); @@ -333,7 +326,6 @@ describe('MongooseIdAssigner', () => { it('should create noNetwork discriminators', async () => { const options: AssignerOptions = { - modelName: 'example11', fields: { _id: FieldConfigTypes.GUID, }, @@ -347,9 +339,8 @@ describe('MongooseIdAssigner', () => { }, }; - const plugin = MongooseIdAssigner.plugin(characterSchema, options); - const characterModel = mongoose.model('example11', characterSchema); + const CharacterIA = new MongooseIdAssigner(characterModel, options); const personModel = characterModel.discriminator('Person1', personSchema); const droidModel = characterModel.discriminator('Droid1', droidSchema); try { @@ -359,7 +350,7 @@ describe('MongooseIdAssigner', () => { const person = await personModel.create({ friends: 'placeholder' }); const droid = await droidModel.create({ friends: 'placeholder' }); - expect(plugin.options.network).toBe(false); + expect(CharacterIA.options.network).toBe(false); expect((character as any)._id).toMatch(/-+/); expect(typeof (person as any).license).toBe('string'); expect((droid as any).make).toMatch(/-+/); @@ -369,7 +360,7 @@ describe('MongooseIdAssigner', () => { }); it('should create discriminators network', async () => { - const options: AssignerOptions = { + const options: AssignerPluginOptions = { modelName: 'example12', fields: { someId: 4444, @@ -391,7 +382,7 @@ describe('MongooseIdAssigner', () => { }, }; - MongooseIdAssigner.plugin(characterSchema, options); + characterSchema.plugin(MongooseIdAssigner.plugin, options); const characterModel = mongoose.model('example12', characterSchema); const personModel = characterModel.discriminator('Person', personSchema); @@ -429,7 +420,7 @@ describe('MongooseIdAssigner', () => { it('should throw error message if field not found', async () => { const characterSchema = getSchema(1); - const options: AssignerOptions = { + const options: AssignerPluginOptions = { modelName: 'example13', discriminators: { Person13: { @@ -438,7 +429,11 @@ describe('MongooseIdAssigner', () => { }, }; - const characterIA = MongooseIdAssigner.plugin(characterSchema, options); + const characterIA = new MongooseIdAssigner( + characterSchema as any, + options, + true, + ); try { await characterIA.getNextId('not-found', 'Person13'); @@ -450,14 +445,13 @@ describe('MongooseIdAssigner', () => { }); it('should return nextId depending on fieldConfig', async () => { const options: AssignerOptions = { - modelName: 'example14', fields: { photoId: 4444, }, }; - const exampleIA = MongooseIdAssigner.plugin(exampleSchema, options); const model = mongoose.model('example14', exampleSchema); + const exampleIA = new MongooseIdAssigner(model, options); try { await model.create({ photoId: 21 }); diff --git a/src/assigner.interfaces.js.flow b/src/assigner.interfaces.js.flow index 7afeb58..9120d21 100644 --- a/src/assigner.interfaces.js.flow +++ b/src/assigner.interfaces.js.flow @@ -74,7 +74,12 @@ export type DiscriminatorConfigMap = { * Then setup assigner for _id field, does not use network */ export type AssignerOptions = { - modelName: string, fields?: AssignerFieldsConfigMap, discriminators?: DiscriminatorConfigMap, }; + +export type AssignerPluginOptions = { + modelName: string, + fields?: AssignerFieldsConfigMap, + discriminators?: DiscriminatorConfigMap, +} diff --git a/src/assigner.interfaces.ts b/src/assigner.interfaces.ts index cbc5136..6cfcbd0 100644 --- a/src/assigner.interfaces.ts +++ b/src/assigner.interfaces.ts @@ -71,6 +71,11 @@ export interface DiscriminatorConfigMap { * Then setup assigner for _id field, does not use network */ export interface AssignerOptions { + fields?: AssignerFieldsConfigMap; + discriminators?: DiscriminatorConfigMap; +} + +export interface AssignerPluginOptions { modelName: string; fields?: AssignerFieldsConfigMap; discriminators?: DiscriminatorConfigMap; diff --git a/src/utils/__tests__/normalise-options.spec.ts b/src/utils/__tests__/normalise-options.spec.ts index acbb0ff..117750c 100644 --- a/src/utils/__tests__/normalise-options.spec.ts +++ b/src/utils/__tests__/normalise-options.spec.ts @@ -9,78 +9,16 @@ import { normaliseOptions } from '../normalise-options'; const schema = new Schema({}); -const nextIdFunction = function(nextId: number) { - return nextId + 1; -}; - -const options: AssignerOptions = { - modelName: 'Person', - fields: { - _id: true, - clientId: true, - withUUID: 'UUID', - String: '5555', - Number: 5555, - last: { - type: FieldConfigTypes.Number, - nextId: 5641, - nextIdFunction, - }, - }, - discriminators: { - person: { - clientId: true, - }, - droid: { - make: 5555, - }, - }, -}; - -const expected: NormalisedOptions = { - modelName: 'Person', - network: true, - fields: new Map([ - ['_id', { type: FieldConfigTypes.ObjectId }], - ['clientId', { type: FieldConfigTypes.ObjectId }], - ['withUUID', { type: FieldConfigTypes.UUID, asBinary: false, version: 1 }], - ['String', { type: FieldConfigTypes.String, nextId: '5555' }], - ['Number', { type: FieldConfigTypes.Number, nextId: 5555 }], - ['last', { type: FieldConfigTypes.Number, nextId: 5641, nextIdFunction }], - ]), - discriminators: new Map>([ - [ - 'person', - new Map([ - ['clientId', { type: FieldConfigTypes.ObjectId }], - ]), - ], - [ - 'droid', - new Map([ - ['make', { type: FieldConfigTypes.Number, nextId: 5555 }], - ]), - ], - ]), -}; - describe('normaliseOptions()', () => { - it('should throw error if no options', () => { - expect(() => normaliseOptions(schema, '' as any)).toThrowError( - /(Options not specified)/, - ); - }); - it('should throw error if no modelName', () => { - expect(() => normaliseOptions(schema, {} as any)).toThrowError( + expect(() => normaliseOptions('', schema, {} as any)).toThrowError( /(`modelName`)/, ); }); it('should throw Error if Type not found', () => { expect(() => - normaliseOptions(schema, { - modelName: 'AAA', + normaliseOptions('AAA', schema, { fields: { _id: { type: '404', @@ -95,29 +33,26 @@ describe('normaliseOptions()', () => { describe('normaliseFieldConfigMap()', () => { it('should throw error if no nextId for Number and String, no FieldConfig', () => { const option1: AssignerOptions = { - modelName: 'Test', fields: { number: FieldConfigTypes.Number, // throws exception, no nextId }, }; const option2: AssignerOptions = { - modelName: 'Test', fields: { string: FieldConfigTypes.String, // throws error, no nextId }, }; - expect(() => normaliseOptions(schema, option1)).toThrowError( + expect(() => normaliseOptions('Tests', schema, option1)).toThrowError( /(nextId not provided for field type)/, ); - expect(() => normaliseOptions(schema, option2)).toThrowError( + expect(() => normaliseOptions('Tests', schema, option2)).toThrowError( /(nextId not provided for field type)/, ); }); it('should be optimised at sting catchall', () => { const pluginOptions: AssignerOptions = { - modelName: 'Character', discriminators: { ['Person']: { _id: '12T1542', @@ -141,11 +76,73 @@ describe('normaliseOptions()', () => { ]), }; - expect(normaliseOptions(schema, pluginOptions)).toEqual(pluginExpected); + expect(normaliseOptions('Character', schema, pluginOptions)).toEqual( + pluginExpected, + ); }); }); it('should normalise options', () => { - expect(normaliseOptions(schema, options)).toEqual(expected); + const nextIdFunction = function(nextId: number) { + return nextId + 1; + }; + + const options: AssignerOptions = { + fields: { + _id: true, + clientId: true, + withUUID: 'UUID', + String: '5555', + Number: 5555, + last: { + type: FieldConfigTypes.Number, + nextId: 5641, + nextIdFunction, + }, + }, + discriminators: { + person: { + clientId: true, + }, + droid: { + make: 5555, + }, + }, + }; + + const expected: NormalisedOptions = { + modelName: 'Person', + network: true, + fields: new Map([ + ['_id', { type: FieldConfigTypes.ObjectId }], + ['clientId', { type: FieldConfigTypes.ObjectId }], + [ + 'withUUID', + { type: FieldConfigTypes.UUID, asBinary: false, version: 1 }, + ], + ['String', { type: FieldConfigTypes.String, nextId: '5555' }], + ['Number', { type: FieldConfigTypes.Number, nextId: 5555 }], + [ + 'last', + { type: FieldConfigTypes.Number, nextId: 5641, nextIdFunction }, + ], + ]), + discriminators: new Map>([ + [ + 'person', + new Map([ + ['clientId', { type: FieldConfigTypes.ObjectId }], + ]), + ], + [ + 'droid', + new Map([ + ['make', { type: FieldConfigTypes.Number, nextId: 5555 }], + ]), + ], + ]), + }; + + expect(normaliseOptions('Person', schema, options)).toEqual(expected); }); }); diff --git a/src/utils/normalise-options.ts b/src/utils/normalise-options.ts index f882b73..bb68283 100644 --- a/src/utils/normalise-options.ts +++ b/src/utils/normalise-options.ts @@ -166,20 +166,20 @@ function normaliseFieldsConfigMap( } export function normaliseOptions( + modelName: string, schema: Schema, - options: AssignerOptions, + options?: AssignerOptions, ): NormalisedOptions { - if (!options) { - throw throwPluginError('Plugin Options not specified!'); - } - - if (!options.modelName) { + if (!modelName) { throw throwPluginError('Plugin `modelName` must be defined!'); } const normalised: NormalisedOptions = { - modelName: options.modelName, - ...normaliseFieldsConfigMap(options.modelName, options.fields), + modelName, + ...normaliseFieldsConfigMap( + modelName, + options ? options.fields : undefined, + ), }; normalised.fields = normalised.fields @@ -192,7 +192,7 @@ export function normaliseOptions( } // cannot rely on discriminatorKey as its default __t - if (schema.get('discriminatorKey') && options.discriminators) { + if (options && options.discriminators) { const discriminatorMap: Map> = new Map(); for (const dName in options.discriminators) { if (!options.discriminators.hasOwnProperty(dName)) { From 048fc24dd3ac2f01d300cca64dc188cdc76713f2 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 10 Aug 2018 08:22:43 +0100 Subject: [PATCH 09/52] refactor: remove YAGNI schema parameter * perf(pre-save): remove checks for `options.fields` as it never gets called * test: write some more test cases --- src/MongooseIdAssigner.ts | 2 +- src/assigner.interfaces.js.flow | 2 +- src/assigner.interfaces.ts | 2 +- src/utils/__tests__/normalise-options.spec.ts | 222 +++++++++++++----- src/utils/configure-schema.ts | 9 +- src/utils/normalise-options.ts | 13 +- 6 files changed, 172 insertions(+), 78 deletions(-) diff --git a/src/MongooseIdAssigner.ts b/src/MongooseIdAssigner.ts index d2be95f..aecd0ef 100644 --- a/src/MongooseIdAssigner.ts +++ b/src/MongooseIdAssigner.ts @@ -80,7 +80,7 @@ export class MongooseIdAssigner extends EventEmitter { this.retryTime = 20; this.retryMillis = 20; // after 20 millis - this.options = normaliseOptions(modelName, schema, options); + this.options = normaliseOptions(modelName, options); this.appendState({ modelName: this.modelName, diff --git a/src/assigner.interfaces.js.flow b/src/assigner.interfaces.js.flow index 9120d21..fcdaec0 100644 --- a/src/assigner.interfaces.js.flow +++ b/src/assigner.interfaces.js.flow @@ -29,7 +29,7 @@ export type NumberFieldConfig = { export type UUIDFieldConfig = { type: 'UUID' | 'GUID', asBinary?: boolean, // default string - version?: number, // supports 1 and 4, default 1 + version?: 1 | 4, // supports 1 and 4, default 1 versionOptions?: any, }; diff --git a/src/assigner.interfaces.ts b/src/assigner.interfaces.ts index 6cfcbd0..ea6f325 100644 --- a/src/assigner.interfaces.ts +++ b/src/assigner.interfaces.ts @@ -27,7 +27,7 @@ export interface NumberFieldConfig { export interface UUIDFieldConfig { type: 'UUID' | 'GUID'; asBinary?: boolean; // default string - version?: number; // supports 1 and 4, default 1 + version?: 1 | 4; // supports 1 and 4, default 1 versionOptions?: any; } diff --git a/src/utils/__tests__/normalise-options.spec.ts b/src/utils/__tests__/normalise-options.spec.ts index 117750c..44d195b 100644 --- a/src/utils/__tests__/normalise-options.spec.ts +++ b/src/utils/__tests__/normalise-options.spec.ts @@ -7,79 +7,21 @@ import { import { NormalisedOptions } from '../../MongooseIdAssigner'; import { normaliseOptions } from '../normalise-options'; -const schema = new Schema({}); - describe('normaliseOptions()', () => { it('should throw error if no modelName', () => { - expect(() => normaliseOptions('', schema, {} as any)).toThrowError( - /(`modelName`)/, - ); + expect(() => normaliseOptions('', {} as any)).toThrowError(/(`modelName`)/); }); it('should throw Error if Type not found', () => { expect(() => - normaliseOptions('AAA', schema, { + normaliseOptions('AAA', { fields: { _id: { type: '404', }, } as any, }), - ).toThrowError( - '[MongooseIdAssigner], Model: AAA, Unknown Field Type for field [_id]', - ); - }); - - describe('normaliseFieldConfigMap()', () => { - it('should throw error if no nextId for Number and String, no FieldConfig', () => { - const option1: AssignerOptions = { - fields: { - number: FieldConfigTypes.Number, // throws exception, no nextId - }, - }; - const option2: AssignerOptions = { - fields: { - string: FieldConfigTypes.String, // throws error, no nextId - }, - }; - - expect(() => normaliseOptions('Tests', schema, option1)).toThrowError( - /(nextId not provided for field type)/, - ); - expect(() => normaliseOptions('Tests', schema, option2)).toThrowError( - /(nextId not provided for field type)/, - ); - }); - - it('should be optimised at sting catchall', () => { - const pluginOptions: AssignerOptions = { - discriminators: { - ['Person']: { - _id: '12T1542', - }, - }, - }; - - const pluginExpected: NormalisedOptions = { - modelName: 'Character', - network: true, - fields: new Map([ - ['_id', { type: FieldConfigTypes.ObjectId }], - ]), - discriminators: new Map>([ - [ - 'Person', - new Map([ - ['_id', { type: FieldConfigTypes.String, nextId: '12T1542' }], - ]), - ], - ]), - }; - - expect(normaliseOptions('Character', schema, pluginOptions)).toEqual( - pluginExpected, - ); - }); + ).toThrowError(/(Unknown FieldConfigType)/); }); it('should normalise options', () => { @@ -143,6 +85,162 @@ describe('normaliseOptions()', () => { ]), }; - expect(normaliseOptions('Person', schema, options)).toEqual(expected); + expect(normaliseOptions('Person', options)).toEqual(expected); + }); + + describe('normaliseFieldConfigMap()', () => { + it('should throw error if no nextId for Number and String, no FieldConfig', () => { + const option1: AssignerOptions = { + fields: { + number: FieldConfigTypes.Number, // throws exception, no nextId + }, + }; + const option2: AssignerOptions = { + fields: { + string: FieldConfigTypes.String, // throws error, no nextId + }, + }; + + expect(() => normaliseOptions('Tests', option1)).toThrowError( + /(nextId not provided for field type Number)/, + ); + expect(() => normaliseOptions('Tests', option2)).toThrowError( + /(nextId not provided for field type String)/, + ); + }); + + it('should be optimised at sting catchall', () => { + const pluginOptions: AssignerOptions = { + discriminators: { + ['Person']: { + _id: '12T1542', + }, + }, + }; + + const pluginExpected: NormalisedOptions = { + modelName: 'Character', + network: true, + fields: new Map([ + ['_id', { type: FieldConfigTypes.ObjectId }], + ]), + discriminators: new Map>([ + [ + 'Person', + new Map([ + ['_id', { type: FieldConfigTypes.String, nextId: '12T1542' }], + ]), + ], + ]), + }; + + expect(normaliseOptions('Character', pluginOptions)).toEqual( + pluginExpected, + ); + }); + + describe('checkFieldConfig()', () => { + it('should throw an error if FieldConfigType does not match nextId type', () => { + const option: AssignerOptions = { + fields: { + number: { + type: FieldConfigTypes.Number, + nextId: '33' as any, // type must be number + }, + }, + }; + + expect(() => normaliseOptions('Tests', option)).toThrowError( + /(nextId is required, should have as type Number)/, + ); + }); + + it('should throw an error UUID version passed is is unsupported', () => { + const option: AssignerOptions = { + fields: { + number: { + type: FieldConfigTypes.UUID, + version: 3 as any, + }, + }, + }; + + expect(() => normaliseOptions('Tests', option)).toThrowError( + /(UUID version must be either 1 or 4!)/, + ); + }); + + it('should throw an if incrementBy is not of type Number', () => { + const option: AssignerOptions = { + fields: { + number: { + type: FieldConfigTypes.Number, + incrementBy: 'string' as any, + nextId: 4444, + }, + }, + }; + + expect(() => normaliseOptions('Tests', option)).toThrowError( + /(incrementBy must be of type `number`!)/, + ); + }); + + it('should throw error if nextIdFunctions is not of type function', () => { + const option1: AssignerOptions = { + fields: { + number: { + type: FieldConfigTypes.Number, + nextId: 44, + nextIdFunction: 'string' as any, + }, + }, + }; + const option2: AssignerOptions = { + fields: { + string: { + type: FieldConfigTypes.String, + nextId: '444', + nextIdFunction: 444 as any, + }, + }, + }; + + expect(() => normaliseOptions('Tests', option1)).toThrowError( + /(nextIdFunction must be a `Function`!)/, + ); + expect(() => normaliseOptions('Tests', option2)).toThrowError( + /(nextIdFunction must be a `Function`!)/, + ); + }); + + it('should throw error if return types for nextIdFunctions do not return respective types', () => { + const option1: AssignerOptions = { + fields: { + number: { + type: FieldConfigTypes.Number, + nextId: 44, + nextIdFunction: () => 'string' as any, + }, + }, + }; + const option2: AssignerOptions = { + fields: { + string: { + type: FieldConfigTypes.String, + nextId: '444', + nextIdFunction: () => 444 as any, + }, + }, + }; + + expect(() => normaliseOptions('Tests', option1)).toThrowError( + /(nextIdFunction must return nextId of type `number`!)/, + ); + expect(() => normaliseOptions('Tests', option2)).toThrowError( + /(nextIdFunction must return nextId of type `string`!)/, + ); + }); + }); }); }); diff --git a/src/utils/configure-schema.ts b/src/utils/configure-schema.ts index dafdf07..41d6448 100644 --- a/src/utils/configure-schema.ts +++ b/src/utils/configure-schema.ts @@ -1,4 +1,3 @@ -import { ObjectId } from 'mongodb'; import { Document } from 'mongoose'; import { MongooseIdAssigner } from '../MongooseIdAssigner'; import { assignIdNetwork, assignIdNoNetwork } from './assign-fields-ids'; @@ -31,13 +30,7 @@ function configurePreSave(assigner: MongooseIdAssigner) { const doc = this as any; try { - if (doc.isNew || doc.e11000) { - // if no fields, no discriminators - if (!options.fields && !options.discriminators) { - doc._id = new ObjectId(); - return next(); - } - + if (doc.isNew) { if (assigner.state.error) { return Promise.reject( throwPluginError( diff --git a/src/utils/normalise-options.ts b/src/utils/normalise-options.ts index bb68283..e8a98e5 100644 --- a/src/utils/normalise-options.ts +++ b/src/utils/normalise-options.ts @@ -1,4 +1,3 @@ -import { Schema } from 'mongoose'; import { AssignerFieldsConfigMap, AssignerOptions, @@ -49,7 +48,7 @@ function checkFieldConfig( throwPluginError('nextIdFunction must be a `Function`!', modelName, field); } - if (isNumber(config) && config.nextIdFunction) { + if (isNumber(config)) { if (config.incrementBy && typeof config.incrementBy !== 'number') { throwPluginError( 'incrementBy must be of type `number`!', @@ -58,8 +57,9 @@ function checkFieldConfig( ); } if ( + config.nextIdFunction && typeof config.nextIdFunction(config.nextId, config.incrementBy) !== - 'number' + 'number' ) { throwPluginError( 'nextIdFunction must return nextId of type `number`!', @@ -149,7 +149,11 @@ function normaliseFieldsConfigMap( (fieldConfig && typeof fieldConfig !== 'object') || !FieldConfigTypes[fieldConfig.type] ) { - throwPluginError(`Unknown Field Type for field [${field}]`, modelName); + throwPluginError( + `Unknown FieldConfigType ${fieldConfig}`, + modelName, + field, + ); } if (fieldConfig && typeof fieldConfig === 'object') { @@ -167,7 +171,6 @@ function normaliseFieldsConfigMap( export function normaliseOptions( modelName: string, - schema: Schema, options?: AssignerOptions, ): NormalisedOptions { if (!modelName) { From a7cb938aa501c1cd1c7f0bc6d7c2e5b9f92a6cdc Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 10 Aug 2018 08:23:48 +0100 Subject: [PATCH 10/52] test: refactor test suits for `MongooseIdAssigner` --- src/MongooseIdAssigner.js.flow | 6 +- src/MongooseIdAssigner.ts | 2 +- src/__tests__/MongooseIdAssigner.spec.ts | 419 ++++++++++++++--------- src/assigner.interfaces.js.flow | 2 +- 4 files changed, 258 insertions(+), 171 deletions(-) diff --git a/src/MongooseIdAssigner.js.flow b/src/MongooseIdAssigner.js.flow index 08dbaa1..cc42f7b 100644 --- a/src/MongooseIdAssigner.js.flow +++ b/src/MongooseIdAssigner.js.flow @@ -3,7 +3,11 @@ import type { ObjectId } from 'mongoose'; import EventEmitter from 'events'; import type { MongooseSchema, MongooseModel } from 'mongoose'; -import type { AssignerOptions, AssignerPluginOptions, FieldConfig } from './assigner.interfaces'; +import type { + AssignerOptions, + AssignerPluginOptions, + FieldConfig, +} from './assigner.interfaces'; import type { SchemaState } from './LocalStateStore'; export interface NormalisedOptions { diff --git a/src/MongooseIdAssigner.ts b/src/MongooseIdAssigner.ts index aecd0ef..174ce99 100644 --- a/src/MongooseIdAssigner.ts +++ b/src/MongooseIdAssigner.ts @@ -106,7 +106,7 @@ export class MongooseIdAssigner extends EventEmitter { const { model, error } = this.state; if (!model) { if (error) { - throwPluginError('Cannot read Model, Error At Initialisation' + error); + throwPluginError('Cannot read Model, Error At Initialisation ' + error); } else { throwPluginError('Cannot read Model, Not Initialised'); } diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index e244167..c41d095 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -19,7 +19,11 @@ afterAll(async () => { describe('MongooseIdAssigner', () => { let exampleSchema: Schema; + let modelName: string; + let count = 0; + beforeEach(() => { + modelName = 'ex' + ++count; exampleSchema = getSchema(1); localStateStore.clear(); }); @@ -31,6 +35,20 @@ describe('MongooseIdAssigner', () => { }); describe('basics', () => { + it('should throw error if no model passed at Constructor', () => { + expect(() => new MongooseIdAssigner('' as any)).toThrowError( + /(Provide a Model to the Constructor)/, + ); + }); + + it('should throw error if using same model to instantiate IdAssigner', () => { + const repeat = mongoose.model('repeat', exampleSchema); + expect(new MongooseIdAssigner(repeat)).toBeTruthy(); + expect(() => new MongooseIdAssigner(repeat)).toThrowError( + /(Provided Model already has an Assigner Instance!)/, + ); + }); + it('should save state to localStateStore', () => { MongooseIdAssigner.plugin(exampleSchema, { modelName: 'example', @@ -65,18 +83,6 @@ describe('MongooseIdAssigner', () => { expect(doc._id).toBeTruthy(); }); - it('should apply plugin with method MongooseIdAssigner.plugin', async () => { - MongooseIdAssigner.plugin(exampleSchema, { - modelName: 'example3', - }); - - exampleModel = mongoose.model('example3', exampleSchema); - - const doc = await exampleModel.create({ personId: 'mernxl' }); - - expect(doc._id).toBeTruthy(); - }); - it('should create noNetwork with UUID and ObjectId', async () => { exampleModel = mongoose.model('example4', exampleSchema); @@ -213,7 +219,9 @@ describe('MongooseIdAssigner', () => { nextId: 'SPEC-7382-4344-3232', separator: '-', }, - uuidFieldString: FieldConfigTypes.UUID, + uuidFieldString: { + type: FieldConfigTypes.UUID, + }, uuidFieldBuffer: { type: FieldConfigTypes.UUID, version: 1, @@ -275,190 +283,265 @@ describe('MongooseIdAssigner', () => { }); }); - describe('initialise()', () => { - it('should initialise the plugin without passing model', () => { - exampleModel = mongoose.model('example9', exampleSchema); - const ExampleIA = new MongooseIdAssigner(exampleModel, { - fields: { - _id: { - type: FieldConfigTypes.String, - separator: 'T', - nextId: '34T5565', - }, - }, + describe('instance', () => { + describe('collection', () => { + it('should return the IdAssigner Collection', async () => { + exampleModel = mongoose.model(modelName, exampleSchema); + const ExampleIA = new MongooseIdAssigner(exampleModel); + await ExampleIA.initialise(); + + expect(ExampleIA.collection.collectionName).toMatch( + localStateStore.getCollName(), + ); }); - return ExampleIA.initialise() - .then(state => expect(state).toBe(1)) - .catch(e => expect(e).toBeUndefined()); - }); + it('should throw error if IdAssigner not Initialise', async () => { + const ExampleIA = new MongooseIdAssigner( + exampleSchema as any, + { modelName } as any, + true, + ); - it('should return state if called multiple times', () => { - expect.assertions(2); - exampleModel = mongoose.model('example10', exampleSchema); - const ExampleIA = new MongooseIdAssigner(exampleModel, { - fields: { - _id: { - type: FieldConfigTypes.String, - separator: 'T', - nextId: '34T5565', - }, - }, + expect(() => ExampleIA.collection).toThrowError( + /(Cannot read Model, Not Initialised)/, + ); }); - ExampleIA.initialise(exampleModel) - .then(state => expect(state).toBe(1)) - .catch(e => expect(e).toBeUndefined()); - - return ExampleIA.initialise() - .then(state => expect(state).toBe(1)) - .catch(e => expect(e).toBeUndefined()); - }); - }); + it('should throw error if IdAssigner Erred on initialise', async () => { + const ExampleIA = new MongooseIdAssigner( + exampleSchema as any, + { modelName } as any, + true, + ); + ExampleIA.appendState({ error: new Error('I Occurred') }); - describe('discriminators', () => { - let characterSchema: Schema, personSchema: Schema, droidSchema: Schema; - beforeEach(() => { - characterSchema = getSchema(1); - personSchema = getSchema(2); - droidSchema = getSchema(3); + expect(() => ExampleIA.collection).toThrowError( + /(Cannot read Model, Error At Initialisation Error: I Occurred)/, + ); + }); }); - it('should create noNetwork discriminators', async () => { - const options: AssignerOptions = { - fields: { - _id: FieldConfigTypes.GUID, - }, - discriminators: { - Person1: { - license: FieldConfigTypes.ObjectId, - }, - Droid1: { - make: FieldConfigTypes.UUID, + describe('initialise()', () => { + it('should initialise the plugin without passing model', () => { + exampleModel = mongoose.model('example9', exampleSchema); + const ExampleIA = new MongooseIdAssigner(exampleModel, { + fields: { + _id: { + type: FieldConfigTypes.String, + separator: 'T', + nextId: '34T5565', + }, }, - }, - }; + }); - const characterModel = mongoose.model('example11', characterSchema); - const CharacterIA = new MongooseIdAssigner(characterModel, options); - const personModel = characterModel.discriminator('Person1', personSchema); - const droidModel = characterModel.discriminator('Droid1', droidSchema); - try { - const character = await characterModel.create({ - friends: 'placeholder', + return ExampleIA.initialise() + .then(state => expect(state).toBe(1)) + .catch(e => expect(e).toBeUndefined()); + }); + + it('should return state if called multiple times', () => { + expect.assertions(2); + exampleModel = mongoose.model('example10', exampleSchema); + const ExampleIA = new MongooseIdAssigner(exampleModel, { + fields: { + _id: { + type: FieldConfigTypes.String, + separator: 'T', + nextId: '34T5565', + }, + }, }); - const person = await personModel.create({ friends: 'placeholder' }); - const droid = await droidModel.create({ friends: 'placeholder' }); - expect(CharacterIA.options.network).toBe(false); - expect((character as any)._id).toMatch(/-+/); - expect(typeof (person as any).license).toBe('string'); - expect((droid as any).make).toMatch(/-+/); - } catch (e) { - expect(e).toBeUndefined(); - } + ExampleIA.initialise(exampleModel) + .then(state => expect(state).toBe(1)) + .catch(e => expect(e).toBeUndefined()); + + return ExampleIA.initialise() + .then(state => expect(state).toBe(1)) + .catch(e => expect(e).toBeUndefined()); + }); }); - it('should create discriminators network', async () => { - const options: AssignerPluginOptions = { - modelName: 'example12', - fields: { - someId: 4444, - }, - discriminators: { - Person: { - _id: FieldConfigTypes.ObjectId, - license: '786-TSJ-000', // default separator `-` - }, - Droid: { - _id: FieldConfigTypes.UUID, - make: { - type: FieldConfigTypes.String, - nextId: '18Y4433', - separator: 'Y', + describe('getNextId()', () => { + it('should throw error message if field not found', async () => { + const characterSchema = getSchema(1); + + const options: AssignerPluginOptions = { + modelName: 'example13', + discriminators: { + Person13: { + license: 4444, }, - timestamp: Date.now(), }, - }, - }; + }; + + const characterIA = new MongooseIdAssigner( + characterSchema as any, + options, + true, + ); - characterSchema.plugin(MongooseIdAssigner.plugin, options); + try { + await characterIA.getNextId('not-found', 'Person13'); + } catch (e) { + expect(e.message).toMatch( + /(\[not-found] does not have a Field Configuration)/, + ); + } + }); + it('should return nextId depending on fieldConfig', async () => { + const options: AssignerOptions = { + fields: { + photoId: 4444, + }, + }; - const characterModel = mongoose.model('example12', characterSchema); - const personModel = characterModel.discriminator('Person', personSchema); - const droidModel = characterModel.discriminator('Droid', droidSchema); + const model = mongoose.model('example14', exampleSchema); + const exampleIA = new MongooseIdAssigner(model, options); - try { - const character = await characterModel.create({ - friends: 'placeholder', + try { + await model.create({ photoId: 21 }); + expect(await exampleIA.getNextId('photoId')).toBe(4445); + } catch (e) { + expect(e).toBeUndefined(); + } + }); + }); + }); + + describe('static', () => { + describe('plugin()', () => { + it('should throw error if no schema passed in', () => { + expect(() => + MongooseIdAssigner.plugin('' as any, {} as any), + ).toThrowError(/(Should be called using schema.plugin)/); + }); + + it('should throw error if no options passed', () => { + expect(() => + MongooseIdAssigner.plugin(new Schema({}), '' as any), + ).toThrowError(/(Plugin Options not specified!)/); + }); + + it('should apply plugin to schema', async () => { + MongooseIdAssigner.plugin(exampleSchema, { + modelName, }); - const person = await personModel.create({ friends: 'placeholder' }); - const droid = await droidModel.create({ friends: 'placeholder' }); - const person1 = await personModel.create({ friends: 'placeholder' }); - const droid1 = await droidModel.create({ friends: 'placeholder' }); - - expect((character as any).someId).toBe(4444); - expect(typeof (person as any)._id).toBe('string'); - expect((person as any).someId).toBe(4445); - expect((person as any).license).toBe('786-TSJ-000'); - expect((droid as any)._id).toMatch(/-+/); - expect((droid as any).someId).toBe(4446); - expect((droid as any).make).toBe('18Y4433'); - - expect((person1 as any).someId).toBe(4447); - expect((person1 as any).license).toBe('786-TSJ-001'); - - expect((droid1 as any).someId).toBe(4448); - expect((droid1 as any).make).toBe('18Y4434'); - } catch (e) { - expect(e).toBeUndefined(); - } + + exampleModel = mongoose.model(modelName, exampleSchema); + + const doc = await exampleModel.create({ personId: 'mernxl' }); + + expect(doc._id).toBeTruthy(); + }); }); }); - describe('getNextId()', () => { - it('should throw error message if field not found', async () => { - const characterSchema = getSchema(1); + describe('integrations', () => { + describe('discriminators', () => { + let characterSchema: Schema, personSchema: Schema, droidSchema: Schema; + beforeEach(() => { + characterSchema = getSchema(1); + personSchema = getSchema(2); + droidSchema = getSchema(3); + }); - const options: AssignerPluginOptions = { - modelName: 'example13', - discriminators: { - Person13: { - license: 4444, + it('should create noNetwork discriminators', async () => { + const options: AssignerOptions = { + fields: { + _id: FieldConfigTypes.GUID, }, - }, - }; - - const characterIA = new MongooseIdAssigner( - characterSchema as any, - options, - true, - ); + discriminators: { + Person1: { + license: FieldConfigTypes.ObjectId, + }, + Droid1: { + make: FieldConfigTypes.UUID, + }, + }, + }; - try { - await characterIA.getNextId('not-found', 'Person13'); - } catch (e) { - expect(e.message).toMatch( - /(\[not-found] does not have a Field Configuration)/, + const characterModel = mongoose.model('example11', characterSchema); + const CharacterIA = new MongooseIdAssigner(characterModel, options); + const personModel = characterModel.discriminator( + 'Person1', + personSchema, ); - } - }); - it('should return nextId depending on fieldConfig', async () => { - const options: AssignerOptions = { - fields: { - photoId: 4444, - }, - }; + const droidModel = characterModel.discriminator('Droid1', droidSchema); + try { + const character = await characterModel.create({ + friends: 'placeholder', + }); + const person = await personModel.create({ friends: 'placeholder' }); + const droid = await droidModel.create({ friends: 'placeholder' }); + + expect(CharacterIA.options.network).toBe(false); + expect((character as any)._id).toMatch(/-+/); + expect(typeof (person as any).license).toBe('string'); + expect((droid as any).make).toMatch(/-+/); + } catch (e) { + expect(e).toBeUndefined(); + } + }); + + it('should create discriminators network', async () => { + const options: AssignerPluginOptions = { + modelName: 'example12', + fields: { + someId: 4444, + }, + discriminators: { + Person: { + _id: FieldConfigTypes.ObjectId, + license: '786-TSJ-000', // default separator `-` + }, + Droid: { + _id: FieldConfigTypes.UUID, + make: { + type: FieldConfigTypes.String, + nextId: '18Y4433', + separator: 'Y', + }, + timestamp: Date.now(), + }, + }, + }; - const model = mongoose.model('example14', exampleSchema); - const exampleIA = new MongooseIdAssigner(model, options); + characterSchema.plugin(MongooseIdAssigner.plugin, options); - try { - await model.create({ photoId: 21 }); - expect(await exampleIA.getNextId('photoId')).toBe(4445); - } catch (e) { - expect(e).toBeUndefined(); - } + const characterModel = mongoose.model('example12', characterSchema); + const personModel = characterModel.discriminator( + 'Person', + personSchema, + ); + const droidModel = characterModel.discriminator('Droid', droidSchema); + + try { + const character = await characterModel.create({ + friends: 'placeholder', + }); + const person = await personModel.create({ friends: 'placeholder' }); + const droid = await droidModel.create({ friends: 'placeholder' }); + const person1 = await personModel.create({ friends: 'placeholder' }); + const droid1 = await droidModel.create({ friends: 'placeholder' }); + + expect((character as any).someId).toBe(4444); + expect(typeof (person as any)._id).toBe('string'); + expect((person as any).someId).toBe(4445); + expect((person as any).license).toBe('786-TSJ-000'); + expect((droid as any)._id).toMatch(/-+/); + expect((droid as any).someId).toBe(4446); + expect((droid as any).make).toBe('18Y4433'); + + expect((person1 as any).someId).toBe(4447); + expect((person1 as any).license).toBe('786-TSJ-001'); + + expect((droid1 as any).someId).toBe(4448); + expect((droid1 as any).make).toBe('18Y4434'); + } catch (e) { + expect(e).toBeUndefined(); + } + }); }); }); }); diff --git a/src/assigner.interfaces.js.flow b/src/assigner.interfaces.js.flow index fcdaec0..70919da 100644 --- a/src/assigner.interfaces.js.flow +++ b/src/assigner.interfaces.js.flow @@ -82,4 +82,4 @@ export type AssignerPluginOptions = { modelName: string, fields?: AssignerFieldsConfigMap, discriminators?: DiscriminatorConfigMap, -} +}; From 0b2fbc1481a981ef20b37b85f346992003e278b8 Mon Sep 17 00:00:00 2001 From: mernxl Date: Fri, 10 Aug 2018 23:47:04 +0100 Subject: [PATCH 11/52] chore: update dependencies * fix: flow parse of .json file in `config-chain` package * chore: add babel-jest, peer dependency to ts-jest --- .flowconfig | 9 +- package.json | 2 + yarn.lock | 2067 +++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 1638 insertions(+), 440 deletions(-) diff --git a/.flowconfig b/.flowconfig index b42d6d2..890b6d2 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,11 +1,4 @@ [ignore] .*/coverage/.* .*/resources/.* - -[include] - -[libs] - - -[options] - +.*/node_modules/config-chain/test/broken.json diff --git a/package.json b/package.json index 56fde11..dab979d 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ }, "dependencies": { "event-to-promise": "^0.8.0", + "npm": "^6.3.0", "uuid": ">=3.0.1" }, "peerDependencies": { @@ -65,6 +66,7 @@ "@types/mongoose": "^5.2.1", "@types/uuid": "^3.4.3", "babel-core": "^6.26.3", + "babel-jest": "^23.4.2", "flow-bin": "^0.77.0", "jest": "^23.4.1", "mongodb-memory-server": "^1.9.0", diff --git a/yarn.lock b/yarn.lock index 2591eff..1ad2ffc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,14 +3,14 @@ "@babel/code-frame@^7.0.0-beta.35": - version "7.0.0-beta.54" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.54.tgz#0024f96fdf7028a21d68e273afd4e953214a1ead" + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz#5c2154415d6c09959a71845ef519d11157e95d10" dependencies: - "@babel/highlight" "7.0.0-beta.54" + "@babel/highlight" "7.0.0-rc.1" -"@babel/highlight@7.0.0-beta.54": - version "7.0.0-beta.54" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.54.tgz#155d507358329b8e7068970017c3fd74a9b08584" +"@babel/highlight@7.0.0-rc.1": + version "7.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.1.tgz#e0ca4731fa4786f7b9500421d6ff5e5a7753e81e" dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -28,8 +28,8 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a" "@octokit/rest@^15.2.0": - version "15.9.4" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.9.4.tgz#c6cf0f483275d9c798b18419b7c9d417493bb70f" + version "15.9.5" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.9.5.tgz#e356d202bd0b517e381f705ad77d98ccb84e0c65" dependencies: before-after-hook "^1.1.0" btoa-lite "^1.0.0" @@ -56,8 +56,8 @@ resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.2.0.tgz#ee9d5a09c9969eade1ec864776aeda5c5cddbbf0" "@semantic-release/github@^5.0.0": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.0.1.tgz#7be94947b4a32604ffda8e8f59b70ff5c04bea35" + version "5.0.2" + resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.0.2.tgz#3a3a4bb7e86fc1dc31829daf5066a232e2097e5b" dependencies: "@octokit/rest" "^15.2.0" "@semantic-release/error" "^2.2.0" @@ -77,9 +77,9 @@ parse-github-url "^1.0.1" url-join "^4.0.0" -"@semantic-release/npm@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-4.0.1.tgz#366a9ed0c36d34e6c6c72d4a751f551a7128ebb6" +"@semantic-release/npm@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.0.1.tgz#e3d49be08f50654e43284dfb582a309c722767d4" dependencies: "@semantic-release/error" "^2.2.0" aggregate-error "^1.0.0" @@ -90,21 +90,22 @@ lodash "^4.17.4" nerf-dart "^1.0.0" normalize-url "^3.0.0" + npm "^6.3.0" parse-json "^4.0.0" rc "^1.2.8" read-pkg "^4.0.0" registry-auth-token "^3.3.1" "@semantic-release/release-notes-generator@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.0.0.tgz#13510bf6403c9c9e6cb20fd3d9e72014d3ee79e2" + version "7.0.1" + resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.0.1.tgz#300c06b56e965a0aec5d7a83f164b0d7e497ea7b" dependencies: conventional-changelog-angular "^5.0.0" conventional-changelog-writer "^4.0.0" conventional-commits-filter "^2.0.0" conventional-commits-parser "^3.0.0" debug "^3.1.0" - get-stream "^3.0.0" + get-stream "^4.0.0" git-url-parse "^10.0.1" import-from "^2.1.0" into-stream "^3.1.0" @@ -127,8 +128,8 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" "@types/jest@^23.3.0": - version "23.3.0" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.0.tgz#5dd70033b616a6228042244ebd992f6426808810" + version "23.3.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.1.tgz#a4319aedb071d478e6f407d1c4578ec8156829cf" "@types/mongodb-memory-server@^1.8.0": version "1.8.0" @@ -137,24 +138,24 @@ "@types/node" "*" "@types/mongodb@*": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.1.2.tgz#fe5d84a151025b00104357805e23d62217e681cc" + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.1.3.tgz#73a2dba96cc10e9c9b0670a1a34a0caefe2c6c37" dependencies: "@types/bson" "*" "@types/events" "*" "@types/node" "*" "@types/mongoose@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.2.1.tgz#f7038576b4fe5fc708cbb7e2c1762ddd899b7c6b" + version "5.2.5" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.2.5.tgz#3a8467549744c105515299acc6f590e5403fb277" dependencies: "@types/events" "*" "@types/mongodb" "*" "@types/node" "*" "@types/node@*": - version "10.5.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.2.tgz#f19f05314d5421fe37e74153254201a7bf00a707" + version "10.5.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.7.tgz#960d9feb3ade2233bcc9843c918d740b4f78a7cf" "@types/uuid@^3.4.3": version "3.4.3" @@ -162,7 +163,7 @@ dependencies: "@types/node" "*" -JSONStream@^1.0.4: +JSONStream@^1.0.4, JSONStream@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" dependencies: @@ -173,7 +174,11 @@ abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" -abbrev@1: +abab@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + +abbrev@1, abbrev@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -183,16 +188,22 @@ acorn-globals@^4.1.0: dependencies: acorn "^5.0.0" -acorn@^5.0.0, acorn@^5.3.0: +acorn@^5.0.0, acorn@^5.5.3: version "5.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" -agent-base@4, agent-base@^4.1.0: +agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" dependencies: es6-promisify "^5.0.0" +agentkeepalive@^3.4.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.1.tgz#4eba75cf2ad258fc09efd506cdb8d8c2971d35a4" + dependencies: + humanize-ms "^1.2.1" + aggregate-error@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-1.0.0.tgz#888344dad0220a72e3af50906117f48771925fac" @@ -200,7 +211,7 @@ aggregate-error@^1.0.0: clean-stack "^1.0.0" indent-string "^3.0.0" -ajv@^5.1.0: +ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -221,6 +232,12 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +ansi-align@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + dependencies: + string-width "^2.0.0" + ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" @@ -247,12 +264,13 @@ ansicolors@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + +ansistyles@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ansistyles/-/ansistyles-0.1.3.tgz#5de60415bda071bb37127854c864f41b23254539" anymatch@^2.0.0: version "2.0.0" @@ -267,10 +285,18 @@ append-transform@^1.0.0: dependencies: default-require-extensions "^2.0.0" -aproba@^1.0.3: +aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2, aproba@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" +"aproba@^1.1.2 || 2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + +archy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -310,10 +336,6 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -322,14 +344,6 @@ array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -352,9 +366,15 @@ arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + dependencies: + safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" @@ -368,10 +388,6 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" - async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" @@ -404,9 +420,9 @@ aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.7.0.tgz#d4d0e9b9dbfca77bf08eeb0a8a471550fe39e289" +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" @@ -460,9 +476,9 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.4.0.tgz#22c34c392e2176f6a4c367992a7fcff69d2e8557" +babel-jest@^23.4.2: + version "23.4.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.4.2.tgz#f276de67798a5d68f2d6e87ff518c2f6e1609877" dependencies: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" @@ -490,7 +506,7 @@ babel-plugin-syntax-object-rest-spread@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" -babel-preset-jest@^23.0.0, babel-preset-jest@^23.2.0: +babel-preset-jest@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" dependencies: @@ -509,7 +525,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.2: +babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" dependencies: @@ -583,9 +599,15 @@ before-after-hook@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.1.0.tgz#83165e15a59460d13702cb8febd6a1807896db5a" -binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" +bin-links@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.2.tgz#fb74bd54bae6b7befc6c6221f25322ac830d9757" + dependencies: + bluebird "^3.5.0" + cmd-shim "^2.0.2" + gentle-fs "^2.0.0" + graceful-fs "^4.1.11" + write-file-atomic "^2.3.0" bl@^1.0.0: version "1.2.2" @@ -594,14 +616,32 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -bluebird@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bluebird@3.5.1, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" bottleneck@^2.0.1: version "2.6.0" resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.6.0.tgz#cbc557383fd1f63cadc87e1141b1ad766863b863" +boxen@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + dependencies: + ansi-align "^2.0.0" + camelcase "^4.0.0" + chalk "^2.0.1" + cli-boxes "^1.0.0" + string-width "^2.0.0" + term-size "^1.2.0" + widest-line "^2.0.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -676,8 +716,8 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" buffer-from@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" buffer@^3.0.1: version "3.6.0" @@ -691,6 +731,55 @@ builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + +byte-size@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.3.tgz#b7c095efc68eadf82985fccd9a2df43a74fa2ccd" + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cacache@^11.0.1, cacache@^11.0.2, cacache@^11.1.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + figgy-pudding "^3.1.0" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.3" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^6.0.0" + unique-filename "^1.1.0" + y18n "^4.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -705,6 +794,10 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-limit@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" @@ -725,7 +818,7 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^4.1.0: +camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -735,6 +828,10 @@ capture-exit@^1.2.0: dependencies: rsvp "^3.3.3" +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" + cardinal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9" @@ -763,7 +860,7 @@ chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: @@ -771,22 +868,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chokidar@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -chownr@^1.0.1: +chownr@^1.0.1, chownr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" @@ -794,6 +876,12 @@ ci-info@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" +cidr-regex@^2.0.8: + version "2.0.9" + resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.9.tgz#9c17bb2b18e15af07f7d0c3b994b961d687ed1c9" + dependencies: + ip-regex "^2.1.0" + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -807,6 +895,26 @@ clean-stack@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" +cli-boxes@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + +cli-columns@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cli-columns/-/cli-columns-3.1.2.tgz#6732d972979efc2ae444a1f08e08fa139c96a18e" + dependencies: + string-width "^2.0.0" + strip-ansi "^3.0.1" + +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + cli-table@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" @@ -829,6 +937,21 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + +closest-file-data@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/closest-file-data/-/closest-file-data-0.1.4.tgz#975f87c132f299d24a0375b9f63ca3fb88f72b3a" + +cmd-shim@^2.0.2, cmd-shim@~2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -858,15 +981,26 @@ colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" -combined-stream@1.0.6, combined-stream@~1.0.5: +colors@^1.1.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.1.tgz#4accdb89cf2cabc7f982771925e9468784f32f3d" + +columnify@~1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + +combined-stream@1.0.6, combined-stream@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: delayed-stream "~1.0.0" commander@^2.12.1: - version "2.16.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.16.0.tgz#f16390593996ceb4f3eeb020b31d78528f7f8a50" + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" commander@~2.8.1: version "2.8.1" @@ -893,7 +1027,34 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: +concat-stream@^1.5.0, concat-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@~1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +configstore@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + dependencies: + dot-prop "^4.1.0" + graceful-fs "^4.1.2" + make-dir "^1.0.0" + unique-string "^1.0.0" + write-file-atomic "^2.0.0" + xdg-basedir "^3.0.0" + +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" @@ -942,6 +1103,17 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -955,28 +1127,18 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" cosmiconfig@^5.0.1: - version "5.0.5" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.5.tgz#a809e3c2306891ce17ab70359dc8bdf661fe2cd0" + version "5.0.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" dependencies: is-directory "^0.3.1" js-yaml "^3.9.0" parse-json "^4.0.0" -cpx@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" dependencies: - babel-runtime "^6.9.2" - chokidar "^1.6.0" - duplexer "^0.1.1" - glob "^7.0.5" - glob2base "^0.0.12" - minimatch "^3.0.2" - mkdirp "^0.5.1" - resolve "^1.1.7" - safe-buffer "^5.0.1" - shell-quote "^1.6.1" - subarg "^1.0.0" + capture-stack-trace "^1.0.0" cross-spawn@^5.0.1: version "5.1.0" @@ -996,13 +1158,17 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" -"cssstyle@>= 0.3.1 < 0.4.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.3.1.tgz#6da9b4cff1bc5d716e6e5fe8e04fcb1b50a49adf" +cssstyle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.0.0.tgz#79b16d51ec5591faec60e688891f15d2a5705129" dependencies: cssom "0.3.x" @@ -1012,6 +1178,10 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1030,18 +1200,22 @@ dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" - debug@3.1.0, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" +debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debuglog@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + decamelize-keys@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" @@ -1125,6 +1299,12 @@ default-require-extensions@^2.0.0: dependencies: strip-bom "^3.0.0" +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + dependencies: + clone "^1.0.2" + define-properties@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" @@ -1165,7 +1345,7 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-indent@^5.0.0: +detect-indent@^5.0.0, detect-indent@~5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -1177,6 +1357,13 @@ detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" +dezalgo@^1.0.0, dezalgo@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + dependencies: + asap "^2.0.0" + wrappy "1" + diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -1188,7 +1375,7 @@ dir-glob@^2.0.0: arrify "^1.0.1" path-type "^3.0.0" -domexception@^1.0.0: +domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" dependencies: @@ -1200,23 +1387,53 @@ dot-prop@^3.0.0: dependencies: is-obj "^1.0.0" +dot-prop@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + dependencies: + is-obj "^1.0.0" + +dotenv@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" + duplexer2@~0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" dependencies: readable-stream "^2.0.2" -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.0.tgz#592903f5d80b38d037220541264d69a198fb3410" + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" dependencies: jsbn "~0.1.0" + safer-buffer "^2.1.0" + +editor@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" -end-of-stream@^1.0.0: +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" dependencies: @@ -1229,6 +1446,16 @@ env-ci@^2.0.0: execa "^0.10.0" java-properties "^0.2.9" +err-code@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + +errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + dependencies: + prr "~1.0.1" + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -1267,7 +1494,7 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@^1.9.0: +escodegen@^1.9.1: version "1.11.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" dependencies: @@ -1360,14 +1587,14 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expect@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.4.0.tgz#6da4ecc99c1471253e7288338983ad1ebadb60c3" +expect@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.5.0.tgz#18999a0eef8f8acf99023fde766d9c323c2562ed" dependencies: ansi-styles "^3.2.0" - jest-diff "^23.2.0" + jest-diff "^23.5.0" jest-get-type "^22.1.0" - jest-matcher-utils "^23.2.0" + jest-matcher-utils "^23.5.0" jest-message-util "^23.4.0" jest-regex-util "^23.3.0" @@ -1384,7 +1611,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.1: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -1450,6 +1677,16 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" +figgy-pudding@^3.0.0, figgy-pudding@^3.1.0, figgy-pudding@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.2.0.tgz#464626b73d7b0fc045a99753d191b0785957ff73" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + file-type@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" @@ -1492,9 +1729,9 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" -find-index@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" +find-npm-prefix@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" find-up@^1.0.0: version "1.1.2" @@ -1526,6 +1763,13 @@ flow-bin@^0.77.0: version "0.77.0" resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.77.0.tgz#4e5c93929f289a0c28e08fb361a9734944a11297" +flush-write-stream@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.4" + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1544,7 +1788,7 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@~2.3.1: +form-data@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" dependencies: @@ -1558,7 +1802,14 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -from2@^2.1.1: +from2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-1.3.0.tgz#88413baaa5f9a597cfde9221d86986cd3c061dfd" + dependencies: + inherits "~2.0.1" + readable-stream "~1.1.10" + +from2@^2.1.0, from2@^2.1.1: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" dependencies: @@ -1569,7 +1820,7 @@ fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" -fs-extra@6.0.1, fs-extra@^6.0.1: +fs-extra@6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" dependencies: @@ -1591,17 +1842,43 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.2.1" +fs-vacuum@^1.2.10, fs-vacuum@~1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36" + dependencies: + graceful-fs "^4.1.2" + path-is-inside "^1.0.1" + rimraf "^2.5.2" + +fs-write-stream-atomic@^1.0.8, fs-write-stream-atomic@~1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0, fsevents@^1.2.3: +fsevents@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" +fstream@^1.0.0, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -1619,13 +1896,30 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +genfun@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" + +gentle-fs@^2.0.0, gentle-fs@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.0.1.tgz#585cfd612bfc5cd52471fdb42537f016a5ce3687" + dependencies: + aproba "^1.1.2" + fs-vacuum "^1.2.10" + graceful-fs "^4.1.11" + iferr "^0.1.5" + mkdirp "^0.5.1" + path-is-inside "^1.0.2" + read-cmd-shim "^1.0.1" + slide "^1.1.6" + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" -get-port@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" +get-port@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.0.0.tgz#373c85960138ee20027c070e3cb08019fea29816" get-stream@^2.2.0: version "2.3.1" @@ -1638,6 +1932,12 @@ get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +get-stream@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.0.0.tgz#9e074cb898bd2b9ebabb445a1766d7f43576d977" + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -1702,13 +2002,7 @@ glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob2base@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - dependencies: - find-index "^0.1.1" - -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -1719,6 +2013,12 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + dependencies: + ini "^1.3.4" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -1735,7 +2035,23 @@ globby@^8.0.0: pify "^3.0.0" slash "^1.0.0" -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@~4.1.11: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1761,11 +2077,11 @@ har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" -har-validator@~5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" +har-validator@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29" dependencies: - ajv "^5.1.0" + ajv "^5.3.0" har-schema "^2.0.0" has-ansi@^2.0.0: @@ -1782,7 +2098,7 @@ has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" -has-unicode@^2.0.0: +has-unicode@^2.0.0, has-unicode@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -1826,11 +2142,11 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -hook-std@^1.0.1: +hook-std@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-1.1.0.tgz#7f76b74b6f96d3cd4106afb50a66bdb0af2d2a2d" -hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: +hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -1840,6 +2156,10 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" +http-cache-semantics@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" @@ -1862,11 +2182,17 @@ https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + dependencies: + ms "^2.0.0" + iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -iconv-lite@^0.4.4: +iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" dependencies: @@ -1876,6 +2202,14 @@ ieee754@^1.1.4: version "1.1.12" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b" +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + +iferr@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" + ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" @@ -1892,6 +2226,10 @@ import-from@^2.1.0: dependencies: resolve-from "^3.0.0" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" @@ -1907,21 +2245,34 @@ indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" -inflight@^1.0.4: +inflight@^1.0.4, inflight@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" +init-package-json@^1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + dependencies: + glob "^7.1.1" + npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "1 || 2" + semver "2.x || 3.x || 4 || 5" + validate-npm-package-license "^3.0.1" + validate-npm-package-name "^3.0.0" + into-stream@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" @@ -1929,7 +2280,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.2: +invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: @@ -1939,6 +2290,14 @@ invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + +ip@^1.1.4, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -1955,12 +2314,6 @@ is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -1981,6 +2334,12 @@ is-ci@^1.0.10: dependencies: ci-info "^1.0.0" +is-cidr@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-2.0.6.tgz#4b01c9693d8e18399dacd18a4f3d60ea5871ac60" + dependencies: + cidr-regex "^2.0.8" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -2083,10 +2442,21 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" -is-natural-number@^4.0.1: - version "4.0.1" +is-installed-globally@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" + dependencies: + global-dirs "^0.1.0" + is-path-inside "^1.0.0" + +is-natural-number@^4.0.1: + version "4.0.1" resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" +is-npm@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -2107,6 +2477,12 @@ is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -2125,19 +2501,27 @@ is-primitive@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" dependencies: has "^1.0.1" +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + is-ssh@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.0.tgz#ebea1169a2614da392a63740366c3ce049d8dff6" dependencies: protocols "^1.1.0" -is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -2167,6 +2551,10 @@ is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2266,15 +2654,15 @@ java-properties@^0.2.9: version "0.2.10" resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-0.2.10.tgz#2551560c25fa1ad94d998218178f233ad9b18f60" -jest-changed-files@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.0.tgz#f1b304f98c235af5d9a31ec524262c5e4de3c6ff" +jest-changed-files@^23.4.2: + version "23.4.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" dependencies: throat "^4.0.0" -jest-cli@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.4.1.tgz#c1ffd33254caee376990aa2abe2963e0de4ca76b" +jest-cli@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.5.0.tgz#d316b8e34a38a610a1efc4f0403d8ef8a55e4492" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -2287,19 +2675,19 @@ jest-cli@^23.4.1: istanbul-lib-coverage "^1.2.0" istanbul-lib-instrument "^1.10.1" istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.4.0" - jest-config "^23.4.1" + jest-changed-files "^23.4.2" + jest-config "^23.5.0" jest-environment-jsdom "^23.4.0" jest-get-type "^22.1.0" - jest-haste-map "^23.4.1" + jest-haste-map "^23.5.0" jest-message-util "^23.4.0" jest-regex-util "^23.3.0" - jest-resolve-dependencies "^23.4.1" - jest-runner "^23.4.1" - jest-runtime "^23.4.1" - jest-snapshot "^23.4.1" + jest-resolve-dependencies "^23.5.0" + jest-runner "^23.5.0" + jest-runtime "^23.5.0" + jest-snapshot "^23.5.0" jest-util "^23.4.0" - jest-validate "^23.4.0" + jest-validate "^23.5.0" jest-watcher "^23.4.0" jest-worker "^23.2.0" micromatch "^2.3.11" @@ -2313,32 +2701,33 @@ jest-cli@^23.4.1: which "^1.2.12" yargs "^11.0.0" -jest-config@^23.0.0, jest-config@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.4.1.tgz#3172fa21f0507d7f8a088ed1dbe4157057f201e9" +jest-config@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.5.0.tgz#3770fba03f7507ee15f3b8867c742e48f31a9773" dependencies: babel-core "^6.0.0" - babel-jest "^23.4.0" + babel-jest "^23.4.2" chalk "^2.0.1" glob "^7.1.1" jest-environment-jsdom "^23.4.0" jest-environment-node "^23.4.0" jest-get-type "^22.1.0" - jest-jasmine2 "^23.4.1" + jest-jasmine2 "^23.5.0" jest-regex-util "^23.3.0" - jest-resolve "^23.4.1" + jest-resolve "^23.5.0" jest-util "^23.4.0" - jest-validate "^23.4.0" - pretty-format "^23.2.0" + jest-validate "^23.5.0" + micromatch "^2.3.11" + pretty-format "^23.5.0" -jest-diff@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.2.0.tgz#9f2cf4b51e12c791550200abc16b47130af1062a" +jest-diff@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.5.0.tgz#250651a433dd0050290a07642946cc9baaf06fba" dependencies: chalk "^2.0.1" diff "^3.2.0" jest-get-type "^22.1.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" jest-docblock@^23.2.0: version "23.2.0" @@ -2346,12 +2735,12 @@ jest-docblock@^23.2.0: dependencies: detect-newline "^2.1.0" -jest-each@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.4.0.tgz#2fa9edd89daa1a4edc9ff9bf6062a36b71345143" +jest-each@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.5.0.tgz#77f7e2afe6132a80954b920006e78239862b10ba" dependencies: chalk "^2.0.1" - pretty-format "^23.2.0" + pretty-format "^23.5.0" jest-environment-jsdom@^23.4.0: version "23.4.0" @@ -2372,47 +2761,49 @@ jest-get-type@^22.1.0: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" -jest-haste-map@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.4.1.tgz#43a174ba7ac079ae1dd74eaf5a5fe78989474dd2" +jest-haste-map@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.5.0.tgz#d4ca618188bd38caa6cb20349ce6610e194a8065" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" + invariant "^2.2.4" jest-docblock "^23.2.0" jest-serializer "^23.0.1" jest-worker "^23.2.0" micromatch "^2.3.11" sane "^2.0.0" -jest-jasmine2@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.4.1.tgz#fa192262430d418e827636e4a98423e5e7ff0fce" +jest-jasmine2@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz#05fe7f1788e650eeb5a03929e6461ea2e9f3db53" dependencies: + babel-traverse "^6.0.0" chalk "^2.0.1" co "^4.6.0" - expect "^23.4.0" + expect "^23.5.0" is-generator-fn "^1.0.0" - jest-diff "^23.2.0" - jest-each "^23.4.0" - jest-matcher-utils "^23.2.0" + jest-diff "^23.5.0" + jest-each "^23.5.0" + jest-matcher-utils "^23.5.0" jest-message-util "^23.4.0" - jest-snapshot "^23.4.1" + jest-snapshot "^23.5.0" jest-util "^23.4.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" -jest-leak-detector@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.2.0.tgz#c289d961dc638f14357d4ef96e0431ecc1aa377d" +jest-leak-detector@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz#14ac2a785bd625160a2ea968fd5d98b7dcea3e64" dependencies: - pretty-format "^23.2.0" + pretty-format "^23.5.0" -jest-matcher-utils@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.2.0.tgz#4d4981f23213e939e3cedf23dc34c747b5ae1913" +jest-matcher-utils@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz#0e2ea67744cab78c9ab15011c4d888bdd3e49e2a" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" jest-message-util@^23.4.0: version "23.4.0" @@ -2432,42 +2823,42 @@ jest-regex-util@^23.3.0: version "23.3.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" -jest-resolve-dependencies@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.4.1.tgz#a1d85247e2963f8b3859f6b0ec61b741b359378e" +jest-resolve-dependencies@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz#10c4d135beb9d2256de1fedc7094916c3ad74af7" dependencies: jest-regex-util "^23.3.0" - jest-snapshot "^23.4.1" + jest-snapshot "^23.5.0" -jest-resolve@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.4.1.tgz#7f3c17104732a2c0c940a01256025ed745814982" +jest-resolve@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.5.0.tgz#3b8e7f67e84598f0caf63d1530bd8534a189d0e6" dependencies: browser-resolve "^1.11.3" chalk "^2.0.1" realpath-native "^1.0.0" -jest-runner@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.4.1.tgz#d41fd1459b95d35d6df685f1468c09e617c8c260" +jest-runner@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.5.0.tgz#570f7a044da91648b5bb9b6baacdd511076c71d7" dependencies: exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^23.4.1" + jest-config "^23.5.0" jest-docblock "^23.2.0" - jest-haste-map "^23.4.1" - jest-jasmine2 "^23.4.1" - jest-leak-detector "^23.2.0" + jest-haste-map "^23.5.0" + jest-jasmine2 "^23.5.0" + jest-leak-detector "^23.5.0" jest-message-util "^23.4.0" - jest-runtime "^23.4.1" + jest-runtime "^23.5.0" jest-util "^23.4.0" jest-worker "^23.2.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.4.1.tgz#c1822eba5eb19294debe6b25b2760d0a8c532fd1" +jest-runtime@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.5.0.tgz#eb503525a196dc32f2f9974e3482d26bdf7b63ce" dependencies: babel-core "^6.0.0" babel-plugin-istanbul "^4.1.6" @@ -2476,14 +2867,14 @@ jest-runtime@^23.4.1: exit "^0.1.2" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.1.11" - jest-config "^23.4.1" - jest-haste-map "^23.4.1" + jest-config "^23.5.0" + jest-haste-map "^23.5.0" jest-message-util "^23.4.0" jest-regex-util "^23.3.0" - jest-resolve "^23.4.1" - jest-snapshot "^23.4.1" + jest-resolve "^23.5.0" + jest-snapshot "^23.5.0" jest-util "^23.4.0" - jest-validate "^23.4.0" + jest-validate "^23.5.0" micromatch "^2.3.11" realpath-native "^1.0.0" slash "^1.0.0" @@ -2495,20 +2886,19 @@ jest-serializer@^23.0.1: version "23.0.1" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" -jest-snapshot@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.4.1.tgz#090de9acae927f6a3af3005bda40d912b83e9c96" +jest-snapshot@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.5.0.tgz#cc368ebd8513e1175e2a7277f37a801b7358ae79" dependencies: - babel-traverse "^6.0.0" babel-types "^6.0.0" chalk "^2.0.1" - jest-diff "^23.2.0" - jest-matcher-utils "^23.2.0" + jest-diff "^23.5.0" + jest-matcher-utils "^23.5.0" jest-message-util "^23.4.0" - jest-resolve "^23.4.1" + jest-resolve "^23.5.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" semver "^5.5.0" jest-util@^23.4.0: @@ -2524,14 +2914,14 @@ jest-util@^23.4.0: slash "^1.0.0" source-map "^0.6.0" -jest-validate@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.4.0.tgz#d96eede01ef03ac909c009e9c8e455197d48c201" +jest-validate@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.5.0.tgz#f5df8f761cf43155e1b2e21d6e9de8a2852d0231" dependencies: chalk "^2.0.1" jest-get-type "^22.1.0" leven "^2.1.0" - pretty-format "^23.2.0" + pretty-format "^23.5.0" jest-watcher@^23.4.0: version "23.4.0" @@ -2548,11 +2938,11 @@ jest-worker@^23.2.0: merge-stream "^1.0.1" jest@^23.4.1: - version "23.4.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.4.1.tgz#39550c72f3237f63ae1b434d8d122cdf6fa007b6" + version "23.5.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.5.0.tgz#80de353d156ea5ea4a7332f7962ac79135fbc62e" dependencies: import-local "^1.0.0" - jest-cli "^23.4.1" + jest-cli "^23.5.0" js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" @@ -2574,41 +2964,41 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsdom@^11.5.1: - version "11.11.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.11.0.tgz#df486efad41aee96c59ad7a190e2449c7eb1110e" + version "11.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" dependencies: - abab "^1.0.4" - acorn "^5.3.0" + abab "^2.0.0" + acorn "^5.5.3" acorn-globals "^4.1.0" array-equal "^1.0.0" cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.3.1 < 0.4.0" + cssstyle "^1.0.0" data-urls "^1.0.0" - domexception "^1.0.0" - escodegen "^1.9.0" + domexception "^1.0.1" + escodegen "^1.9.1" html-encoding-sniffer "^1.0.2" - left-pad "^1.2.0" - nwsapi "^2.0.0" + left-pad "^1.3.0" + nwsapi "^2.0.7" parse5 "4.0.0" pn "^1.1.0" - request "^2.83.0" + request "^2.87.0" request-promise-native "^1.0.5" sax "^1.2.4" symbol-tree "^3.2.2" - tough-cookie "^2.3.3" + tough-cookie "^2.3.4" w3c-hr-time "^1.0.1" webidl-conversions "^4.0.2" whatwg-encoding "^1.0.3" whatwg-mimetype "^2.1.0" whatwg-url "^6.4.1" - ws "^4.0.0" + ws "^5.2.0" xml-name-validator "^3.0.0" jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" -json-parse-better-errors@^1.0.1: +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -2634,10 +3024,6 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" @@ -2675,21 +3061,31 @@ kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" -kleur@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-1.0.2.tgz#637f126d3cda40a423b1297da88cf753bd04ebdd" +kleur@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.1.tgz#7cc64b0d188d0dcbc98bdcdfdda2cc10619ddce8" + +latest-version@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + dependencies: + package-json "^4.0.0" lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +lazy-property@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147" + lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" dependencies: invert-kv "^1.0.0" -left-pad@^1.2.0: +left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" @@ -2704,6 +3100,45 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libcipm@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-2.0.2.tgz#4f38c2b37acf2ec156936cef1cbf74636568fc7b" + dependencies: + bin-links "^1.1.2" + bluebird "^3.5.1" + find-npm-prefix "^1.0.2" + graceful-fs "^4.1.11" + lock-verify "^2.0.2" + mkdirp "^0.5.1" + npm-lifecycle "^2.0.3" + npm-logical-tree "^1.2.1" + npm-package-arg "^6.1.0" + pacote "^8.1.6" + protoduck "^5.0.0" + read-package-json "^2.0.13" + rimraf "^2.6.2" + worker-farm "^1.6.0" + +libnpmhook@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-4.0.1.tgz#63641654de772cbeb96a88527a7fd5456ec3c2d7" + dependencies: + figgy-pudding "^3.1.0" + npm-registry-fetch "^3.0.0" + +libnpx@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.0.tgz#1bf4a1c9f36081f64935eb014041da10855e3102" + dependencies: + dotenv "^5.0.1" + npm-package-arg "^6.0.0" + rimraf "^2.6.2" + safe-buffer "^5.1.0" + update-notifier "^2.3.0" + which "^1.3.0" + y18n "^4.0.0" + yargs "^11.0.0" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2737,12 +3172,34 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +lock-verify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.0.2.tgz#148e4f85974915c9e3c34d694b7de9ecb18ee7a8" + dependencies: + npm-package-arg "^5.1.2 || 6" + semver "^5.4.1" + lockfile@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" dependencies: signal-exit "^3.0.2" +lodash._baseuniq@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" + dependencies: + lodash._createset "~4.0.0" + lodash._root "~3.0.0" + +lodash._createset@~4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" + +lodash._root@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -2751,6 +3208,10 @@ lodash.capitalize@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" +lodash.clonedeep@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" @@ -2775,6 +3236,18 @@ lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" +lodash.union@~4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + +lodash.uniq@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + +lodash.without@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" + lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -2796,7 +3269,11 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -lru-cache@^4.0.1: +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: @@ -2809,6 +3286,38 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +"make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" + dependencies: + agentkeepalive "^3.4.1" + cacache "^11.0.1" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + lru-cache "^4.1.2" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^4.0.0" + ssri "^6.0.0" + +make-fetch-happen@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-3.0.0.tgz#7b661d2372fc4710ab5cc8e1fa3c290eea69a961" + dependencies: + agentkeepalive "^3.4.1" + cacache "^10.0.4" + http-cache-semantics "^3.8.1" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.0" + lru-cache "^4.1.2" + mississippi "^3.0.0" + node-fetch-npm "^2.0.2" + promise-retry "^1.1.1" + socks-proxy-agent "^3.0.1" + ssri "^5.2.4" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -2855,6 +3364,10 @@ md5-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-4.0.0.tgz#f3f7ba1e2dd1144d5bf1de698d0e5f44a4409584" +meant@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d" + mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" @@ -2889,7 +3402,7 @@ merge@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" -micromatch@^2.1.5, micromatch@^2.3.11: +micromatch@^2.3.11: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -2929,7 +3442,7 @@ mime-db@~1.35.0: version "1.35.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47" -mime-types@^2.1.12, mime-types@~2.1.17: +mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.19" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.19.tgz#71e464537a7ef81c15f2db9d97e913fc0ff606f0" dependencies: @@ -2943,7 +3456,7 @@ mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" -minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -2960,7 +3473,7 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" @@ -2969,8 +3482,8 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" minipass@^2.2.1, minipass@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.3.tgz#a7dcc8b7b833f5d368759cce544dccb55f50f233" + version "2.3.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957" dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" @@ -2981,6 +3494,36 @@ minizlib@^1.1.0: dependencies: minipass "^2.2.1" +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" @@ -2988,7 +3531,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -3008,14 +3551,13 @@ mongodb-core@3.1.0: saslprep "^1.0.0" mongodb-memory-server@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/mongodb-memory-server/-/mongodb-memory-server-1.9.0.tgz#f8d56d7b40e8641c1e462f3e32bff269a3b1dd29" + version "1.9.3" + resolved "https://registry.yarnpkg.com/mongodb-memory-server/-/mongodb-memory-server-1.9.3.tgz#a1dbe2ca6ec7436e4cb6e481d5f4e3a24b97d304" dependencies: babel-runtime "^6.26.0" debug "^3.1.0" decompress "^4.2.0" - fs-extra "^6.0.1" - get-port "^3.2.0" + get-port "^4.0.0" getos "^3.1.0" https-proxy-agent "^2.2.1" lockfile "^1.0.4" @@ -3035,8 +3577,8 @@ mongoose-legacy-pluralize@1.0.2: resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" mongoose@^5.2.5: - version "5.2.5" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.2.5.tgz#4bab4e366cbc161ee4420a1661f9c84c2487a2e9" + version "5.2.7" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.2.7.tgz#679a682cc744f7fbcc14f23df77e9d8d5dfd043d" dependencies: async "2.6.1" bson "~1.0.5" @@ -3046,28 +3588,47 @@ mongoose@^5.2.5: mongodb-core "3.1.0" mongoose-legacy-pluralize "1.0.2" mpath "0.4.1" - mquery "3.0.0" + mquery "3.1.2" ms "2.0.0" regexp-clone "0.0.1" sliced "1.0.1" +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + mpath@0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.4.1.tgz#ed10388430380bf7bbb5be1391e5d6969cb08e89" -mquery@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.0.0.tgz#e5f387dbabc0b9b69859e550e810faabe0ceabb0" +mquery@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.1.2.tgz#46c2ea6d7a08c9b9e0716022fb2990708ddba9ff" dependencies: - bluebird "3.5.0" - debug "2.6.9" + bluebird "3.5.1" + debug "3.1.0" regexp-clone "0.0.1" - sliced "0.0.5" + sliced "1.0.1" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +ms@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + +mute-stream@~0.0.4: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -3093,8 +3654,8 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" needle@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + version "2.2.2" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.2.tgz#1120ca4c41f2fcc6976fd28a8968afe239929418" dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -3114,10 +3675,35 @@ node-emoji@^1.4.1: dependencies: lodash.toarray "^4.4.0" +node-fetch-npm@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + dependencies: + encoding "^0.1.11" + json-parse-better-errors "^1.0.0" + safe-buffer "^5.1.1" + node-fetch@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.0.tgz#4ee79bde909262f9775f731e3656d0db55ced5b5" +node-gyp@^3.6.2, node-gyp@^3.7.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -3146,14 +3732,20 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -nopt@^4.0.1: +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1, nopt@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" dependencies: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, "normalize-package-data@~1.0.1 || ^2.0.0", normalize-package-data@~2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: @@ -3162,7 +3754,7 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -3172,24 +3764,237 @@ normalize-url@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.2.0.tgz#98d0948afc82829f374320f405fe9ca55a5f8567" +npm-audit-report@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.1.tgz#e79ea1fcb5ffaf3031102b389d5222c2b0459632" + dependencies: + cli-table3 "^0.5.0" + console-control-strings "^1.1.0" + npm-bundled@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + version "1.0.5" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" -npm-packlist@^1.1.6: - version "1.1.10" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" +npm-cache-filename@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" + +npm-install-checks@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" + dependencies: + semver "^2.3.0 || 3.x || 4 || 5" + +npm-lifecycle@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.0.3.tgz#696bedf1143371163e9cc16fe872357e25d8d90e" + dependencies: + byline "^5.0.0" + graceful-fs "^4.1.11" + node-gyp "^3.6.2" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.0" + +npm-logical-tree@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" + +"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^5.1.2 || 6", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" + dependencies: + hosted-git-info "^2.6.0" + osenv "^0.1.5" + semver "^5.5.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.10, npm-packlist@^1.1.6, npm-packlist@~1.1.10: + version "1.1.11" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" +npm-pick-manifest@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.1.0.tgz#dc381bdd670c35d81655e1d5a94aa3dd4d87fce5" + dependencies: + npm-package-arg "^6.0.0" + semver "^5.4.1" + +npm-profile@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-3.0.2.tgz#58d568f1b56ef769602fd0aed8c43fa0e0de0f57" + dependencies: + aproba "^1.1.2 || 2" + make-fetch-happen "^2.5.0 || 3 || 4" + +npm-registry-client@^8.5.1: + version "8.6.0" + resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" + dependencies: + concat-stream "^1.5.2" + graceful-fs "^4.1.6" + normalize-package-data "~1.0.1 || ^2.0.0" + npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + once "^1.3.3" + request "^2.74.0" + retry "^0.10.0" + safe-buffer "^5.1.1" + semver "2 >=2.2.1 || 3.x || 4 || 5" + slide "^1.1.3" + ssri "^5.2.4" + optionalDependencies: + npmlog "2 || ^3.1.0 || ^4.0.0" + +npm-registry-fetch@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-1.1.1.tgz#710bc5947d9ee2c549375072dab6d5d17baf2eb2" + dependencies: + bluebird "^3.5.1" + figgy-pudding "^3.0.0" + lru-cache "^4.1.2" + make-fetch-happen "^3.0.0" + npm-package-arg "^6.0.0" + safe-buffer "^5.1.1" + +npm-registry-fetch@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.2.0.tgz#94ec859c4dd395f924e575cee471da6fd3906d53" + dependencies: + bluebird "^3.5.1" + figgy-pudding "^3.2.0" + lru-cache "^4.1.3" + make-fetch-happen "^4.0.1" + npm-package-arg "^6.1.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" dependencies: path-key "^2.0.0" -npmlog@^4.0.2: +npm-user-validate@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" + +npm@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm/-/npm-6.3.0.tgz#de7df51f6d1b05b088486097cf7993dbbcac752f" + dependencies: + JSONStream "^1.3.3" + abbrev "~1.1.1" + ansicolors "~0.3.2" + ansistyles "~0.1.3" + aproba "~1.2.0" + archy "~1.0.0" + bin-links "^1.1.2" + bluebird "~3.5.1" + byte-size "^4.0.3" + cacache "^11.1.0" + call-limit "~1.1.0" + chownr "~1.0.1" + cli-columns "^3.1.2" + cli-table3 "^0.5.0" + cmd-shim "~2.0.2" + columnify "~1.5.4" + config-chain "~1.1.11" + detect-indent "~5.0.0" + detect-newline "^2.1.0" + dezalgo "~1.0.3" + editor "~1.0.0" + figgy-pudding "^3.2.0" + find-npm-prefix "^1.0.2" + fs-vacuum "~1.2.10" + fs-write-stream-atomic "~1.0.10" + gentle-fs "^2.0.1" + glob "~7.1.2" + graceful-fs "~4.1.11" + has-unicode "~2.0.1" + hosted-git-info "^2.6.0" + iferr "^1.0.0" + inflight "~1.0.6" + inherits "~2.0.3" + ini "^1.3.5" + init-package-json "^1.10.3" + is-cidr "^2.0.6" + json-parse-better-errors "^1.0.2" + lazy-property "~1.0.0" + libcipm "^2.0.0" + libnpmhook "^4.0.1" + libnpx "^10.2.0" + lock-verify "^2.0.2" + lockfile "^1.0.4" + lodash._baseuniq "~4.6.0" + lodash.clonedeep "~4.5.0" + lodash.union "~4.6.0" + lodash.uniq "~4.5.0" + lodash.without "~4.4.0" + lru-cache "^4.1.3" + meant "~1.0.1" + mississippi "^3.0.0" + mkdirp "~0.5.1" + move-concurrently "^1.0.1" + node-gyp "^3.7.0" + nopt "~4.0.1" + normalize-package-data "~2.4.0" + npm-audit-report "^1.3.1" + npm-cache-filename "~1.0.2" + npm-install-checks "~3.0.0" + npm-lifecycle "^2.0.3" + npm-package-arg "^6.1.0" + npm-packlist "~1.1.10" + npm-pick-manifest "^2.1.0" + npm-profile "^3.0.2" + npm-registry-client "^8.5.1" + npm-registry-fetch "^1.1.0" + npm-user-validate "~1.0.0" + npmlog "~4.1.2" + once "~1.4.0" + opener "~1.4.3" + osenv "^0.1.5" + pacote "^8.1.6" + path-is-inside "~1.0.2" + promise-inflight "~1.0.1" + qrcode-terminal "^0.12.0" + query-string "^6.1.0" + qw "~1.0.1" + read "~1.0.7" + read-cmd-shim "~1.0.1" + read-installed "~4.0.3" + read-package-json "^2.0.13" + read-package-tree "^5.2.1" + readable-stream "^2.3.6" + request "^2.81.0" + retry "^0.12.0" + rimraf "~2.6.2" + safe-buffer "^5.1.2" + semver "^5.5.0" + sha "~2.0.1" + slide "~1.1.6" + sorted-object "~2.0.1" + sorted-union-stream "~2.1.3" + ssri "^6.0.0" + stringify-package "^1.0.0" + tar "^4.4.4" + text-table "~0.2.0" + tiny-relative-date "^1.3.0" + uid-number "0.0.6" + umask "~1.1.0" + unique-filename "~1.1.0" + unpipe "~1.0.0" + update-notifier "^2.5.0" + uuid "^3.3.2" + validate-npm-package-license "^3.0.3" + validate-npm-package-name "~3.0.0" + which "^1.3.1" + worker-farm "^1.6.0" + write-file-atomic "^2.3.0" + +"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.2, npmlog@~4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -3202,13 +4007,13 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -nwsapi@^2.0.0: - version "2.0.7" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.7.tgz#6fc54c254621f10cac5225b76e81c74120139b78" +nwsapi@^2.0.7: + version "2.0.8" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.8.tgz#e3603579b7e162b3dbedae4fb24e46f771d8fa24" -oauth-sign@~0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" @@ -3252,12 +4057,16 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -once@^1.3.0, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" +opener@~1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -3292,7 +4101,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" -osenv@^0.1.4: +osenv@0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" dependencies: @@ -3359,6 +4168,53 @@ p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" +package-json@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + +pacote@^8.1.6: + version "8.1.6" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-8.1.6.tgz#8e647564d38156367e7a9dc47a79ca1ab278d46e" + dependencies: + bluebird "^3.5.1" + cacache "^11.0.2" + get-stream "^3.0.0" + glob "^7.1.2" + lru-cache "^4.1.3" + make-fetch-happen "^4.0.1" + minimatch "^3.0.4" + minipass "^2.3.3" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.1.10" + npm-pick-manifest "^2.1.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.0" + rimraf "^2.6.2" + safe-buffer "^5.1.2" + semver "^5.5.0" + ssri "^6.0.0" + tar "^4.4.3" + unique-filename "^1.1.0" + which "^1.3.0" + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + parse-github-url@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" @@ -3418,13 +4274,17 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +path-is-inside@^1.0.1, path-is-inside@^1.0.2, path-is-inside@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" path-type@^1.0.0: version "1.1.0" @@ -3466,18 +4326,19 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +pkg-conf@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + dependencies: + find-up "^2.0.0" + load-json-file "^4.0.0" + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" dependencies: find-up "^2.1.0" -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - dependencies: - find-up "^3.0.0" - pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -3490,17 +4351,21 @@ prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" prettier@^1.13.7: - version "1.13.7" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281" + version "1.14.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9" -pretty-format@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.2.0.tgz#3b0aaa63c018a53583373c1cb3a5d96cc5e83017" +pretty-format@^23.5.0: + version "23.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.5.0.tgz#0f9601ad9da70fe690a269cd3efca732c210687c" dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -3513,24 +4378,77 @@ process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" +promise-inflight@^1.0.1, promise-inflight@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + +promise-retry@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + dependencies: + err-code "^1.0.0" + retry "^0.10.0" + prompts@^0.1.9: - version "0.1.12" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.12.tgz#39dc42de7d2f0ec3e2af76bf40713fcb8726090d" + version "0.1.14" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" dependencies: - kleur "^1.0.0" + kleur "^2.0.1" sisteransi "^0.1.1" +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + dependencies: + read "1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + protocols@^1.1.0, protocols@^1.4.0: version "1.4.6" resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.6.tgz#f8bb263ea1b5fd7a7604d26b8be39bd77678bf8a" +protoduck@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.0.tgz#752145e6be0ad834cb25716f670a713c860dce70" + dependencies: + genfun "^4.0.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" psl@^1.1.24: - version "1.1.28" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.28.tgz#4fb6ceb08a1e2214d4fd4de0ca22dae13740bc7b" + version "1.1.29" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" punycode@^1.4.1: version "1.4.1" @@ -3544,23 +4462,38 @@ q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" -qs@~6.5.1: +qrcode-terminal@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz#bb5b699ef7f9f0505092a3748be4464fe71b5819" + +qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" +query-string@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.1.0.tgz#01e7d69f6a0940dac67a937d6c6325647aa4532a" + dependencies: + decode-uri-component "^0.2.0" + strict-uri-encode "^2.0.0" + quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" +qw@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" + randomatic@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.0.0.tgz#d35490030eb4f7578de292ce6dfb04a91a128923" + version "3.1.0" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" dependencies: is-number "^4.0.0" kind-of "^6.0.0" math-random "^1.0.1" -rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: +rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" dependencies: @@ -3569,6 +4502,46 @@ rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" +read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + dependencies: + graceful-fs "^4.1.2" + +read-installed@~4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" + dependencies: + debuglog "^1.0.1" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + semver "2 || 3 || 4 || 5" + slide "~1.1.3" + util-extend "^1.0.1" + optionalDependencies: + graceful-fs "^4.1.2" + +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.1" + normalize-package-data "^2.0.0" + slash "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.1.tgz#6218b187d6fac82289ce4387bbbaf8eef536ad63" + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + once "^1.3.0" + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -3614,7 +4587,13 @@ read-pkg@^4.0.0: parse-json "^4.0.0" pify "^3.0.0" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.3.0, readable-stream@^2.3.5: +read@1, read@~1.0.1, read@~1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -3626,14 +4605,23 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" +readable-stream@~1.1.10: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdir-scoped-modules@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" + once "^1.3.0" realpath-native@^1.0.0: version "1.0.1" @@ -3675,13 +4663,19 @@ regexp-clone@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-0.0.1.tgz#a7c2e09891fdbf38fbb10d376fb73003e68ac589" -registry-auth-token@^3.3.1: +registry-auth-token@^3.0.1, registry-auth-token@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" dependencies: rc "^1.1.6" safe-buffer "^5.0.1" +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -3714,30 +4708,30 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@^2.83.0: - version "2.87.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" +request@^2.74.0, request@^2.81.0, request@^2.87.0: + version "2.88.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" dependencies: aws-sign2 "~0.7.0" - aws4 "^1.6.0" + aws4 "^1.8.0" caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.1" + combined-stream "~1.0.6" + extend "~3.0.2" forever-agent "~0.6.1" - form-data "~2.3.1" - har-validator "~5.0.3" + form-data "~2.3.2" + har-validator "~5.1.0" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" json-stringify-safe "~5.0.1" - mime-types "~2.1.17" - oauth-sign "~0.8.2" + mime-types "~2.1.19" + oauth-sign "~0.9.0" performance-now "^2.1.0" - qs "~6.5.1" - safe-buffer "^5.1.1" - tough-cookie "~2.3.3" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" tunnel-agent "^0.6.0" - uuid "^3.1.0" + uuid "^3.3.2" require-directory@^2.1.1: version "2.1.1" @@ -3780,7 +4774,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.7, resolve@^1.3.2: +resolve@^1.3.2: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" dependencies: @@ -3790,6 +4784,10 @@ ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" +retry@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" @@ -3800,7 +4798,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -3810,7 +4808,13 @@ rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" -safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + dependencies: + aproba "^1.1.1" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -3820,7 +4824,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2: +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3854,25 +4858,25 @@ seek-bzip@^1.0.5: commander "~2.8.1" semantic-release@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.8.1.tgz#b10a919180cce79e756048e7e713a36d6c42a7e7" + version "15.9.8" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.9.8.tgz#cacd6a160f8155f1ef98eef5923af19979bc34e5" dependencies: "@semantic-release/commit-analyzer" "^6.0.0" "@semantic-release/error" "^2.2.0" "@semantic-release/github" "^5.0.0" - "@semantic-release/npm" "^4.0.0" + "@semantic-release/npm" "^5.0.1" "@semantic-release/release-notes-generator" "^7.0.0" aggregate-error "^1.0.0" - chalk "^2.3.0" cosmiconfig "^5.0.1" debug "^3.1.0" env-ci "^2.0.0" execa "^0.10.0" + figures "^2.0.0" find-versions "^2.0.0" - get-stream "^3.0.0" + get-stream "^4.0.0" git-log-parser "^1.2.0" git-url-parse "^10.0.1" - hook-std "^1.0.1" + hook-std "^1.1.0" hosted-git-info "^2.7.1" lodash "^4.17.4" marked "^0.4.0" @@ -3882,24 +4886,31 @@ semantic-release@^15.8.1: read-pkg-up "^4.0.0" resolve-from "^4.0.0" semver "^5.4.1" + signale "^1.2.1" yargs "^12.0.0" +semver-diff@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + dependencies: + semver "^5.0.3" + semver-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: +"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" @@ -3918,6 +4929,13 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" +sha@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" + dependencies: + graceful-fs "^4.1.2" + readable-stream "^2.0.2" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -3928,15 +4946,6 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" -shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -3945,6 +4954,14 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +signale@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/signale/-/signale-1.2.1.tgz#fbd4b952603ea3315dbe9e88f4f482f336cee828" + dependencies: + chalk "^2.3.2" + figures "^2.0.0" + pkg-conf "^2.1.0" + sisteransi@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" @@ -3953,14 +4970,22 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -sliced@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/sliced/-/sliced-0.0.5.tgz#5edc044ca4eb6f7816d50ba2fc63e25d8fe4707f" - sliced@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" +slide@^1.1.3, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +smart-buffer@^1.0.13: + version "1.1.15" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" + +smart-buffer@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -3988,6 +5013,45 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +socks-proxy-agent@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" + dependencies: + agent-base "^4.1.0" + socks "^1.1.10" + +socks-proxy-agent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" + dependencies: + agent-base "~4.2.0" + socks "~2.2.0" + +socks@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" + dependencies: + ip "^1.1.4" + smart-buffer "^1.0.13" + +socks@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" + dependencies: + ip "^1.1.5" + smart-buffer "^4.0.1" + +sorted-object@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/sorted-object/-/sorted-object-2.0.1.tgz#7d631f4bd3a798a24af1dffcfbfe83337a5df5fc" + +sorted-union-stream@~2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/sorted-union-stream/-/sorted-union-stream-2.1.3.tgz#c7794c7e077880052ff71a8d4a2dbb4a9a638ac7" + dependencies: + from2 "^1.3.0" + stream-iterate "^1.1.0" + source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" @@ -4005,8 +5069,8 @@ source-map-support@^0.4.15: source-map "^0.5.6" source-map-support@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + version "0.5.8" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.8.tgz#04f5581713a8a65612d0175fbf3a01f80a162613" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -4098,6 +5162,16 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + dependencies: + safe-buffer "^5.1.1" + +ssri@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.0.tgz#fc21bfc90e03275ac3e23d5a42e38b8a1cbc130d" + stack-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" @@ -4120,6 +5194,28 @@ stream-combiner2@~1.1.1: duplexer2 "~0.1.0" readable-stream "^2.0.2" +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-iterate@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stream-iterate/-/stream-iterate-1.2.0.tgz#2bd7c77296c1702a46488b8ad41f79865eecd4e1" + dependencies: + readable-stream "^2.1.5" + stream-shift "^1.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -4142,12 +5238,20 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" dependencies: safe-buffer "~5.1.0" +stringify-package@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -4188,12 +5292,6 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - dependencies: - minimist "^1.1.0" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -4226,9 +5324,17 @@ tar-stream@^1.5.2: to-buffer "^1.1.0" xtend "^4.0.0" -tar@^4: - version "4.4.4" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.4.tgz#ec8409fae9f665a4355cc3b4087d0820232bb8cd" +tar@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +tar@^4, tar@^4.4.3, tar@^4.4.4: + version "4.4.6" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" dependencies: chownr "^1.0.1" fs-minipass "^1.2.5" @@ -4238,6 +5344,12 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.2" +term-size@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + dependencies: + execa "^0.7.0" + test-exclude@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa" @@ -4252,6 +5364,10 @@ text-extensions@^1.0.0: version "1.7.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -4267,6 +5383,14 @@ through@2, "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + +tiny-relative-date@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -4307,19 +5431,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@>=2.3.3, tough-cookie@^2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" dependencies: psl "^1.1.24" punycode "^1.4.1" -tough-cookie@~2.3.3: - version "2.3.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -4343,17 +5461,12 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" ts-jest@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.0.1.tgz#c90e747b2787d3394319cde77c2748a87aaf2f48" + version "23.1.3" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.1.3.tgz#33e3187d3ef0d42adada6347acf2c3539ac56107" dependencies: - babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.0.0" - cpx "^1.5.0" + closest-file-data "^0.1.4" fs-extra "6.0.1" - jest-config "^23.0.0" lodash "^4.17.10" - pkg-dir "^3.0.0" - yargs "^12.0.1" tslib@^1.8.0, tslib@^1.8.1: version "1.9.3" @@ -4377,8 +5490,8 @@ tslint@^5.11.0: tsutils "^2.27.2" tsutils@^2.27.2: - version "2.28.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.28.0.tgz#6bd71e160828f9d019b6f4e844742228f85169a1" + version "2.29.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" dependencies: tslib "^1.8.1" @@ -4398,6 +5511,10 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + typescript@^2.9.2: version "2.9.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" @@ -4415,6 +5532,14 @@ uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +umask@^1.1.0, umask@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + unbzip2-stream@^1.0.9: version "1.2.5" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47" @@ -4431,10 +5556,32 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" +unique-filename@^1.1.0, unique-filename@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + dependencies: + crypto-random-string "^1.0.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" +unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" @@ -4442,6 +5589,25 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + +update-notifier@^2.3.0, update-notifier@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" + dependencies: + boxen "^1.2.1" + chalk "^2.0.1" + configstore "^3.0.0" + import-lazy "^2.1.0" + is-ci "^1.0.10" + is-installed-globally "^0.1.0" + is-npm "^1.0.0" + latest-version "^3.0.0" + semver-diff "^2.0.0" + xdg-basedir "^3.0.0" + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" @@ -4450,6 +5616,12 @@ url-join@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.0.tgz#4d3340e807d3773bda9991f8305acdcc2a665d2a" +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + url-template@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" @@ -4462,6 +5634,10 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util-extend@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" + util.promisify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -4469,17 +5645,23 @@ util.promisify@^1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -uuid@>=3.0.1, uuid@^3.1.0, uuid@^3.2.1: +uuid@>=3.0.1, uuid@^3.2.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" -validate-npm-package-license@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + dependencies: + builtins "^1.0.3" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -4507,6 +5689,12 @@ watch@~0.18.0: exec-sh "^0.2.0" minimist "^1.2.0" +wcwidth@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + dependencies: + defaults "^1.0.3" + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -4533,7 +5721,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.12, which@^1.2.9, which@^1.3.0: +which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" dependencies: @@ -4545,6 +5733,12 @@ wide-align@^1.1.0: dependencies: string-width "^1.0.2 || 2" +widest-line@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273" + dependencies: + string-width "^2.1.1" + window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" @@ -4561,6 +5755,12 @@ wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" +worker-farm@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" + dependencies: + errno "~0.1.7" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -4572,7 +5772,7 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^2.1.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" dependencies: @@ -4580,12 +5780,15 @@ write-file-atomic@^2.1.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" -ws@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" dependencies: async-limiter "~1.0.0" - safe-buffer "~5.1.0" + +xdg-basedir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" xml-name-validator@^3.0.0: version "3.0.0" @@ -4603,7 +5806,7 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -"y18n@^3.2.1 || ^4.0.0": +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -4644,7 +5847,7 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^12.0.0, yargs@^12.0.1: +yargs@^12.0.0: version "12.0.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.1.tgz#6432e56123bb4e7c3562115401e98374060261c2" dependencies: From 5e68a1138d6725252b634e9ffe317c165cd10c30 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 01:22:24 +0100 Subject: [PATCH 12/52] chore: update `typescript` v3.0.1 --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index dab979d..fd24540 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,6 @@ "semantic-release": "^15.8.1", "ts-jest": "^23.0.1", "tslint": "^5.11.0", - "typescript": "^2.9.2" + "typescript": "^3.0.1" } } diff --git a/yarn.lock b/yarn.lock index 1ad2ffc..cb68841 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5515,9 +5515,9 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@^2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" +typescript@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.1.tgz#43738f29585d3a87575520a4b93ab6026ef11fdb" uglify-js@^2.6: version "2.8.29" From 743eb161e783165a0cd9ef5c32bc16859c3c54a0 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 01:58:24 +0100 Subject: [PATCH 13/52] chore: add `tslint-plugin-prettier`, `tslint-config-prettier` --- README.md | 1 + package.json | 6 ++++-- tslint.json | 10 +++++++--- yarn.lock | 28 +++++++++++++++++++++++++++- 4 files changed, 39 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f96299e..aed9542 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![npm](https://img.shields.io/npm/v/mongoose-id-assigner.svg)](https://www.npmjs.com/package/mongoose-id-assigner) [![Build Status](https://travis-ci.org/mernxl/mongoose-id-assigner.svg?branch=master)](https://travis-ci.org/mernxl/mongoose-id-assigner) [![codecov](https://codecov.io/gh/mernxl/mongoose-id-assigner/branch/master/graph/badge.svg)](https://codecov.io/gh/mernxl/mongoose-id-assigner) +![Dependencies State](https://david-dm.org/mernxl/mongoose-id-assigner.svg) ![TypeScript compatible](https://img.shields.io/badge/typescript-compatible-brightgreen.svg) ![FlowType compatible](https://img.shields.io/badge/flowtype-compatible-brightgreen.svg) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) diff --git a/package.json b/package.json index fd24540..5d3cb46 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,14 @@ "auto-generate" ], "scripts": { - "build": "yarn run clean && yarn run tsc -d && yarn run build-flow", + "build": "yarn run prettier && yarn run clean && yarn run tsc -d && yarn run build-flow", "build-flow": "find ./src -name '*.js.flow' -not -path '*/__*' | while read filepath; do cp $filepath `echo ./${COPY_TO_FOLDER:-lib}$filepath | sed 's/.\\/src\\//\\//g'`; done", "tsc": "tsc", "flow": "./node_modules/.bin/flow", "lint": "tslint -p ./", "jest:watch": "IN_MEM=true jest --watch", "coverage": "IN_MEM=true jest --coverage --maxWorkers 2", - "test": "yarn run prettier && yarn run coverage && yarn run lint && yarn run tsc && yarn run flow", + "test": "yarn run lint && yarn run coverage && yarn run tsc && yarn run flow", "clean": "rimraf lib", "prettier": "yarn run prettier-ts && yarn run prettier-flow", "prettier-ts": "prettier --write --config .prettierrc \"src/**/*.ts\"", @@ -76,6 +76,8 @@ "semantic-release": "^15.8.1", "ts-jest": "^23.0.1", "tslint": "^5.11.0", + "tslint-config-prettier": "^1.14.0", + "tslint-plugin-prettier": "^1.3.0", "typescript": "^3.0.1" } } diff --git a/tslint.json b/tslint.json index ba237be..3de7e4e 100644 --- a/tslint.json +++ b/tslint.json @@ -1,10 +1,15 @@ { "defaultSeverity": "error", + "rulesDirectory": [ + "tslint-plugin-prettier" + ], "extends": [ - "tslint:recommended" + "tslint:recommended", + "tslint-config-prettier" ], "jsRules": {}, "rules": { + "prettier": true, "arrow-return-shorthand": true, "callable-types": true, "class-name": true, @@ -124,6 +129,5 @@ "check-separator", "check-type" ] - }, - "rulesDirectory": [] + } } diff --git a/yarn.lock b/yarn.lock index cb68841..a60c1a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1505,6 +1505,13 @@ escodegen@^1.9.1: optionalDependencies: source-map "~0.6.1" +eslint-plugin-prettier@^2.2.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.2.tgz#71998c60aedfa2141f7bfcbf9d1c459bf98b4fad" + dependencies: + fast-diff "^1.1.1" + jest-docblock "^21.0.0" + esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -1646,6 +1653,10 @@ fast-deep-equal@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" +fast-diff@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" + fast-glob@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.2.tgz#71723338ac9b4e0e2fff1d6748a2a13d5ed352bf" @@ -2729,6 +2740,10 @@ jest-diff@^23.5.0: jest-get-type "^22.1.0" pretty-format "^23.5.0" +jest-docblock@^21.0.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" + jest-docblock@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" @@ -5468,10 +5483,21 @@ ts-jest@^23.0.1: fs-extra "6.0.1" lodash "^4.17.10" -tslib@^1.8.0, tslib@^1.8.1: +tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" +tslint-config-prettier@^1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.14.0.tgz#860b36634e53f4c70c64c51ff3ef7fd9bbab7676" + +tslint-plugin-prettier@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/tslint-plugin-prettier/-/tslint-plugin-prettier-1.3.0.tgz#7eb65d19ea786a859501a42491b78c5de2031a3f" + dependencies: + eslint-plugin-prettier "^2.2.0" + tslib "^1.7.1" + tslint@^5.11.0: version "5.11.0" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" From 3ab275903fa450c6beb2907fec6d851c7f6f0b72 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 02:01:04 +0100 Subject: [PATCH 14/52] chore: remove `npm` from dependencies, it was added mistakenly --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 5d3cb46..4be9c89 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ }, "dependencies": { "event-to-promise": "^0.8.0", - "npm": "^6.3.0", "uuid": ">=3.0.1" }, "peerDependencies": { From be5061e68272328dd7f427dca01c4803378a6c29 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 02:23:07 +0100 Subject: [PATCH 15/52] chore: reorganise package.json, add bugs url --- package.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 4be9c89..6ac3c49 100644 --- a/package.json +++ b/package.json @@ -2,14 +2,10 @@ "name": "mongoose-id-assigner", "version": "0.0.0-semantically-released", "description": "A Mongoose Plugin. Easily Manage fields that need an id(unique value) on your mongoose model. This plugin does the work of generating, incrementing, and assigning those values(unique) to those fields.", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "repository": "https://github.com/mernxl/mongoose-id-assigner.git", "author": "mernxl ", "license": "MIT", - "files": [ - "lib" - ], + "repository": "https://github.com/mernxl/mongoose-id-assigner.git", + "bugs": "https://github.com/mernxl/mongoose-id-assigner/issues", "keywords": [ "mongoose", "uuid", @@ -19,6 +15,11 @@ "unique-id", "auto-generate" ], + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib" + ], "scripts": { "build": "yarn run prettier && yarn run clean && yarn run tsc -d && yarn run build-flow", "build-flow": "find ./src -name '*.js.flow' -not -path '*/__*' | while read filepath; do cp $filepath `echo ./${COPY_TO_FOLDER:-lib}$filepath | sed 's/.\\/src\\//\\//g'`; done", From c07dd6d3e7a703bb30b626f24da82be8bf55356c Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 02:28:49 +0100 Subject: [PATCH 16/52] BREAKING CHANGE: move uuid as an optional dependency. This helps reduce the weight of code, especially when you don't intend on using uuids as ids --- package.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 6ac3c49..4867be7 100644 --- a/package.json +++ b/package.json @@ -36,12 +36,14 @@ "semantic-release": "semantic-release" }, "dependencies": { - "event-to-promise": "^0.8.0", - "uuid": ">=3.0.1" + "event-to-promise": "^0.8.0" }, "peerDependencies": { "mongoose": ">=4.0.0 || >=5.0.0" }, + "optionalDependencies": { + "uuid": ">=3.0.1" + }, "jest": { "roots": [ "/src" @@ -78,6 +80,7 @@ "tslint": "^5.11.0", "tslint-config-prettier": "^1.14.0", "tslint-plugin-prettier": "^1.3.0", - "typescript": "^3.0.1" + "typescript": "^3.0.1", + "uuid": ">=3.0.1" } } From ec337d910eb94efdff318912af9ae0c8c3c0587f Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 02:37:52 +0100 Subject: [PATCH 17/52] doc: add `CHANGELOG.md` and update `README.md` with installing uuid --- CHANGELOG.md | 3 +++ README.md | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..f77d15d --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +# Semantically Released +This packages' publishing is automated by [semantic-release](https://github.com/semantic-release/semantic-release). +[Changelog](https://github.com/mernxl/mongoose-id-assigner/releases) is generated automatically and can be found here: https://github.com/mernxl/mongoose-id-assigner/releases diff --git a/README.md b/README.md index aed9542..726287a 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,11 @@ or npm install mongoose-id-assigner ``` +If you wish to use `UUIDs` FieldTypes, then you need to add this package, `uuid`. +``` +yarn add uuid +``` + ## Basic Usage ### Plugin Options TypeName: **AssignerOptions** From 6d97562b7ec3b6fe4ba295d2a255efef4ef750c4 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 04:03:00 +0100 Subject: [PATCH 18/52] perf(initialise): `MongooseIdAssigner` constructor now takes a `ModelInstance` BREAKING CHANGE: `MongooseIdAssigner.plugin` will NOT return IdAssigner instance. It is intended to be used only with like so -> `schema.plugin(MongooseIdAssigner.plugin, options)`. Use `MongooseIdAssigner Constructor` to get Instance. It takes parameters `ModelInstance` and `AssignerOptions`. The interface `AssignerOptions` also changed, modelName not needed. Use `AssignerPluginOptions` when working with `schema.plugin(..., options)`. --- README.md | 141 ++++++++++++++++++++++++------------------------------ 1 file changed, 62 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 726287a..a5417ad 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,8 @@ This is the perfect tool if you wish to work with `discriminators` and have `_id - [Working with Discriminators](#working-with-discriminators) - [TypeDefinitions](#typedefinitions) - [Strain Test](#strain-test,-performs-the-task-below-on-a-locally-hosted-db-instance.) +- [Contributions](#contributions) + - [NextIdFunctions](#nextidfunctions-(incrementer)) - [License](#license) ## Installation @@ -36,7 +38,7 @@ or npm install mongoose-id-assigner ``` -If you wish to use `UUIDs` FieldTypes, then you need to add this package, `uuid`. +If you wish to use `UUIDs` FieldTypes, then you need to add this package, [uuid](https://github.com/kelektiv/node-uuid). ``` yarn add uuid ``` @@ -65,7 +67,6 @@ import * as mongoose from 'mongoose'; const ExampleSchema = new mongoose.Schema({ _id: String, - name: String, photoId: Number, emailId: String, @@ -77,71 +78,33 @@ const ExampleSchema = new mongoose.Schema({ }); ``` -Configure the Plugin on Schema you want to work with. You need at least the modelName passed as AssignerOption. ### Configuration methods -**Method 1**: Quick Config, Good if your ids need no network use, case `ObjectId`, `UUID`. It carries out a lazy Initialisation of Model +**Method 1**: Quick Config, Intended for usage with `schema.plugin(...)`. It initialises only when the first document is about to be saved. +Options Type: `AssignerPluginOptions`. ```js -const options = { +const options: AssignerPluginOptions = { modelName: 'ExampleModel', - fields: { - // if no _id field config, assigner auto adds _id field with type = "ObjectId" + fields: { // if no _id field config, assigner auto adds _id field with type = "ObjectId" uuidFieldString: 'UUID', } }; ExampleSchema.plugin(MongooseIdAssigner.plugin, options); -// No need to initialise if you don't intent to start saving files immediately -// Saving the first doc triggers the plugin Assigner initialisation for this model. +// Saving the first doc triggers the IdAssigner initialisation for this model. const ExampleModel = mongoose.model('ExampleModel', ExampleSchema); -const doc = await ExampleModel.create({name: 'Mernxl'}) +const doc = await ExampleModel.create({name: 'Mernxl'}); console.log(doc._id) ---> '5b57a1d929239e59b4e3d7f3' // schema field type is String console.log(doc.uuidFieldString) ---> '7729e2e0-8f8b-11e8-882d-2dade78bb893' ``` -**Method 2**: Request Assigner Instance, If you have initialisation logic, you need to initialise the plugin. -Calling initialise is really optional, except you want to query nextIds, or your collection is really a very busy one. -You may just call it and ignore the promise. -```js -const options = { - modelName: 'ExampleModel', - fields: { - photoId: { - type: FieldConfigTypes.Number, - nextId: 0000, - incrementBy: 4, - nextIdFunction: (nextId, incrementBy) => nextId + incrementBy, - } - } -}; - -// If you have startup logic that needs to save files, request instance then initialise -const ExampleIA = MongooseIdAssigner.plugin(ExampleSchema, options); - -const ExampleModel = mongoose.model('ExampleModel', ExampleSchema); - -// returns a promise... -ExampleIA.initialise(ExampleModel) - .then( async (readyCode) => { - const doc1 = await ExampleModel.create({name: 'Mongoose'}); - - console.log(doc1._id) ---> '5b57a1d929239e59b4e3d7f3' - console.log(doc1.photoId) ---> 0000 - - const doc2 = await ExampleModel.create({name: 'IdAssigner'}); - - console.log(doc2._id) ---> '5b57a3612000c406eceaefc2' - console.log(doc2.photoId) ---> 0004 - }) - .catch((error) => /* ... Error at initialisation process, do error stuff */) -``` - -**Method 3**: Request Assigner Instance, This method also returns IdAssigner instance. -```js -const options = { - modelName: 'ExampleModel', +**Method 2**: Using the `MongooseIdAssigner` constructor, it takes in the `Model` instance as first parameter, then options as second, returning IdAssigner Instance. +You can now use the IdAssigner instance to request `nextId`s for particular fields. +Options Type: `AssignerOptions`. +```typescript +const options: AssignerOptions = { fields: { _id: { type: FieldConfigTypes.String, @@ -159,30 +122,28 @@ const options = { }, }; -// If you have startup logic that needs to save files, request instance then initialise -const ExampleIA = new MongooseIdAssigner(ExampleSchema, options); // <- diff - const ExampleModel = mongoose.model('ExampleModel', ExampleSchema); -// returns a promise... -ExampleIA.initialise(ExampleModel) - .then( async (readyCode) => { - const doc1 = await ExampleModel.create({name: 'Mongoose'}); - - console.log(doc1._id) ---> '34T5565' - console.log(doc1.uuidFieldBuffer) ---> Binary { _bsontype: 'Binary', sub_type: 4, position: 36, buffer: B... } +const ExampleIA = new MongooseIdAssigner(ExampleModel, options); + +const doc1 = await ExampleModel.create({name: 'Mongoose'}); - const doc2 = await ExampleModel.create({name: 'IdAssigner'}); +console.log(doc1._id); ---> '34T5565' +console.log(doc1.uuidFieldBuffer); ---> Binary { _bsontype: 'Binary', sub_type: 4, position: 36, buffer: B... } + +// it getOnly, does not write off in db +// TODO: Implement hold nextId with timeout +console.log((await ExampleIA.getNextId('_id'))) ---> '34T5566' + +const doc2 = await ExampleModel.create({name: 'IdAssigner'}); - console.log(doc2._id) ---> '34T5566' - console.log(doc2.uuidFieldBuffer) ---> Binary { _bsontype: 'Binary', sub_type: 4, position: 36, buffer: B... } - }) - .catch((error) => /* ... do error stuff */) +console.log(doc2._id); ---> '34T5566' +console.log(doc2.uuidFieldBuffer); ---> Binary { _bsontype: 'Binary', sub_type: 4, position: 36, buffer: B... } ``` ## Working with Discriminators You may have a discriminator Instance and want to have different id Types, or fields on one discriminator need to be autogenerated uniquely, here is an example; -```js +```typescript const CharacterSchema = new mongoose.Schema({ _id: String, @@ -201,8 +162,7 @@ const DroidSchema = new mongoose.Schema({ make: String, }); -const options = { - modelName: 'Character', +const options: AssignerOptions = { fields: { someId: 4444, }, @@ -222,9 +182,9 @@ const options = { }, }; -MongooseIdAssigner.plugin(characterSchema, options); - const characterModel = mongoose.model('example10', characterSchema); +const CharacterIA = new MongooseIdAssigner(characterModel, options); + const personModel = characterModel.discriminator('Person', personSchema); const droidModel = characterModel.discriminator('Droid', droidSchema); @@ -237,6 +197,7 @@ const droid1 = await droidModel.create({ friends: 'placeholder' }); console.log(character._id) ---> '5b59d98617e2edc57ede52b8' console.log(character.someId) ---> 4444 +console.log((await CharacterIA.getNextId('someId'))) ---> 4445 console.log(person._id) ---> '5b59d98617e2edc57ede52ba' console.log(person.someId) ---> 4445 @@ -245,23 +206,34 @@ console.log(person.license) ---> '786-TSJ-000' console.log(droid._id) ---> '48db52c0-90df-11e8-b43b-ffe3d317727b' console.log(droid.someId) ---> 4446 console.log(droid.make) ---> '18Y4433' - +console.log((await CharacterIA.getNextId('make', 'Droid'))) ---> '18Y4434' + console.log(person._id) ---> '5b59d98617e2edc57ede52bb' console.log(person1.someId) ---> 4447 console.log(person1.license) ---> '786-TSJ-001' +console.log((await CharacterIA.getNextId('license', 'Person'))) ---> '786-TSJ-002' console.log(droid1._id) ---> 'eb185fb0-90df-11e8-800d-dff50a2d22a3' console.log(droid1.someId) ---> 4448 console.log(droid1.make) ---> '18Y4434' ``` -### TypeDefinitions +## NextId `WIP` +It may arise that you need to query and use the nextId to at the front-end. In this case, you just need to +get an instance of the Assigner, then use the `getNextId` method. It is async method as it queries for `Number` and `String` cases. + +## TypeDefinitions ```typescript /** * If Options does not contain fields(AssignerFieldsConfigMap), * Then setup assigner for _id field, does not use network */ export interface AssignerOptions { + fields?: AssignerFieldsConfigMap; + discriminators?: DiscriminatorConfigMap; +} + +export interface AssignerPluginOptions { modelName: string; fields?: AssignerFieldsConfigMap; discriminators?: DiscriminatorConfigMap; @@ -321,7 +293,7 @@ interface NumberFieldConfig { interface UUIDFieldConfig { type: 'UUID' | 'GUID'; asBinary?: boolean; // default string, if true, saves as Binary - version?: number; // supports 1 and 4, default 1 + version?: 1 | 4; // supports 1 and 4, default 1 versionOptions?: any; } ``` @@ -336,7 +308,6 @@ describe('MongooseIdAssigner', () => { it('should be robust enough to avoid duplicates', async () => { const options: AssignerOptions = { - modelName: 'example6', fields: { _id: '33333', photoId: 44444, @@ -357,14 +328,18 @@ describe('MongooseIdAssigner', () => { }; try { - const plugin = MongooseIdAssigner.plugin(exampleSchema, options); - - const exampleModel = mongoose.model('example6', exampleSchema); + const exampleModel = mongoose.model('TestModel', exampleSchema); + + const ExampleIA = new MongooseIdAssigner(exampleModel, options); + expect(ExampleIA.readyState).toBe(2); // initialising // initialise to ensure that // model is set and db is connected // before performing heavy tasks - await plugin.initialise(exampleModel); + // or you can set max event listeners to 100 to suppress warnings on waits + await ExampleIA.initialise(); + + expect(ExampleIA.readyState).toBe(1); const promises = []; for (let i = 0; i < 100; i++) { @@ -406,5 +381,13 @@ describe('MongooseIdAssigner', () => { }); ``` +## CONTRIBUTIONS +If you find a bug, do well to create an [issue](https://github.com/mernxl/mongoose-id-assigner/issues) so we fix things up in a flash. +Have an awesome new feature to add to library, feel free to open a [PR](https://github.com/mernxl/mongoose-id-assigner/pulls) + +### NextIdFunctions (Incrementer) +If you have a superb nextIdFunction, and you wish it can be added to the list of nextIdFunctions, feel free to drop a +pull request and submit your function. + ## LICENSE [MIT](https://github.com/mernxl/mongoose-id-assigner/blob/master/LICENSE.md) From f2e8063c756048b9ea23cef93c535221e82f3a30 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 04:24:05 +0100 Subject: [PATCH 19/52] doc: README.md adjust line spacings at methods --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a5417ad..7972606 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ const ExampleSchema = new mongoose.Schema({ ### Configuration methods **Method 1**: Quick Config, Intended for usage with `schema.plugin(...)`. It initialises only when the first document is about to be saved. + Options Type: `AssignerPluginOptions`. ```js const options: AssignerPluginOptions = { @@ -102,6 +103,7 @@ console.log(doc.uuidFieldString) ---> '7729e2e0-8f8b-11e8-882d-2dade78bb893' **Method 2**: Using the `MongooseIdAssigner` constructor, it takes in the `Model` instance as first parameter, then options as second, returning IdAssigner Instance. You can now use the IdAssigner instance to request `nextId`s for particular fields. + Options Type: `AssignerOptions`. ```typescript const options: AssignerOptions = { From 7961d51653a075555977ee91c42abf38fa41d13e Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 10:53:29 +0100 Subject: [PATCH 20/52] test: add test for discriminators, test updating by fields and discriminator configs --- src/__tests__/MongooseIdAssigner.spec.ts | 67 ++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index c41d095..c15fcf1 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -542,6 +542,73 @@ describe('MongooseIdAssigner', () => { expect(e).toBeUndefined(); } }); + + it('should request and update respective fields, even if configured at base and discriminators', async () => { + const options: AssignerOptions = { + fields: { + _id: '786-DEF-000', + someId: 4444, + }, + discriminators: { + [modelName + 'Person']: { + _id: '786-PER-000', + license: '786-TSJ-000', + }, + [modelName + 'Droid']: { + _id: '786-DRD-000', + make: { + type: FieldConfigTypes.String, + nextId: '18Y4433', + separator: 'Y', + }, + }, + }, + }; + + const characterModel = mongoose.model(modelName, characterSchema); + const CharacterIA = new MongooseIdAssigner(characterModel, options); + + const personModel = characterModel.discriminator( + modelName + 'Person', + personSchema, + ); + const droidModel = characterModel.discriminator( + modelName + 'Droid', + droidSchema, + ); + + try { + const character = await characterModel.create({ + friends: 'placeholder', + }); + const person = await personModel.create({ friends: 'placeholder' }); + const droid = await droidModel.create({ friends: 'placeholder' }); + + expect((character as any)._id).toBe('786-DEF-000'); + + expect((person as any)._id).toBe('786-PER-000'); + expect(await CharacterIA.getNextId('_id')).toBe('786-DEF-001'); + + expect((droid as any)._id).toMatch('786-DRD-000'); + expect(await CharacterIA.getNextId('_id')).toBe('786-DEF-001'); + + const character1 = await characterModel.create({ + friends: 'placeholder', + }); + const person1 = await personModel.create({ friends: 'placeholder' }); + const droid1 = await droidModel.create({ friends: 'placeholder' }); + + expect((character1 as any)._id).toBe('786-DEF-001'); + + expect((person1 as any)._id).toBe('786-PER-001'); + expect(await CharacterIA.getNextId('_id')).toBe('786-DEF-002'); + + expect((droid1 as any)._id).toBe('786-DRD-001'); + expect(await CharacterIA.getNextId('_id')).toBe('786-DEF-002'); + } catch (e) { + expect(e).toBeUndefined(); + } + }); }); }); }); From c529152140b270d2d32ed243b41b4f0fd26fa5ad Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 Aug 2018 10:57:13 +0100 Subject: [PATCH 21/52] fix: truncate support for `mongoose` to exclude those with vulnerabilities @see https://www.npmjs.com/advisories/599 --- README.md | 3 ++- package.json | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7972606..9229398 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,10 @@ [![npm](https://img.shields.io/npm/v/mongoose-id-assigner.svg)](https://www.npmjs.com/package/mongoose-id-assigner) [![Build Status](https://travis-ci.org/mernxl/mongoose-id-assigner.svg?branch=master)](https://travis-ci.org/mernxl/mongoose-id-assigner) [![codecov](https://codecov.io/gh/mernxl/mongoose-id-assigner/branch/master/graph/badge.svg)](https://codecov.io/gh/mernxl/mongoose-id-assigner) -![Dependencies State](https://david-dm.org/mernxl/mongoose-id-assigner.svg) +[![Dependencies State](https://david-dm.org/mernxl/mongoose-id-assigner.svg)](https://david-dm.org/mernxl/mongoose-id-assigner) ![TypeScript compatible](https://img.shields.io/badge/typescript-compatible-brightgreen.svg) ![FlowType compatible](https://img.shields.io/badge/flowtype-compatible-brightgreen.svg) +[![Code Style Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://github.com/semantic-release/semantic-release) A [Mongoose](http://mongoosejs.com) Plugin. Easily Manage fields that need an id(unique value) on your mongoose model. This plugin does the work of generating, incrementing, and assigning those values(unique) to those fields. diff --git a/package.json b/package.json index 4867be7..9b6163f 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "lib" ], "scripts": { - "build": "yarn run prettier && yarn run clean && yarn run tsc -d && yarn run build-flow", + "build": "yarn run clean && yarn run tsc -d && yarn run build-flow", "build-flow": "find ./src -name '*.js.flow' -not -path '*/__*' | while read filepath; do cp $filepath `echo ./${COPY_TO_FOLDER:-lib}$filepath | sed 's/.\\/src\\//\\//g'`; done", "tsc": "tsc", "flow": "./node_modules/.bin/flow", @@ -39,7 +39,7 @@ "event-to-promise": "^0.8.0" }, "peerDependencies": { - "mongoose": ">=4.0.0 || >=5.0.0" + "mongoose": ">=4.3.6 || >=5.0.0" }, "optionalDependencies": { "uuid": ">=3.0.1" From b6520a6c5a81a8c5d9f29b60382c3b8468bfd991 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 May 2019 21:34:26 +0100 Subject: [PATCH 22/52] chore: ignore others directory --- .gitignore | 1 + .npmignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 5af306a..74bfbfb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # compiled output /lib +/others # dependencies /node_modules diff --git a/.npmignore b/.npmignore index b37f9c4..f0e8367 100644 --- a/.npmignore +++ b/.npmignore @@ -1,2 +1,3 @@ *.log src +others From 46b6eefed86863a20d43120f7092da4877e11e2a Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 May 2019 21:42:32 +0100 Subject: [PATCH 23/52] fix(dependencies): `document must have an _id before saving` issue @see https://github.com/Automattic/mongoose/issues/5073 `pre-save` hooks not triggered if set after initialising model for mongoose >= 4.8.0, so all models whose Assigner was initialised using MongooseIdAssigner constructor will fail, but those with MongooseIdAssigner.plugin is ok. --- package.json | 6 +- yarn.lock | 196 +++++++++++++++++++++++++++++++++++---------------- 2 files changed, 139 insertions(+), 63 deletions(-) diff --git a/package.json b/package.json index 9b6163f..6ac8ad6 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "event-to-promise": "^0.8.0" }, "peerDependencies": { - "mongoose": ">=4.3.6 || >=5.0.0" + "mongoose": ">=4.3.6 || <4.8.0" }, "optionalDependencies": { "uuid": ">=3.0.1" @@ -65,14 +65,14 @@ "@types/event-to-promise": "^0.7.0", "@types/jest": "^23.3.0", "@types/mongodb-memory-server": "^1.8.0", - "@types/mongoose": "^5.2.1", + "@types/mongoose": "^4.7.45", "@types/uuid": "^3.4.3", "babel-core": "^6.26.3", "babel-jest": "^23.4.2", "flow-bin": "^0.77.0", "jest": "^23.4.1", "mongodb-memory-server": "^1.9.0", - "mongoose": "^5.2.5", + "mongoose": "4.7.9", "prettier": "^1.13.7", "rimraf": "^2.6.2", "semantic-release": "^15.8.1", diff --git a/yarn.lock b/yarn.lock index a60c1a9..89ed53b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -145,11 +145,11 @@ "@types/events" "*" "@types/node" "*" -"@types/mongoose@^5.2.1": - version "5.2.5" - resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.2.5.tgz#3a8467549744c105515299acc6f590e5403fb277" +"@types/mongoose@^4.7.45": + version "4.7.45" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-4.7.45.tgz#a21dd93c9858230fb4d95d5620997e89f40548c0" + integrity sha512-IAFsl0kzMbiWBN19w8O5MChcSTziKnQ5r367Wo5q3F8uD8Tx4RNcgGmGAbnekcuPA3OsAndzAk0bndW0fXENqg== dependencies: - "@types/events" "*" "@types/mongodb" "*" "@types/node" "*" @@ -392,22 +392,29 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" +async@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" + integrity sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ= + dependencies: + lodash "^4.14.0" + async@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" dependencies: lodash "^4.14.0" -async@2.6.1, async@^2.1.4: +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.4: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: lodash "^4.17.10" -async@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -622,7 +629,12 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@3.5.1, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1: +bluebird@2.10.2: + version "2.10.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.10.2.tgz#024a5517295308857f14f91f1106fc3b555f446b" + integrity sha1-AkpVFylTCIV/FPkfEQb8O1VfRGs= + +bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" @@ -688,9 +700,10 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -bson@~1.0.4, bson@~1.0.5: +bson@~1.0.4: version "1.0.9" resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.9.tgz#12319f8323b1254739b7c6bef8d3e89ae05a2f57" + integrity sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg== btoa-lite@^1.0.0: version "1.0.0" @@ -719,6 +732,11 @@ buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" +buffer-shims@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" + integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= + buffer@^3.0.1: version "3.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" @@ -1200,6 +1218,13 @@ dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" +debug@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo= + dependencies: + ms "0.7.1" + debug@3.1.0, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -1480,6 +1505,11 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" +es6-promise@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4" + integrity sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q= + es6-promise@^4.0.3: version "4.2.4" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" @@ -2157,6 +2187,11 @@ hook-std@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-1.1.0.tgz#7f76b74b6f96d3cd4106afb50a66bdb0af2d2a2d" +hooks-fixed@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-1.2.0.tgz#0d2772d4d7d685ff9244724a9f0b5b2559aac96b" + integrity sha1-DSdy1NfWhf+SRHJKnwtbJVmqyWs= + hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -3052,9 +3087,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -kareem@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.2.1.tgz#9950809415aa3cde62ab43b4f7b919d99816e015" +kareem@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-1.2.0.tgz#59851e833feb1ce6cf60000e0c23acf75c8a3547" + integrity sha1-WYUegz/rHObPYAAODCOs91yKNUc= kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -3231,10 +3267,6 @@ lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" -lodash.get@4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -3556,14 +3588,13 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" -mongodb-core@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.0.tgz#af91f36fd560ed785f4e61e694432df4d3698aad" +mongodb-core@2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.7.tgz#6a27909b98142ef2508d924c274969008954fa29" + integrity sha1-aieQm5gULvJQjZJMJ0lpAIlU+ik= dependencies: bson "~1.0.4" - require_optional "^1.0.1" - optionalDependencies: - saslprep "^1.0.0" + require_optional "~1.0.0" mongodb-memory-server@^1.9.0: version "1.9.3" @@ -3581,30 +3612,30 @@ mongodb-memory-server@^1.9.0: tmp "^0.0.33" uuid "^3.2.1" -mongodb@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.1.1.tgz#c018c4b277614e8b1e08426d5bcbe1a7e5cdbd74" +mongodb@2.2.22: + version "2.2.22" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.22.tgz#d67c588fc08f922db19754b1d2e03e2d7d1319fb" + integrity sha1-1nxYj8CPki2xl1Sx0uA+LX0TGfs= dependencies: - mongodb-core "3.1.0" + es6-promise "3.2.1" + mongodb-core "2.1.7" + readable-stream "2.1.5" -mongoose-legacy-pluralize@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" - -mongoose@^5.2.5: - version "5.2.7" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.2.7.tgz#679a682cc744f7fbcc14f23df77e9d8d5dfd043d" - dependencies: - async "2.6.1" - bson "~1.0.5" - kareem "2.2.1" - lodash.get "4.4.2" - mongodb "3.1.1" - mongodb-core "3.1.0" - mongoose-legacy-pluralize "1.0.2" - mpath "0.4.1" - mquery "3.1.2" - ms "2.0.0" +mongoose@4.7.9: + version "4.7.9" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.7.9.tgz#7a860161d649789699b1363fb5d47ed957748200" + integrity sha1-eoYBYdZJeJaZsTY/tdR+2Vd0ggA= + dependencies: + async "2.1.4" + bson "~1.0.4" + hooks-fixed "1.2.0" + kareem "1.2.0" + mongodb "2.2.22" + mpath "0.2.1" + mpromise "0.5.5" + mquery "2.0.0" + ms "0.7.2" + muri "1.2.0" regexp-clone "0.0.1" sliced "1.0.1" @@ -3619,18 +3650,35 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" -mpath@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.4.1.tgz#ed10388430380bf7bbb5be1391e5d6969cb08e89" +mpath@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.2.1.tgz#3a4e829359801de96309c27a6b2e102e89f9e96e" + integrity sha1-Ok6Ck1mAHeljCcJ6ay4QLon56W4= -mquery@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.1.2.tgz#46c2ea6d7a08c9b9e0716022fb2990708ddba9ff" +mpromise@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mpromise/-/mpromise-0.5.5.tgz#f5b24259d763acc2257b0a0c8c6d866fd51732e6" + integrity sha1-9bJCWddjrMIlewoMjG2Gb9UXMuY= + +mquery@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-2.0.0.tgz#b5abc850b90dffc3e10ae49b4b6e7a479752df22" + integrity sha1-tavIULkN/8PhCuSbS256R5dS3yI= dependencies: - bluebird "3.5.1" - debug "3.1.0" + bluebird "2.10.2" + debug "2.2.0" regexp-clone "0.0.1" - sliced "1.0.1" + sliced "0.0.5" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg= + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + integrity sha1-riXPJRKziFodldfwN4aNhDESR2U= ms@2.0.0: version "2.0.0" @@ -3640,6 +3688,11 @@ ms@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" +muri@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/muri/-/muri-1.2.0.tgz#b86383c902920b09ebe62af0e75c94de5f33cd3d" + integrity sha1-uGODyQKSCwnr5irw51yU3l8zzT0= + mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -4389,6 +4442,11 @@ private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= + process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" @@ -4620,6 +4678,19 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" + integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA= + dependencies: + buffer-shims "^1.0.0" + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + string_decoder "~0.10.x" + util-deprecate "~1.0.1" + readable-stream@~1.1.10: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -4677,6 +4748,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: regexp-clone@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-0.0.1.tgz#a7c2e09891fdbf38fbb10d376fb73003e68ac589" + integrity sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk= registry-auth-token@^3.0.1, registry-auth-token@^3.3.1: version "3.3.2" @@ -4756,9 +4828,10 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -require_optional@^1.0.1: +require_optional@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" + integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== dependencies: resolve-from "^2.0.0" semver "^5.1.0" @@ -4772,6 +4845,7 @@ resolve-cwd@^2.0.0: resolve-from@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57" + integrity sha1-lICrIOlP+h2egKgEx+oUdhGWa1c= resolve-from@^3.0.0: version "3.0.0" @@ -4858,10 +4932,6 @@ sane@^2.0.0: optionalDependencies: fsevents "^1.2.3" -saslprep@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.1.tgz#b644e0ba25b156b652f3cb90df7542f896049ba6" - sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -4985,9 +5055,15 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +sliced@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-0.0.5.tgz#5edc044ca4eb6f7816d50ba2fc63e25d8fe4707f" + integrity sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8= + sliced@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" + integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= slide@^1.1.3, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" From 70e68f3dc929aa9012eb4d9a68ef3aee14cbbf3c Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 May 2019 23:17:20 +0100 Subject: [PATCH 24/52] test: adjust test schema's to suit <4.8.0 packages --- src/__mocks__/test.models.ts | 68 +++++++++++++----------- src/__tests__/MongooseIdAssigner.spec.ts | 10 +++- 2 files changed, 44 insertions(+), 34 deletions(-) diff --git a/src/__mocks__/test.models.ts b/src/__mocks__/test.models.ts index 895dae6..df57d9d 100644 --- a/src/__mocks__/test.models.ts +++ b/src/__mocks__/test.models.ts @@ -1,41 +1,45 @@ import { Schema } from 'mongoose'; -const ExampleSchema = new Schema({ - _id: String, - - photoId: Number, - emailId: String, - personId: String, - uuidField: Buffer, - uuidFieldString: String, - uuidFieldBuffer: Buffer, - objectIdField: Schema.Types.ObjectId, -}); - -const CharacterSchema = new Schema( - { +const ExampleSchema = () => + new Schema({ _id: String, - kind: String, - someId: Number, - friends: [String], - }, - { - discriminatorKey: 'kind', - }, -); - -const PersonSchema = new Schema({ - license: String, -}); - -const DroidSchema = new Schema({ - make: String, - timestamp: Number, -}); + photoId: Number, + emailId: String, + personId: String, + uuidField: Buffer, + uuidFieldString: String, + uuidFieldBuffer: Buffer, + objectIdField: Schema.Types.ObjectId, + }); + +const CharacterSchema = () => + new Schema( + { + _id: String, + + kind: String, + someId: Number, + friends: [String], + }, + { + discriminatorKey: 'kind', + }, + ); + +const PersonSchema = () => + new Schema({ + license: String, + }); + +const DroidSchema = () => + new Schema({ + make: String, + timestamp: Number, + }); export function getSchema(index: number) { const schema = [ExampleSchema, CharacterSchema, PersonSchema, DroidSchema]; - return schema[index].clone(); + return schema[index](); } diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index c15fcf1..09649c6 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -1,4 +1,4 @@ -import { Binary } from 'bson'; +import { Binary, ObjectID } from 'bson'; import { Document, Model, Schema, Types } from 'mongoose'; import { getMongoose } from '../__mocks__/mongoose.config'; import { getSchema } from '../__mocks__/test.models'; @@ -510,10 +510,13 @@ describe('MongooseIdAssigner', () => { characterSchema.plugin(MongooseIdAssigner.plugin, options); const characterModel = mongoose.model('example12', characterSchema); + const personModel = characterModel.discriminator( 'Person', personSchema, ); + + droidSchema.path('_id', String); const droidModel = characterModel.discriminator('Droid', droidSchema); try { @@ -526,7 +529,7 @@ describe('MongooseIdAssigner', () => { const droid1 = await droidModel.create({ friends: 'placeholder' }); expect((character as any).someId).toBe(4444); - expect(typeof (person as any)._id).toBe('string'); + expect((person as any)._id).toBeInstanceOf(ObjectID); expect((person as any).someId).toBe(4445); expect((person as any).license).toBe('786-TSJ-000'); expect((droid as any)._id).toMatch(/-+/); @@ -568,10 +571,13 @@ describe('MongooseIdAssigner', () => { const characterModel = mongoose.model(modelName, characterSchema); const CharacterIA = new MongooseIdAssigner(characterModel, options); + personSchema.path('_id', String); const personModel = characterModel.discriminator( modelName + 'Person', personSchema, ); + + droidSchema.path('_id', String); const droidModel = characterModel.discriminator( modelName + 'Droid', droidSchema, From 9c25d5a28eb6543b8162103c724d681e20119e23 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 May 2019 23:19:11 +0100 Subject: [PATCH 25/52] fix(typings): use `FieldConfigTypes` on FieldConfig `type` field instead of hard-coding --- src/assigner.interfaces.ts | 27 ++++++++++++++++++--------- src/utils/normalise-options.ts | 2 +- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/assigner.interfaces.ts b/src/assigner.interfaces.ts index ea6f325..4368b5c 100644 --- a/src/assigner.interfaces.ts +++ b/src/assigner.interfaces.ts @@ -7,32 +7,41 @@ export enum FieldConfigTypes { } export interface DefaultFieldConfig { - type: 'ObjectId'; + type: FieldConfigTypes.ObjectId; } export interface StringFieldConfig { - type: 'String'; + type: FieldConfigTypes.String; nextId: string; separator?: string; nextIdFunction?: (nextId: string) => string; } export interface NumberFieldConfig { - type: 'Number'; + type: FieldConfigTypes.Number; nextId: number; incrementBy?: number; nextIdFunction?: (nextId: number, incrementBy?: number) => number; } export interface UUIDFieldConfig { - type: 'UUID' | 'GUID'; + type: FieldConfigTypes.UUID | FieldConfigTypes.GUID; asBinary?: boolean; // default string version?: 1 | 4; // supports 1 and 4, default 1 versionOptions?: any; } -// noSpace, insure we consume all possible values, i.e. we must have 1, 2, 3, 4 -// order doesn't matter but all those keys must be present, no 1, 3, 4, 6 +/** + * + * @property {Boolean} noSpace - noSpace, insure we consume all possible values, i.e. we must have 1, 2, 3, 4 + * order doesn't matter but all those keys must be present, no 1, 3, 4, 6. + * If noSpace is true, then on holdTimeout, that nextId will be use on any newly saving doc, else nextId discarded + * + * @property {Number} maxHold[50] - As there may be performance issues when holding ids, maxHold will be set, + * @property {String} holdTimeout - default timeout string, must be parse-able to number by `ms` plugin + * @property {Number} holdTimeout - default timeout millis, gotten id stays onHold for this length of time + * @property {Boolean} holdTimeout - if true, will always getNextId with default timeout of `1 week` else use getOnly on getNextIds + */ export type FieldConfig = { index?: boolean; unique?: boolean; @@ -47,7 +56,7 @@ export type FieldConfig = { * fieldConfig = string, then nextId = string, default incrementer, * fieldConfig = number, then nextId = number, incrementBy = 1 * fieldConfig = boolean(true), then fieldType = ObjectId - * fieldConfig = GUID | UUID, then use UUID v4 + * fieldConfig = GUID | UUID, then use UUID v1 */ export interface AssignerFieldsConfigMap { [fieldName: string]: @@ -55,8 +64,8 @@ export interface AssignerFieldsConfigMap { | string | number | boolean - | 'GUID' - | 'UUID'; + | FieldConfigTypes.GUID + | FieldConfigTypes.UUID; } /** diff --git a/src/utils/normalise-options.ts b/src/utils/normalise-options.ts index e8a98e5..d4503a7 100644 --- a/src/utils/normalise-options.ts +++ b/src/utils/normalise-options.ts @@ -191,7 +191,7 @@ export function normaliseOptions( // set default _id field if (!normalised.fields.has('_id')) { - normalised.fields.set('_id', { type: 'ObjectId' }); + normalised.fields.set('_id', { type: FieldConfigTypes.ObjectId }); } // cannot rely on discriminatorKey as its default __t From b873e45fcb250ad1ca39715fd06a3871c804ac82 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sat, 11 May 2019 23:37:59 +0100 Subject: [PATCH 26/52] docs(README): add new point to note, update interfaces, update strain test --- README.md | 83 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 9229398..2a96fae 100644 --- a/README.md +++ b/README.md @@ -55,11 +55,14 @@ TypeName: **AssignerOptions** and value a Configuration Map for fields on that discriminator that need unique values. Any discriminator without a fieldConfig will use that of the baseModel. -### Point to Note -At every Network Assigner init(i.e Assigner with Number, String FieldConfigTypes), the Assigner(for a Model) refreshes and syncs with the db stored options. Take example micro-service cluster, +### Points to Note +- At every Network Assigner init(i.e Assigner with Number, String FieldConfigTypes), the Assigner(for a Model) refreshes and syncs with the db stored options. Take example micro-service cluster, the last app to init always gives most recent field configs, if the db have a field that is not in the most recent field config, it is auto dropped. Therefore always make sure all your micro-service clusters start up with same fieldsConfigs as the last to start rewrites the db and only keeps nextIds. +- Always set FieldConfig Type to reflect schema's path Type, that is if schema Type is `Number`, then use `Number` FieldConfigType. +See `ExampleSchema` below with its associated IdAssigners. + ## Examples Lets create our Mongoose Schema. ```js @@ -231,41 +234,60 @@ get an instance of the Assigner, then use the `getNextId` method. It is async me * If Options does not contain fields(AssignerFieldsConfigMap), * Then setup assigner for _id field, does not use network */ -export interface AssignerOptions { +interface AssignerOptions { fields?: AssignerFieldsConfigMap; discriminators?: DiscriminatorConfigMap; } -export interface AssignerPluginOptions { +interface AssignerPluginOptions { modelName: string; fields?: AssignerFieldsConfigMap; discriminators?: DiscriminatorConfigMap; } /** - * fieldOption = string, then nextId = string, default incrementer, - * fieldOption = number, then nextId = number, incrementBy = 1 - * fieldOption = boolean(true), then fieldType = ObjectId - * fieldOption = GUID | UUID, then use UUID v4 + * fieldConfig = string, then nextId = string, default incrementer, + * fieldConfig = number, then nextId = number, incrementBy = 1 + * fieldConfig = boolean(true), then fieldType = ObjectId + * fieldConfig = GUID | UUID, then use UUID v1 */ interface AssignerFieldsConfigMap { - [fieldName: string]: FieldConfig | string | number | boolean | 'GUID' | 'UUID'; + [fieldName: string]: + | FieldConfig + | string + | number + | boolean + | FieldConfigTypes.GUID + | FieldConfigTypes.UUID; } /** * A map of discriminatorName(modelName) and its own AssignerFieldsConfigMap */ -export interface DiscriminatorConfigMap { +interface DiscriminatorConfigMap { [discriminatorName: string]: AssignerFieldsConfigMap; } -// noSpace, insure we consume all possible values, i.e. we must have 1, 2, 3, 4 -// order doesn't matter but all those keys must be present, no 1, 3, 4, 6 +/** + * + * @property {Boolean} noSpace - noSpace, insure we consume all possible values, i.e. we must have 1, 2, 3, 4 + * order doesn't matter but all those keys must be present, no 1, 3, 4, 6. + * If noSpace is true, then on holdTimeout, that nextId will be use on any newly saving doc, else nextId discarded + * + * @property {Number} maxHold[50] - As there may be performance issues when holding ids, maxHold will be set, + * @property {String} holdTimeout - default timeout string, must be parse-able to number by `ms` plugin + * @property {Number} holdTimeout - default timeout millis, gotten id stays onHold for this length of time + * @property {Boolean} holdTimeout - if true, will always getNextId with default timeout of `1 week` else use getOnly on getNextIds + */ type FieldConfig = { index?: boolean; unique?: boolean; noSpace?: boolean; -} & ( DefaultFieldConfig | StringFieldConfig | NumberFieldConfig | UUIDFieldConfig ); +} & ( + | DefaultFieldConfig + | StringFieldConfig + | NumberFieldConfig + | UUIDFieldConfig); enum FieldConfigTypes { UUID = 'UUID', @@ -275,27 +297,27 @@ enum FieldConfigTypes { ObjectId = 'ObjectId', } -interface DefaultFieldConfig { - type: 'ObjectId'; +export interface DefaultFieldConfig { + type: FieldConfigTypes.ObjectId; } -interface StringFieldConfig { - type: 'String'; - nextId: string; // the id that will be assigned next - separator?: string; // default `-` e.g. 434-344 - nextIdFunction?: (nextId: string) => string; // custom function to generate nextIds +export interface StringFieldConfig { + type: FieldConfigTypes.String; + nextId: string; + separator?: string; + nextIdFunction?: (nextId: string) => string; } -interface NumberFieldConfig { - type: 'Number'; +export interface NumberFieldConfig { + type: FieldConfigTypes.Number; nextId: number; incrementBy?: number; - nextIdFunction?: (nextId: number, incrementBy?: number) => number; // custom function to generate nextIds + nextIdFunction?: (nextId: number, incrementBy?: number) => number; } -interface UUIDFieldConfig { - type: 'UUID' | 'GUID'; - asBinary?: boolean; // default string, if true, saves as Binary +export interface UUIDFieldConfig { + type: FieldConfigTypes.UUID | FieldConfigTypes.GUID; + asBinary?: boolean; // default string version?: 1 | 4; // supports 1 and 4, default 1 versionOptions?: any; } @@ -320,7 +342,9 @@ describe('MongooseIdAssigner', () => { nextId: 'SPEC-7382-4344-3232', separator: '-', }, - uuidFieldString: FieldConfigTypes.UUID, + uuidFieldString: { + type: FieldConfigTypes.UUID, + }, uuidFieldBuffer: { type: FieldConfigTypes.UUID, version: 1, @@ -331,8 +355,7 @@ describe('MongooseIdAssigner', () => { }; try { - const exampleModel = mongoose.model('TestModel', exampleSchema); - + exampleModel = mongoose.model('example8', exampleSchema); const ExampleIA = new MongooseIdAssigner(exampleModel, options); expect(ExampleIA.readyState).toBe(2); // initialising @@ -361,7 +384,7 @@ describe('MongooseIdAssigner', () => { expect(typeof photoId).toBe('number'); expect(typeof emailId).toBe('string'); expect(personId).toMatch(/(SPEC-7382-4344-3)\d+/); - expect(objectIdField).toBeInstanceOf(mongoose.Types.ObjectId); + expect(objectIdField).toBeInstanceOf(Types.ObjectId); expect(typeof uuidFieldString).toBe('string'); expect(uuidFieldBuffer).toBeInstanceOf(Binary); From e6c79a025d90c16e7f92a104efeeefd5e003421f Mon Sep 17 00:00:00 2001 From: mernxl Date: Sun, 12 May 2019 02:01:10 +0100 Subject: [PATCH 27/52] refactor: rename `throwPluginError` to `PluginError`, it now only returns formatted Error --- src/LocalStateStore.ts | 4 ++-- src/MongooseIdAssigner.ts | 10 ++++---- src/utils/assign-fields-ids.ts | 14 +++++++---- src/utils/configure-schema.ts | 4 ++-- src/utils/get-next-ids/get-next-id-number.ts | 12 ++++++---- src/utils/get-next-ids/get-next-id-string.ts | 12 ++++++---- .../get-next-ids/utils/string-incrementer.ts | 4 ++-- src/utils/initialise-options.ts | 20 +++++++++------- src/utils/normalise-options.ts | 24 +++++++++++-------- src/utils/others.ts | 4 ++-- 10 files changed, 62 insertions(+), 46 deletions(-) diff --git a/src/LocalStateStore.ts b/src/LocalStateStore.ts index 36be4b5..4dc7679 100644 --- a/src/LocalStateStore.ts +++ b/src/LocalStateStore.ts @@ -1,6 +1,6 @@ import { Document, Model, Schema } from 'mongoose'; import { MongooseIdAssigner } from './MongooseIdAssigner'; -import { throwPluginError } from './utils'; +import { PluginError } from './utils'; export interface SchemaState { modelName: string; @@ -74,7 +74,7 @@ export class LocalStateStore { setCollName(collName: string) { for (const config of this.stateMap.values()) { if (config.readyState === 1 || config.readyState === 2) { - throwPluginError( + throw PluginError( 'Could not Set CollName as Some Assigners have initialised, Call setCollName at app bootstrap level.', ); } diff --git a/src/MongooseIdAssigner.ts b/src/MongooseIdAssigner.ts index 174ce99..c1e71a8 100644 --- a/src/MongooseIdAssigner.ts +++ b/src/MongooseIdAssigner.ts @@ -10,7 +10,7 @@ import { NumberFieldConfig, } from './assigner.interfaces'; import { localStateStore, SchemaState } from './LocalStateStore'; -import { initialiseOptions, normaliseOptions, throwPluginError } from './utils'; +import { initialiseOptions, normaliseOptions, PluginError } from './utils'; import { refreshOptions } from './utils/assign-fields-ids'; import { configureSchema } from './utils/configure-schema'; import { @@ -106,9 +106,11 @@ export class MongooseIdAssigner extends EventEmitter { const { model, error } = this.state; if (!model) { if (error) { - throwPluginError('Cannot read Model, Error At Initialisation ' + error); + throw PluginError( + 'Cannot read Model, Error At Initialisation ' + error, + ); } else { - throwPluginError('Cannot read Model, Not Initialised'); + throw PluginError('Cannot read Model, Not Initialised'); } } return (model as Model).db.collection( @@ -171,7 +173,7 @@ export class MongooseIdAssigner extends EventEmitter { const fieldConfig = this.getFieldConfig(field, discriminator); if (!fieldConfig) { - return throwPluginError( + throw PluginError( `Requested Field, [${field}] does not have a Field Configuration!`, this.modelName, ); diff --git a/src/utils/assign-fields-ids.ts b/src/utils/assign-fields-ids.ts index d1af730..06fbcad 100644 --- a/src/utils/assign-fields-ids.ts +++ b/src/utils/assign-fields-ids.ts @@ -8,7 +8,7 @@ import { getNextIdUUID, } from './get-next-ids'; import { checkAndUpdateOptions } from './initialise-options'; -import { throwPluginError, waitPromise } from './others'; +import { PluginError, waitPromise } from './others'; import { isNumber, isObjectId, isString, isUUID } from './type-guards'; export async function refreshOptions( @@ -27,15 +27,19 @@ export async function refreshOptions( await waitPromise(10 * retries); // wait and retry return refreshOptions(assigner, ++retries); } - throwPluginError( - 'Stored Options not Found for Ready Model!', - assigner.modelName, + return Promise.reject( + PluginError( + 'Stored Options not Found for Ready Model!', + assigner.modelName, + ), ); } // todo Handle this case if (!freshOptions) { - throwPluginError('AssignId unexpectedly not Ready', assigner.modelName); + return Promise.reject( + PluginError('AssignId unexpectedly not Ready', assigner.modelName), + ); } checkAndUpdateOptions(assigner.options, freshOptions as any); diff --git a/src/utils/configure-schema.ts b/src/utils/configure-schema.ts index 41d6448..906a4c2 100644 --- a/src/utils/configure-schema.ts +++ b/src/utils/configure-schema.ts @@ -1,7 +1,7 @@ import { Document } from 'mongoose'; import { MongooseIdAssigner } from '../MongooseIdAssigner'; import { assignIdNetwork, assignIdNoNetwork } from './assign-fields-ids'; -import { throwPluginError } from './others'; +import { PluginError } from './others'; function configureIndexes(assignId: MongooseIdAssigner) { const schema = assignId.schema; @@ -33,7 +33,7 @@ function configurePreSave(assigner: MongooseIdAssigner) { if (doc.isNew) { if (assigner.state.error) { return Promise.reject( - throwPluginError( + PluginError( `Cannot assign field ids, Error on Init. [${ assigner.state.error }]`, diff --git a/src/utils/get-next-ids/get-next-id-number.ts b/src/utils/get-next-ids/get-next-id-number.ts index 30cfb16..b39de9f 100644 --- a/src/utils/get-next-ids/get-next-id-number.ts +++ b/src/utils/get-next-ids/get-next-id-number.ts @@ -1,6 +1,6 @@ import { NumberFieldConfig } from '../../assigner.interfaces'; import { MongooseIdAssigner } from '../../MongooseIdAssigner'; -import { throwPluginError, waitPromise } from '../index'; +import { PluginError, waitPromise } from '../index'; export async function getNextIdNumber( field: string, @@ -53,10 +53,12 @@ export async function getNextIdNumber( ++retries, ); } else if (!update.value && retries > idAssigner.retryTime) { - throwPluginError( - `Maximum retryTime to set value attained!`, - idAssigner.modelName, - field, + return Promise.reject( + PluginError( + `Maximum retryTime to set value attained!`, + idAssigner.modelName, + field, + ), ); } } catch (e) { diff --git a/src/utils/get-next-ids/get-next-id-string.ts b/src/utils/get-next-ids/get-next-id-string.ts index 1ced936..68e0375 100644 --- a/src/utils/get-next-ids/get-next-id-string.ts +++ b/src/utils/get-next-ids/get-next-id-string.ts @@ -1,6 +1,6 @@ import { StringFieldConfig } from '../../assigner.interfaces'; import { MongooseIdAssigner } from '../../MongooseIdAssigner'; -import { throwPluginError, waitPromise } from '../index'; +import { PluginError, waitPromise } from '../index'; import { stringIncrementer } from './utils/string-incrementer'; export async function getNextIdString( @@ -53,10 +53,12 @@ export async function getNextIdString( ++retries, ); } else if (!update.value && retries > idAssigner.retryTime) { - throwPluginError( - `Maximum retryTime to set value attained!`, - idAssigner.modelName, - field, + return Promise.reject( + PluginError( + `Maximum retryTime to set value attained!`, + idAssigner.modelName, + field, + ), ); } } catch (e) { diff --git a/src/utils/get-next-ids/utils/string-incrementer.ts b/src/utils/get-next-ids/utils/string-incrementer.ts index da9e2df..b8c3eed 100644 --- a/src/utils/get-next-ids/utils/string-incrementer.ts +++ b/src/utils/get-next-ids/utils/string-incrementer.ts @@ -1,4 +1,4 @@ -import { throwPluginError } from '../../others'; +import { PluginError } from '../../others'; /** * Increments a given id from nextId @@ -30,7 +30,7 @@ export function stringIncrementer(nextId: string, separator = '-'): string { let digits = nextId.substr(firstDash + 1) as any; if (isNaN(digits++)) { - throwPluginError( + throw PluginError( `Wrong nextId format, must end with number from separator. ` + `e.g separator: - nextIds => 9434034, 4dc34-34, IBSN-093JDS-number. ` + `Could not increment from nextId: ${nextId}, separator: : (${separator})`, diff --git a/src/utils/initialise-options.ts b/src/utils/initialise-options.ts index 4c8702c..ff27cf2 100644 --- a/src/utils/initialise-options.ts +++ b/src/utils/initialise-options.ts @@ -3,7 +3,7 @@ import { Document, Model } from 'mongoose'; import { FieldConfig } from '../assigner.interfaces'; import { localStateStore } from '../LocalStateStore'; import { MongooseIdAssigner, NormalisedOptions } from '../MongooseIdAssigner'; -import { throwPluginError, waitPromise } from './others'; +import { PluginError, waitPromise } from './others'; import { isNumber, isString } from './type-guards'; interface OptionsCheckResults { @@ -151,9 +151,11 @@ async function refreshDBOptions( // new options requests deletion of old options // but those options have been updated by another process if (!update || !update.ok) { - throwPluginError( - 'Error at initialisation, cannot delete old options, Still in use!', - idAssigner.modelName, + return Promise.reject( + PluginError( + 'Error at initialisation, cannot delete old options, Still in use!', + idAssigner.modelName, + ), ); } } @@ -165,13 +167,14 @@ async function refreshDBOptions( }); return 1; } else { - throwPluginError(`Initialisation error ${update}`, idAssigner.modelName); - return 3; + return Promise.reject( + PluginError(`Initialisation error ${update}`, idAssigner.modelName), + ); } } catch (e) { if (e.code === 11000) { if (retries > 30) { - throwPluginError( + throw PluginError( 'Initialisation error, maximum retries attained', idAssigner.modelName, ); @@ -246,9 +249,8 @@ export async function initialiseOptions( return Promise.reject(e); } } else { - throwPluginError( + throw PluginError( 'Initialisation failed, cannot establish db connection not established!', ); - return 0; } } diff --git a/src/utils/normalise-options.ts b/src/utils/normalise-options.ts index d4503a7..b07b192 100644 --- a/src/utils/normalise-options.ts +++ b/src/utils/normalise-options.ts @@ -6,7 +6,7 @@ import { StringFieldConfig, } from '../assigner.interfaces'; import { NormalisedOptions } from '../MongooseIdAssigner'; -import { throwPluginError } from './others'; +import { PluginError } from './others'; import { isNumber, isObjectId, isString, isUUID } from './type-guards'; function checkFieldConfig( @@ -25,7 +25,11 @@ function checkFieldConfig( config.asBinary = !!config.asBinary; if (!(config.version === 4 || config.version === 1)) { - throwPluginError(`UUID version must be either 1 or 4!`, modelName, field); + throw PluginError( + `UUID version must be either 1 or 4!`, + modelName, + field, + ); } return false; } @@ -34,7 +38,7 @@ function checkFieldConfig( !(config as any).nextId || typeof (config as any).nextId !== config.type.toLowerCase() ) { - throwPluginError( + throw PluginError( 'nextId is required, should have as type ' + config.type, modelName, field, @@ -45,12 +49,12 @@ function checkFieldConfig( (config as StringFieldConfig).nextIdFunction && typeof (config as StringFieldConfig).nextIdFunction !== 'function' ) { - throwPluginError('nextIdFunction must be a `Function`!', modelName, field); + throw PluginError('nextIdFunction must be a `Function`!', modelName, field); } if (isNumber(config)) { if (config.incrementBy && typeof config.incrementBy !== 'number') { - throwPluginError( + throw PluginError( 'incrementBy must be of type `number`!', modelName, field, @@ -61,7 +65,7 @@ function checkFieldConfig( typeof config.nextIdFunction(config.nextId, config.incrementBy) !== 'number' ) { - throwPluginError( + throw PluginError( 'nextIdFunction must return nextId of type `number`!', modelName, field, @@ -72,7 +76,7 @@ function checkFieldConfig( if (isString(config) && config.nextIdFunction) { if (typeof config.nextIdFunction(config.nextId) !== 'string') { - throwPluginError( + throw PluginError( 'nextIdFunction must return nextId of type `string`!', modelName, field, @@ -131,7 +135,7 @@ function normaliseFieldsConfigMap( default: // Number and String - throwPluginError( + throw PluginError( `nextId not provided for field type ${fieldConfig}!`, modelName, field, @@ -149,7 +153,7 @@ function normaliseFieldsConfigMap( (fieldConfig && typeof fieldConfig !== 'object') || !FieldConfigTypes[fieldConfig.type] ) { - throwPluginError( + throw PluginError( `Unknown FieldConfigType ${fieldConfig}`, modelName, field, @@ -174,7 +178,7 @@ export function normaliseOptions( options?: AssignerOptions, ): NormalisedOptions { if (!modelName) { - throw throwPluginError('Plugin `modelName` must be defined!'); + throw PluginError('Plugin `modelName` must be defined!'); } const normalised: NormalisedOptions = { diff --git a/src/utils/others.ts b/src/utils/others.ts index e1f2492..2b33e43 100644 --- a/src/utils/others.ts +++ b/src/utils/others.ts @@ -2,12 +2,12 @@ export function waitPromise(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } -export function throwPluginError( +export function PluginError( message: string, modelName?: string, field?: string, ) { - throw new Error( + return new Error( `[MongooseIdAssigner], ${modelName ? 'Model: ' + modelName + ', ' : ''}${ field ? 'Field: ' + field + ', ' : '' }${message}`, From 8cd974d33d69069935abe46e1df6e8a1ee0dddcb Mon Sep 17 00:00:00 2001 From: mernxl Date: Sun, 12 May 2019 02:11:26 +0100 Subject: [PATCH 28/52] fix: `document must have an _id before saving` issue BREAKING CHANGE: @see https://github.com/Automattic/mongoose/issues/5073 MongooseIdAssigner WILL NOT BE initialised using Models. Plugin can now only be used by calling `schema.plugin(MongooseIdAssigner, options)` or `schema.plugin(MongooseIdAssigner.plugin, options)` To get IdAssigner Instance, 1: Get from `localStateStore.getIdAssigner(schema)` 2: Use `const IA = MongooseIdAssigner.plugin(schema, options)` 3: Use `const IA = new MongooseIdAssigner(schema, options)` --- package.json | 7 +- src/LocalStateStore.ts | 10 + src/MongooseIdAssigner.ts | 52 ++--- src/__tests__/LocalStateStore.spec.ts | 25 ++- src/__tests__/MongooseIdAssigner.spec.ts | 120 +++++------ yarn.lock | 247 ++++++++++------------- 6 files changed, 203 insertions(+), 258 deletions(-) diff --git a/package.json b/package.json index 6ac8ad6..01ada15 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "event-to-promise": "^0.8.0" }, "peerDependencies": { - "mongoose": ">=4.3.6 || <4.8.0" + "mongoose": ">=4.3.6 || >=5.0.0" }, "optionalDependencies": { "uuid": ">=3.0.1" @@ -52,6 +52,7 @@ "^.+\\.tsx?$": "ts-jest" }, "testRegex": "(/__tests__/.*|(\\.|/)spec)\\.(jsx?|tsx?)$", + "testEnvironment": "node", "moduleFileExtensions": [ "ts", "tsx", @@ -65,14 +66,14 @@ "@types/event-to-promise": "^0.7.0", "@types/jest": "^23.3.0", "@types/mongodb-memory-server": "^1.8.0", - "@types/mongoose": "^4.7.45", + "@types/mongoose": "^5.5.0", "@types/uuid": "^3.4.3", "babel-core": "^6.26.3", "babel-jest": "^23.4.2", "flow-bin": "^0.77.0", "jest": "^23.4.1", "mongodb-memory-server": "^1.9.0", - "mongoose": "4.7.9", + "mongoose": "^5.5.7", "prettier": "^1.13.7", "rimraf": "^2.6.2", "semantic-release": "^15.8.1", diff --git a/src/LocalStateStore.ts b/src/LocalStateStore.ts index 4dc7679..3358f31 100644 --- a/src/LocalStateStore.ts +++ b/src/LocalStateStore.ts @@ -53,6 +53,16 @@ export class LocalStateStore { } } + getIdAssigner(schema: Schema) { + const state = this.getState(schema); + + if (!state) { + throw PluginError(`schema's state not found in store.`); + } + + return state.idAssigner; + } + clear() { this.stateMap.clear(); } diff --git a/src/MongooseIdAssigner.ts b/src/MongooseIdAssigner.ts index c1e71a8..220f8ae 100644 --- a/src/MongooseIdAssigner.ts +++ b/src/MongooseIdAssigner.ts @@ -46,35 +46,27 @@ export class MongooseIdAssigner extends EventEmitter { public readonly retryMillis: number; public readonly options: NormalisedOptions; - private readonly asPlugin: boolean; - - constructor(model: Model, options?: AssignerOptions, asPlugin = false) { + constructor(schema: Schema, options: AssignerPluginOptions) { super(); - if (!asPlugin && (!model || !model.schema || !model.modelName)) { - throwPluginError( - `Provide a Model to the Constructor, you provided ${model}!`, - ); + if (!schema) { + throw PluginError('Schema for the IdAssigner Must be provided!'); } - let schema: Schema; - let modelName: string; - - if (asPlugin) { - modelName = (options as AssignerPluginOptions).modelName; - schema = model as any; - } else { - modelName = model.modelName; - schema = model.schema; + if (!options || (options && !options.modelName)) { + throw PluginError( + 'Plugin Options must be specified, with schema modelName!', + ); } + const modelName = options.modelName; + if (localStateStore.getState(schema)) { - throwPluginError( - 'Provided Model already has an Assigner Instance!', + throw PluginError( + 'Provided Schema already has an Assigner Instance!', modelName, ); } this.schema = schema; - this.asPlugin = asPlugin; this.modelName = modelName; this.discriminatorKey = schema.get('discriminatorKey'); @@ -87,11 +79,8 @@ export class MongooseIdAssigner extends EventEmitter { readyState: 0, idAssigner: this, }); + configureSchema(this); - if (!asPlugin) { - this.appendState({ model }); - this.initialise().then(); - } } get readyState() { @@ -119,14 +108,7 @@ export class MongooseIdAssigner extends EventEmitter { } static plugin(schema: Schema, options: AssignerPluginOptions) { - if (!schema) { - throwPluginError('Should be called using schema.plugin'); - } - if (!options) { - throw throwPluginError('Plugin Options not specified!'); - } - const IA = new MongooseIdAssigner(schema as any, options, true); - return !!IA; + return new MongooseIdAssigner(schema, options); } refreshOptions(): Promise { @@ -205,15 +187,11 @@ export class MongooseIdAssigner extends EventEmitter { localStateStore.setState(this.schema, { ...this.state, ...state }); } - initialise(modelInstance?: Model): Promise { + initialise(modelInstance: Model): Promise { if (this.state.readyState === 0) { this.appendState({ readyState: 2 }); - if (!this.asPlugin) { - modelInstance = this.state.model; - } - - return initialiseOptions(modelInstance as any, this); + return initialiseOptions(modelInstance, this); } return this.state.readyState === 1 diff --git a/src/__tests__/LocalStateStore.spec.ts b/src/__tests__/LocalStateStore.spec.ts index 0c589ee..6c4d106 100644 --- a/src/__tests__/LocalStateStore.spec.ts +++ b/src/__tests__/LocalStateStore.spec.ts @@ -40,16 +40,21 @@ describe('LocalStateStore', () => { describe('setCollName()', () => { let exampleIA: MongooseIdAssigner; let count = 0; + let modelName = ''; + + beforeEach(() => { + modelName = 'Example' + ++count; + }); it('should set Assigner collection Name', async () => { // at bootstrapping, before any IA initialises localStateStore.clear(); localStateStore.setCollName('newName'); - const ExampleModel = mongoose.model('Example' + ++count, ExampleSchema); - exampleIA = new MongooseIdAssigner(ExampleModel); + exampleIA = new MongooseIdAssigner(ExampleSchema, { modelName }); + const ExampleModel = mongoose.model(modelName, ExampleSchema); try { - await exampleIA.initialise(); + await exampleIA.initialise(ExampleModel); expect(exampleIA.collection.collectionName).toBe('newName'); } catch (e) { expect(e).toBeUndefined(); @@ -58,11 +63,11 @@ describe('LocalStateStore', () => { it('should throw Error if an Assigner already Initialised', async () => { localStateStore.clear(); - const ExampleModel = mongoose.model('Example' + ++count, ExampleSchema); - exampleIA = new MongooseIdAssigner(ExampleModel); + exampleIA = new MongooseIdAssigner(ExampleSchema, { modelName }); + const ExampleModel = mongoose.model(modelName, ExampleSchema); try { - await exampleIA.initialise(); + await exampleIA.initialise(ExampleModel); expect(() => localStateStore.setCollName('newName')).toThrowError( /(setCollName)/, ); @@ -77,11 +82,9 @@ describe('LocalStateStore', () => { beforeAll(() => { localStateStore.clear(); - exampleIA = new MongooseIdAssigner( - ExampleSchema as any, - { modelName: 'example' } as any, - true, - ); + exampleIA = new MongooseIdAssigner(ExampleSchema, { + modelName: 'example', + }); }); it('should emit events on idAssigner corresponding to idAssigner readyState', async () => { diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index 09649c6..5b637dd 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -1,15 +1,13 @@ -import { Binary, ObjectID } from 'bson'; +import { Binary } from 'bson'; import { Document, Model, Schema, Types } from 'mongoose'; import { getMongoose } from '../__mocks__/mongoose.config'; import { getSchema } from '../__mocks__/test.models'; import { - AssignerOptions, AssignerPluginOptions, FieldConfigTypes, } from '../assigner.interfaces'; import { localStateStore } from '../LocalStateStore'; import { MongooseIdAssigner } from '../MongooseIdAssigner'; -import { waitPromise } from '../utils'; const mongoose = getMongoose(); @@ -35,17 +33,17 @@ describe('MongooseIdAssigner', () => { }); describe('basics', () => { - it('should throw error if no model passed at Constructor', () => { - expect(() => new MongooseIdAssigner('' as any)).toThrowError( - /(Provide a Model to the Constructor)/, - ); + it('should throw error if no schema passed at Constructor', () => { + expect( + () => new MongooseIdAssigner('' as any, { modelName }), + ).toThrowError(/(Schema for the IdAssigner Must be provided!)/); }); - it('should throw error if using same model to instantiate IdAssigner', () => { - const repeat = mongoose.model('repeat', exampleSchema); - expect(new MongooseIdAssigner(repeat)).toBeTruthy(); - expect(() => new MongooseIdAssigner(repeat)).toThrowError( - /(Provided Model already has an Assigner Instance!)/, + it('should throw error if no option or modelName passed at Constructor', () => { + expect( + () => new MongooseIdAssigner(exampleSchema, undefined as any), + ).toThrowError( + /(Plugin Options must be specified, with schema modelName!)/, ); }); @@ -69,30 +67,17 @@ describe('MongooseIdAssigner', () => { expect(doc._id).toBeTruthy(); }); - it('should apply and initialise plugin by calling new MongooseIdAssigner with model', async () => { - exampleModel = mongoose.model('example2', exampleSchema); - - const ExampleIA = new MongooseIdAssigner(exampleModel); - expect(ExampleIA).toBeInstanceOf(MongooseIdAssigner); - // next tick - await waitPromise(1); - expect(ExampleIA.readyState).toBe(1); - - const doc = await exampleModel.create({ personId: 'mernxl' }); - - expect(doc._id).toBeTruthy(); - }); - it('should create noNetwork with UUID and ObjectId', async () => { - exampleModel = mongoose.model('example4', exampleSchema); - - const ExampleIA = new MongooseIdAssigner(exampleModel, { + const ExampleIA = new MongooseIdAssigner(exampleSchema, { + modelName: 'example4', fields: { _id: FieldConfigTypes.UUID, objectIdField: FieldConfigTypes.ObjectId, }, }); + exampleModel = mongoose.model('example4', exampleSchema); + try { const doc = await exampleModel.create({ personId: 'mernxl' }); @@ -209,7 +194,8 @@ describe('MongooseIdAssigner', () => { }); it('should be robust enough to avoid duplicates', async () => { - const options: AssignerOptions = { + const options: AssignerPluginOptions = { + modelName: 'example8', fields: { _id: '33333', photoId: 44444, @@ -232,15 +218,16 @@ describe('MongooseIdAssigner', () => { }; try { + const ExampleIA = new MongooseIdAssigner(exampleSchema, options); + exampleModel = mongoose.model('example8', exampleSchema); - const ExampleIA = new MongooseIdAssigner(exampleModel, options); - expect(ExampleIA.readyState).toBe(2); // initialising + expect(ExampleIA.readyState).toBe(0); // initialising // initialise to ensure that // model is set and db is connected // before performing heavy tasks // or you can set max event listeners to 100 to suppress warnings on waits - await ExampleIA.initialise(); + await ExampleIA.initialise(exampleModel); expect(ExampleIA.readyState).toBe(1); @@ -286,9 +273,10 @@ describe('MongooseIdAssigner', () => { describe('instance', () => { describe('collection', () => { it('should return the IdAssigner Collection', async () => { + const ExampleIA = new MongooseIdAssigner(exampleSchema, { modelName }); exampleModel = mongoose.model(modelName, exampleSchema); - const ExampleIA = new MongooseIdAssigner(exampleModel); - await ExampleIA.initialise(); + + await ExampleIA.initialise(exampleModel); expect(ExampleIA.collection.collectionName).toMatch( localStateStore.getCollName(), @@ -296,23 +284,16 @@ describe('MongooseIdAssigner', () => { }); it('should throw error if IdAssigner not Initialise', async () => { - const ExampleIA = new MongooseIdAssigner( - exampleSchema as any, - { modelName } as any, - true, - ); + const ExampleIA = new MongooseIdAssigner(exampleSchema, { modelName }); expect(() => ExampleIA.collection).toThrowError( /(Cannot read Model, Not Initialised)/, ); }); - it('should throw error if IdAssigner Erred on initialise', async () => { - const ExampleIA = new MongooseIdAssigner( - exampleSchema as any, - { modelName } as any, - true, - ); + it('should throw error if IdAssigner Errored on initialise', async () => { + const ExampleIA = new MongooseIdAssigner(exampleSchema, { modelName }); + ExampleIA.appendState({ error: new Error('I Occurred') }); expect(() => ExampleIA.collection).toThrowError( @@ -323,8 +304,8 @@ describe('MongooseIdAssigner', () => { describe('initialise()', () => { it('should initialise the plugin without passing model', () => { - exampleModel = mongoose.model('example9', exampleSchema); - const ExampleIA = new MongooseIdAssigner(exampleModel, { + const ExampleIA = new MongooseIdAssigner(exampleSchema, { + modelName: 'example9', fields: { _id: { type: FieldConfigTypes.String, @@ -334,15 +315,17 @@ describe('MongooseIdAssigner', () => { }, }); - return ExampleIA.initialise() + exampleModel = mongoose.model('example9', exampleSchema); + + return ExampleIA.initialise(exampleModel) .then(state => expect(state).toBe(1)) .catch(e => expect(e).toBeUndefined()); }); it('should return state if called multiple times', () => { expect.assertions(2); - exampleModel = mongoose.model('example10', exampleSchema); - const ExampleIA = new MongooseIdAssigner(exampleModel, { + const ExampleIA = new MongooseIdAssigner(exampleSchema, { + modelName: 'example10', fields: { _id: { type: FieldConfigTypes.String, @@ -352,11 +335,13 @@ describe('MongooseIdAssigner', () => { }, }); + exampleModel = mongoose.model('example10', exampleSchema); + ExampleIA.initialise(exampleModel) .then(state => expect(state).toBe(1)) .catch(e => expect(e).toBeUndefined()); - return ExampleIA.initialise() + return ExampleIA.initialise(exampleModel) .then(state => expect(state).toBe(1)) .catch(e => expect(e).toBeUndefined()); }); @@ -375,11 +360,7 @@ describe('MongooseIdAssigner', () => { }, }; - const characterIA = new MongooseIdAssigner( - characterSchema as any, - options, - true, - ); + const characterIA = new MongooseIdAssigner(characterSchema, options); try { await characterIA.getNextId('not-found', 'Person13'); @@ -390,14 +371,13 @@ describe('MongooseIdAssigner', () => { } }); it('should return nextId depending on fieldConfig', async () => { - const options: AssignerOptions = { + const exampleIA = new MongooseIdAssigner(exampleSchema, { + modelName: 'example14', fields: { photoId: 4444, }, - }; - + }); const model = mongoose.model('example14', exampleSchema); - const exampleIA = new MongooseIdAssigner(model, options); try { await model.create({ photoId: 21 }); @@ -414,13 +394,15 @@ describe('MongooseIdAssigner', () => { it('should throw error if no schema passed in', () => { expect(() => MongooseIdAssigner.plugin('' as any, {} as any), - ).toThrowError(/(Should be called using schema.plugin)/); + ).toThrowError(/(Schema for the IdAssigner Must be provided!)/); }); it('should throw error if no options passed', () => { expect(() => MongooseIdAssigner.plugin(new Schema({}), '' as any), - ).toThrowError(/(Plugin Options not specified!)/); + ).toThrowError( + /(Plugin Options must be specified, with schema modelName!)/, + ); }); it('should apply plugin to schema', async () => { @@ -447,7 +429,8 @@ describe('MongooseIdAssigner', () => { }); it('should create noNetwork discriminators', async () => { - const options: AssignerOptions = { + const options: AssignerPluginOptions = { + modelName: 'example11', fields: { _id: FieldConfigTypes.GUID, }, @@ -461,8 +444,8 @@ describe('MongooseIdAssigner', () => { }, }; + const CharacterIA = new MongooseIdAssigner(characterSchema, options); const characterModel = mongoose.model('example11', characterSchema); - const CharacterIA = new MongooseIdAssigner(characterModel, options); const personModel = characterModel.discriminator( 'Person1', personSchema, @@ -529,7 +512,7 @@ describe('MongooseIdAssigner', () => { const droid1 = await droidModel.create({ friends: 'placeholder' }); expect((character as any).someId).toBe(4444); - expect((person as any)._id).toBeInstanceOf(ObjectID); + expect(typeof (person as any)._id).toBe('string'); expect((person as any).someId).toBe(4445); expect((person as any).license).toBe('786-TSJ-000'); expect((droid as any)._id).toMatch(/-+/); @@ -547,7 +530,8 @@ describe('MongooseIdAssigner', () => { }); it('should request and update respective fields, even if configured at base and discriminators', async () => { - const options: AssignerOptions = { + const options: AssignerPluginOptions = { + modelName, fields: { _id: '786-DEF-000', someId: 4444, @@ -568,8 +552,8 @@ describe('MongooseIdAssigner', () => { }, }; + const CharacterIA = new MongooseIdAssigner(characterSchema, options); const characterModel = mongoose.model(modelName, characterSchema); - const CharacterIA = new MongooseIdAssigner(characterModel, options); personSchema.path('_id', String); const personModel = characterModel.discriminator( diff --git a/yarn.lock b/yarn.lock index 89ed53b..ff23a0d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -145,10 +145,10 @@ "@types/events" "*" "@types/node" "*" -"@types/mongoose@^4.7.45": - version "4.7.45" - resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-4.7.45.tgz#a21dd93c9858230fb4d95d5620997e89f40548c0" - integrity sha512-IAFsl0kzMbiWBN19w8O5MChcSTziKnQ5r367Wo5q3F8uD8Tx4RNcgGmGAbnekcuPA3OsAndzAk0bndW0fXENqg== +"@types/mongoose@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.5.0.tgz#282f3327d328f0e5e5d024cc520ee5d45404a055" + integrity sha512-LIuVYQ/6y3ak5f+0C6J+t1ufZA/dM0bqkmEHOtbPO6pH/VB09Tn+BoTh2T2/UbkKH4SLdvupQQRBuCu3XXxynQ== dependencies: "@types/mongodb" "*" "@types/node" "*" @@ -392,29 +392,22 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4" - integrity sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ= - dependencies: - lodash "^4.14.0" - async@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" dependencies: lodash "^4.14.0" -async@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.1.4: +async@2.6.1, async@^2.1.4: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: lodash "^4.17.10" +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -629,14 +622,10 @@ block-stream@*: dependencies: inherits "~2.0.0" -bluebird@2.10.2: - version "2.10.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.10.2.tgz#024a5517295308857f14f91f1106fc3b555f446b" - integrity sha1-AkpVFylTCIV/FPkfEQb8O1VfRGs= - -bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1: +bluebird@3.5.1, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" + integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== bottleneck@^2.0.1: version "2.6.0" @@ -700,10 +689,10 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -bson@~1.0.4: - version "1.0.9" - resolved "https://registry.yarnpkg.com/bson/-/bson-1.0.9.tgz#12319f8323b1254739b7c6bef8d3e89ae05a2f57" - integrity sha512-IQX9/h7WdMBIW/q/++tGd+emQr0XMdeZ6icnT/74Xk9fnabWn+gZgpE+9V+gujL3hhJOoNrnDVY7tWdzc7NUTg== +bson@^1.1.1, bson@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/bson/-/bson-1.1.1.tgz#4330f5e99104c4e751e7351859e2d408279f2f13" + integrity sha512-jCGVYLoYMHDkOsbwJZBCqwMHyH4c+wzgI9hG7Z6SZJRXWr+x58pdIbm2i9a/jFGCkRJqRUr8eoI7lDWa0hTkxg== btoa-lite@^1.0.0: version "1.0.0" @@ -732,11 +721,6 @@ buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" -buffer-shims@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" - integrity sha1-mXjOMXOIxkmth5MCjDR37wRKi1E= - buffer@^3.0.1: version "3.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb" @@ -1218,13 +1202,6 @@ dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" -debug@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - integrity sha1-+HBX6ZWxofauaklgZkE3vFbwOdo= - dependencies: - ms "0.7.1" - debug@3.1.0, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -1505,11 +1482,6 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -es6-promise@3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4" - integrity sha1-7FYjOGgDKQkgcXDDlEjiREndH8Q= - es6-promise@^4.0.3: version "4.2.4" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" @@ -2187,11 +2159,6 @@ hook-std@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-1.1.0.tgz#7f76b74b6f96d3cd4106afb50a66bdb0af2d2a2d" -hooks-fixed@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-1.2.0.tgz#0d2772d4d7d685ff9244724a9f0b5b2559aac96b" - integrity sha1-DSdy1NfWhf+SRHJKnwtbJVmqyWs= - hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" @@ -3087,10 +3054,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -kareem@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/kareem/-/kareem-1.2.0.tgz#59851e833feb1ce6cf60000e0c23acf75c8a3547" - integrity sha1-WYUegz/rHObPYAAODCOs91yKNUc= +kareem@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.0.tgz#ef33c42e9024dce511eeaf440cd684f3af1fc769" + integrity sha512-6hHxsp9e6zQU8nXsP+02HGWXwTkOEw6IROhF2ZA28cYbUk4eJ6QbtZvdqZOdD9YPKghG3apk5eOCvs+tLl3lRg== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -3421,6 +3388,11 @@ mem@^1.1.0: dependencies: mimic-fn "^1.0.0" +memory-pager@^1.0.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" + integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== + meow@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" @@ -3588,13 +3560,27 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" -mongodb-core@2.1.7: - version "2.1.7" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.7.tgz#6a27909b98142ef2508d924c274969008954fa29" - integrity sha1-aieQm5gULvJQjZJMJ0lpAIlU+ik= +mongodb-core@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.2.3.tgz#eb9bcb876f169f5843fd135f7f7686dbac0e9e34" + integrity sha512-UyI0rmvPPkjOJV8XGWa9VCTq7R4hBVipimhnAXeSXnuAPjuTqbyfA5Ec9RcYJ1Hhu+ISnc8bJ1KfGZd4ZkYARQ== + dependencies: + bson "^1.1.1" + require_optional "^1.0.1" + safe-buffer "^5.1.2" + optionalDependencies: + saslprep "^1.0.0" + +mongodb-core@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.2.4.tgz#6731b46c5f367bfeca94a0989e0dcb9f54e95208" + integrity sha512-Ea/fjVntuj0nhLPuDPj54Kce+w4Ee6b1oSM2EvNB4OdwXJ5WIEh79st9/FRZVKwGnc2oB19P1SMSC1noOBXUCQ== dependencies: - bson "~1.0.4" - require_optional "~1.0.0" + bson "^1.1.1" + require_optional "^1.0.1" + safe-buffer "^5.1.2" + optionalDependencies: + saslprep "^1.0.0" mongodb-memory-server@^1.9.0: version "1.9.3" @@ -3612,31 +3598,36 @@ mongodb-memory-server@^1.9.0: tmp "^0.0.33" uuid "^3.2.1" -mongodb@2.2.22: - version "2.2.22" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.22.tgz#d67c588fc08f922db19754b1d2e03e2d7d1319fb" - integrity sha1-1nxYj8CPki2xl1Sx0uA+LX0TGfs= - dependencies: - es6-promise "3.2.1" - mongodb-core "2.1.7" - readable-stream "2.1.5" - -mongoose@4.7.9: - version "4.7.9" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.7.9.tgz#7a860161d649789699b1363fb5d47ed957748200" - integrity sha1-eoYBYdZJeJaZsTY/tdR+2Vd0ggA= - dependencies: - async "2.1.4" - bson "~1.0.4" - hooks-fixed "1.2.0" - kareem "1.2.0" - mongodb "2.2.22" - mpath "0.2.1" - mpromise "0.5.5" - mquery "2.0.0" - ms "0.7.2" - muri "1.2.0" +mongodb@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.2.3.tgz#4610ee33d300caa74329c2dd03e137210723cd91" + integrity sha512-jw8UyPsq4QleZ9z+t/pIVy3L++51vKdaJ2Q/XXeYxk/3cnKioAH8H6f5tkkDivrQL4PUgUOHe9uZzkpRFH1XtQ== + dependencies: + mongodb-core "^3.2.3" + safe-buffer "^5.1.2" + +mongoose-legacy-pluralize@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" + integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== + +mongoose@^5.5.7: + version "5.5.7" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.5.7.tgz#496d2142b594579adaba5d4e3f1cc70c5a9ddd74" + integrity sha512-Xs4SVuMGkMRdmKZ6ATGVvbp2pjI+KENCNhPZMnksjU3ZerkJHGhWKrUE1A6e/5iZ2lTu6Oz9AOPcfrDgp6BCUw== + dependencies: + async "2.6.1" + bson "~1.1.1" + kareem "2.3.0" + mongodb "3.2.3" + mongodb-core "3.2.3" + mongoose-legacy-pluralize "1.0.2" + mpath "0.6.0" + mquery "3.2.0" + ms "2.1.1" regexp-clone "0.0.1" + safe-buffer "5.1.2" + sift "7.0.1" sliced "1.0.1" move-concurrently@^1.0.1: @@ -3650,48 +3641,30 @@ move-concurrently@^1.0.1: rimraf "^2.5.4" run-queue "^1.0.3" -mpath@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.2.1.tgz#3a4e829359801de96309c27a6b2e102e89f9e96e" - integrity sha1-Ok6Ck1mAHeljCcJ6ay4QLon56W4= - -mpromise@0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mpromise/-/mpromise-0.5.5.tgz#f5b24259d763acc2257b0a0c8c6d866fd51732e6" - integrity sha1-9bJCWddjrMIlewoMjG2Gb9UXMuY= +mpath@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.6.0.tgz#aa922029fca4f0f641f360e74c5c1b6a4c47078e" + integrity sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw== -mquery@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mquery/-/mquery-2.0.0.tgz#b5abc850b90dffc3e10ae49b4b6e7a479752df22" - integrity sha1-tavIULkN/8PhCuSbS256R5dS3yI= +mquery@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.0.tgz#e276472abd5109686a15eb2a8e0761db813c81cc" + integrity sha512-qPJcdK/yqcbQiKoemAt62Y0BAc0fTEKo1IThodBD+O5meQRJT/2HSe5QpBNwaa4CjskoGrYWsEyjkqgiE0qjhg== dependencies: - bluebird "2.10.2" - debug "2.2.0" + bluebird "3.5.1" + debug "3.1.0" regexp-clone "0.0.1" - sliced "0.0.5" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - integrity sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg= - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - integrity sha1-riXPJRKziFodldfwN4aNhDESR2U= + safe-buffer "5.1.2" + sliced "1.0.1" ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -ms@^2.0.0: +ms@2.1.1, ms@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - -muri@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/muri/-/muri-1.2.0.tgz#b86383c902920b09ebe62af0e75c94de5f33cd3d" - integrity sha1-uGODyQKSCwnr5irw51yU3l8zzT0= + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== mute-stream@~0.0.4: version "0.0.7" @@ -4442,11 +4415,6 @@ private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - integrity sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M= - process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" @@ -4678,19 +4646,6 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" - integrity sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA= - dependencies: - buffer-shims "^1.0.0" - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - string_decoder "~0.10.x" - util-deprecate "~1.0.1" - readable-stream@~1.1.10: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -4828,7 +4783,7 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -require_optional@~1.0.0: +require_optional@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" integrity sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g== @@ -4903,7 +4858,7 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -4932,6 +4887,13 @@ sane@^2.0.0: optionalDependencies: fsevents "^1.2.3" +saslprep@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" + integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== + dependencies: + sparse-bitfield "^3.0.3" + sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -5035,6 +4997,11 @@ shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" +sift@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/sift/-/sift-7.0.1.tgz#47d62c50b159d316f1372f8b53f9c10cd21a4b08" + integrity sha512-oqD7PMJ+uO6jV9EQCl0LrRw1OwsiPsiFQR5AR30heR+4Dl7jBBbDLnNvWiak20tzZlSE1H7RB30SX/1j/YYT7g== + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" @@ -5055,11 +5022,6 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -sliced@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/sliced/-/sliced-0.0.5.tgz#5edc044ca4eb6f7816d50ba2fc63e25d8fe4707f" - integrity sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8= - sliced@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" @@ -5184,6 +5146,13 @@ source-map@^0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" +sparse-bitfield@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" + integrity sha1-/0rm5oZWBWuks+eSqzM004JzyhE= + dependencies: + memory-pager "^1.0.2" + spawn-error-forwarder@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz#1afd94738e999b0346d7b9fc373be55e07577029" From 5b7b66f9dda77ec665eced54183538a57e9a3890 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sun, 12 May 2019 02:29:11 +0100 Subject: [PATCH 29/52] fix(flow-types): update flow types with latest changes --- src/LocalStateStore.js.flow | 3 ++- src/MongooseIdAssigner.js.flow | 16 +++++----------- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/LocalStateStore.js.flow b/src/LocalStateStore.js.flow index 643c961..293d5f9 100644 --- a/src/LocalStateStore.js.flow +++ b/src/LocalStateStore.js.flow @@ -1,6 +1,6 @@ /* @flow */ -import type { MongooseModel, MongooseSchema } from 'mongoose'; +import type { MongooseModel, MongooseSchema, Schema } from 'mongoose'; import { MongooseIdAssigner } from './MongooseIdAssigner'; export type SchemaState = { @@ -18,6 +18,7 @@ declare export class LocalStateStore { constructor(): this; getState(schema: MongooseSchema): SchemaState; setState(schema: MongooseSchema, state: SchemaState): void; + getIdAssigner(schema: Schema): MongooseIdAssigner; clear(): void; /** diff --git a/src/MongooseIdAssigner.js.flow b/src/MongooseIdAssigner.js.flow index cc42f7b..7a872d9 100644 --- a/src/MongooseIdAssigner.js.flow +++ b/src/MongooseIdAssigner.js.flow @@ -1,13 +1,8 @@ /* @flow */ -import type { ObjectId } from 'mongoose'; import EventEmitter from 'events'; -import type { MongooseSchema, MongooseModel } from 'mongoose'; -import type { - AssignerOptions, - AssignerPluginOptions, - FieldConfig, -} from './assigner.interfaces'; +import type { MongooseModel, MongooseSchema, ObjectId } from 'mongoose'; +import type { AssignerPluginOptions, FieldConfig } from './assigner.interfaces'; import type { SchemaState } from './LocalStateStore'; export interface NormalisedOptions { @@ -33,7 +28,7 @@ declare export class MongooseIdAssigner extends EventEmitter { retryMillis: number; options: NormalisedOptions; readyState: number; - constructor(model: MongooseModel, options?: AssignerOptions): this; + constructor(schema: MongooseSchema, options?: AssignerPluginOptions): this; state: SchemaState; collection: any; static plugin( @@ -48,15 +43,14 @@ declare export class MongooseIdAssigner extends EventEmitter { getNextId( field: string, discriminator?: string, - ): Promise< - | void + ): Promise<| void | ObjectId | Buffer | string | number | Promise | Promise, - >; + >; appendState(state: $Shape): void; initialise(modelInstance: MongooseModel): Promise; } From fcd0c3b3adc50d91c23bfae809306a4091430318 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sun, 12 May 2019 02:30:12 +0100 Subject: [PATCH 30/52] docs: update docs to reflect package changes, make description shorter --- README.md | 34 ++++++++++++++++++++-------------- package.json | 2 +- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 2a96fae..685fb0d 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ yarn add uuid ## Basic Usage ### Plugin Options -TypeName: **AssignerOptions** +TypeName: **AssignerPluginOptions** - `modelName`: **String** Name of the Model your are working with. If discriminators, then provide baseModel Name. - `fields`: **AssignerFieldsConfigMap?** The configuration Map of the fields you want the assigner to assign ids to. If undefined, then plugin assigns ids to `_id` field, (ObjectId). @@ -60,6 +60,8 @@ TypeName: **AssignerOptions** the last app to init always gives most recent field configs, if the db have a field that is not in the most recent field config, it is auto dropped. Therefore always make sure all your micro-service clusters start up with same fieldsConfigs as the last to start rewrites the db and only keeps nextIds. +- Always Setup plugin before creating Mongoose Model for that schema. + - Always set FieldConfig Type to reflect schema's path Type, that is if schema Type is `Number`, then use `Number` FieldConfigType. See `ExampleSchema` below with its associated IdAssigners. @@ -105,12 +107,13 @@ console.log(doc._id) ---> '5b57a1d929239e59b4e3d7f3' // schema field typ console.log(doc.uuidFieldString) ---> '7729e2e0-8f8b-11e8-882d-2dade78bb893' ``` -**Method 2**: Using the `MongooseIdAssigner` constructor, it takes in the `Model` instance as first parameter, then options as second, returning IdAssigner Instance. -You can now use the IdAssigner instance to request `nextId`s for particular fields. +**Method 2**: Using the `MongooseIdAssigner` constructor, it takes in the `schema` as first parameter, then options as second, returning IdAssigner Instance. +You can now initialise and use the IdAssigner instance to request `nextId`s for particular fields. Options Type: `AssignerOptions`. ```typescript -const options: AssignerOptions = { +const options: AssignerPluginOptions = { + modelName: 'ExampleModel', fields: { _id: { type: FieldConfigTypes.String, @@ -123,14 +126,14 @@ const options: AssignerOptions = { asBinary: true, versionOptions: { rng: (Function) Random # generator function that returns an Array[16] of byte values (0-255) // UUID doc - } - } + }, + }, }, }; -const ExampleModel = mongoose.model('ExampleModel', ExampleSchema); +const ExampleIA = new MongooseIdAssigner(ExampleSchema, options); -const ExampleIA = new MongooseIdAssigner(ExampleModel, options); +const ExampleModel = mongoose.model('ExampleModel', ExampleSchema); const doc1 = await ExampleModel.create({name: 'Mongoose'}); @@ -168,7 +171,8 @@ const DroidSchema = new mongoose.Schema({ make: String, }); -const options: AssignerOptions = { +const options: AssignerPluginOptions = { + modelName: 'example10', fields: { someId: 4444, }, @@ -188,8 +192,8 @@ const options: AssignerOptions = { }, }; +const CharacterIA = new MongooseIdAssigner(characterSchema, options); const characterModel = mongoose.model('example10', characterSchema); -const CharacterIA = new MongooseIdAssigner(characterModel, options); const personModel = characterModel.discriminator('Person', personSchema); const droidModel = characterModel.discriminator('Droid', droidSchema); @@ -332,7 +336,8 @@ import { AssignerOptions, FieldConfigTypes, localStateStore, MongooseIdAssigner describe('MongooseIdAssigner', () => { it('should be robust enough to avoid duplicates', async () => { - const options: AssignerOptions = { + const options: AssignerPluginOptions = { + modelName: 'example8', fields: { _id: '33333', photoId: 44444, @@ -355,15 +360,16 @@ describe('MongooseIdAssigner', () => { }; try { + const ExampleIA = new MongooseIdAssigner(exampleSchema, options); + exampleModel = mongoose.model('example8', exampleSchema); - const ExampleIA = new MongooseIdAssigner(exampleModel, options); - expect(ExampleIA.readyState).toBe(2); // initialising + expect(ExampleIA.readyState).toBe(0); // initialising // initialise to ensure that // model is set and db is connected // before performing heavy tasks // or you can set max event listeners to 100 to suppress warnings on waits - await ExampleIA.initialise(); + await ExampleIA.initialise(exampleModel); expect(ExampleIA.readyState).toBe(1); diff --git a/package.json b/package.json index 01ada15..e1baf6e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mongoose-id-assigner", "version": "0.0.0-semantically-released", - "description": "A Mongoose Plugin. Easily Manage fields that need an id(unique value) on your mongoose model. This plugin does the work of generating, incrementing, and assigning those values(unique) to those fields.", + "description": "A Mongoose Plugin. Automatically assign values to different fields on a document.", "author": "mernxl ", "license": "MIT", "repository": "https://github.com/mernxl/mongoose-id-assigner.git", From d625f9d3b65d4f4ad9e85ec533442671734938d2 Mon Sep 17 00:00:00 2001 From: mernxl Date: Sun, 12 May 2019 02:34:29 +0100 Subject: [PATCH 31/52] fix(flow-types): change typescript Schema to flow MongooseSchema --- src/LocalStateStore.js.flow | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/LocalStateStore.js.flow b/src/LocalStateStore.js.flow index 293d5f9..bddbb42 100644 --- a/src/LocalStateStore.js.flow +++ b/src/LocalStateStore.js.flow @@ -1,6 +1,6 @@ /* @flow */ -import type { MongooseModel, MongooseSchema, Schema } from 'mongoose'; +import type { MongooseModel, MongooseSchema } from 'mongoose'; import { MongooseIdAssigner } from './MongooseIdAssigner'; export type SchemaState = { @@ -18,7 +18,7 @@ declare export class LocalStateStore { constructor(): this; getState(schema: MongooseSchema): SchemaState; setState(schema: MongooseSchema, state: SchemaState): void; - getIdAssigner(schema: Schema): MongooseIdAssigner; + getIdAssigner(schema: MongooseSchema): MongooseIdAssigner; clear(): void; /** From a0540926919f446fb3b13f288a30e7cf750f22c9 Mon Sep 17 00:00:00 2001 From: mernxl Date: Wed, 4 Dec 2019 04:59:52 +0100 Subject: [PATCH 32/52] chore(deps): switch to `mongodb-memory-server-global` bump to v^6.0 --- package.json | 2 +- yarn.lock | 268 +++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 239 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index e1baf6e..f49cdbf 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "babel-jest": "^23.4.2", "flow-bin": "^0.77.0", "jest": "^23.4.1", - "mongodb-memory-server": "^1.9.0", + "mongodb-memory-server-global": "^6.0.2", "mongoose": "^5.5.7", "prettier": "^1.13.7", "rimraf": "^2.6.2", diff --git a/yarn.lock b/yarn.lock index ff23a0d..3bd7fb3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -198,6 +198,13 @@ agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: dependencies: es6-promisify "^5.0.0" +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + agentkeepalive@^3.4.1: version "3.5.1" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.1.tgz#4eba75cf2ad258fc09efd506cdb8d8c2971d35a4" @@ -392,12 +399,6 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.4.0.tgz#4990200f18ea5b837c2cc4f8c031a6985c385611" - dependencies: - lodash "^4.14.0" - async@2.6.1, async@^2.1.4: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" @@ -824,6 +825,11 @@ camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + capture-exit@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" @@ -1010,6 +1016,11 @@ commander@~2.8.1: dependencies: graceful-readlink ">= 1.0.0" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + compare-func@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" @@ -1160,6 +1171,15 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" + integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" @@ -1214,6 +1234,13 @@ debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" +debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -1287,6 +1314,11 @@ decompress@^4.2.0: pify "^2.3.0" strip-dirs "^2.0.0" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" @@ -1742,10 +1774,24 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +find-cache-dir@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.1.0.tgz#9935894999debef4cf9f677fdf646d002c4cdecb" + integrity sha512-zw+EFiNBNPgI2NTrKkDd1xd7q0cs6wr/iWnr/oUkI0yF9K9GqQ+riIt4aiyFaaqpaWbxPrJXHI+QvmNUQbX+0Q== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.0" + pkg-dir "^4.1.0" + find-npm-prefix@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/find-npm-prefix/-/find-npm-prefix-1.0.2.tgz#8d8ce2c78b3b4b9e66c8acc6a37c231eb841cfdf" +find-package-json@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/find-package-json/-/find-package-json-1.2.0.tgz#4057d1b943f82d8445fe52dc9cf456f6b8b58083" + integrity sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw== + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -1765,6 +1811,14 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + find-versions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-2.0.0.tgz#2ad90d490f6828c1aa40292cf709ac3318210c3c" @@ -1930,9 +1984,12 @@ get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" -get-port@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.0.0.tgz#373c85960138ee20027c070e3cb08019fea29816" +get-port@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.0.0.tgz#aa22b6b86fd926dd7884de3e23332c9f70c031a6" + integrity sha512-imzMU0FjsZqNa6BqOjbbW6w5BivHIuQKopjpPqcnx0AVHJQKCxK1O+Ab3OrVXhrekqfVMjwA9ZYu062R+KcIsQ== + dependencies: + type-fest "^0.3.0" get-stream@^2.2.0: version "2.3.1" @@ -1955,11 +2012,12 @@ get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" -getos@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.0.tgz#db3aa4df15a3295557ce5e81aa9e3e5cdfaa6567" +getos@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.1.1.tgz#967a813cceafee0156b0483f7cffa5b3eff029c5" + integrity sha512-oUP1rnEhAr97rkitiszGP9EgDVYnmchgFzfqRzSkgtfv7ai6tEi7Ko8GgjNXts7VLWEqrTWyhsOKLe5C5b/Zkg== dependencies: - async "2.4.0" + async "2.6.1" getpass@^0.1.1: version "0.1.7" @@ -2026,6 +2084,18 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -2195,6 +2265,14 @@ https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: agent-base "^4.1.0" debug "^3.1.0" +https-proxy-agent@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz#b8c286433e87602311b01c8ea34413d856a4af81" + integrity sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -3190,6 +3268,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lock-verify@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.0.2.tgz#148e4f85974915c9e3c34d694b7de9ecb18ee7a8" @@ -3262,7 +3347,7 @@ lodash.without@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" -lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.1: +lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" @@ -3300,6 +3385,13 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" + integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + dependencies: + semver "^6.0.0" + "make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" @@ -3582,21 +3674,43 @@ mongodb-core@^3.2.3: optionalDependencies: saslprep "^1.0.0" -mongodb-memory-server@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/mongodb-memory-server/-/mongodb-memory-server-1.9.3.tgz#a1dbe2ca6ec7436e4cb6e481d5f4e3a24b97d304" +mongodb-memory-server-core@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/mongodb-memory-server-core/-/mongodb-memory-server-core-6.0.2.tgz#393130f8cf26ac4595be01cebb24b3eb7886faf3" + integrity sha512-hAoJz+V4LkhsIxDU1i0HZDcLFA/zKqOXtCWIgNSlymFAXObdkZKHl+16/TzbifNCWJexOwum4hgOha2ROHLD1g== dependencies: - babel-runtime "^6.26.0" - debug "^3.1.0" + camelcase "^5.3.1" + cross-spawn "^7.0.1" + debug "^4.1.1" decompress "^4.2.0" - get-port "^4.0.0" - getos "^3.1.0" - https-proxy-agent "^2.2.1" + dedent "^0.7.0" + find-cache-dir "^3.0.0" + find-package-json "^1.2.0" + get-port "^5.0.0" + getos "^3.1.1" + https-proxy-agent "^3.0.0" lockfile "^1.0.4" md5-file "^4.0.0" mkdirp "^0.5.1" - tmp "^0.0.33" - uuid "^3.2.1" + tmp "^0.1.0" + uuid "^3.3.3" + optionalDependencies: + mongodb "^3.2.7" + +mongodb-memory-server-global@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/mongodb-memory-server-global/-/mongodb-memory-server-global-6.0.2.tgz#84ef0b5b223380a047ffdb7ac5e601391f9180fc" + integrity sha512-URqXU42InV2DMF/ISJ/EOYvPOj8W7H9IMp63jsZHLMFSJIrhxMXjSwjm+VYMtE0GCHzAkgOA69Soe9YoNggeFQ== + dependencies: + mongodb-memory-server "6.0.2" + os "^0.1.1" + +mongodb-memory-server@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/mongodb-memory-server/-/mongodb-memory-server-6.0.2.tgz#c52ae4ac6b182d053988244c95c1243d09784e2b" + integrity sha512-9gMmZeb1g/AFMcB63qk7t8IypsWiq/YOQLQPU10yKFuzX5xTGynRfv48oijl6+WyxPqHmp4iahkD+9w1MpYwDg== + dependencies: + mongodb-memory-server-core "6.0.2" mongodb@3.2.3: version "3.2.3" @@ -3606,6 +3720,17 @@ mongodb@3.2.3: mongodb-core "^3.2.3" safe-buffer "^5.1.2" +mongodb@^3.2.7: + version "3.3.5" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.3.5.tgz#38d531013afede92b0dd282e3b9f3c08c9bdff3b" + integrity sha512-6NAv5gTFdwRyVfCz+O+KDszvjpyxmZw+VlmqmqKR2GmpkeKrKFRv/ZslgTtZba2dc9JYixIf99T5Gih7TIWv7Q== + dependencies: + bson "^1.1.1" + require_optional "^1.0.1" + safe-buffer "^5.1.2" + optionalDependencies: + saslprep "^1.0.0" + mongoose-legacy-pluralize@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" @@ -3666,6 +3791,11 @@ ms@2.1.1, ms@^2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -4138,10 +4268,15 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" +os@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/os/-/os-0.1.1.tgz#208845e89e193ad4d971474b93947736a56d13f3" + integrity sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M= + osenv@0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" @@ -4175,6 +4310,13 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" +p-limit@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -4187,6 +4329,13 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-map@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" @@ -4311,6 +4460,11 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -4323,6 +4477,11 @@ path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + path-parse@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" @@ -4380,6 +4539,13 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -4848,6 +5014,13 @@ rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2. dependencies: glob "^7.0.5" +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" @@ -4950,6 +5123,11 @@ semver-regex@^1.0.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -4989,10 +5167,22 @@ shebang-command@^1.2.0: dependencies: shebang-regex "^1.0.0" +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -5451,11 +5641,12 @@ tiny-relative-date@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/tiny-relative-date/-/tiny-relative-date-1.3.0.tgz#fa08aad501ed730f31cc043181d995c39a935e07" -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" +tmp@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== dependencies: - os-tmpdir "~1.0.2" + rimraf "^2.6.3" tmpl@1.0.x: version "1.0.4" @@ -5582,6 +5773,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -5716,10 +5912,15 @@ util.promisify@^1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -uuid@>=3.0.1, uuid@^3.2.1, uuid@^3.3.2: +uuid@>=3.0.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" +uuid@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -5798,6 +5999,13 @@ which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" From e525fa06739c50e2bcb735f691ffaad335189c1f Mon Sep 17 00:00:00 2001 From: mernxl Date: Wed, 4 Dec 2019 05:03:30 +0100 Subject: [PATCH 33/52] chore(deps): bump deV mongoose to v5.5.32 --- package.json | 5 +-- yarn.lock | 104 ++++++++++++++++----------------------------------- 2 files changed, 35 insertions(+), 74 deletions(-) diff --git a/package.json b/package.json index f49cdbf..23fc3bb 100644 --- a/package.json +++ b/package.json @@ -65,15 +65,14 @@ "devDependencies": { "@types/event-to-promise": "^0.7.0", "@types/jest": "^23.3.0", - "@types/mongodb-memory-server": "^1.8.0", - "@types/mongoose": "^5.5.0", + "@types/mongoose": "^5.5.32", "@types/uuid": "^3.4.3", "babel-core": "^6.26.3", "babel-jest": "^23.4.2", "flow-bin": "^0.77.0", "jest": "^23.4.1", "mongodb-memory-server-global": "^6.0.2", - "mongoose": "^5.5.7", + "mongoose": "^5.7.13", "prettier": "^1.13.7", "rimraf": "^2.6.2", "semantic-release": "^15.8.1", diff --git a/yarn.lock b/yarn.lock index 3bd7fb3..6eb79ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -131,12 +131,6 @@ version "23.3.1" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.1.tgz#a4319aedb071d478e6f407d1c4578ec8156829cf" -"@types/mongodb-memory-server@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@types/mongodb-memory-server/-/mongodb-memory-server-1.8.0.tgz#43c8cf2142b18d0a2cda4b1bac9749d29939e4a4" - dependencies: - "@types/node" "*" - "@types/mongodb@*": version "3.1.3" resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.1.3.tgz#73a2dba96cc10e9c9b0670a1a34a0caefe2c6c37" @@ -145,10 +139,10 @@ "@types/events" "*" "@types/node" "*" -"@types/mongoose@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.5.0.tgz#282f3327d328f0e5e5d024cc520ee5d45404a055" - integrity sha512-LIuVYQ/6y3ak5f+0C6J+t1ufZA/dM0bqkmEHOtbPO6pH/VB09Tn+BoTh2T2/UbkKH4SLdvupQQRBuCu3XXxynQ== +"@types/mongoose@^5.5.32": + version "5.5.32" + resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-5.5.32.tgz#8a76c5be029086c1225bf88ed3ca83f01181121f" + integrity sha512-2BemWy7SynT87deweqc2eCzg6pRyTVlnnMat2JxsTNoyeSFKC27b19qBTeKRfBVt+SjtaWd/ud4faUaObONwBA== dependencies: "@types/mongodb" "*" "@types/node" "*" @@ -3132,10 +3126,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -kareem@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.0.tgz#ef33c42e9024dce511eeaf440cd684f3af1fc769" - integrity sha512-6hHxsp9e6zQU8nXsP+02HGWXwTkOEw6IROhF2ZA28cYbUk4eJ6QbtZvdqZOdD9YPKghG3apk5eOCvs+tLl3lRg== +kareem@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.1.tgz#def12d9c941017fabfb00f873af95e9c99e1be87" + integrity sha512-l3hLhffs9zqoDe8zjmb/mAN4B8VT3L56EUvKNqLFVs9YlFA+zx7ke1DO8STAdDyYNkeSo1nKmjuvQeI12So8Xw== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -3652,28 +3646,6 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" -mongodb-core@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.2.3.tgz#eb9bcb876f169f5843fd135f7f7686dbac0e9e34" - integrity sha512-UyI0rmvPPkjOJV8XGWa9VCTq7R4hBVipimhnAXeSXnuAPjuTqbyfA5Ec9RcYJ1Hhu+ISnc8bJ1KfGZd4ZkYARQ== - dependencies: - bson "^1.1.1" - require_optional "^1.0.1" - safe-buffer "^5.1.2" - optionalDependencies: - saslprep "^1.0.0" - -mongodb-core@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.2.4.tgz#6731b46c5f367bfeca94a0989e0dcb9f54e95208" - integrity sha512-Ea/fjVntuj0nhLPuDPj54Kce+w4Ee6b1oSM2EvNB4OdwXJ5WIEh79st9/FRZVKwGnc2oB19P1SMSC1noOBXUCQ== - dependencies: - bson "^1.1.1" - require_optional "^1.0.1" - safe-buffer "^5.1.2" - optionalDependencies: - saslprep "^1.0.0" - mongodb-memory-server-core@6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/mongodb-memory-server-core/-/mongodb-memory-server-core-6.0.2.tgz#393130f8cf26ac4595be01cebb24b3eb7886faf3" @@ -3712,15 +3684,7 @@ mongodb-memory-server@6.0.2: dependencies: mongodb-memory-server-core "6.0.2" -mongodb@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.2.3.tgz#4610ee33d300caa74329c2dd03e137210723cd91" - integrity sha512-jw8UyPsq4QleZ9z+t/pIVy3L++51vKdaJ2Q/XXeYxk/3cnKioAH8H6f5tkkDivrQL4PUgUOHe9uZzkpRFH1XtQ== - dependencies: - mongodb-core "^3.2.3" - safe-buffer "^5.1.2" - -mongodb@^3.2.7: +mongodb@3.3.5, mongodb@^3.2.7: version "3.3.5" resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.3.5.tgz#38d531013afede92b0dd282e3b9f3c08c9bdff3b" integrity sha512-6NAv5gTFdwRyVfCz+O+KDszvjpyxmZw+VlmqmqKR2GmpkeKrKFRv/ZslgTtZba2dc9JYixIf99T5Gih7TIWv7Q== @@ -3736,21 +3700,19 @@ mongoose-legacy-pluralize@1.0.2: resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== -mongoose@^5.5.7: - version "5.5.7" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.5.7.tgz#496d2142b594579adaba5d4e3f1cc70c5a9ddd74" - integrity sha512-Xs4SVuMGkMRdmKZ6ATGVvbp2pjI+KENCNhPZMnksjU3ZerkJHGhWKrUE1A6e/5iZ2lTu6Oz9AOPcfrDgp6BCUw== +mongoose@^5.7.13: + version "5.7.13" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.7.13.tgz#d8ebbc15cfb19d014cf1fbd4b7af413d75952d46" + integrity sha512-MoTCETTIfXU1PqIYc+YAkhSB3uzK5xseh6ysAUnoOowkqS66OjBJtsL/bcgAKi6XfMYkFU6M1abKyuL7k//xeg== dependencies: - async "2.6.1" bson "~1.1.1" - kareem "2.3.0" - mongodb "3.2.3" - mongodb-core "3.2.3" + kareem "2.3.1" + mongodb "3.3.5" mongoose-legacy-pluralize "1.0.2" mpath "0.6.0" - mquery "3.2.0" - ms "2.1.1" - regexp-clone "0.0.1" + mquery "3.2.2" + ms "2.1.2" + regexp-clone "1.0.0" safe-buffer "5.1.2" sift "7.0.1" sliced "1.0.1" @@ -3771,14 +3733,14 @@ mpath@0.6.0: resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.6.0.tgz#aa922029fca4f0f641f360e74c5c1b6a4c47078e" integrity sha512-i75qh79MJ5Xo/sbhxrDrPSEG0H/mr1kcZXJ8dH6URU5jD/knFxCVqVC/gVSW7GIXL/9hHWlT9haLbCXWOll3qw== -mquery@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.0.tgz#e276472abd5109686a15eb2a8e0761db813c81cc" - integrity sha512-qPJcdK/yqcbQiKoemAt62Y0BAc0fTEKo1IThodBD+O5meQRJT/2HSe5QpBNwaa4CjskoGrYWsEyjkqgiE0qjhg== +mquery@3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/mquery/-/mquery-3.2.2.tgz#e1383a3951852ce23e37f619a9b350f1fb3664e7" + integrity sha512-XB52992COp0KP230I3qloVUbkLUxJIu328HBP2t2EsxSFtf4W1HPSOBWOXf1bqxK4Xbb66lfMJ+Bpfd9/yZE1Q== dependencies: bluebird "3.5.1" debug "3.1.0" - regexp-clone "0.0.1" + regexp-clone "^1.0.0" safe-buffer "5.1.2" sliced "1.0.1" @@ -3786,16 +3748,16 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -ms@2.1.1, ms@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: +ms@2.1.2, ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -4866,10 +4828,10 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp-clone@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-0.0.1.tgz#a7c2e09891fdbf38fbb10d376fb73003e68ac589" - integrity sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk= +regexp-clone@1.0.0, regexp-clone@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" + integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== registry-auth-token@^3.0.1, registry-auth-token@^3.3.1: version "3.3.2" From 6d5fa95a3f9fdf1b587a10d2399c77cae0683ed7 Mon Sep 17 00:00:00 2001 From: mernxl Date: Wed, 4 Dec 2019 05:30:00 +0100 Subject: [PATCH 34/52] test: refactor to suit changes in mongo-memory-server, add test cases --- package.json | 4 +++- src/__mocks__/mongoose.config.ts | 38 +++++++++++++++++--------------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 23fc3bb..6b9c1ba 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,10 @@ "flow": "./node_modules/.bin/flow", "lint": "tslint -p ./", "jest:watch": "IN_MEM=true jest --watch", - "coverage": "IN_MEM=true jest --coverage --maxWorkers 2", + "coverage": "jest --coverage --maxWorkers 2", + "test-mongo-vers": "IN_MEM=true MONGOMS_VERSION=3 coverage && rimraf coverage && IN_MEM=true MONGOMS_VERSION=4 coverage", "test": "yarn run lint && yarn run coverage && yarn run tsc && yarn run flow", + "test-ci": "yarn run lint && yarn run test-mongo-vers && yarn run tsc && yarn run flow", "clean": "rimraf lib", "prettier": "yarn run prettier-ts && yarn run prettier-flow", "prettier-ts": "prettier --write --config .prettierrc \"src/**/*.ts\"", diff --git a/src/__mocks__/mongoose.config.ts b/src/__mocks__/mongoose.config.ts index e9d703c..886c6f8 100644 --- a/src/__mocks__/mongoose.config.ts +++ b/src/__mocks__/mongoose.config.ts @@ -1,7 +1,14 @@ -import MongodbMemoryServer from 'mongodb-memory-server'; +import { MongoMemoryServer } from 'mongodb-memory-server-global'; +import { ConnectionOptions } from 'mongoose'; import * as mongoose from 'mongoose'; -(mongoose as any).Promise = Promise; +const mongooseOptions: ConnectionOptions = { + promiseLibrary: Promise, + autoReconnect: true, + reconnectTries: Number.MAX_VALUE, + reconnectInterval: 1000, + useNewUrlParser: true, +}; const IN_MEM = !!process.env.IN_MEM; @@ -9,15 +16,9 @@ export function getMongoose() { if (IN_MEM) { jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; - const originalConnect = mongoose.connect; - (mongoose as any).connect = async () => { - const mongoServer = new MongodbMemoryServer(); - - const mongoUri = await mongoServer.getConnectionString(true); - - // originalConnect.bind(mongoose)(mongoUri, { useMongoClient: true }); // mongoose 4 - originalConnect.bind(mongoose)(mongoUri, { useNewUrlParser: true }); // mongoose 5 + const mongoServer = new MongoMemoryServer(); + mongoServer.getConnectionString().then(async mongoUri => { mongoose.connection.on('error', e => { if (e.message.code === 'ETIMEDOUT') { console.error(e); @@ -27,22 +28,23 @@ export function getMongoose() { }); mongoose.connection.once('open', () => { - // console.log(`MongoDB successfully connected to ${mongoUri}`); + console.log(`MongoDB successfully connected to ${mongoUri}`); }); - mongoose.connection.once('disconnected', () => { - // console.log('MongoDB disconnected!'); - mongoServer.stop(); - }); - }; - (mongoose as any).connect(); + mongoose.connection.once('disconnected', () => mongoServer.stop()); + + await mongoose.connect( + mongoUri, + mongooseOptions, + ); + }); return mongoose; } else { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; mongoose.connect( 'mongodb://localhost:27017/demoDB', - { useNewUrlParser: true }, + mongooseOptions, ); return mongoose; From 80ee61c9b40f5f0c7724b37ca4de50ddfc611239 Mon Sep 17 00:00:00 2001 From: mernxl Date: Wed, 4 Dec 2019 05:31:58 +0100 Subject: [PATCH 35/52] ci: add new node_js test environments, change test script Now test for Mongo v3, v4 --- .travis.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6997d95..f7b06a6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,17 +4,18 @@ cache: yarn: true directories: - node_modules - - $HOME/.mongodb-binaries + - $HOME/.cache notifications: email: true node_js: - - "9" + - "12" + - "10" - "8" env: global: - TEST_SITE=travis-ci script: - - yarn run test + - yarn run test-ci - yarn run build after_success: - 'curl -Lo travis_after_all.py https://git.io/travis_after_all' From 7c452ff24c3ad199344188603639033c9b8b81d7 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 03:30:04 +0100 Subject: [PATCH 36/52] test: add mongo versions 3.4 3.6 4.0 and 4.2 to tests, change local test db to __mgIdAss__ --- package.json | 3 ++- src/__mocks__/mongoose.config.ts | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6b9c1ba..f3b1a29 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,9 @@ "flow": "./node_modules/.bin/flow", "lint": "tslint -p ./", "jest:watch": "IN_MEM=true jest --watch", + "jest": "jest --maxWorkers 2", "coverage": "jest --coverage --maxWorkers 2", - "test-mongo-vers": "IN_MEM=true MONGOMS_VERSION=3 coverage && rimraf coverage && IN_MEM=true MONGOMS_VERSION=4 coverage", + "test-mongo-vers": "IN_MEM=true MONGOMS_VERSION=3.4 yarn run jest && IN_MEM=true MONGOMS_VERSION=3.6 yarn run jest && IN_MEM=true MONGOMS_VERSION=4.0 yarn run jest && IN_MEM=true MONGOMS_VERSION=4.2 yarn run coverage", "test": "yarn run lint && yarn run coverage && yarn run tsc && yarn run flow", "test-ci": "yarn run lint && yarn run test-mongo-vers && yarn run tsc && yarn run flow", "clean": "rimraf lib", diff --git a/src/__mocks__/mongoose.config.ts b/src/__mocks__/mongoose.config.ts index 886c6f8..2c34012 100644 --- a/src/__mocks__/mongoose.config.ts +++ b/src/__mocks__/mongoose.config.ts @@ -12,7 +12,15 @@ const mongooseOptions: ConnectionOptions = { const IN_MEM = !!process.env.IN_MEM; +let init = false; + export function getMongoose() { + if (init) { + return mongoose; + } + + init = true; + if (IN_MEM) { jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; @@ -43,10 +51,14 @@ export function getMongoose() { } else { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; mongoose.connect( - 'mongodb://localhost:27017/demoDB', + 'mongodb://localhost:27017/__mgIdAss__', mongooseOptions, ); + mongoose.connection.once('open', () => { + console.log(`MongoDB successfully connected local`); + }); + return mongoose; } } From 3dbcfad3b0dd6a847600f5e1c5a51219230174e1 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 03:48:33 +0100 Subject: [PATCH 37/52] test: fix error downloading mongod binary, former default url didn't have file error: UnhandledPromiseRejectionWarning: Error: Too small (243 bytes) mongod binary downloaded from https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.4.tgz @see https://github.com/nodkz/mongodb-memory-server/issues/163 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f3b1a29..d9d15cb 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "jest:watch": "IN_MEM=true jest --watch", "jest": "jest --maxWorkers 2", "coverage": "jest --coverage --maxWorkers 2", - "test-mongo-vers": "IN_MEM=true MONGOMS_VERSION=3.4 yarn run jest && IN_MEM=true MONGOMS_VERSION=3.6 yarn run jest && IN_MEM=true MONGOMS_VERSION=4.0 yarn run jest && IN_MEM=true MONGOMS_VERSION=4.2 yarn run coverage", + "test-mongo-vers": "export MONGOMS_DOWNLOAD_MIRROR=\"http://downloads.mongodb.org\" && IN_MEM=true MONGOMS_VERSION=3.4 yarn run jest && IN_MEM=true MONGOMS_VERSION=3.6 yarn run jest && IN_MEM=true MONGOMS_VERSION=4.0 yarn run jest && IN_MEM=true MONGOMS_VERSION=4.2 yarn run coverage", "test": "yarn run lint && yarn run coverage && yarn run tsc && yarn run flow", "test-ci": "yarn run lint && yarn run test-mongo-vers && yarn run tsc && yarn run flow", "clean": "rimraf lib", From 8673e674976cdc3438fd552714c95d038e1ecdc7 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 05:13:18 +0100 Subject: [PATCH 38/52] ci: specify `xenial` as the ubuntu distribution to use --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f7b06a6..1e19f91 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,5 @@ sudo: false +dist: xenial language: node_js cache: yarn: true From 8b7a85f9980e71b84ba37108001628da2023c026 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 05:15:52 +0100 Subject: [PATCH 39/52] test: setup mongodb binaries download mirror --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d9d15cb..72e51c6 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "jest:watch": "IN_MEM=true jest --watch", "jest": "jest --maxWorkers 2", "coverage": "jest --coverage --maxWorkers 2", - "test-mongo-vers": "export MONGOMS_DOWNLOAD_MIRROR=\"http://downloads.mongodb.org\" && IN_MEM=true MONGOMS_VERSION=3.4 yarn run jest && IN_MEM=true MONGOMS_VERSION=3.6 yarn run jest && IN_MEM=true MONGOMS_VERSION=4.0 yarn run jest && IN_MEM=true MONGOMS_VERSION=4.2 yarn run coverage", + "test-mongo-vers": "export MONGOMS_DOWNLOAD_MIRROR=\"http://downloads.mongodb.org\" && IN_MEM=true MONGOMS_VERSION=v3.4-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v3.6-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v4.0-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v4.2-latest yarn run coverage", "test": "yarn run lint && yarn run coverage && yarn run tsc && yarn run flow", "test-ci": "yarn run lint && yarn run test-mongo-vers && yarn run tsc && yarn run flow", "clean": "rimraf lib", From e9ad951d3b79bd959e4b1eca41ab25adcddef945 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 06:03:59 +0100 Subject: [PATCH 40/52] chore(deps): bump devDeps, prettier, typescript, tslint --- package.json | 10 +++--- yarn.lock | 86 ++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 69 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 72e51c6..7367330 100644 --- a/package.json +++ b/package.json @@ -76,14 +76,14 @@ "jest": "^23.4.1", "mongodb-memory-server-global": "^6.0.2", "mongoose": "^5.7.13", - "prettier": "^1.13.7", + "prettier": "^1.19.1", "rimraf": "^2.6.2", "semantic-release": "^15.8.1", "ts-jest": "^23.0.1", - "tslint": "^5.11.0", - "tslint-config-prettier": "^1.14.0", - "tslint-plugin-prettier": "^1.3.0", - "typescript": "^3.0.1", + "tslint": "^5.20.1", + "tslint-config-prettier": "^1.18.0", + "tslint-plugin-prettier": "^2.0.1", + "typescript": "^3.7.3", "uuid": ">=3.0.1" } } diff --git a/yarn.lock b/yarn.lock index 6eb79ea..cc28c8b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@babel/code-frame@^7.0.0": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== + dependencies: + "@babel/highlight" "^7.0.0" + "@babel/code-frame@^7.0.0-beta.35": version "7.0.0-rc.1" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz#5c2154415d6c09959a71845ef519d11157e95d10" @@ -16,6 +23,15 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -419,7 +435,7 @@ aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" -babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -1396,6 +1412,11 @@ diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" +diff@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" + integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== + dir-glob@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" @@ -3037,10 +3058,18 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -"js-tokens@^3.0.0 || ^4.0.0": +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@^3.7.0, js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" @@ -3229,6 +3258,11 @@ libnpx@^10.2.0: y18n "^4.0.0" yargs "^11.0.0" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -4528,9 +4562,10 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@^1.13.7: - version "1.14.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.2.tgz#0ac1c6e1a90baa22a62925f41963c841983282f9" +prettier@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== pretty-format@^23.5.0: version "23.5.0" @@ -5685,37 +5720,43 @@ tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" -tslint-config-prettier@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.14.0.tgz#860b36634e53f4c70c64c51ff3ef7fd9bbab7676" +tslint-config-prettier@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" + integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== -tslint-plugin-prettier@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/tslint-plugin-prettier/-/tslint-plugin-prettier-1.3.0.tgz#7eb65d19ea786a859501a42491b78c5de2031a3f" +tslint-plugin-prettier@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tslint-plugin-prettier/-/tslint-plugin-prettier-2.0.1.tgz#95b6a3b766622ffc44375825d7760225c50c3680" + integrity sha512-4FX9JIx/1rKHIPJNfMb+ooX1gPk5Vg3vNi7+dyFYpLO+O57F4g+b/fo1+W/G0SUOkBLHB/YKScxjX/P+7ZT/Tw== dependencies: eslint-plugin-prettier "^2.2.0" + lines-and-columns "^1.1.6" tslib "^1.7.1" -tslint@^5.11.0: - version "5.11.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" +tslint@^5.20.1: + version "5.20.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d" + integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg== dependencies: - babel-code-frame "^6.22.0" + "@babel/code-frame" "^7.0.0" builtin-modules "^1.1.1" chalk "^2.3.0" commander "^2.12.1" - diff "^3.2.0" + diff "^4.0.1" glob "^7.1.1" - js-yaml "^3.7.0" + js-yaml "^3.13.1" minimatch "^3.0.4" + mkdirp "^0.5.1" resolve "^1.3.2" semver "^5.3.0" tslib "^1.8.0" - tsutils "^2.27.2" + tsutils "^2.29.0" -tsutils@^2.27.2: +tsutils@^2.29.0: version "2.29.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" + integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== dependencies: tslib "^1.8.1" @@ -5744,9 +5785,10 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.0.1.tgz#43738f29585d3a87575520a4b93ab6026ef11fdb" +typescript@^3.7.3: + version "3.7.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.3.tgz#b36840668a16458a7025b9eabfad11b66ab85c69" + integrity sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw== uglify-js@^2.6: version "2.8.29" From 03ca36c6aceb8cf620b4ce0f69ec8b6c18f233cc Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 06:08:32 +0100 Subject: [PATCH 41/52] refactor: refactor to suit bump in devDeps, remove YAGNI condition --- src/assigner.interfaces.ts | 3 ++- src/utils/configure-schema.ts | 4 +--- src/utils/normalise-options.ts | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/assigner.interfaces.ts b/src/assigner.interfaces.ts index 4368b5c..3ac0532 100644 --- a/src/assigner.interfaces.ts +++ b/src/assigner.interfaces.ts @@ -50,7 +50,8 @@ export type FieldConfig = { | DefaultFieldConfig | StringFieldConfig | NumberFieldConfig - | UUIDFieldConfig); + | UUIDFieldConfig +); /** * fieldConfig = string, then nextId = string, default incrementer, diff --git a/src/utils/configure-schema.ts b/src/utils/configure-schema.ts index 906a4c2..7fd6623 100644 --- a/src/utils/configure-schema.ts +++ b/src/utils/configure-schema.ts @@ -34,9 +34,7 @@ function configurePreSave(assigner: MongooseIdAssigner) { if (assigner.state.error) { return Promise.reject( PluginError( - `Cannot assign field ids, Error on Init. [${ - assigner.state.error - }]`, + `Cannot assign field ids, Error on Init. [${assigner.state.error}]`, assigner.modelName, ), ); diff --git a/src/utils/normalise-options.ts b/src/utils/normalise-options.ts index b07b192..541ffba 100644 --- a/src/utils/normalise-options.ts +++ b/src/utils/normalise-options.ts @@ -53,7 +53,7 @@ function checkFieldConfig( } if (isNumber(config)) { - if (config.incrementBy && typeof config.incrementBy !== 'number') { + if (config.incrementBy) { throw PluginError( 'incrementBy must be of type `number`!', modelName, @@ -123,7 +123,7 @@ function normaliseFieldsConfigMap( } if (typeof fieldConfig === 'string') { - if (FieldConfigTypes[fieldConfig as any]) { + if ((FieldConfigTypes as any)[fieldConfig]) { switch (fieldConfig) { case FieldConfigTypes.ObjectId: fieldConfig = { type: FieldConfigTypes.ObjectId }; From 2f52399305245d93189809d6f9f8bf9947cc5339 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 06:38:44 +0100 Subject: [PATCH 42/52] style: set prettier printWidth to 100 --- .prettierrc | 3 ++- tslint.json | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.prettierrc b/.prettierrc index b4dca30..8880973 100644 --- a/.prettierrc +++ b/.prettierrc @@ -3,5 +3,6 @@ "singleQuote": true, "trailingComma": "all", "bracketSpacing": true, - "parser": "typescript" + "parser": "typescript", + "printWidth": 100 } diff --git a/tslint.json b/tslint.json index 3de7e4e..3f99266 100644 --- a/tslint.json +++ b/tslint.json @@ -9,7 +9,7 @@ ], "jsRules": {}, "rules": { - "prettier": true, + "prettier": [true, ".prettierrc"], "arrow-return-shorthand": true, "callable-types": true, "class-name": true, @@ -35,7 +35,7 @@ "label-position": true, "max-line-length": [ true, - 140 + 100 ], "member-access": false, "member-ordering": [ From f14b6d14809d24dc0d892e02348b1d9c0a6bd209 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 06:47:20 +0100 Subject: [PATCH 43/52] test: fix up test config, keeps failing with mongoose.connection.dropDatabase undefined connection error --- src/__mocks__/mongoose.config.ts | 49 +++++++--------- src/__tests__/LocalStateStore.spec.ts | 25 ++++---- src/__tests__/MongooseIdAssigner.spec.ts | 72 ++++++++---------------- 3 files changed, 55 insertions(+), 91 deletions(-) diff --git a/src/__mocks__/mongoose.config.ts b/src/__mocks__/mongoose.config.ts index 2c34012..5f1e18f 100644 --- a/src/__mocks__/mongoose.config.ts +++ b/src/__mocks__/mongoose.config.ts @@ -1,6 +1,6 @@ import { MongoMemoryServer } from 'mongodb-memory-server-global'; -import { ConnectionOptions } from 'mongoose'; import * as mongoose from 'mongoose'; +import { ConnectionOptions } from 'mongoose'; const mongooseOptions: ConnectionOptions = { promiseLibrary: Promise, @@ -12,53 +12,42 @@ const mongooseOptions: ConnectionOptions = { const IN_MEM = !!process.env.IN_MEM; -let init = false; - -export function getMongoose() { - if (init) { - return mongoose; - } - - init = true; - +export async function getMongoose() { if (IN_MEM) { jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000; const mongoServer = new MongoMemoryServer(); - mongoServer.getConnectionString().then(async mongoUri => { - mongoose.connection.on('error', e => { - if (e.message.code === 'ETIMEDOUT') { - console.error(e); - } else { - throw e; - } - }); + const mongoUri = await mongoServer.getConnectionString(); - mongoose.connection.once('open', () => { - console.log(`MongoDB successfully connected to ${mongoUri}`); - }); - - mongoose.connection.once('disconnected', () => mongoServer.stop()); + mongoose.connection.on('error', e => { + if (e.message.code === 'ETIMEDOUT') { + console.error(e); + } else { + throw e; + } + }); - await mongoose.connect( - mongoUri, - mongooseOptions, + mongoose.connection.once('open', () => { + console.log( + `MongoDB successfully connected to ${mongoUri}, ${mongoServer.opts.binary?.version}`, ); }); + mongoose.connection.once('disconnected', () => mongoServer.stop()); + + await mongoose.connect(mongoUri, mongooseOptions); + return mongoose; } else { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; - mongoose.connect( - 'mongodb://localhost:27017/__mgIdAss__', - mongooseOptions, - ); mongoose.connection.once('open', () => { console.log(`MongoDB successfully connected local`); }); + await mongoose.connect('mongodb://localhost:27017/__mgIdAss__', mongooseOptions); + return mongoose; } } diff --git a/src/__tests__/LocalStateStore.spec.ts b/src/__tests__/LocalStateStore.spec.ts index 6c4d106..444e684 100644 --- a/src/__tests__/LocalStateStore.spec.ts +++ b/src/__tests__/LocalStateStore.spec.ts @@ -1,24 +1,25 @@ +import { Mongoose } from 'mongoose'; import { getMongoose } from '../__mocks__/mongoose.config'; import { getSchema } from '../__mocks__/test.models'; -import { - LocalStateStore, - localStateStore, - SchemaState, -} from '../LocalStateStore'; +import { LocalStateStore, localStateStore, SchemaState } from '../LocalStateStore'; import { MongooseIdAssigner } from '../MongooseIdAssigner'; -const mongoose = getMongoose(); const ExampleSchema = getSchema(0); +let mongoose: Mongoose; -afterAll(async () => { - await mongoose.disconnect(); +beforeAll(async () => { + mongoose = await getMongoose(); }); -afterEach(async () => { - await mongoose.connection.dropDatabase(); +afterAll(async () => { + await mongoose.disconnect(); }); describe('LocalStateStore', () => { + afterEach(async () => { + await mongoose.connection.dropDatabase(); + }); + describe('basics', () => { it('should be a singleton class', () => { expect(new LocalStateStore()).toEqual(localStateStore); @@ -68,9 +69,7 @@ describe('LocalStateStore', () => { try { await exampleIA.initialise(ExampleModel); - expect(() => localStateStore.setCollName('newName')).toThrowError( - /(setCollName)/, - ); + expect(() => localStateStore.setCollName('newName')).toThrowError(/(setCollName)/); } catch (e) { expect(e).toBeUndefined(); } diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index 5b637dd..3fe6248 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -1,15 +1,16 @@ import { Binary } from 'bson'; -import { Document, Model, Schema, Types } from 'mongoose'; +import { Document, Model, Mongoose, Schema, Types } from 'mongoose'; import { getMongoose } from '../__mocks__/mongoose.config'; import { getSchema } from '../__mocks__/test.models'; -import { - AssignerPluginOptions, - FieldConfigTypes, -} from '../assigner.interfaces'; +import { AssignerPluginOptions, FieldConfigTypes } from '../assigner.interfaces'; import { localStateStore } from '../LocalStateStore'; import { MongooseIdAssigner } from '../MongooseIdAssigner'; -const mongoose = getMongoose(); +let mongoose: Mongoose; + +beforeAll(async () => { + mongoose = await getMongoose(); +}); afterAll(async () => { await mongoose.disconnect(); @@ -34,15 +35,13 @@ describe('MongooseIdAssigner', () => { describe('basics', () => { it('should throw error if no schema passed at Constructor', () => { - expect( - () => new MongooseIdAssigner('' as any, { modelName }), - ).toThrowError(/(Schema for the IdAssigner Must be provided!)/); + expect(() => new MongooseIdAssigner('' as any, { modelName })).toThrowError( + /(Schema for the IdAssigner Must be provided!)/, + ); }); it('should throw error if no option or modelName passed at Constructor', () => { - expect( - () => new MongooseIdAssigner(exampleSchema, undefined as any), - ).toThrowError( + expect(() => new MongooseIdAssigner(exampleSchema, undefined as any)).toThrowError( /(Plugin Options must be specified, with schema modelName!)/, ); }); @@ -134,9 +133,7 @@ describe('MongooseIdAssigner', () => { const doc = await exampleModel.create({ personId: 'mernxl' }); const doc2 = await exampleModel.create({ personId: 'mernxl' }); - expect([doc._id, doc2._id]).toEqual( - expect.arrayContaining(['33333', '33334']), - ); + expect([doc._id, doc2._id]).toEqual(expect.arrayContaining(['33333', '33334'])); expect((doc as any).photoId).not.toBe((doc2 as any).photoId); expect([(doc as any).photoId, (doc2 as any).photoId]).toEqual( expect.arrayContaining([44444, 44445]), @@ -170,8 +167,7 @@ describe('MongooseIdAssigner', () => { personId: { type: FieldConfigTypes.String, nextId: '55555', - nextIdFunction: (nextId: string) => - (parseInt(nextId, 10) + 2).toString(), + nextIdFunction: (nextId: string) => (parseInt(nextId, 10) + 2).toString(), }, }, }; @@ -278,17 +274,13 @@ describe('MongooseIdAssigner', () => { await ExampleIA.initialise(exampleModel); - expect(ExampleIA.collection.collectionName).toMatch( - localStateStore.getCollName(), - ); + expect(ExampleIA.collection.collectionName).toMatch(localStateStore.getCollName()); }); it('should throw error if IdAssigner not Initialise', async () => { const ExampleIA = new MongooseIdAssigner(exampleSchema, { modelName }); - expect(() => ExampleIA.collection).toThrowError( - /(Cannot read Model, Not Initialised)/, - ); + expect(() => ExampleIA.collection).toThrowError(/(Cannot read Model, Not Initialised)/); }); it('should throw error if IdAssigner Errored on initialise', async () => { @@ -365,9 +357,7 @@ describe('MongooseIdAssigner', () => { try { await characterIA.getNextId('not-found', 'Person13'); } catch (e) { - expect(e.message).toMatch( - /(\[not-found] does not have a Field Configuration)/, - ); + expect(e.message).toMatch(/(\[not-found] does not have a Field Configuration)/); } }); it('should return nextId depending on fieldConfig', async () => { @@ -392,15 +382,13 @@ describe('MongooseIdAssigner', () => { describe('static', () => { describe('plugin()', () => { it('should throw error if no schema passed in', () => { - expect(() => - MongooseIdAssigner.plugin('' as any, {} as any), - ).toThrowError(/(Schema for the IdAssigner Must be provided!)/); + expect(() => MongooseIdAssigner.plugin('' as any, {} as any)).toThrowError( + /(Schema for the IdAssigner Must be provided!)/, + ); }); it('should throw error if no options passed', () => { - expect(() => - MongooseIdAssigner.plugin(new Schema({}), '' as any), - ).toThrowError( + expect(() => MongooseIdAssigner.plugin(new Schema({}), '' as any)).toThrowError( /(Plugin Options must be specified, with schema modelName!)/, ); }); @@ -446,10 +434,7 @@ describe('MongooseIdAssigner', () => { const CharacterIA = new MongooseIdAssigner(characterSchema, options); const characterModel = mongoose.model('example11', characterSchema); - const personModel = characterModel.discriminator( - 'Person1', - personSchema, - ); + const personModel = characterModel.discriminator('Person1', personSchema); const droidModel = characterModel.discriminator('Droid1', droidSchema); try { const character = await characterModel.create({ @@ -494,10 +479,7 @@ describe('MongooseIdAssigner', () => { const characterModel = mongoose.model('example12', characterSchema); - const personModel = characterModel.discriminator( - 'Person', - personSchema, - ); + const personModel = characterModel.discriminator('Person', personSchema); droidSchema.path('_id', String); const droidModel = characterModel.discriminator('Droid', droidSchema); @@ -556,16 +538,10 @@ describe('MongooseIdAssigner', () => { const characterModel = mongoose.model(modelName, characterSchema); personSchema.path('_id', String); - const personModel = characterModel.discriminator( - modelName + 'Person', - personSchema, - ); + const personModel = characterModel.discriminator(modelName + 'Person', personSchema); droidSchema.path('_id', String); - const droidModel = characterModel.discriminator( - modelName + 'Droid', - droidSchema, - ); + const droidModel = characterModel.discriminator(modelName + 'Droid', droidSchema); try { const character = await characterModel.create({ From 2d23459fae408d3d93fc9cf0466dcb60ff382184 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 06:59:10 +0100 Subject: [PATCH 44/52] style: fix prettier's tslint errors --- src/MongooseIdAssigner.ts | 47 +++---------- src/assigner.interfaces.ts | 26 +++---- src/utils/assign-fields-ids.ts | 50 +++----------- src/utils/get-next-ids/get-next-id-number.ts | 17 +---- src/utils/get-next-ids/get-next-id-string.ts | 14 +--- src/utils/get-next-ids/get-next-id-uuid.ts | 3 +- src/utils/initialise-options.ts | 62 ++++++----------- src/utils/normalise-options.ts | 72 ++++---------------- src/utils/others.ts | 6 +- 9 files changed, 74 insertions(+), 223 deletions(-) diff --git a/src/MongooseIdAssigner.ts b/src/MongooseIdAssigner.ts index 220f8ae..c467a88 100644 --- a/src/MongooseIdAssigner.ts +++ b/src/MongooseIdAssigner.ts @@ -13,11 +13,7 @@ import { localStateStore, SchemaState } from './LocalStateStore'; import { initialiseOptions, normaliseOptions, PluginError } from './utils'; import { refreshOptions } from './utils/assign-fields-ids'; import { configureSchema } from './utils/configure-schema'; -import { - getNextIdNumber, - getNextIdString, - getNextIdUUID, -} from './utils/get-next-ids'; +import { getNextIdNumber, getNextIdString, getNextIdUUID } from './utils/get-next-ids'; /** * Options stored in db, plus modelName @@ -52,18 +48,13 @@ export class MongooseIdAssigner extends EventEmitter { throw PluginError('Schema for the IdAssigner Must be provided!'); } if (!options || (options && !options.modelName)) { - throw PluginError( - 'Plugin Options must be specified, with schema modelName!', - ); + throw PluginError('Plugin Options must be specified, with schema modelName!'); } const modelName = options.modelName; if (localStateStore.getState(schema)) { - throw PluginError( - 'Provided Schema already has an Assigner Instance!', - modelName, - ); + throw PluginError('Provided Schema already has an Assigner Instance!', modelName); } this.schema = schema; @@ -95,16 +86,12 @@ export class MongooseIdAssigner extends EventEmitter { const { model, error } = this.state; if (!model) { if (error) { - throw PluginError( - 'Cannot read Model, Error At Initialisation ' + error, - ); + throw PluginError('Cannot read Model, Error At Initialisation ' + error); } else { throw PluginError('Cannot read Model, Not Initialised'); } } - return (model as Model).db.collection( - localStateStore.getCollName(), - ); + return (model as Model).db.collection(localStateStore.getCollName()); } static plugin(schema: Schema, options: AssignerPluginOptions) { @@ -115,10 +102,7 @@ export class MongooseIdAssigner extends EventEmitter { return refreshOptions(this); } - getFieldConfig( - field: string, - discriminator?: string, - ): FieldConfig | undefined { + getFieldConfig(field: string, discriminator?: string): FieldConfig | undefined { if (discriminator && this.options.discriminators) { for (const [key, value] of this.options.discriminators.entries()) { if (key === discriminator) { @@ -143,15 +127,7 @@ export class MongooseIdAssigner extends EventEmitter { async getNextId( field: string, discriminator?: string, - ): Promise< - | void - | ObjectId - | Binary - | string - | number - | Promise - | Promise - > { + ): Promise | Promise> { const fieldConfig = this.getFieldConfig(field, discriminator); if (!fieldConfig) { @@ -169,14 +145,7 @@ export class MongooseIdAssigner extends EventEmitter { case FieldConfigTypes.Number: await this.refreshOptions(); - return getNextIdNumber( - field, - this, - fieldConfig as NumberFieldConfig, - '', - 0, - true, - ); + return getNextIdNumber(field, this, fieldConfig as NumberFieldConfig, '', 0, true); case FieldConfigTypes.String: await this.refreshOptions(); return getNextIdString(field, this, fieldConfig, '', 0, true); diff --git a/src/assigner.interfaces.ts b/src/assigner.interfaces.ts index 3ac0532..957484c 100644 --- a/src/assigner.interfaces.ts +++ b/src/assigner.interfaces.ts @@ -33,25 +33,25 @@ export interface UUIDFieldConfig { /** * - * @property {Boolean} noSpace - noSpace, insure we consume all possible values, i.e. we must have 1, 2, 3, 4 - * order doesn't matter but all those keys must be present, no 1, 3, 4, 6. - * If noSpace is true, then on holdTimeout, that nextId will be use on any newly saving doc, else nextId discarded + * @property {Boolean} noSpace - noSpace, insure we consume all possible values, i.e. we + * must have 1, 2, 3, 4 order doesn't matter but all those keys must be present, no 1, 3, 4, 6. + * If noSpace is true, then on holdTimeout, that nextId will be use on any newly + * saving doc, else nextId discarded * - * @property {Number} maxHold[50] - As there may be performance issues when holding ids, maxHold will be set, - * @property {String} holdTimeout - default timeout string, must be parse-able to number by `ms` plugin - * @property {Number} holdTimeout - default timeout millis, gotten id stays onHold for this length of time - * @property {Boolean} holdTimeout - if true, will always getNextId with default timeout of `1 week` else use getOnly on getNextIds + * @property {Number} maxHold[50] - As there may be performance issues when holding ids, maxHold + * will be set, + * @property {String} holdTimeout - default timeout string, must be parse-able to number + * by `ms` plugin + * @property {Number} holdTimeout - default timeout millis, gotten id stays onHold for + * this length of time + * @property {Boolean} holdTimeout - if true, will always getNextId with default + * timeout of `1 week` else use getOnly on getNextIds */ export type FieldConfig = { index?: boolean; unique?: boolean; noSpace?: boolean; -} & ( - | DefaultFieldConfig - | StringFieldConfig - | NumberFieldConfig - | UUIDFieldConfig -); +} & (DefaultFieldConfig | StringFieldConfig | NumberFieldConfig | UUIDFieldConfig); /** * fieldConfig = string, then nextId = string, default incrementer, diff --git a/src/utils/assign-fields-ids.ts b/src/utils/assign-fields-ids.ts index 06fbcad..df393ab 100644 --- a/src/utils/assign-fields-ids.ts +++ b/src/utils/assign-fields-ids.ts @@ -2,19 +2,12 @@ import { ObjectId } from 'mongodb'; import { Document } from 'mongoose'; import { FieldConfig } from '../assigner.interfaces'; import { MongooseIdAssigner, NormalisedOptions } from '../MongooseIdAssigner'; -import { - getNextIdNumber, - getNextIdString, - getNextIdUUID, -} from './get-next-ids'; +import { getNextIdNumber, getNextIdString, getNextIdUUID } from './get-next-ids'; import { checkAndUpdateOptions } from './initialise-options'; import { PluginError, waitPromise } from './others'; import { isNumber, isObjectId, isString, isUUID } from './type-guards'; -export async function refreshOptions( - assigner: MongooseIdAssigner, - retries = 0, -): Promise { +export async function refreshOptions(assigner: MongooseIdAssigner, retries = 0): Promise { const collection = assigner.collection; try { @@ -28,18 +21,13 @@ export async function refreshOptions( return refreshOptions(assigner, ++retries); } return Promise.reject( - PluginError( - 'Stored Options not Found for Ready Model!', - assigner.modelName, - ), + PluginError('Stored Options not Found for Ready Model!', assigner.modelName), ); } // todo Handle this case if (!freshOptions) { - return Promise.reject( - PluginError('AssignId unexpectedly not Ready', assigner.modelName), - ); + return Promise.reject(PluginError('AssignId unexpectedly not Ready', assigner.modelName)); } checkAndUpdateOptions(assigner.options, freshOptions as any); @@ -48,17 +36,12 @@ export async function refreshOptions( } } -export async function assignIdNetwork( - idAssigner: MongooseIdAssigner, - doc: Document, -) { +export async function assignIdNetwork(idAssigner: MongooseIdAssigner, doc: Document) { let dFields: Map | undefined; if (idAssigner.options.discriminators) { if ((doc as any)[idAssigner.discriminatorKey]) { - dFields = idAssigner.options.discriminators.get( - (doc as any)[idAssigner.discriminatorKey], - ); + dFields = idAssigner.options.discriminators.get((doc as any)[idAssigner.discriminatorKey]); } } @@ -87,20 +70,12 @@ export async function assignIdNetwork( } if (isNumber(config)) { - (doc as any)[field] = await getNextIdNumber( - field, - idAssigner, - config, - ); + (doc as any)[field] = await getNextIdNumber(field, idAssigner, config); continue; } if (isString(config)) { - (doc as any)[field] = await getNextIdString( - field, - idAssigner, - config, - ); + (doc as any)[field] = await getNextIdString(field, idAssigner, config); } } } @@ -142,17 +117,12 @@ export async function assignIdNetwork( } } -export function assignIdNoNetwork( - idAssigner: MongooseIdAssigner, - doc: Document, -) { +export function assignIdNoNetwork(idAssigner: MongooseIdAssigner, doc: Document) { let dFields: Map | undefined; if (idAssigner.options.discriminators) { if ((doc as any)[idAssigner.discriminatorKey]) { - dFields = idAssigner.options.discriminators.get( - (doc as any)[idAssigner.discriminatorKey], - ); + dFields = idAssigner.options.discriminators.get((doc as any)[idAssigner.discriminatorKey]); } } diff --git a/src/utils/get-next-ids/get-next-id-number.ts b/src/utils/get-next-ids/get-next-id-number.ts index b39de9f..d12e1c2 100644 --- a/src/utils/get-next-ids/get-next-id-number.ts +++ b/src/utils/get-next-ids/get-next-id-number.ts @@ -21,8 +21,7 @@ export async function getNextIdNumber( if (fieldConfig.nextIdFunction) { afterNextId = fieldConfig.nextIdFunction(nextId, fieldConfig.incrementBy); } else { - afterNextId = - nextId + (fieldConfig.incrementBy ? fieldConfig.incrementBy : 1); + afterNextId = nextId + (fieldConfig.incrementBy ? fieldConfig.incrementBy : 1); } try { @@ -45,20 +44,10 @@ export async function getNextIdNumber( const multiplier = Math.abs(Math.random() * retries); await waitPromise(idAssigner.retryMillis * multiplier); await idAssigner.refreshOptions(); - return getNextIdNumber( - field, - idAssigner, - fieldConfig, - discriminatorName, - ++retries, - ); + return getNextIdNumber(field, idAssigner, fieldConfig, discriminatorName, ++retries); } else if (!update.value && retries > idAssigner.retryTime) { return Promise.reject( - PluginError( - `Maximum retryTime to set value attained!`, - idAssigner.modelName, - field, - ), + PluginError(`Maximum retryTime to set value attained!`, idAssigner.modelName, field), ); } } catch (e) { diff --git a/src/utils/get-next-ids/get-next-id-string.ts b/src/utils/get-next-ids/get-next-id-string.ts index 68e0375..633a994 100644 --- a/src/utils/get-next-ids/get-next-id-string.ts +++ b/src/utils/get-next-ids/get-next-id-string.ts @@ -45,20 +45,10 @@ export async function getNextIdString( const multiplier = Math.abs(Math.random() * retries); await waitPromise(idAssigner.retryMillis * multiplier); await idAssigner.refreshOptions(); - return getNextIdString( - field, - idAssigner, - fieldConfig, - discriminatorName, - ++retries, - ); + return getNextIdString(field, idAssigner, fieldConfig, discriminatorName, ++retries); } else if (!update.value && retries > idAssigner.retryTime) { return Promise.reject( - PluginError( - `Maximum retryTime to set value attained!`, - idAssigner.modelName, - field, - ), + PluginError(`Maximum retryTime to set value attained!`, idAssigner.modelName, field), ); } } catch (e) { diff --git a/src/utils/get-next-ids/get-next-id-uuid.ts b/src/utils/get-next-ids/get-next-id-uuid.ts index b36bb43..4d15ff8 100644 --- a/src/utils/get-next-ids/get-next-id-uuid.ts +++ b/src/utils/get-next-ids/get-next-id-uuid.ts @@ -2,8 +2,7 @@ import { Binary } from 'mongodb'; import { UUIDFieldConfig } from '../../assigner.interfaces'; export function getNextIdUUID(fieldConfig: UUIDFieldConfig) { - const uuid = - fieldConfig.version === 4 ? require('uuid/v4') : require('uuid/v1'); + const uuid = fieldConfig.version === 4 ? require('uuid/v4') : require('uuid/v1'); const UUID = uuid(fieldConfig.versionOptions); diff --git a/src/utils/initialise-options.ts b/src/utils/initialise-options.ts index ff27cf2..a8b2007 100644 --- a/src/utils/initialise-options.ts +++ b/src/utils/initialise-options.ts @@ -80,10 +80,7 @@ export function checkAndUpdateOptions( const rObject = { replace: true, options }; - rObject.replace = checkAndUpdateFieldConfigMap( - options.fields, - freshOptions.fields, - ); + rObject.replace = checkAndUpdateFieldConfigMap(options.fields, freshOptions.fields); // if discriminator options available if (options.discriminators) { @@ -128,25 +125,21 @@ async function refreshDBOptions( let update; if (mergedOptions.replace) { - update = await mongooseModel.db - .collection(localStateStore.getCollName()) - .findOneAndReplace( - { - modelName: idAssigner.modelName, - timestamp: mergedOptions.options.timestamp, - }, - mergedOptions.options, - { - upsert: true, - }, - ); - } else if (mergedOptions.delete) { - update = await mongooseModel.db - .collection(localStateStore.getCollName()) - .findOneAndDelete({ + update = await mongooseModel.db.collection(localStateStore.getCollName()).findOneAndReplace( + { modelName: idAssigner.modelName, timestamp: mergedOptions.options.timestamp, - }); + }, + mergedOptions.options, + { + upsert: true, + }, + ); + } else if (mergedOptions.delete) { + update = await mongooseModel.db.collection(localStateStore.getCollName()).findOneAndDelete({ + modelName: idAssigner.modelName, + timestamp: mergedOptions.options.timestamp, + }); // new options requests deletion of old options // but those options have been updated by another process @@ -167,17 +160,12 @@ async function refreshDBOptions( }); return 1; } else { - return Promise.reject( - PluginError(`Initialisation error ${update}`, idAssigner.modelName), - ); + return Promise.reject(PluginError(`Initialisation error ${update}`, idAssigner.modelName)); } } catch (e) { if (e.code === 11000) { if (retries > 30) { - throw PluginError( - 'Initialisation error, maximum retries attained', - idAssigner.modelName, - ); + throw PluginError('Initialisation error, maximum retries attained', idAssigner.modelName); } return refreshDBOptions(mongooseModel, idAssigner, ++retries); } @@ -191,12 +179,10 @@ async function dbInitialiseLogic( ): Promise { try { // create index, ensures no duplicates during upserts - await mongooseModel.db - .collection(localStateStore.getCollName()) - .createIndex('modelName', { - unique: true, - background: false, - }); + await mongooseModel.db.collection(localStateStore.getCollName()).createIndex('modelName', { + unique: true, + background: false, + }); return await refreshDBOptions(mongooseModel, idAssigner); } catch (e) { @@ -240,17 +226,13 @@ export async function initialiseOptions( try { // 3 - disconnecting, wait more // 0 - disconnected, wait less as connection can be back anytime. - await waitPromise( - (mongooseModel.db.readyState === 3 ? 500 : 100) * retries, - ); + await waitPromise((mongooseModel.db.readyState === 3 ? 500 : 100) * retries); return initialiseOptions(mongooseModel, idAssigner, ++retries); } catch (e) { return Promise.reject(e); } } else { - throw PluginError( - 'Initialisation failed, cannot establish db connection not established!', - ); + throw PluginError('Initialisation failed, cannot establish db connection not established!'); } } diff --git a/src/utils/normalise-options.ts b/src/utils/normalise-options.ts index 541ffba..2116b7d 100644 --- a/src/utils/normalise-options.ts +++ b/src/utils/normalise-options.ts @@ -9,11 +9,7 @@ import { NormalisedOptions } from '../MongooseIdAssigner'; import { PluginError } from './others'; import { isNumber, isObjectId, isString, isUUID } from './type-guards'; -function checkFieldConfig( - modelName: string, - field: string, - config: FieldConfig, -): boolean { +function checkFieldConfig(modelName: string, field: string, config: FieldConfig): boolean { if (isObjectId(config)) { return false; } @@ -25,24 +21,13 @@ function checkFieldConfig( config.asBinary = !!config.asBinary; if (!(config.version === 4 || config.version === 1)) { - throw PluginError( - `UUID version must be either 1 or 4!`, - modelName, - field, - ); + throw PluginError(`UUID version must be either 1 or 4!`, modelName, field); } return false; } - if ( - !(config as any).nextId || - typeof (config as any).nextId !== config.type.toLowerCase() - ) { - throw PluginError( - 'nextId is required, should have as type ' + config.type, - modelName, - field, - ); + if (!(config as any).nextId || typeof (config as any).nextId !== config.type.toLowerCase()) { + throw PluginError('nextId is required, should have as type ' + config.type, modelName, field); } if ( @@ -54,33 +39,20 @@ function checkFieldConfig( if (isNumber(config)) { if (config.incrementBy) { - throw PluginError( - 'incrementBy must be of type `number`!', - modelName, - field, - ); + throw PluginError('incrementBy must be of type `number`!', modelName, field); } if ( config.nextIdFunction && - typeof config.nextIdFunction(config.nextId, config.incrementBy) !== - 'number' + typeof config.nextIdFunction(config.nextId, config.incrementBy) !== 'number' ) { - throw PluginError( - 'nextIdFunction must return nextId of type `number`!', - modelName, - field, - ); + throw PluginError('nextIdFunction must return nextId of type `number`!', modelName, field); } return true; } if (isString(config) && config.nextIdFunction) { if (typeof config.nextIdFunction(config.nextId) !== 'string') { - throw PluginError( - 'nextIdFunction must return nextId of type `string`!', - modelName, - field, - ); + throw PluginError('nextIdFunction must return nextId of type `string`!', modelName, field); } return true; } @@ -153,11 +125,7 @@ function normaliseFieldsConfigMap( (fieldConfig && typeof fieldConfig !== 'object') || !FieldConfigTypes[fieldConfig.type] ) { - throw PluginError( - `Unknown FieldConfigType ${fieldConfig}`, - modelName, - field, - ); + throw PluginError(`Unknown FieldConfigType ${fieldConfig}`, modelName, field); } if (fieldConfig && typeof fieldConfig === 'object') { @@ -173,25 +141,17 @@ function normaliseFieldsConfigMap( return rObject; } -export function normaliseOptions( - modelName: string, - options?: AssignerOptions, -): NormalisedOptions { +export function normaliseOptions(modelName: string, options?: AssignerOptions): NormalisedOptions { if (!modelName) { throw PluginError('Plugin `modelName` must be defined!'); } const normalised: NormalisedOptions = { modelName, - ...normaliseFieldsConfigMap( - modelName, - options ? options.fields : undefined, - ), + ...normaliseFieldsConfigMap(modelName, options ? options.fields : undefined), }; - normalised.fields = normalised.fields - ? normalised.fields - : new Map(); + normalised.fields = normalised.fields ? normalised.fields : new Map(); // set default _id field if (!normalised.fields.has('_id')) { @@ -206,12 +166,8 @@ export function normaliseOptions( continue; } - const discriminator: AssignerFieldsConfigMap = - options.discriminators[dName]; - const rObjectDNormalisedFields = normaliseFieldsConfigMap( - dName, - discriminator, - ); + const discriminator: AssignerFieldsConfigMap = options.discriminators[dName]; + const rObjectDNormalisedFields = normaliseFieldsConfigMap(dName, discriminator); if (!rObjectDNormalisedFields.fields) { continue; diff --git a/src/utils/others.ts b/src/utils/others.ts index 2b33e43..91d1f5b 100644 --- a/src/utils/others.ts +++ b/src/utils/others.ts @@ -2,11 +2,7 @@ export function waitPromise(ms: number) { return new Promise(resolve => setTimeout(resolve, ms)); } -export function PluginError( - message: string, - modelName?: string, - field?: string, -) { +export function PluginError(message: string, modelName?: string, field?: string) { return new Error( `[MongooseIdAssigner], ${modelName ? 'Model: ' + modelName + ', ' : ''}${ field ? 'Field: ' + field + ', ' : '' From 38119d3ca5ff03d16de4bb216eb0fc90ea415ea0 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 06:59:10 +0100 Subject: [PATCH 45/52] style: fix prettier's tslint errors --- src/utils/get-next-ids/utils/string-incrementer.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/utils/get-next-ids/utils/string-incrementer.ts b/src/utils/get-next-ids/utils/string-incrementer.ts index b8c3eed..3427661 100644 --- a/src/utils/get-next-ids/utils/string-incrementer.ts +++ b/src/utils/get-next-ids/utils/string-incrementer.ts @@ -40,7 +40,8 @@ export function stringIncrementer(nextId: string, separator = '-'): string { // Get next Significant figure (10 if count = 1) const nextSig = Math.pow(10, maxLength - lastSig); - // if has moved up one digit(significant figure) and if lashDash will be cut out at location ltCount -1 + // if has moved up one digit(significant figure) and if lashDash will + // be cut out at location ltCount -1 if (digits >= nextSig) { return `${nextId.substr(0, lastSig - 1)}${digits}`; } From ca819a61f8a52a1e9296cb2417bcdd777206f8a0 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 07:12:51 +0100 Subject: [PATCH 46/52] test: add useUnifiedTopology: true on mongooseOptions, set max jest workers to 1 --- package.json | 4 ++-- src/__mocks__/mongoose.config.ts | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 7367330..3b26b45 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,8 @@ "flow": "./node_modules/.bin/flow", "lint": "tslint -p ./", "jest:watch": "IN_MEM=true jest --watch", - "jest": "jest --maxWorkers 2", - "coverage": "jest --coverage --maxWorkers 2", + "jest": "jest --maxWorkers 1", + "coverage": "jest --coverage --maxWorkers 1", "test-mongo-vers": "export MONGOMS_DOWNLOAD_MIRROR=\"http://downloads.mongodb.org\" && IN_MEM=true MONGOMS_VERSION=v3.4-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v3.6-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v4.0-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v4.2-latest yarn run coverage", "test": "yarn run lint && yarn run coverage && yarn run tsc && yarn run flow", "test-ci": "yarn run lint && yarn run test-mongo-vers && yarn run tsc && yarn run flow", diff --git a/src/__mocks__/mongoose.config.ts b/src/__mocks__/mongoose.config.ts index 5f1e18f..4622ec2 100644 --- a/src/__mocks__/mongoose.config.ts +++ b/src/__mocks__/mongoose.config.ts @@ -1,13 +1,10 @@ import { MongoMemoryServer } from 'mongodb-memory-server-global'; import * as mongoose from 'mongoose'; -import { ConnectionOptions } from 'mongoose'; -const mongooseOptions: ConnectionOptions = { +const mongooseOptions = { promiseLibrary: Promise, - autoReconnect: true, - reconnectTries: Number.MAX_VALUE, - reconnectInterval: 1000, useNewUrlParser: true, + useUnifiedTopology: true, }; const IN_MEM = !!process.env.IN_MEM; From 393f7aba66880c2e5de37aa8bc63acf2b6f7f1c8 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 07:19:58 +0100 Subject: [PATCH 47/52] build: remove deprecated tslint rule `"no-use-before-declare": true` Its implemented in tsc ^2.9 --- tslint.json | 1 - 1 file changed, 1 deletion(-) diff --git a/tslint.json b/tslint.json index 3f99266..9ff50ad 100644 --- a/tslint.json +++ b/tslint.json @@ -71,7 +71,6 @@ "no-trailing-whitespace": true, "no-unnecessary-initializer": true, "no-unused-expression": true, - "no-use-before-declare": true, "no-var-keyword": true, "space-before-function-paren": [ true, From f9f517625c8b8949bc278886224970132760e0b1 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 07:20:42 +0100 Subject: [PATCH 48/52] test: log out the Mongo version currently being tested on connect --- src/__mocks__/mongoose.config.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/__mocks__/mongoose.config.ts b/src/__mocks__/mongoose.config.ts index 4622ec2..3a91fbd 100644 --- a/src/__mocks__/mongoose.config.ts +++ b/src/__mocks__/mongoose.config.ts @@ -8,6 +8,7 @@ const mongooseOptions = { }; const IN_MEM = !!process.env.IN_MEM; +const MONGOMS_VERSION = process.env.MONGOMS_VERSION; export async function getMongoose() { if (IN_MEM) { @@ -26,9 +27,7 @@ export async function getMongoose() { }); mongoose.connection.once('open', () => { - console.log( - `MongoDB successfully connected to ${mongoUri}, ${mongoServer.opts.binary?.version}`, - ); + console.log(`MongoDB successfully connected to ${mongoUri}, ${MONGOMS_VERSION}`); }); mongoose.connection.once('disconnected', () => mongoServer.stop()); From 8042ec6e079569ee9c48f69c8d1d955e0bc59c98 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 07:22:55 +0100 Subject: [PATCH 49/52] doc(README.md): update readme file --- README.md | 219 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 120 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index 685fb0d..eeacaf9 100644 --- a/README.md +++ b/README.md @@ -21,15 +21,15 @@ This is the perfect tool if you wish to work with `discriminators` and have `_id # Table of Content - [Installation](#installation) - [Basic Usage](#basic-usage) - - [Plugin Options](#plugin-options) - - [Point to Note](#point-to-note) + - [AssignerPluginOptions](#assignerpluginoptions) + - [Point to Note](#points-to-note) - [Examples](#examples) - [Configuration Methods](#configuration-methods) - [Working with Discriminators](#working-with-discriminators) +- [Strain Test](#strain-test) - [TypeDefinitions](#typedefinitions) -- [Strain Test](#strain-test,-performs-the-task-below-on-a-locally-hosted-db-instance.) - [Contributions](#contributions) - - [NextIdFunctions](#nextidfunctions-(incrementer)) + - [NextIdFunctions](#nextidfunctions-incrementer) - [License](#license) ## Installation @@ -45,15 +45,33 @@ yarn add uuid ``` ## Basic Usage -### Plugin Options -TypeName: **AssignerPluginOptions** -- `modelName`: **String** Name of the Model your are working with. If discriminators, then provide baseModel Name. -- `fields`: **AssignerFieldsConfigMap?** The configuration Map of the fields you want the assigner to assign ids to. - If undefined, then plugin assigns ids to `_id` field, (ObjectId). - - [fieldName: string]: FieldConfig | string | number | boolean | 'GUID' | 'UUID' -- `discriminators`: **[discriminatorName: string]: AssignerFieldsConfigMap?** An Object with Keys `discriminatorName` - and value a Configuration Map for fields on that discriminator that need unique values. Any discriminator without a - fieldConfig will use that of the baseModel. +You could create the plugin from the `MongooseIdAssigner` Constructor, which returns a instance which you could use to query `nextIds`. +#### `from constructor(schema: Schema, options: AssignerPluginOptions): MongooseIdAssigner` +```js +... +const ExampleIA = new MongooseIdAssigner(exampleSchema, options); +exampleModel = mongoose.model('Example', exampleSchema); + +// always call the initialise, to ensure assigner initialised before calling getNextId +// assigners are always auto initialised on every first save +await ExampleIA.initialise(exampleModel); +await ExampleIA.getNextId('fieldName'); // nextId +... +``` + +Alternatively you have the plugin setup by calling the static `plugin` method. +#### `static plugin(schema: Schema, options: AssignerPluginOptions): MongooseIdAssigner` +```js +... +exampleSchema.plugin(MongooseIdAssigner.plugin, options); +... +``` +### AssignerPluginOptions +| Parameter | Type | Description | +|----------------|:------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| modelName | String(Required) | Name of the Model your are working with. If discriminators, then provide baseModel Name. | +| fields | [AssignerFieldsConfigMap](#typedefinitions) (Optional) | The configuration Map of the fields you want the assigner to assign ids to. If undefined, then plugin assigns ids to `_id` field, (ObjectId). | +| discriminators | [DiscriminatorConfigMap](#typedefinitions) (Optional) | An Object with key being a `discriminatorName` and value a Configuration Map for fields on that discriminator that need unique values. Any discriminator without a fieldConfig will use that of the baseModelk | ### Points to Note - At every Network Assigner init(i.e Assigner with Number, String FieldConfigTypes), the Assigner(for a Model) refreshes and syncs with the db stored options. Take example micro-service cluster, @@ -232,6 +250,95 @@ console.log(droid1.make) ---> '18Y4434' It may arise that you need to query and use the nextId to at the front-end. In this case, you just need to get an instance of the Assigner, then use the `getNextId` method. It is async method as it queries for `Number` and `String` cases. +### Strain test +* Performs the task below on a locally hosted db instance. +* On CI/CD environment, tests ran using [mongodb-memory-server](https://github.com/nodkz/mongodb-memory-server), on v3.4, v3.6, v4.0 and v4.2 on node v12, v10, v8 + +```typescript +// using ts :) +import * as mongoose from 'mongoose'; +import { AssignerOptions, FieldConfigTypes, localStateStore, MongooseIdAssigner } from './src'; + +describe('MongooseIdAssigner', () => { + + it('should be robust enough to avoid duplicates', async () => { + const options: AssignerPluginOptions = { + modelName: 'example8', + fields: { + _id: '33333', + photoId: 44444, + emailId: '55555', + personId: { + type: FieldConfigTypes.String, + nextId: 'SPEC-7382-4344-3232', + separator: '-', + }, + uuidFieldString: { + type: FieldConfigTypes.UUID, + }, + uuidFieldBuffer: { + type: FieldConfigTypes.UUID, + version: 1, + asBinary: true, + }, + objectIdField: FieldConfigTypes.ObjectId, + }, + }; + + try { + const ExampleIA = new MongooseIdAssigner(exampleSchema, options); + + exampleModel = mongoose.model('example8', exampleSchema); + expect(ExampleIA.readyState).toBe(0); // initialising + + // initialise to ensure that + // model is set and db is connected + // before performing heavy tasks + // or you can set max event listeners to 100 to suppress warnings on waits + await ExampleIA.initialise(exampleModel); + + expect(ExampleIA.readyState).toBe(1); + + const promises = []; + for (let i = 0; i < 100; i++) { + promises.push(exampleModel.create({ personId: 'mernxl' })); + } + + const docs: any[] = await Promise.all(promises); + for (let i = 0; i < 100; i++) { + const _id = docs[i]._id; + const photoId = docs[i].photoId; + const emailId = docs[i].emailId; + const personId = docs[i].personId; + const uuidFieldString = docs[i].uuidFieldString; + const uuidFieldBuffer = docs[i].uuidFieldBuffer; + const objectIdField = docs[i].objectIdField; + expect(typeof photoId).toBe('number'); + expect(typeof emailId).toBe('string'); + expect(personId).toMatch(/(SPEC-7382-4344-3)\d+/); + expect(objectIdField).toBeInstanceOf(Types.ObjectId); + expect(typeof uuidFieldString).toBe('string'); + expect(uuidFieldBuffer).toBeInstanceOf(Binary); + + for (const cDoc of docs) { + if (_id === cDoc._id) { + continue; + } + expect(photoId).not.toBe(cDoc.photoId); + expect(emailId).not.toBe(cDoc.emailId); + expect(personId).not.toBe(cDoc.personId); + expect(objectIdField).not.toBe(cDoc.objectIdField); + expect(uuidFieldString).not.toEqual(cDoc.uuidFieldString); + expect(uuidFieldBuffer).not.toEqual(cDoc.uuidFieldBuffer); + } + } + } catch (e) { + expect(e).toBeUndefined(); + } + }); +}); +``` + ## TypeDefinitions ```typescript /** @@ -327,92 +434,6 @@ export interface UUIDFieldConfig { } ``` -### Strain test, Performs the task below on a locally hosted db instance. -```typescript -// using ts :) -import * as mongoose from 'mongoose'; -import { AssignerOptions, FieldConfigTypes, localStateStore, MongooseIdAssigner } from './src'; - -describe('MongooseIdAssigner', () => { - - it('should be robust enough to avoid duplicates', async () => { - const options: AssignerPluginOptions = { - modelName: 'example8', - fields: { - _id: '33333', - photoId: 44444, - emailId: '55555', - personId: { - type: FieldConfigTypes.String, - nextId: 'SPEC-7382-4344-3232', - separator: '-', - }, - uuidFieldString: { - type: FieldConfigTypes.UUID, - }, - uuidFieldBuffer: { - type: FieldConfigTypes.UUID, - version: 1, - asBinary: true, - }, - objectIdField: FieldConfigTypes.ObjectId, - }, - }; - - try { - const ExampleIA = new MongooseIdAssigner(exampleSchema, options); - - exampleModel = mongoose.model('example8', exampleSchema); - expect(ExampleIA.readyState).toBe(0); // initialising - - // initialise to ensure that - // model is set and db is connected - // before performing heavy tasks - // or you can set max event listeners to 100 to suppress warnings on waits - await ExampleIA.initialise(exampleModel); - - expect(ExampleIA.readyState).toBe(1); - - const promises = []; - for (let i = 0; i < 100; i++) { - promises.push(exampleModel.create({ personId: 'mernxl' })); - } - - const docs: any[] = await Promise.all(promises); - for (let i = 0; i < 100; i++) { - const _id = docs[i]._id; - const photoId = docs[i].photoId; - const emailId = docs[i].emailId; - const personId = docs[i].personId; - const uuidFieldString = docs[i].uuidFieldString; - const uuidFieldBuffer = docs[i].uuidFieldBuffer; - const objectIdField = docs[i].objectIdField; - expect(typeof photoId).toBe('number'); - expect(typeof emailId).toBe('string'); - expect(personId).toMatch(/(SPEC-7382-4344-3)\d+/); - expect(objectIdField).toBeInstanceOf(Types.ObjectId); - expect(typeof uuidFieldString).toBe('string'); - expect(uuidFieldBuffer).toBeInstanceOf(Binary); - - for (const cDoc of docs) { - if (_id === cDoc._id) { - continue; - } - expect(photoId).not.toBe(cDoc.photoId); - expect(emailId).not.toBe(cDoc.emailId); - expect(personId).not.toBe(cDoc.personId); - expect(objectIdField).not.toBe(cDoc.objectIdField); - expect(uuidFieldString).not.toEqual(cDoc.uuidFieldString); - expect(uuidFieldBuffer).not.toEqual(cDoc.uuidFieldBuffer); - } - } - } catch (e) { - expect(e).toBeUndefined(); - } - }); -}); -``` - ## CONTRIBUTIONS If you find a bug, do well to create an [issue](https://github.com/mernxl/mongoose-id-assigner/issues) so we fix things up in a flash. Have an awesome new feature to add to library, feel free to open a [PR](https://github.com/mernxl/mongoose-id-assigner/pulls) From c05366c2a764156d383cbc7b79fbcf45158a2395 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 08:14:10 +0100 Subject: [PATCH 50/52] chore(deps): upgrade test dependencies, remove babel-jest, babel-core --- package.json | 10 +- yarn.lock | 2034 ++++++++++++++++++++++++++++---------------------- 2 files changed, 1130 insertions(+), 914 deletions(-) diff --git a/package.json b/package.json index 3b26b45..d365cc3 100644 --- a/package.json +++ b/package.json @@ -67,19 +67,17 @@ }, "devDependencies": { "@types/event-to-promise": "^0.7.0", - "@types/jest": "^23.3.0", + "@types/jest": "^24.0.23", "@types/mongoose": "^5.5.32", "@types/uuid": "^3.4.3", - "babel-core": "^6.26.3", - "babel-jest": "^23.4.2", - "flow-bin": "^0.77.0", - "jest": "^23.4.1", + "flow-bin": "^0.113.0", + "jest": "^24.9.0", "mongodb-memory-server-global": "^6.0.2", "mongoose": "^5.7.13", "prettier": "^1.19.1", "rimraf": "^2.6.2", "semantic-release": "^15.8.1", - "ts-jest": "^23.0.1", + "ts-jest": "^24.2.0", "tslint": "^5.20.1", "tslint-config-prettier": "^1.18.0", "tslint-plugin-prettier": "^2.0.1", diff --git a/yarn.lock b/yarn.lock index cc28c8b..e676e90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,26 +2,79 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": version "7.5.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== dependencies: "@babel/highlight" "^7.0.0" -"@babel/code-frame@^7.0.0-beta.35": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz#5c2154415d6c09959a71845ef519d11157e95d10" +"@babel/core@^7.1.0": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.4.tgz#37e864532200cb6b50ee9a4045f5f817840166ab" + integrity sha512-+bYbx56j4nYBmpsWtnPUsKW3NdnYxbqyfrP2w9wILBuHzdfIKz9prieZK0DFPyIzkjYVUe4QkusGL07r5pXznQ== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.7.4" + "@babel/helpers" "^7.7.4" + "@babel/parser" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.0", "@babel/generator@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369" + integrity sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg== dependencies: - "@babel/highlight" "7.0.0-rc.1" + "@babel/types" "^7.7.4" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" -"@babel/highlight@7.0.0-rc.1": - version "7.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-rc.1.tgz#e0ca4731fa4786f7b9500421d6ff5e5a7753e81e" +"@babel/helper-function-name@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz#ab6e041e7135d436d8f0a3eca15de5b67a341a2e" + integrity sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ== dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" + "@babel/helper-get-function-arity" "^7.7.4" + "@babel/template" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/helper-get-function-arity@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz#cb46348d2f8808e632f0ab048172130e636005f0" + integrity sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-split-export-declaration@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz#57292af60443c4a3622cf74040ddc28e68336fd8" + integrity sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug== + dependencies: + "@babel/types" "^7.7.4" + +"@babel/helpers@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" + integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== + dependencies: + "@babel/template" "^7.7.4" + "@babel/traverse" "^7.7.4" + "@babel/types" "^7.7.4" "@babel/highlight@^7.0.0": version "7.5.0" @@ -32,6 +85,207 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.4.tgz#75ab2d7110c2cf2fa949959afb05fa346d2231bb" + integrity sha512-jIwvLO0zCL+O/LmEJQjWA75MQTWwx3c3u2JOTDK5D3/9egrWRRA0/0hk9XXywYnXZVVpzrBYeIQTmhwUaePI9g== + +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz#47cf220d19d6d0d7b154304701f468fc1cc6ff46" + integrity sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/template@^7.4.0", "@babel/template@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" + integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" + integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw== + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.7.4" + "@babel/helper-function-name" "^7.7.4" + "@babel/helper-split-export-declaration" "^7.7.4" + "@babel/parser" "^7.7.4" + "@babel/types" "^7.7.4" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.7.4": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" + integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@cnakazawa/watch@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" + integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@jest/console@^24.7.1", "@jest/console@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" + integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ== + dependencies: + "@jest/source-map" "^24.9.0" + chalk "^2.0.1" + slash "^2.0.0" + +"@jest/core@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" + integrity sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A== + dependencies: + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + graceful-fs "^4.1.15" + jest-changed-files "^24.9.0" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-resolve-dependencies "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + jest-watcher "^24.9.0" + micromatch "^3.1.10" + p-each-series "^1.0.0" + realpath-native "^1.1.0" + rimraf "^2.5.4" + slash "^2.0.0" + strip-ansi "^5.0.0" + +"@jest/environment@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" + integrity sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ== + dependencies: + "@jest/fake-timers" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + +"@jest/fake-timers@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" + integrity sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A== + dependencies: + "@jest/types" "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + +"@jest/reporters@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" + integrity sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.1" + istanbul-reports "^2.2.6" + jest-haste-map "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" + node-notifier "^5.4.2" + slash "^2.0.0" + source-map "^0.6.0" + string-length "^2.0.0" + +"@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" + integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.1.15" + source-map "^0.6.0" + +"@jest/test-result@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca" + integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA== + dependencies: + "@jest/console" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/istanbul-lib-coverage" "^2.0.0" + +"@jest/test-sequencer@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" + integrity sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A== + dependencies: + "@jest/test-result" "^24.9.0" + jest-haste-map "^24.9.0" + jest-runner "^24.9.0" + jest-runtime "^24.9.0" + +"@jest/transform@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" + integrity sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^24.9.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.1.15" + jest-haste-map "^24.9.0" + jest-regex-util "^24.9.0" + jest-util "^24.9.0" + micromatch "^3.1.10" + pirates "^4.0.1" + realpath-native "^1.1.0" + slash "^2.0.0" + source-map "^0.6.1" + write-file-atomic "2.4.1" + +"@jest/types@^24.9.0": + version "24.9.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59" + integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^13.0.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -127,6 +381,39 @@ into-stream "^3.1.0" lodash "^4.17.4" +"@types/babel__core@^7.1.0": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.3.tgz#e441ea7df63cd080dfcd02ab199e6d16a735fc30" + integrity sha512-8fBo0UR2CcwWxeX7WIIgJ7lXjasFxoYgRnFHUj+hRvKkpiBJbxhdAPTCY6/ZKM0uxANFVzt4yObSLuTiTnazDA== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.0" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a" + integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" + integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" + integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== + dependencies: + "@babel/types" "^7.3.0" + "@types/bson@*": version "1.0.11" resolved "https://registry.yarnpkg.com/@types/bson/-/bson-1.0.11.tgz#c95ad69bb0b3f5c33b4bb6cc86d86cafb273335c" @@ -143,9 +430,32 @@ version "1.2.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" -"@types/jest@^23.3.0": - version "23.3.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.1.tgz#a4319aedb071d478e6f407d1c4578ec8156829cf" +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" + integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + +"@types/istanbul-lib-report@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" + integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" + integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/jest@^24.0.23": + version "24.0.23" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.23.tgz#046f8e2ade026fe831623e361a36b6fb9a4463e4" + integrity sha512-L7MBvwfNpe7yVPTXLn32df/EK+AMBFAFvZrRuArGs7npEWnlziUXK+5GMIUTI4NIuwok3XibsjXCs5HxviYXjg== + dependencies: + jest-diff "^24.3.0" "@types/mongodb@*": version "3.1.3" @@ -167,12 +477,29 @@ version "10.5.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.7.tgz#960d9feb3ade2233bcc9843c918d740b4f78a7cf" +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + "@types/uuid@^3.4.3": version "3.4.3" resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.3.tgz#121ace265f5569ce40f4f6d0ff78a338c732a754" dependencies: "@types/node" "*" +"@types/yargs-parser@*": + version "13.1.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" + integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== + +"@types/yargs@^13.0.0": + version "13.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.3.tgz#76482af3981d4412d65371a318f992d33464a380" + integrity sha512-K8/LfZq2duW33XW/tFwEAfnZlqIfVsoyRB3kfXdPXYhl0nfM8mmh7GS0jg7WrX2Dgq/0Ha/pR1PaR+BvmWwjiQ== + dependencies: + "@types/yargs-parser" "*" + JSONStream@^1.0.4, JSONStream@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" @@ -267,6 +594,11 @@ ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" +ansi-regex@^4.0.0, ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -296,12 +628,6 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -append-transform@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" - dependencies: - default-require-extensions "^2.0.0" - aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2, aproba@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -331,17 +657,11 @@ argv-formatter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/argv-formatter/-/argv-formatter-1.0.0.tgz#a0ca0cbc29a5b73e836eebe1cbf6c5e0e4eb82f9" -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" @@ -371,10 +691,6 @@ array-uniq@^1.0.0, array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -409,7 +725,7 @@ async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" -async@2.6.1, async@^2.1.4: +async@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: @@ -435,150 +751,43 @@ aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-generator@^6.18.0, babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^23.4.2: - version "23.4.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.4.2.tgz#f276de67798a5d68f2d6e87ff518c2f6e1609877" - dependencies: - babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.2.0" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-istanbul@^4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" - -babel-plugin-jest-hoist@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" - -babel-plugin-syntax-object-rest-spread@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-preset-jest@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" +babel-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.9.0.tgz#3fc327cb8467b89d14d7bc70e315104a783ccd54" + integrity sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw== dependencies: - babel-plugin-jest-hoist "^23.2.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/babel__core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.9.0" + chalk "^2.4.2" + slash "^2.0.0" -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" +babel-plugin-istanbul@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz#df4ade83d897a92df069c4d9a25cf2671293c854" + integrity sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw== dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" + "@babel/helper-plugin-utils" "^7.0.0" + find-up "^3.0.0" + istanbul-lib-instrument "^3.3.0" + test-exclude "^5.2.3" -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" +babel-plugin-jest-hoist@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz#4f837091eb407e01447c8843cbec546d0002d756" + integrity sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw== dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" + "@types/babel__traverse" "^7.0.6" -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" +babel-preset-jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" + integrity sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg== dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.9.0" balanced-match@^1.0.0: version "1.0.0" @@ -661,14 +870,6 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -694,6 +895,13 @@ browser-resolve@^1.11.3: dependencies: resolve "1.1.7" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" @@ -728,7 +936,7 @@ buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" -buffer-from@^1.0.0: +buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -815,9 +1023,10 @@ call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase-keys@^4.0.0: version "4.2.0" @@ -835,16 +1044,17 @@ camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" -camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -capture-exit@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== dependencies: - rsvp "^3.3.3" + rsvp "^4.8.4" capture-stack-trace@^1.0.0: version "1.0.0" @@ -886,6 +1096,15 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chownr@^1.0.1, chownr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" @@ -894,6 +1113,11 @@ ci-info@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cidr-regex@^2.0.8: version "2.0.9" resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.9.tgz#9c17bb2b18e15af07f7d0c3b994b961d687ed1c9" @@ -955,14 +1179,19 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" -closest-file-data@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/closest-file-data/-/closest-file-data-0.1.4.tgz#975f87c132f299d24a0375b9f63ca3fb88f72b3a" - cmd-shim@^2.0.2, cmd-shim@~2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" @@ -1020,6 +1249,11 @@ commander@^2.12.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" +commander@~2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@~2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" @@ -1038,10 +1272,6 @@ compare-func@^1.3.1: array-ify "^1.0.0" dot-prop "^3.0.0" -compare-versions@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.3.0.tgz#af93ea705a96943f622ab309578b9b90586f39c3" - component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1122,10 +1352,17 @@ conventional-commits-parser@^3.0.0: through2 "^2.0.0" trim-off-newlines "^1.0.0" -convert-source-map@^1.4.0, convert-source-map@^1.5.1: +convert-source-map@^1.4.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -1141,10 +1378,6 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" -core-js@^2.4.0, core-js@^2.5.0: - version "2.5.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1238,13 +1471,13 @@ debug@3.1.0, debug@^3.1.0: dependencies: ms "2.0.0" -debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^4.1.1: +debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -1262,9 +1495,10 @@ decamelize-keys@^1.0.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1: +decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= decamelize@^2.0.0: version "2.0.0" @@ -1337,12 +1571,6 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" -default-require-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" - dependencies: - strip-bom "^3.0.0" - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -1383,12 +1611,6 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - detect-indent@^5.0.0, detect-indent@~5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -1408,9 +1630,10 @@ dezalgo@^1.0.0, dezalgo@~1.0.3: asap "^2.0.0" wrappy "1" -diff@^3.2.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" +diff-sequences@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" + integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew== diff@^4.0.1: version "4.0.1" @@ -1476,6 +1699,11 @@ editor@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/editor/-/editor-1.0.0.tgz#60c7f87bd62bcc6a894fa8ccd6afb7823a24f742" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -1505,7 +1733,7 @@ errno@~0.1.7: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" dependencies: @@ -1585,11 +1813,10 @@ event-to-promise@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/event-to-promise/-/event-to-promise-0.8.0.tgz#4b84f11772b6f25f7752fc74d971531ac6f5b626" -exec-sh@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" - dependencies: - merge "^1.2.0" +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== execa@^0.10.0: version "0.10.0" @@ -1615,16 +1842,23 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -1637,22 +1871,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expect@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.5.0.tgz#18999a0eef8f8acf99023fde766d9c323c2562ed" +expect@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca" + integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q== dependencies: + "@jest/types" "^24.9.0" ansi-styles "^3.2.0" - jest-diff "^23.5.0" - jest-get-type "^22.1.0" - jest-matcher-utils "^23.5.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-regex-util "^24.9.0" extend-shallow@^2.0.1: version "2.0.1" @@ -1671,12 +1900,6 @@ extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -1717,7 +1940,7 @@ fast-glob@^2.0.2: merge2 "^1.2.1" micromatch "^3.1.10" -fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -1759,27 +1982,6 @@ file-type@^6.1.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1807,13 +2009,6 @@ find-package-json@^1.2.0: resolved "https://registry.yarnpkg.com/find-package-json/-/find-package-json-1.2.0.tgz#4057d1b943f82d8445fe52dc9cf456f6b8b58083" integrity sha512-+SOGcLGYDJHtyqHd87ysBhmaeQ95oWspDKnMXBrnQ9Eq4OkLNqejgoaD8xVWu6GPa0B6roa6KinCMEMcVeqONw== -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -1841,9 +2036,10 @@ find-versions@^2.0.0: array-uniq "^1.0.0" semver-regex "^1.0.0" -flow-bin@^0.77.0: - version "0.77.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.77.0.tgz#4e5c93929f289a0c28e08fb361a9734944a11297" +flow-bin@^0.113.0: + version "0.113.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.113.0.tgz#6457d250dbc6f71ca51e75f00a96d23cde5d987a" + integrity sha512-76uE2LGNe50wm+Jup8Np4FBcMbyy5V2iE+K25PPIYLaEMGHrL1jnQfP9L0hTzA5oh2ZJlexRLMlaPqIYIKH9nw== flush-write-stream@^1.0.0: version "1.0.3" @@ -1852,16 +2048,10 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -1902,14 +2092,6 @@ fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" -fs-extra@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" @@ -1945,12 +2127,13 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== dependencies: - nan "^2.9.2" - node-pre-gyp "^0.10.0" + nan "^2.12.1" + node-pre-gyp "^0.12.0" fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" @@ -1999,6 +2182,11 @@ get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-port@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.0.0.tgz#aa22b6b86fd926dd7884de3e23332c9f70c031a6" @@ -2064,19 +2252,6 @@ git-url-parse@^10.0.1: dependencies: git-up "^2.0.0" -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -2117,9 +2292,10 @@ global-dirs@^0.1.0: dependencies: ini "^1.3.4" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globby@^8.0.0: version "8.0.1" @@ -2153,6 +2329,11 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6 version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +graceful-fs@^4.1.15: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + "graceful-readlink@>= 1.0.0": version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" @@ -2161,7 +2342,7 @@ growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" -handlebars@^4.0.2, handlebars@^4.0.3: +handlebars@^4.0.2: version "4.0.11" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" dependencies: @@ -2171,6 +2352,17 @@ handlebars@^4.0.2, handlebars@^4.0.3: optionalDependencies: uglify-js "^2.6" +handlebars@^4.1.2: + version "4.5.3" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" + integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -2188,10 +2380,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2233,13 +2421,6 @@ has@^1.0.1: dependencies: function-bind "^1.1.1" -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - hook-std@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-1.1.0.tgz#7f76b74b6f96d3cd4106afb50a66bdb0af2d2a2d" @@ -2336,11 +2517,12 @@ import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" -import-local@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== dependencies: - pkg-dir "^2.0.0" + pkg-dir "^3.0.0" resolve-cwd "^2.0.0" imurmurhash@^0.1.4: @@ -2386,7 +2568,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.2, invariant@^2.2.4: +invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" dependencies: @@ -2440,6 +2622,13 @@ is-ci@^1.0.10: dependencies: ci-info "^1.0.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-cidr@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-2.0.6.tgz#4b01c9693d8e18399dacd18a4f3d60ea5871ac60" @@ -2482,16 +2671,6 @@ is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -2502,20 +2681,10 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -2526,15 +2695,10 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-glob@^3.1.0: version "3.1.0" @@ -2563,22 +2727,12 @@ is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -2599,14 +2753,6 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -2649,14 +2795,15 @@ is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -2692,371 +2839,412 @@ issue-parser@^2.2.0: lodash.isplainobject "^4.0.6" lodash.isstring "^4.0.1" -istanbul-api@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" - dependencies: - async "^2.1.4" - compare-versions "^3.1.0" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-hook "^1.2.0" - istanbul-lib-instrument "^1.10.1" - istanbul-lib-report "^1.1.4" - istanbul-lib-source-maps "^1.2.4" - istanbul-reports "^1.3.0" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" - -istanbul-lib-hook@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.1.tgz#f614ec45287b2a8fc4f07f5660af787575601805" - dependencies: - append-transform "^1.0.0" +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== -istanbul-lib-instrument@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.0" - semver "^5.3.0" +istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" + integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== + dependencies: + "@babel/generator" "^7.4.0" + "@babel/parser" "^7.4.3" + "@babel/template" "^7.4.0" + "@babel/traverse" "^7.4.3" + "@babel/types" "^7.4.0" + istanbul-lib-coverage "^2.0.5" + semver "^6.0.0" -istanbul-lib-report@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" +istanbul-lib-report@^2.0.4: + version "2.0.8" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" + integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== dependencies: - istanbul-lib-coverage "^1.2.0" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + supports-color "^6.1.0" -istanbul-lib-source-maps@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.5.tgz#ffe6be4e7ab86d3603e4290d54990b14506fc9b1" +istanbul-lib-source-maps@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.0" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" -istanbul-reports@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554" +istanbul-reports@^2.2.6: + version "2.2.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af" + integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA== dependencies: - handlebars "^4.0.3" + handlebars "^4.1.2" java-properties@^0.2.9: version "0.2.10" resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-0.2.10.tgz#2551560c25fa1ad94d998218178f233ad9b18f60" -jest-changed-files@^23.4.2: - version "23.4.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" +jest-changed-files@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039" + integrity sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg== dependencies: + "@jest/types" "^24.9.0" + execa "^1.0.0" throat "^4.0.0" -jest-cli@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.5.0.tgz#d316b8e34a38a610a1efc4f0403d8ef8a55e4492" +jest-cli@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" + integrity sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg== dependencies: - ansi-escapes "^3.0.0" + "@jest/core" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.3.1" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-instrument "^1.10.1" - istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.4.2" - jest-config "^23.5.0" - jest-environment-jsdom "^23.4.0" - jest-get-type "^22.1.0" - jest-haste-map "^23.5.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve-dependencies "^23.5.0" - jest-runner "^23.5.0" - jest-runtime "^23.5.0" - jest-snapshot "^23.5.0" - jest-util "^23.4.0" - jest-validate "^23.5.0" - jest-watcher "^23.4.0" - jest-worker "^23.2.0" - micromatch "^2.3.11" - node-notifier "^5.2.1" - prompts "^0.1.9" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^11.0.0" - -jest-config@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.5.0.tgz#3770fba03f7507ee15f3b8867c742e48f31a9773" - dependencies: - babel-core "^6.0.0" - babel-jest "^23.4.2" + import-local "^2.0.0" + is-ci "^2.0.0" + jest-config "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + prompts "^2.0.1" + realpath-native "^1.1.0" + yargs "^13.3.0" + +jest-config@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" + integrity sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^24.9.0" + "@jest/types" "^24.9.0" + babel-jest "^24.9.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^23.4.0" - jest-environment-node "^23.4.0" - jest-get-type "^22.1.0" - jest-jasmine2 "^23.5.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.5.0" - jest-util "^23.4.0" - jest-validate "^23.5.0" - micromatch "^2.3.11" - pretty-format "^23.5.0" - -jest-diff@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.5.0.tgz#250651a433dd0050290a07642946cc9baaf06fba" + jest-environment-jsdom "^24.9.0" + jest-environment-node "^24.9.0" + jest-get-type "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + micromatch "^3.1.10" + pretty-format "^24.9.0" + realpath-native "^1.1.0" + +jest-diff@^24.3.0, jest-diff@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" + integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ== dependencies: chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.1.0" - pretty-format "^23.5.0" + diff-sequences "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" -jest-docblock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" +jest-docblock@^24.3.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" + integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA== dependencies: detect-newline "^2.1.0" -jest-each@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.5.0.tgz#77f7e2afe6132a80954b920006e78239862b10ba" +jest-each@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.9.0.tgz#eb2da602e2a610898dbc5f1f6df3ba86b55f8b05" + integrity sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog== dependencies: + "@jest/types" "^24.9.0" chalk "^2.0.1" - pretty-format "^23.5.0" - -jest-environment-jsdom@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" - dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" + jest-get-type "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + +jest-environment-jsdom@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" + integrity sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA== + dependencies: + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" jsdom "^11.5.1" -jest-environment-node@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" +jest-environment-node@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" + integrity sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA== dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" + "@jest/environment" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/types" "^24.9.0" + jest-mock "^24.9.0" + jest-util "^24.9.0" -jest-get-type@^22.1.0: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" +jest-get-type@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" + integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q== -jest-haste-map@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.5.0.tgz#d4ca618188bd38caa6cb20349ce6610e194a8065" +jest-haste-map@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.9.0.tgz#b38a5d64274934e21fa417ae9a9fbeb77ceaac7d" + integrity sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ== dependencies: + "@jest/types" "^24.9.0" + anymatch "^2.0.0" fb-watchman "^2.0.0" - graceful-fs "^4.1.11" + graceful-fs "^4.1.15" invariant "^2.2.4" - jest-docblock "^23.2.0" - jest-serializer "^23.0.1" - jest-worker "^23.2.0" - micromatch "^2.3.11" - sane "^2.0.0" + jest-serializer "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.9.0" + micromatch "^3.1.10" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" -jest-jasmine2@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.5.0.tgz#05fe7f1788e650eeb5a03929e6461ea2e9f3db53" +jest-jasmine2@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" + integrity sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw== dependencies: - babel-traverse "^6.0.0" + "@babel/traverse" "^7.1.0" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" co "^4.6.0" - expect "^23.5.0" - is-generator-fn "^1.0.0" - jest-diff "^23.5.0" - jest-each "^23.5.0" - jest-matcher-utils "^23.5.0" - jest-message-util "^23.4.0" - jest-snapshot "^23.5.0" - jest-util "^23.4.0" - pretty-format "^23.5.0" - -jest-leak-detector@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.5.0.tgz#14ac2a785bd625160a2ea968fd5d98b7dcea3e64" - dependencies: - pretty-format "^23.5.0" - -jest-matcher-utils@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.5.0.tgz#0e2ea67744cab78c9ab15011c4d888bdd3e49e2a" + expect "^24.9.0" + is-generator-fn "^2.0.0" + jest-each "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-runtime "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + pretty-format "^24.9.0" + throat "^4.0.0" + +jest-leak-detector@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" + integrity sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA== + dependencies: + jest-get-type "^24.9.0" + pretty-format "^24.9.0" + +jest-matcher-utils@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" + integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA== dependencies: chalk "^2.0.1" - jest-get-type "^22.1.0" - pretty-format "^23.5.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + pretty-format "^24.9.0" -jest-message-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" +jest-message-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" + integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw== dependencies: - "@babel/code-frame" "^7.0.0-beta.35" + "@babel/code-frame" "^7.0.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/stack-utils" "^1.0.1" chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" + micromatch "^3.1.10" + slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" +jest-mock@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" + integrity sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w== + dependencies: + "@jest/types" "^24.9.0" -jest-regex-util@^23.3.0: - version "23.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" +jest-pnp-resolver@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" + integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== + +jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" + integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA== -jest-resolve-dependencies@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.5.0.tgz#10c4d135beb9d2256de1fedc7094916c3ad74af7" +jest-resolve-dependencies@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz#ad055198959c4cfba8a4f066c673a3f0786507ab" + integrity sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g== dependencies: - jest-regex-util "^23.3.0" - jest-snapshot "^23.5.0" + "@jest/types" "^24.9.0" + jest-regex-util "^24.3.0" + jest-snapshot "^24.9.0" -jest-resolve@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.5.0.tgz#3b8e7f67e84598f0caf63d1530bd8534a189d0e6" +jest-resolve@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" + integrity sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ== dependencies: + "@jest/types" "^24.9.0" browser-resolve "^1.11.3" chalk "^2.0.1" - realpath-native "^1.0.0" - -jest-runner@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.5.0.tgz#570f7a044da91648b5bb9b6baacdd511076c71d7" - dependencies: + jest-pnp-resolver "^1.2.1" + realpath-native "^1.1.0" + +jest-runner@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" + integrity sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + chalk "^2.4.2" exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^23.5.0" - jest-docblock "^23.2.0" - jest-haste-map "^23.5.0" - jest-jasmine2 "^23.5.0" - jest-leak-detector "^23.5.0" - jest-message-util "^23.4.0" - jest-runtime "^23.5.0" - jest-util "^23.4.0" - jest-worker "^23.2.0" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-docblock "^24.3.0" + jest-haste-map "^24.9.0" + jest-jasmine2 "^24.9.0" + jest-leak-detector "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" + jest-runtime "^24.9.0" + jest-util "^24.9.0" + jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.5.0.tgz#eb503525a196dc32f2f9974e3482d26bdf7b63ce" - dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.1.6" +jest-runtime@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" + integrity sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw== + dependencies: + "@jest/console" "^24.7.1" + "@jest/environment" "^24.9.0" + "@jest/source-map" "^24.3.0" + "@jest/transform" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" chalk "^2.0.1" - convert-source-map "^1.4.0" exit "^0.1.2" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.11" - jest-config "^23.5.0" - jest-haste-map "^23.5.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.5.0" - jest-snapshot "^23.5.0" - jest-util "^23.4.0" - jest-validate "^23.5.0" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^11.0.0" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.9.0" + jest-haste-map "^24.9.0" + jest-message-util "^24.9.0" + jest-mock "^24.9.0" + jest-regex-util "^24.3.0" + jest-resolve "^24.9.0" + jest-snapshot "^24.9.0" + jest-util "^24.9.0" + jest-validate "^24.9.0" + realpath-native "^1.1.0" + slash "^2.0.0" + strip-bom "^3.0.0" + yargs "^13.3.0" -jest-serializer@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" +jest-serializer@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" + integrity sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ== -jest-snapshot@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.5.0.tgz#cc368ebd8513e1175e2a7277f37a801b7358ae79" +jest-snapshot@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" + integrity sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew== dependencies: - babel-types "^6.0.0" + "@babel/types" "^7.0.0" + "@jest/types" "^24.9.0" chalk "^2.0.1" - jest-diff "^23.5.0" - jest-matcher-utils "^23.5.0" - jest-message-util "^23.4.0" - jest-resolve "^23.5.0" + expect "^24.9.0" + jest-diff "^24.9.0" + jest-get-type "^24.9.0" + jest-matcher-utils "^24.9.0" + jest-message-util "^24.9.0" + jest-resolve "^24.9.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^23.5.0" - semver "^5.5.0" - -jest-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" - dependencies: - callsites "^2.0.0" + pretty-format "^24.9.0" + semver "^6.2.0" + +jest-util@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" + integrity sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg== + dependencies: + "@jest/console" "^24.9.0" + "@jest/fake-timers" "^24.9.0" + "@jest/source-map" "^24.9.0" + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + callsites "^3.0.0" chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^23.4.0" + graceful-fs "^4.1.15" + is-ci "^2.0.0" mkdirp "^0.5.1" - slash "^1.0.0" + slash "^2.0.0" source-map "^0.6.0" -jest-validate@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.5.0.tgz#f5df8f761cf43155e1b2e21d6e9de8a2852d0231" +jest-validate@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" + integrity sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ== dependencies: + "@jest/types" "^24.9.0" + camelcase "^5.3.1" chalk "^2.0.1" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^23.5.0" - -jest-watcher@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" - dependencies: + jest-get-type "^24.9.0" + leven "^3.1.0" + pretty-format "^24.9.0" + +jest-watcher@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" + integrity sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw== + dependencies: + "@jest/test-result" "^24.9.0" + "@jest/types" "^24.9.0" + "@types/yargs" "^13.0.0" ansi-escapes "^3.0.0" chalk "^2.0.1" + jest-util "^24.9.0" string-length "^2.0.0" -jest-worker@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" +jest-worker@^24.6.0, jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== dependencies: - merge-stream "^1.0.1" + merge-stream "^2.0.0" + supports-color "^6.1.0" -jest@^23.4.1: - version "23.5.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.5.0.tgz#80de353d156ea5ea4a7332f7962ac79135fbc62e" +jest@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" + integrity sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw== dependencies: - import-local "^1.0.0" - jest-cli "^23.5.0" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + import-local "^2.0.0" + jest-cli "^24.9.0" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -3070,7 +3258,7 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.7.0, js-yaml@^3.9.0: +js-yaml@^3.9.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: @@ -3112,9 +3300,10 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" @@ -3132,9 +3321,12 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +json5@2.x, json5@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" jsonfile@^4.0.0: version "4.0.0" @@ -3180,9 +3372,10 @@ kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" -kleur@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.1.tgz#7cc64b0d188d0dcbc98bdcdfdda2cc10619ddce8" +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== latest-version@^3.0.0: version "3.1.0" @@ -3208,9 +3401,10 @@ left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@~0.3.0: version "0.3.0" @@ -3263,16 +3457,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -3355,6 +3539,11 @@ lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -3379,6 +3568,11 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +lodash@^4.17.13: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -3413,6 +3607,14 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + make-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" @@ -3420,6 +3622,11 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-error@1.x: + version "1.3.5" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" + integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + "make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" @@ -3490,10 +3697,6 @@ marked@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/marked/-/marked-0.4.0.tgz#9ad2c2a7a1791f10a852e0112f77b571dce10c66" -math-random@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac" - md5-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-4.0.0.tgz#f3f7ba1e2dd1144d5bf1de698d0e5f44a4409584" @@ -3527,39 +3730,16 @@ meow@^4.0.0: redent "^2.0.0" trim-newlines "^2.0.0" -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - dependencies: - readable-stream "^2.0.1" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" -merge@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - -micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" dependencies: @@ -3595,7 +3775,7 @@ mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" -minimatch@^3.0.3, minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -3670,7 +3850,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -3796,9 +3976,10 @@ mute-stream@~0.0.4: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@^2.9.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== nanomatch@^1.2.9: version "1.2.13" @@ -3828,6 +4009,11 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + nerf-dart@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/nerf-dart/-/nerf-dart-1.0.0.tgz#e6dab7febf5ad816ea81cf5c629c5a0ebde72c1a" @@ -3875,18 +4061,26 @@ node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" -node-notifier@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^5.4.2: + version "5.4.3" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.3.tgz#cb72daf94c93904098e28b9c590fd866e464bd50" + integrity sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q== dependencies: growly "^1.3.0" - semver "^5.4.1" + is-wsl "^1.1.0" + semver "^5.5.0" shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -3921,7 +4115,7 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: @@ -4211,13 +4405,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.2" es-abstract "^1.5.1" -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -4264,7 +4451,7 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4280,6 +4467,13 @@ osenv@0, osenv@^0.1.4, osenv@^0.1.5: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + p-filter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-1.0.0.tgz#629d317150209c8fd508ba137713ef4bb920e9db" @@ -4405,21 +4599,6 @@ parse-github-url@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -4446,12 +4625,6 @@ path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -4461,7 +4634,7 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -4478,18 +4651,10 @@ path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -path-parse@^1.0.5: +path-parse@^1.0.5, path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -4504,7 +4669,7 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -pify@^2.0.0, pify@^2.3.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -4512,6 +4677,11 @@ pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -4522,6 +4692,13 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pkg-conf@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" @@ -4529,11 +4706,12 @@ pkg-conf@^2.1.0: find-up "^2.0.0" load-json-file "^4.0.0" -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: - find-up "^2.1.0" + find-up "^3.0.0" pkg-dir@^4.1.0: version "4.2.0" @@ -4558,25 +4736,20 @@ prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - prettier@^1.19.1: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -pretty-format@^23.5.0: - version "23.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.5.0.tgz#0f9601ad9da70fe690a269cd3efca732c210687c" +pretty-format@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9" + integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA== dependencies: - ansi-regex "^3.0.0" + "@jest/types" "^24.9.0" + ansi-regex "^4.0.0" ansi-styles "^3.2.0" - -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + react-is "^16.8.4" process-nextick-args@~2.0.0: version "2.0.0" @@ -4593,12 +4766,13 @@ promise-retry@^1.1.1: err-code "^1.0.0" retry "^0.10.0" -prompts@^0.1.9: - version "0.1.14" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" +prompts@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" + integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== dependencies: - kleur "^2.0.1" - sisteransi "^0.1.1" + kleur "^3.0.3" + sisteransi "^1.0.3" promzard@^0.3.0: version "0.3.0" @@ -4689,14 +4863,6 @@ qw@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4" -randomatic@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116" - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -4706,6 +4872,11 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-is@^16.8.4: + version "16.12.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" + integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== + read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" @@ -4746,13 +4917,6 @@ read-package-tree@^5.2.1: read-package-json "^2.0.0" readdir-scoped-modules "^1.0.0" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -4767,14 +4931,6 @@ read-pkg-up@^4.0.0: find-up "^3.0.0" read-pkg "^3.0.0" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -4797,7 +4953,7 @@ read@1, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -4827,9 +4983,10 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -realpath-native@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.1.tgz#07f40a0cce8f8261e2e8b7ebebf5c95965d7b633" +realpath-native@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== dependencies: util.promisify "^1.0.0" @@ -4846,16 +5003,6 @@ redeyed@~1.0.0: dependencies: esprima "~3.0.0" -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -4893,12 +5040,6 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - request-promise-core@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" @@ -4946,6 +5087,11 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + require_optional@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e" @@ -4981,6 +5127,13 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@1.x: + version "1.13.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" + integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== + dependencies: + path-parse "^1.0.6" + resolve@^1.3.2: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" @@ -5018,9 +5171,10 @@ rimraf@^2.6.3: dependencies: glob "^7.1.3" -rsvp@^3.3.3: - version "3.6.2" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" @@ -5042,20 +5196,20 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -sane@^2.0.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== dependencies: + "@cnakazawa/watch" "^1.0.3" anymatch "^2.0.0" - capture-exit "^1.2.0" - exec-sh "^0.2.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" fb-watchman "^2.0.0" micromatch "^3.1.4" minimist "^1.1.1" walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.2.3" saslprep@^1.0.0: version "1.0.3" @@ -5120,7 +5274,12 @@ semver-regex@^1.0.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" -semver@^6.0.0: +semver@^5.5, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -5201,14 +5360,20 @@ signale@^1.2.1: figures "^2.0.0" pkg-conf "^2.1.0" -sisteransi@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" +sisteransi@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" + integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + sliced@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" @@ -5302,12 +5467,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - source-map-support@^0.5.6: version "0.5.8" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.8.tgz#04f5581713a8a65612d0175fbf3a01f80a162613" @@ -5325,11 +5484,11 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: +source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@^0.6.0, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -5485,6 +5644,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -5511,16 +5679,17 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-bom@3.0.0, strip-bom@^3.0.0: +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - strip-dirs@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" @@ -5543,18 +5712,19 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - supports-color@^5.3.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" dependencies: has-flag "^3.0.0" +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -5597,15 +5767,15 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -test-exclude@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa" +test-exclude@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== dependencies: - arrify "^1.0.1" - micromatch "^3.1.8" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" text-extensions@^1.0.0: version "1.7.0" @@ -5653,9 +5823,10 @@ to-buffer@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= to-object-path@^0.3.0: version "0.3.0" @@ -5704,17 +5875,21 @@ trim-off-newlines@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -ts-jest@^23.0.1: - version "23.1.3" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.1.3.tgz#33e3187d3ef0d42adada6347acf2c3539ac56107" - dependencies: - closest-file-data "^0.1.4" - fs-extra "6.0.1" - lodash "^4.17.10" +ts-jest@^24.2.0: + version "24.2.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.2.0.tgz#7abca28c2b4b0a1fdd715cd667d65d047ea4e768" + integrity sha512-Yc+HLyldlIC9iIK8xEN7tV960Or56N49MDP7hubCZUeI7EbIOTsas6rXCMB4kQjLACJ7eDOF4xWEO5qumpKsag== + dependencies: + bs-logger "0.x" + buffer-from "1.x" + fast-json-stable-stringify "2.x" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + mkdirp "0.x" + resolve "1.x" + semver "^5.5" + yargs-parser "10.x" tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1: version "1.9.3" @@ -5799,6 +5974,14 @@ uglify-js@^2.6: optionalDependencies: uglify-to-browserify "~1.0.0" +uglify-js@^3.1.4: + version "3.7.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.1.tgz#35c7de17971a4aa7689cd2eae0a5b39bb838c0c5" + integrity sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g== + dependencies: + commander "~2.20.3" + source-map "~0.6.1" + uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" @@ -5952,19 +6135,12 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -walker@~1.0.5: +walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" dependencies: makeerror "1.0.x" -watch@~0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" - dependencies: - exec-sh "^0.2.0" - minimist "^1.2.0" - wcwidth@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" @@ -5997,7 +6173,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" dependencies: @@ -6051,11 +6227,29 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" dependencies: @@ -6101,12 +6295,20 @@ yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" -yargs-parser@^10.1.0: +yargs-parser@10.x, yargs-parser@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" dependencies: camelcase "^4.1.0" +yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" @@ -6147,6 +6349,22 @@ yargs@^12.0.0: y18n "^3.2.1 || ^4.0.0" yargs-parser "^10.1.0" +yargs@^13.3.0: + version "13.3.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" From bb37e5cd242d5bc375e8ff32df4102b4442b8c61 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 08:40:31 +0100 Subject: [PATCH 51/52] test: config db to allow for more than one jest worker --- package.json | 4 +- src/__mocks__/mongoose.config.ts | 23 +++++++---- src/__tests__/LocalStateStore.spec.ts | 14 +++---- src/__tests__/MongooseIdAssigner.spec.ts | 38 +++++++++---------- .../__tests__/initialise-options.spec.ts | 9 +---- 5 files changed, 45 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index d365cc3..fa5a962 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,8 @@ "flow": "./node_modules/.bin/flow", "lint": "tslint -p ./", "jest:watch": "IN_MEM=true jest --watch", - "jest": "jest --maxWorkers 1", - "coverage": "jest --coverage --maxWorkers 1", + "jest": "jest --maxWorkers 2", + "coverage": "jest --coverage --maxWorkers 2", "test-mongo-vers": "export MONGOMS_DOWNLOAD_MIRROR=\"http://downloads.mongodb.org\" && IN_MEM=true MONGOMS_VERSION=v3.4-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v3.6-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v4.0-latest yarn run jest && IN_MEM=true MONGOMS_VERSION=v4.2-latest yarn run coverage", "test": "yarn run lint && yarn run coverage && yarn run tsc && yarn run flow", "test-ci": "yarn run lint && yarn run test-mongo-vers && yarn run tsc && yarn run flow", diff --git a/src/__mocks__/mongoose.config.ts b/src/__mocks__/mongoose.config.ts index 3a91fbd..13faa54 100644 --- a/src/__mocks__/mongoose.config.ts +++ b/src/__mocks__/mongoose.config.ts @@ -1,5 +1,6 @@ import { MongoMemoryServer } from 'mongodb-memory-server-global'; import * as mongoose from 'mongoose'; +import uuid = require('uuid'); const mongooseOptions = { promiseLibrary: Promise, @@ -18,7 +19,9 @@ export async function getMongoose() { const mongoUri = await mongoServer.getConnectionString(); - mongoose.connection.on('error', e => { + const connection = mongoose.createConnection(); + + connection.on('error', e => { if (e.message.code === 'ETIMEDOUT') { console.error(e); } else { @@ -26,24 +29,28 @@ export async function getMongoose() { } }); - mongoose.connection.once('open', () => { + connection.once('open', () => { console.log(`MongoDB successfully connected to ${mongoUri}, ${MONGOMS_VERSION}`); }); - mongoose.connection.once('disconnected', () => mongoServer.stop()); + connection.once('close', () => mongoServer.stop()); - await mongoose.connect(mongoUri, mongooseOptions); + await connection.openUri(mongoUri, mongooseOptions); - return mongoose; + return connection; } else { jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; - mongoose.connection.once('open', () => { + const connection = mongoose.createConnection(); + + connection.once('open', () => { console.log(`MongoDB successfully connected local`); }); - await mongoose.connect('mongodb://localhost:27017/__mgIdAss__', mongooseOptions); + connection.once('close', () => console.log('Closed')); + + await connection.openUri(`mongodb://localhost:27017/__${uuid()}__`, mongooseOptions); - return mongoose; + return connection; } } diff --git a/src/__tests__/LocalStateStore.spec.ts b/src/__tests__/LocalStateStore.spec.ts index 444e684..f489baf 100644 --- a/src/__tests__/LocalStateStore.spec.ts +++ b/src/__tests__/LocalStateStore.spec.ts @@ -1,23 +1,23 @@ -import { Mongoose } from 'mongoose'; +import { Connection } from 'mongoose'; import { getMongoose } from '../__mocks__/mongoose.config'; import { getSchema } from '../__mocks__/test.models'; import { LocalStateStore, localStateStore, SchemaState } from '../LocalStateStore'; import { MongooseIdAssigner } from '../MongooseIdAssigner'; const ExampleSchema = getSchema(0); -let mongoose: Mongoose; +let connection: Connection; beforeAll(async () => { - mongoose = await getMongoose(); + connection = await getMongoose(); }); afterAll(async () => { - await mongoose.disconnect(); + await connection.close(); }); describe('LocalStateStore', () => { afterEach(async () => { - await mongoose.connection.dropDatabase(); + await connection.dropDatabase(); }); describe('basics', () => { @@ -52,7 +52,7 @@ describe('LocalStateStore', () => { localStateStore.clear(); localStateStore.setCollName('newName'); exampleIA = new MongooseIdAssigner(ExampleSchema, { modelName }); - const ExampleModel = mongoose.model(modelName, ExampleSchema); + const ExampleModel = connection.model(modelName, ExampleSchema); try { await exampleIA.initialise(ExampleModel); @@ -65,7 +65,7 @@ describe('LocalStateStore', () => { it('should throw Error if an Assigner already Initialised', async () => { localStateStore.clear(); exampleIA = new MongooseIdAssigner(ExampleSchema, { modelName }); - const ExampleModel = mongoose.model(modelName, ExampleSchema); + const ExampleModel = connection.model(modelName, ExampleSchema); try { await exampleIA.initialise(ExampleModel); diff --git a/src/__tests__/MongooseIdAssigner.spec.ts b/src/__tests__/MongooseIdAssigner.spec.ts index 3fe6248..db1c9d1 100644 --- a/src/__tests__/MongooseIdAssigner.spec.ts +++ b/src/__tests__/MongooseIdAssigner.spec.ts @@ -1,19 +1,19 @@ import { Binary } from 'bson'; -import { Document, Model, Mongoose, Schema, Types } from 'mongoose'; +import { Connection, Document, Model, Schema, Types } from 'mongoose'; import { getMongoose } from '../__mocks__/mongoose.config'; import { getSchema } from '../__mocks__/test.models'; import { AssignerPluginOptions, FieldConfigTypes } from '../assigner.interfaces'; import { localStateStore } from '../LocalStateStore'; import { MongooseIdAssigner } from '../MongooseIdAssigner'; -let mongoose: Mongoose; +let connection: Connection; beforeAll(async () => { - mongoose = await getMongoose(); + connection = await getMongoose(); }); afterAll(async () => { - await mongoose.disconnect(); + await connection.close(); }); describe('MongooseIdAssigner', () => { @@ -30,7 +30,7 @@ describe('MongooseIdAssigner', () => { let exampleModel: Model; afterEach(async () => { - await mongoose.connection.dropDatabase(); + await connection.dropDatabase(); }); describe('basics', () => { @@ -59,7 +59,7 @@ describe('MongooseIdAssigner', () => { modelName: 'example1', }); - exampleModel = mongoose.model('example1', exampleSchema); + exampleModel = connection.model('example1', exampleSchema); const doc = await exampleModel.create({ personId: 'mernxl' }); @@ -75,7 +75,7 @@ describe('MongooseIdAssigner', () => { }, }); - exampleModel = mongoose.model('example4', exampleSchema); + exampleModel = connection.model('example4', exampleSchema); try { const doc = await exampleModel.create({ personId: 'mernxl' }); @@ -99,7 +99,7 @@ describe('MongooseIdAssigner', () => { }, }); - exampleModel = mongoose.model('example5', exampleSchema); + exampleModel = connection.model('example5', exampleSchema); try { const doc = await exampleModel.create({ personId: 'mernxl' }); @@ -127,7 +127,7 @@ describe('MongooseIdAssigner', () => { }; exampleSchema.plugin(MongooseIdAssigner.plugin, options); - exampleModel = mongoose.model('example6', exampleSchema); + exampleModel = connection.model('example6', exampleSchema); try { const doc = await exampleModel.create({ personId: 'mernxl' }); @@ -175,7 +175,7 @@ describe('MongooseIdAssigner', () => { try { MongooseIdAssigner.plugin(exampleSchema, options); - exampleModel = mongoose.model('example7', exampleSchema); + exampleModel = connection.model('example7', exampleSchema); const doc1 = await exampleModel.create({ personId: 'placeholder' }); const doc2 = await exampleModel.create({ personId: 'placeholder' }); @@ -216,7 +216,7 @@ describe('MongooseIdAssigner', () => { try { const ExampleIA = new MongooseIdAssigner(exampleSchema, options); - exampleModel = mongoose.model('example8', exampleSchema); + exampleModel = connection.model('example8', exampleSchema); expect(ExampleIA.readyState).toBe(0); // initialising // initialise to ensure that @@ -270,7 +270,7 @@ describe('MongooseIdAssigner', () => { describe('collection', () => { it('should return the IdAssigner Collection', async () => { const ExampleIA = new MongooseIdAssigner(exampleSchema, { modelName }); - exampleModel = mongoose.model(modelName, exampleSchema); + exampleModel = connection.model(modelName, exampleSchema); await ExampleIA.initialise(exampleModel); @@ -307,7 +307,7 @@ describe('MongooseIdAssigner', () => { }, }); - exampleModel = mongoose.model('example9', exampleSchema); + exampleModel = connection.model('example9', exampleSchema); return ExampleIA.initialise(exampleModel) .then(state => expect(state).toBe(1)) @@ -327,7 +327,7 @@ describe('MongooseIdAssigner', () => { }, }); - exampleModel = mongoose.model('example10', exampleSchema); + exampleModel = connection.model('example10', exampleSchema); ExampleIA.initialise(exampleModel) .then(state => expect(state).toBe(1)) @@ -367,7 +367,7 @@ describe('MongooseIdAssigner', () => { photoId: 4444, }, }); - const model = mongoose.model('example14', exampleSchema); + const model = connection.model('example14', exampleSchema); try { await model.create({ photoId: 21 }); @@ -398,7 +398,7 @@ describe('MongooseIdAssigner', () => { modelName, }); - exampleModel = mongoose.model(modelName, exampleSchema); + exampleModel = connection.model(modelName, exampleSchema); const doc = await exampleModel.create({ personId: 'mernxl' }); @@ -433,7 +433,7 @@ describe('MongooseIdAssigner', () => { }; const CharacterIA = new MongooseIdAssigner(characterSchema, options); - const characterModel = mongoose.model('example11', characterSchema); + const characterModel = connection.model('example11', characterSchema); const personModel = characterModel.discriminator('Person1', personSchema); const droidModel = characterModel.discriminator('Droid1', droidSchema); try { @@ -477,7 +477,7 @@ describe('MongooseIdAssigner', () => { characterSchema.plugin(MongooseIdAssigner.plugin, options); - const characterModel = mongoose.model('example12', characterSchema); + const characterModel = connection.model('example12', characterSchema); const personModel = characterModel.discriminator('Person', personSchema); @@ -535,7 +535,7 @@ describe('MongooseIdAssigner', () => { }; const CharacterIA = new MongooseIdAssigner(characterSchema, options); - const characterModel = mongoose.model(modelName, characterSchema); + const characterModel = connection.model(modelName, characterSchema); personSchema.path('_id', String); const personModel = characterModel.discriminator(modelName + 'Person', personSchema); diff --git a/src/utils/__tests__/initialise-options.spec.ts b/src/utils/__tests__/initialise-options.spec.ts index 5f9ba40..253f061 100644 --- a/src/utils/__tests__/initialise-options.spec.ts +++ b/src/utils/__tests__/initialise-options.spec.ts @@ -1,12 +1,9 @@ -import { Schema } from 'mongoose'; import { AssignerOptions, FieldConfigTypes } from '../../assigner.interfaces'; import { checkAndUpdateOptions } from '../initialise-options'; import { normaliseOptions } from '../normalise-options'; describe('initialise-options ->', () => { - const schema = new Schema({}); const options: AssignerOptions = { - modelName: 'Person', fields: { _id: true, clientId: true, @@ -27,10 +24,8 @@ describe('initialise-options ->', () => { describe('checkAndUpdateOptions()', () => { it('should return current option if fresh UnAvailable', async () => { - const normalised = normaliseOptions(schema, options); - expect(checkAndUpdateOptions(normalised, '' as any).options).toEqual( - normalised, - ); + const normalised = normaliseOptions('Person', options); + expect(checkAndUpdateOptions(normalised, '' as any).options).toEqual(normalised); }); }); }); From 1a235e15ca554e939a1f556f44286b2dd9922bf5 Mon Sep 17 00:00:00 2001 From: mernxl Date: Thu, 5 Dec 2019 08:48:02 +0100 Subject: [PATCH 52/52] build: upgrade `semantic-release` to version 15.13.31 --- package.json | 2 +- yarn.lock | 2210 +++++++++++++++++++++++++++++++++----------------- 2 files changed, 1475 insertions(+), 737 deletions(-) diff --git a/package.json b/package.json index fa5a962..00e0703 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "mongoose": "^5.7.13", "prettier": "^1.19.1", "rimraf": "^2.6.2", - "semantic-release": "^15.8.1", + "semantic-release": "^15.13.31", "ts-jest": "^24.2.0", "tslint": "^5.20.1", "tslint-config-prettier": "^1.18.0", diff --git a/yarn.lock b/yarn.lock index e676e90..4b62beb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -97,6 +97,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" +"@babel/runtime@^7.6.3": + version "7.7.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.4.tgz#b23a856751e4bf099262f867767889c0e3fe175b" + integrity sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.4.0", "@babel/template@^7.7.4": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" @@ -286,100 +293,155 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" -"@nodelib/fs.stat@^1.0.1": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a" +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@octokit/endpoint@^5.5.0": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-5.5.1.tgz#2eea81e110ca754ff2de11c79154ccab4ae16b3f" + integrity sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg== + dependencies: + "@octokit/types" "^2.0.0" + is-plain-object "^3.0.0" + universal-user-agent "^4.0.0" + +"@octokit/request-error@^1.0.1", "@octokit/request-error@^1.0.2": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.0.tgz#a64d2a9d7a13555570cd79722de4a4d76371baaa" + integrity sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg== + dependencies: + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + once "^1.4.0" -"@octokit/rest@^15.2.0": - version "15.9.5" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.9.5.tgz#e356d202bd0b517e381f705ad77d98ccb84e0c65" +"@octokit/request@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.1.tgz#3a1ace45e6f88b1be4749c5da963b3a3b4a2f120" + integrity sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg== + dependencies: + "@octokit/endpoint" "^5.5.0" + "@octokit/request-error" "^1.0.1" + "@octokit/types" "^2.0.0" + deprecation "^2.0.0" + is-plain-object "^3.0.0" + node-fetch "^2.3.0" + once "^1.4.0" + universal-user-agent "^4.0.0" + +"@octokit/rest@^16.27.0": + version "16.35.0" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.35.0.tgz#7ccc1f802f407d5b8eb21768c6deca44e7b4c0d8" + integrity sha512-9ShFqYWo0CLoGYhA1FdtdykJuMzS/9H6vSbbQWDX4pWr4p9v+15MsH/wpd/3fIU+tSxylaNO48+PIHqOkBRx3w== dependencies: - before-after-hook "^1.1.0" + "@octokit/request" "^5.2.0" + "@octokit/request-error" "^1.0.2" + atob-lite "^2.0.0" + before-after-hook "^2.0.0" btoa-lite "^1.0.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.0" - lodash "^4.17.4" - node-fetch "^2.1.1" - url-template "^2.0.8" + deprecation "^2.0.0" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lodash.uniq "^4.5.0" + octokit-pagination-methods "^1.1.0" + once "^1.4.0" + universal-user-agent "^4.0.0" -"@semantic-release/commit-analyzer@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.0.0.tgz#e26ef70938059f03525573560f65212164953121" +"@octokit/types@^2.0.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.0.2.tgz#0888497f5a664e28b0449731d5e88e19b2a74f90" + integrity sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ== + dependencies: + "@types/node" ">= 8" + +"@semantic-release/commit-analyzer@^6.1.0": + version "6.3.3" + resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.3.3.tgz#885f7e46e2f0aef23a23be0904dbf18d6ece45ca" + integrity sha512-Pyv1ZL2u5AIOY4YbxFCAB5J1PEh5yON8ylbfiPiriDGGW6Uu1U3Y8lysMtWu+FUD5x7tSnyIzhqx0+fxPxqbgw== dependencies: conventional-changelog-angular "^5.0.0" conventional-commits-filter "^2.0.0" - conventional-commits-parser "^3.0.0" - debug "^3.1.0" - import-from "^2.1.0" + conventional-commits-parser "^3.0.7" + debug "^4.0.0" + import-from "^3.0.0" lodash "^4.17.4" "@semantic-release/error@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@semantic-release/error/-/error-2.2.0.tgz#ee9d5a09c9969eade1ec864776aeda5c5cddbbf0" -"@semantic-release/github@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.0.2.tgz#3a3a4bb7e86fc1dc31829daf5066a232e2097e5b" +"@semantic-release/github@^5.1.0": + version "5.5.5" + resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-5.5.5.tgz#4666367f16d8ad91fd1d3c71a7238498de14ec38" + integrity sha512-Wo9OIULMRydbq+HpFh9yiLvra1XyEULPro9Tp4T5MQJ0WZyAQ3YQm74IdT8Pe/UmVDq2nfpT1oHrWkwOc4loHg== dependencies: - "@octokit/rest" "^15.2.0" + "@octokit/rest" "^16.27.0" "@semantic-release/error" "^2.2.0" - aggregate-error "^1.0.0" - bottleneck "^2.0.1" - debug "^3.1.0" - dir-glob "^2.0.0" - fs-extra "^7.0.0" - globby "^8.0.0" + aggregate-error "^3.0.0" + bottleneck "^2.18.1" + debug "^4.0.0" + dir-glob "^3.0.0" + fs-extra "^8.0.0" + globby "^10.0.0" http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - issue-parser "^2.2.0" + https-proxy-agent "^3.0.0" + issue-parser "^5.0.0" lodash "^4.17.4" - mime "^2.0.3" - p-filter "^1.0.0" - p-retry "^2.0.0" - parse-github-url "^1.0.1" + mime "^2.4.3" + p-filter "^2.0.0" + p-retry "^4.0.0" url-join "^4.0.0" -"@semantic-release/npm@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.0.1.tgz#e3d49be08f50654e43284dfb582a309c722767d4" +"@semantic-release/npm@^5.0.5": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-5.3.4.tgz#2998cd9455aaedf278334d4a5b56f8e0b715919d" + integrity sha512-XjITNRA/oOpJ7BfHk/WaOHs1WniYBszTde/bwADjjk1Luacpxg87jbDQVVt/oA3Zlx+MelxACRIEuRiPC5gu8g== dependencies: "@semantic-release/error" "^2.2.0" - aggregate-error "^1.0.0" - detect-indent "^5.0.0" - detect-newline "^2.1.0" - execa "^0.10.0" - fs-extra "^7.0.0" - lodash "^4.17.4" + aggregate-error "^3.0.0" + execa "^3.2.0" + fs-extra "^8.0.0" + lodash "^4.17.15" nerf-dart "^1.0.0" - normalize-url "^3.0.0" - npm "^6.3.0" - parse-json "^4.0.0" + normalize-url "^4.0.0" + npm "^6.10.3" rc "^1.2.8" - read-pkg "^4.0.0" - registry-auth-token "^3.3.1" + read-pkg "^5.0.0" + registry-auth-token "^4.0.0" + tempy "^0.3.0" -"@semantic-release/release-notes-generator@^7.0.0": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.0.1.tgz#300c06b56e965a0aec5d7a83f164b0d7e497ea7b" +"@semantic-release/release-notes-generator@^7.1.2": + version "7.3.5" + resolved "https://registry.yarnpkg.com/@semantic-release/release-notes-generator/-/release-notes-generator-7.3.5.tgz#ed0941d5b594f18fa1d2667493c03e811f97c0ff" + integrity sha512-LGjgPBGjjmjap/76O0Md3wc04Y7IlLnzZceLsAkcYRwGQdRPTTFUJKqDQTuieWTs7zfHzQoZqsqPfFxEN+g2+Q== dependencies: conventional-changelog-angular "^5.0.0" conventional-changelog-writer "^4.0.0" conventional-commits-filter "^2.0.0" conventional-commits-parser "^3.0.0" - debug "^3.1.0" - get-stream "^4.0.0" - git-url-parse "^10.0.1" - import-from "^2.1.0" - into-stream "^3.1.0" + debug "^4.0.0" + get-stream "^5.0.0" + import-from "^3.0.0" + into-stream "^5.0.0" lodash "^4.17.4" + read-pkg-up "^7.0.0" "@types/babel__core@^7.1.0": version "7.1.3" @@ -420,6 +482,11 @@ dependencies: "@types/node" "*" +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + "@types/event-to-promise@^0.7.0": version "0.7.0" resolved "https://registry.yarnpkg.com/@types/event-to-promise/-/event-to-promise-0.7.0.tgz#c7d4b686df17a8b7941b0e566c50bf650dcc3fd0" @@ -430,6 +497,15 @@ version "1.2.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" @@ -457,6 +533,11 @@ dependencies: jest-diff "^24.3.0" +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + "@types/mongodb@*": version "3.1.3" resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-3.1.3.tgz#73a2dba96cc10e9c9b0670a1a34a0caefe2c6c37" @@ -477,6 +558,26 @@ version "10.5.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.5.7.tgz#960d9feb3ade2233bcc9843c918d740b4f78a7cf" +"@types/node@>= 8": + version "12.12.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.14.tgz#1c1d6e3c75dba466e0326948d56e8bd72a1903d2" + integrity sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/retry@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -500,13 +601,21 @@ dependencies: "@types/yargs-parser" "*" -JSONStream@^1.0.4, JSONStream@^1.3.3: +JSONStream@^1.0.4: version "1.3.3" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.3.tgz#27b4b8fbbfeab4e71bcf551e7f27be8d952239bf" dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" +JSONStream@^1.3.4, JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -529,7 +638,7 @@ acorn@^5.0.0, acorn@^5.5.3: version "5.7.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" -agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: +agent-base@4, agent-base@~4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" dependencies: @@ -548,12 +657,13 @@ agentkeepalive@^3.4.1: dependencies: humanize-ms "^1.2.1" -aggregate-error@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-1.0.0.tgz#888344dad0220a72e3af50906117f48771925fac" +aggregate-error@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" + integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== dependencies: - clean-stack "^1.0.0" - indent-string "^3.0.0" + clean-stack "^2.0.0" + indent-string "^4.0.0" ajv@^5.3.0: version "5.5.2" @@ -586,6 +696,11 @@ ansi-escapes@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" +ansi-escapes@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -599,9 +714,10 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" @@ -609,9 +725,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansicolors@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.2.1.tgz#be089599097b74a5c9c4a84a0cdbcdb62bd87aef" +ansi-styles@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.0.tgz#5681f0dcf7ae5880a7841d8831c4724ed9cc0172" + integrity sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" ansicolors@~0.3.2: version "0.3.2" @@ -628,13 +748,14 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2, aproba@~1.2.0: +aproba@^1.0.3, aproba@^1.1.1, aproba@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" -"aproba@^1.1.2 || 2": +"aproba@^1.1.2 || 2", aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== archy@~1.0.0: version "1.0.0" @@ -681,15 +802,10 @@ array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.0, array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array-unique@^0.3.2: version "0.3.2" @@ -739,6 +855,11 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +atob-lite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" + integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= + atob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" @@ -815,9 +936,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -before-after-hook@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.1.0.tgz#83165e15a59460d13702cb8febd6a1807896db5a" +before-after-hook@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.1.0.tgz#b6c03487f44e24200dd30ca5e6a1979c5d2fb635" + integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A== bin-links@^1.1.2: version "1.1.2" @@ -829,6 +951,17 @@ bin-links@^1.1.2: graceful-fs "^4.1.11" write-file-atomic "^2.3.0" +bin-links@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.3.tgz#702fd59552703727313bc624bdbc4c0d3431c2ca" + integrity sha512-TEwmH4PHU/D009stP+fkkazMJgkBNCv60z01lQ/Mn8E6+ThHoD03svMnBVuCowwXo2nP2qKyKZxKxp58OHRzxw== + dependencies: + bluebird "^3.5.3" + cmd-shim "^3.0.0" + gentle-fs "^2.0.1" + graceful-fs "^4.1.15" + write-file-atomic "^2.3.0" + bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -836,20 +969,20 @@ bl@^1.0.0: readable-stream "^2.3.5" safe-buffer "^5.1.1" -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bluebird@3.5.1, bluebird@^3.5.0, bluebird@^3.5.1, bluebird@~3.5.1: +bluebird@3.5.1, bluebird@^3.5.0, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== -bottleneck@^2.0.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.6.0.tgz#cbc557383fd1f63cadc87e1141b1ad766863b863" +bluebird@^3.5.3, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bottleneck@^2.18.1: + version "2.19.5" + resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" + integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== boxen@^1.2.1: version "1.3.0" @@ -885,6 +1018,13 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" @@ -960,45 +1100,30 @@ byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" -byte-size@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.3.tgz#b7c095efc68eadf82985fccd9a2df43a74fa2ccd" - -cacache@^10.0.4: - version "10.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.1" - mississippi "^2.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^5.2.4" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cacache@^11.0.1, cacache@^11.0.2, cacache@^11.1.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.2.0.tgz#617bdc0b02844af56310e411c0878941d5739965" - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - figgy-pudding "^3.1.0" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.3" +byte-size@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" + integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== + +cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: + version "12.0.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" mississippi "^3.0.0" mkdirp "^0.5.1" move-concurrently "^1.0.1" promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^6.0.0" - unique-filename "^1.1.0" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" y18n "^4.0.0" cache-base@^1.0.1: @@ -1015,13 +1140,10 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -call-limit@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.0.tgz#6fd61b03f3da42a2cd0ec2b60f02bd0e71991fea" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" +call-limit@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/call-limit/-/call-limit-1.1.1.tgz#ef15f2670db3f1992557e2d965abc459e6e358d4" + integrity sha512-5twvci5b9eRBw2wCfPtN0GmlR2/gadZqyFpPhOK6CvMFoFgA+USnZ6Jpu1lhG9h85pQ3Ouil3PfXWRD4EUaRiQ== callsites@^3.0.0: version "3.1.0" @@ -1060,12 +1182,13 @@ capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" -cardinal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-1.0.0.tgz#50e21c1b0aa37729f9377def196b5a9cec932ee9" +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" + integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= dependencies: - ansicolors "~0.2.1" - redeyed "~1.0.0" + ansicolors "~0.3.2" + redeyed "~2.1.0" caseless@~0.12.0: version "0.12.0" @@ -1078,16 +1201,6 @@ center-align@^0.1.1: align-text "^0.1.3" lazy-cache "^1.0.3" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2: version "2.4.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" @@ -1096,7 +1209,7 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.4.2: +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1105,10 +1218,15 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chownr@^1.0.1, chownr@~1.0.1: +chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" +chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + ci-info@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" @@ -1118,9 +1236,10 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -cidr-regex@^2.0.8: - version "2.0.9" - resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.9.tgz#9c17bb2b18e15af07f7d0c3b994b961d687ed1c9" +cidr-regex@^2.0.10: + version "2.0.10" + resolved "https://registry.yarnpkg.com/cidr-regex/-/cidr-regex-2.0.10.tgz#af13878bd4ad704de77d6dc800799358b3afa70d" + integrity sha512-sB3ogMQXWvreNPbJUZMRApxuRYd+KoIo4RGQ81VatjmMW6WJPo+IJZ2846FGItr9VzKo5w7DXzijPLGtSd0N3Q== dependencies: ip-regex "^2.1.0" @@ -1133,9 +1252,10 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-stack@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-boxes@^1.0.0: version "1.0.0" @@ -1148,9 +1268,10 @@ cli-columns@^3.1.2: string-width "^2.0.0" strip-ansi "^3.0.1" -cli-table3@^0.5.0: +cli-table3@^0.5.0, cli-table3@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== dependencies: object-assign "^4.1.0" string-width "^2.1.1" @@ -1188,17 +1309,34 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" -cmd-shim@^2.0.2, cmd-shim@~2.0.2: +cmd-shim@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" dependencies: graceful-fs "^4.1.2" mkdirp "~0.5.0" +cmd-shim@^3.0.0, cmd-shim@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-3.0.3.tgz#2c35238d3df37d98ecdd7d5f6b8dc6b21cadc7cb" + integrity sha512-DtGg+0xiFhQIntSBRzL2fRQBnmtAVwXIDo4Qq46HPpObYquxMaZS4sb82U9nH91qJrlosC1wa9gwr0QyL/HypA== + dependencies: + graceful-fs "^4.1.2" + mkdirp "~0.5.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -1220,10 +1358,22 @@ color-convert@^1.9.0: dependencies: color-name "1.1.1" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -1280,7 +1430,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@^1.5.0, concat-stream@^1.5.2: +concat-stream@^1.5.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" dependencies: @@ -1289,9 +1439,10 @@ concat-stream@^1.5.0, concat-stream@^1.5.2: readable-stream "^2.2.2" typedarray "^0.0.6" -config-chain@~1.1.11: - version "1.1.11" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.11.tgz#aba09747dfbe4c3e70e766a6e41586e1859fc6f2" +config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -1352,6 +1503,19 @@ conventional-commits-parser@^3.0.0: through2 "^2.0.0" trim-off-newlines "^1.0.0" +conventional-commits-parser@^3.0.7: + version "3.0.8" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710" + integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^5.0.0" + split2 "^2.0.0" + through2 "^3.0.0" + trim-off-newlines "^1.0.0" + convert-source-map@^1.4.0: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -1382,13 +1546,16 @@ core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -cosmiconfig@^5.0.1: - version "5.0.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39" +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: - is-directory "^0.3.1" - js-yaml "^3.9.0" - parse-json "^4.0.0" + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" create-error-class@^3.0.0: version "3.0.2" @@ -1414,7 +1581,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.1: +cross-spawn@^7.0.0, cross-spawn@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== @@ -1477,14 +1644,14 @@ debug@^2.1.2, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@^4.1.0, debug@^4.1.1: +debug@^4.0.0, debug@^4.1.0, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -debuglog@^1.0.1: +debuglog@*, debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -1500,12 +1667,6 @@ decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - dependencies: - xregexp "4.0.0" - decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -1611,7 +1772,12 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -detect-indent@^5.0.0, detect-indent@~5.0.0: +deprecation@^2.0.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + +detect-indent@~5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -1640,12 +1806,12 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== -dir-glob@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" +dir-glob@^3.0.0, dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - arrify "^1.0.1" - path-type "^3.0.0" + path-type "^4.0.0" domexception@^1.0.1: version "1.0.1" @@ -1704,6 +1870,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -1716,12 +1887,18 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -env-ci@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-2.1.1.tgz#73c42c0f3ee4813457210a8440a2ee1bbea0102a" +env-ci@^4.0.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-4.5.1.tgz#2ef014dcb974728b46d1244e491e9e6ccc1923ef" + integrity sha512-Xtmr+ordf8POu3NcNzx3eOa2zHyfD4h3fPHX5fLklkWa86ck35n1c9oZmyUnVPUl9zHnpZWdWtCUBPSWEagjCQ== dependencies: - execa "^0.10.0" - java-properties "^0.2.9" + execa "^3.2.0" + java-properties "^1.0.0" + +env-paths@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0" + integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA= err-code@^1.0.0: version "1.1.2" @@ -1767,7 +1944,7 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1793,13 +1970,10 @@ esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" -esprima@^4.0.0: +esprima@^4.0.0, esprima@~4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - -esprima@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.0.0.tgz#53cf247acda77313e551c3aa2e73342d3fb4f7d9" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== estraverse@^4.2.0: version "4.2.0" @@ -1818,18 +1992,6 @@ exec-sh@^0.3.2: resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== -execa@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" - dependencies: - cross-spawn "^6.0.0" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -1855,6 +2017,22 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^3.2.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -1929,16 +2107,16 @@ fast-diff@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" -fast-glob@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.2.tgz#71723338ac9b4e0e2fff1d6748a2a13d5ed352bf" +fast-glob@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.1.1.tgz#87ee30e9e9f3eb40d6f254a7997655da753d7c82" + integrity sha512-nTCREpBY8w8r+boyFYAx21iL6faSsQynliPHM4Uf56SbkyohCNxpVPEH9xrF5TXKy+IsjkPUHDKiUkzBVRXn9g== dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.0.1" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.1" - micromatch "^3.1.10" + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.0.0" @@ -1948,6 +2126,13 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +fastq@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" + integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== + dependencies: + reusify "^1.0.0" + fb-watchman@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" @@ -1960,9 +2145,10 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -figgy-pudding@^3.0.0, figgy-pudding@^3.1.0, figgy-pudding@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.2.0.tgz#464626b73d7b0fc045a99753d191b0785957ff73" +figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== figures@^2.0.0: version "2.0.0" @@ -1970,6 +2156,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +figures@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" + integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + dependencies: + escape-string-regexp "^1.0.5" + file-type@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" @@ -1991,6 +2184,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + find-cache-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.1.0.tgz#9935894999debef4cf9f677fdf646d002c4cdecb" @@ -2021,7 +2221,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -2029,12 +2229,12 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-versions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-2.0.0.tgz#2ad90d490f6828c1aa40292cf709ac3318210c3c" +find-versions@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-3.2.0.tgz#10297f98030a786829681690545ef659ed1d254e" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== dependencies: - array-uniq "^1.0.0" - semver-regex "^1.0.0" + semver-regex "^2.0.0" flow-bin@^0.113.0: version "0.113.0" @@ -2081,7 +2281,7 @@ from2@^1.3.0: inherits "~2.0.1" readable-stream "~1.1.10" -from2@^2.1.0, from2@^2.1.1: +from2@^2.1.0, from2@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" dependencies: @@ -2092,11 +2292,12 @@ fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" -fs-extra@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6" +fs-extra@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: - graceful-fs "^4.1.2" + graceful-fs "^4.2.0" jsonfile "^4.0.0" universalify "^0.1.0" @@ -2135,15 +2336,6 @@ fsevents@^1.2.7: nan "^2.12.1" node-pre-gyp "^0.12.0" -fstream@^1.0.0, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -2161,9 +2353,10 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -genfun@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/genfun/-/genfun-4.0.1.tgz#ed10041f2e4a7f1b0a38466d17a5c3e27df1dfc1" +genfun@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== gentle-fs@^2.0.0, gentle-fs@^2.0.1: version "2.0.1" @@ -2178,6 +2371,22 @@ gentle-fs@^2.0.0, gentle-fs@^2.0.1: read-cmd-shim "^1.0.1" slide "^1.1.6" +gentle-fs@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.2.1.tgz#1f38df4b4ead685566257201fd526de401ebb215" + integrity sha512-e7dRgUM5fsS+7wm2oggZpgcRx6sEvJHXujPH5RzgQ1ziQY4+HuVBYsnUzJwJ+C7mjOJN27DjiFy1TaL+TNltow== + dependencies: + aproba "^1.1.2" + chownr "^1.1.2" + fs-vacuum "^1.2.10" + graceful-fs "^4.1.11" + iferr "^0.1.5" + infer-owner "^1.0.4" + mkdirp "^0.5.1" + path-is-inside "^1.0.2" + read-cmd-shim "^1.0.1" + slide "^1.1.6" + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -2211,6 +2420,20 @@ get-stream@^4.0.0: dependencies: pump "^3.0.0" +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2239,31 +2462,14 @@ git-log-parser@^1.2.0: through2 "~2.0.0" traverse "~0.6.6" -git-up@^2.0.0: - version "2.0.10" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-2.0.10.tgz#20fe6bafbef4384cae253dc4f463c49a0c3bd2ec" - dependencies: - is-ssh "^1.3.0" - parse-url "^1.3.0" - -git-url-parse@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-10.0.1.tgz#75f153b24ac7297447fc583cf9fac23a5ae687c1" - dependencies: - git-up "^2.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" +glob-parent@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2" + integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw== dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + is-glob "^4.0.1" -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2274,7 +2480,7 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3: +glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -2297,17 +2503,19 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" +globby@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" + integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" got@^6.7.1: version "6.7.1" @@ -2325,11 +2533,11 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@~4.1.11: +graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -graceful-fs@^4.1.15: +graceful-fs@^4.1.15, graceful-fs@^4.2.0, graceful-fs@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -2374,11 +2582,10 @@ har-validator@~5.1.0: ajv "^5.3.0" har-schema "^2.0.0" -has-ansi@^2.0.0: +has-flag@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= has-flag@^3.0.0: version "3.0.0" @@ -2421,14 +2628,27 @@ has@^1.0.1: dependencies: function-bind "^1.1.1" -hook-std@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-1.1.0.tgz#7f76b74b6f96d3cd4106afb50a66bdb0af2d2a2d" +hook-std@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hook-std/-/hook-std-2.0.0.tgz#ff9aafdebb6a989a354f729bb6445cf4a3a7077c" + integrity sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g== hosted-git-info@^2.1.4, hosted-git-info@^2.6.0, hosted-git-info@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" +hosted-git-info@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" + integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== + +hosted-git-info@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.2.tgz#8b7e3bd114b59b51786f8bade0f39ddc80275a97" + integrity sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw== + dependencies: + lru-cache "^5.1.1" + html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" @@ -2454,11 +2674,12 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" +https-proxy-agent@^2.2.3: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== dependencies: - agent-base "^4.1.0" + agent-base "^4.3.0" debug "^3.1.0" https-proxy-agent@^3.0.0: @@ -2469,6 +2690,11 @@ https-proxy-agent@^3.0.0: agent-base "^4.3.0" debug "^3.1.0" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -2493,9 +2719,10 @@ iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" -iferr@^1.0.0: +iferr@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/iferr/-/iferr-1.0.2.tgz#e9fde49a9da06dc4a4194c6c9ed6d08305037a6d" + integrity sha512-9AfeLfji44r5TKInjhz3W9DyZI1zR1JAf2hVBMGhddAKPqBsupb89jGfbCTHIGZd6fGZl9WlHdn4AObygyMKwg== ignore-walk@^3.0.1: version "3.0.1" @@ -2503,15 +2730,25 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" +ignore@^5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" +import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== dependencies: - resolve-from "^3.0.0" + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" import-lazy@^2.1.0: version "2.1.0" @@ -2525,7 +2762,7 @@ import-local@^2.0.0: pkg-dir "^3.0.0" resolve-cwd "^2.0.0" -imurmurhash@^0.1.4: +imurmurhash@*, imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2533,6 +2770,16 @@ indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4, inflight@~1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2540,10 +2787,15 @@ inflight@^1.0.4, inflight@~1.0.6: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -2561,12 +2813,13 @@ init-package-json@^1.10.3: validate-npm-package-license "^3.0.1" validate-npm-package-name "^3.0.0" -into-stream@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" +into-stream@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-5.1.1.tgz#f9a20a348a11f3c13face22763f2d02e127f4db8" + integrity sha512-krrAJ7McQxGGmvaYbB7Q1mcA+cRwg9Ij2RfWIeVesNBgVDZmzY/Fa4IpZUT3bmdRzMzdf/mzltCG2Dq99IZGBA== dependencies: - from2 "^2.1.1" - p-is-promise "^1.1.0" + from2 "^2.3.0" + p-is-promise "^3.0.0" invariant@^2.2.4: version "2.2.4" @@ -2582,7 +2835,7 @@ ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" -ip@^1.1.4, ip@^1.1.5: +ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -2629,11 +2882,12 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-cidr@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-2.0.6.tgz#4b01c9693d8e18399dacd18a4f3d60ea5871ac60" +is-cidr@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.0.tgz#72e233d8e1c4cd1d3f11713fcce3eba7b0e3476f" + integrity sha512-3kxTForpuj8O4iHn0ocsn1jxRm5VYm60GDghK6HXmpn4IyZOoRy9/GmdjFA2yEMqw91TB1/K3bFTuI7FlFNR1g== dependencies: - cidr-regex "^2.0.8" + cidr-regex "^2.0.10" is-data-descriptor@^0.1.4: version "0.1.4" @@ -2667,10 +2921,6 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -2681,7 +2931,7 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -2695,20 +2945,20 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" +is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== dependencies: is-extglob "^2.1.1" @@ -2733,6 +2983,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-obj@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -2753,6 +3008,13 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" + integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== + dependencies: + isobject "^4.0.0" + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -2767,16 +3029,15 @@ is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" -is-ssh@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.0.tgz#ebea1169a2614da392a63740366c3ce049d8dff6" - dependencies: - protocols "^1.1.0" - is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-subset@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" @@ -2785,7 +3046,7 @@ is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" -is-text-path@^1.0.0: +is-text-path@^1.0.0, is-text-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" dependencies: @@ -2826,18 +3087,25 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -issue-parser@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-2.2.0.tgz#9385c8b55c134c7e5a5944a5b53c188dee6d1aac" +issue-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/issue-parser/-/issue-parser-5.0.0.tgz#0e22a40bc275b6c7da6ddf4a9b979e8ca9faf0d4" + integrity sha512-q/16W7EPHRL0FKVz9NU++TUsoygXGj6JOi88oulyAcQG+IEZ0T6teVdE+VLbe19OfL/tbV8Wi3Dfo0HedeHW0Q== dependencies: lodash.capitalize "^4.2.1" lodash.escaperegexp "^4.1.2" lodash.isplainobject "^4.0.6" lodash.isstring "^4.0.1" + lodash.uniqby "^4.7.0" istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: version "2.0.5" @@ -2884,9 +3152,10 @@ istanbul-reports@^2.2.6: dependencies: handlebars "^4.1.2" -java-properties@^0.2.9: - version "0.2.10" - resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-0.2.10.tgz#2551560c25fa1ad94d998218178f233ad9b18f60" +java-properties@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/java-properties/-/java-properties-1.0.2.tgz#ccd1fa73907438a5b5c38982269d0e771fe78211" + integrity sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ== jest-changed-files@^24.9.0: version "24.9.0" @@ -3258,13 +3527,6 @@ js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.9.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -3413,31 +3675,125 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libcipm@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-2.0.2.tgz#4f38c2b37acf2ec156936cef1cbf74636568fc7b" +libcipm@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.7.tgz#76cd675c98bdaae64db88b782b01b804b6d02c8a" + integrity sha512-fTq33otU3PNXxxCTCYCYe7V96o59v/o7bvtspmbORXpgFk+wcWrGf5x6tBgui5gCed/45/wtPomBsZBYm5KbIw== dependencies: bin-links "^1.1.2" bluebird "^3.5.1" + figgy-pudding "^3.5.1" find-npm-prefix "^1.0.2" graceful-fs "^4.1.11" + ini "^1.3.5" lock-verify "^2.0.2" mkdirp "^0.5.1" - npm-lifecycle "^2.0.3" + npm-lifecycle "^3.0.0" npm-logical-tree "^1.2.1" npm-package-arg "^6.1.0" - pacote "^8.1.6" - protoduck "^5.0.0" + pacote "^9.1.0" read-package-json "^2.0.13" rimraf "^2.6.2" worker-farm "^1.6.0" -libnpmhook@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-4.0.1.tgz#63641654de772cbeb96a88527a7fd5456ec3c2d7" +libnpm@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/libnpm/-/libnpm-3.0.1.tgz#0be11b4c9dd4d1ffd7d95c786e92e55d65be77a2" + integrity sha512-d7jU5ZcMiTfBqTUJVZ3xid44fE5ERBm9vBnmhp2ECD2Ls+FNXWxHSkO7gtvrnbLO78gwPdNPz1HpsF3W4rjkBQ== + dependencies: + bin-links "^1.1.2" + bluebird "^3.5.3" + find-npm-prefix "^1.0.2" + libnpmaccess "^3.0.2" + libnpmconfig "^1.2.1" + libnpmhook "^5.0.3" + libnpmorg "^1.0.1" + libnpmpublish "^1.1.2" + libnpmsearch "^2.0.2" + libnpmteam "^1.0.2" + lock-verify "^2.0.2" + npm-lifecycle "^3.0.0" + npm-logical-tree "^1.2.1" + npm-package-arg "^6.1.0" + npm-profile "^4.0.2" + npm-registry-fetch "^4.0.0" + npmlog "^4.1.2" + pacote "^9.5.3" + read-package-json "^2.0.13" + stringify-package "^1.0.0" + +libnpmaccess@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.2.tgz#8b2d72345ba3bef90d3b4f694edd5c0417f58923" + integrity sha512-01512AK7MqByrI2mfC7h5j8N9V4I7MHJuk9buo8Gv+5QgThpOgpjB7sQBDDkeZqRteFb1QM/6YNdHfG7cDvfAQ== + dependencies: + aproba "^2.0.0" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + npm-registry-fetch "^4.0.0" + +libnpmconfig@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/libnpmconfig/-/libnpmconfig-1.2.1.tgz#c0c2f793a74e67d4825e5039e7a02a0044dfcbc0" + integrity sha512-9esX8rTQAHqarx6qeZqmGQKBNZR5OIbl/Ayr0qQDy3oXja2iFVQQI81R6GZ2a02bSNZ9p3YOGX1O6HHCb1X7kA== + dependencies: + figgy-pudding "^3.5.1" + find-up "^3.0.0" + ini "^1.3.5" + +libnpmhook@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/libnpmhook/-/libnpmhook-5.0.3.tgz#4020c0f5edbf08ebe395325caa5ea01885b928f7" + integrity sha512-UdNLMuefVZra/wbnBXECZPefHMGsVDTq5zaM/LgKNE9Keyl5YXQTnGAzEo+nFOpdRqTWI9LYi4ApqF9uVCCtuA== dependencies: - figgy-pudding "^3.1.0" - npm-registry-fetch "^3.0.0" + aproba "^2.0.0" + figgy-pudding "^3.4.1" + get-stream "^4.0.0" + npm-registry-fetch "^4.0.0" + +libnpmorg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/libnpmorg/-/libnpmorg-1.0.1.tgz#5d2503f6ceb57f33dbdcc718e6698fea6d5ad087" + integrity sha512-0sRUXLh+PLBgZmARvthhYXQAWn0fOsa6T5l3JSe2n9vKG/lCVK4nuG7pDsa7uMq+uTt2epdPK+a2g6btcY11Ww== + dependencies: + aproba "^2.0.0" + figgy-pudding "^3.4.1" + get-stream "^4.0.0" + npm-registry-fetch "^4.0.0" + +libnpmpublish@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.3.tgz#e3782796722d79eef1a0a22944c117e0c4ca4280" + integrity sha512-/3LsYqVc52cHXBmu26+J8Ed7sLs/hgGVFMH1mwYpL7Qaynb9RenpKqIKu0sJ130FB9PMkpMlWjlbtU8A4m7CQw== + dependencies: + aproba "^2.0.0" + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + lodash.clonedeep "^4.5.0" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + npm-registry-fetch "^4.0.0" + semver "^5.5.1" + ssri "^6.0.1" + +libnpmsearch@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/libnpmsearch/-/libnpmsearch-2.0.2.tgz#9a4f059102d38e3dd44085bdbfe5095f2a5044cf" + integrity sha512-VTBbV55Q6fRzTdzziYCr64+f8AopQ1YZ+BdPOv16UegIEaE8C0Kch01wo4s3kRTFV64P121WZJwgmBwrq68zYg== + dependencies: + figgy-pudding "^3.5.1" + get-stream "^4.0.0" + npm-registry-fetch "^4.0.0" + +libnpmteam@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/libnpmteam/-/libnpmteam-1.0.2.tgz#8b48bcbb6ce70dd8150c950fcbdbf3feb6eec820" + integrity sha512-p420vM28Us04NAcg1rzgGW63LMM6rwe+6rtZpfDxCcXxM0zUTLl7nPFEnRF3JfFBF5skF/yuZDUthTsHgde8QA== + dependencies: + aproba "^2.0.0" + figgy-pudding "^3.4.1" + get-stream "^4.0.0" + npm-registry-fetch "^4.0.0" libnpx@^10.2.0: version "10.2.0" @@ -3494,12 +3850,25 @@ lock-verify@^2.0.2: npm-package-arg "^5.1.2 || 6" semver "^5.4.1" +lock-verify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.1.0.tgz#fff4c918b8db9497af0c5fa7f6d71555de3ceb47" + integrity sha512-vcLpxnGvrqisKvLQ2C2v0/u7LVly17ak2YSgoK4PrdsYBXQIax19vhKiLfvKNFx7FRrpTnitrpzF/uuCMuorIg== + dependencies: + npm-package-arg "^6.1.0" + semver "^5.4.1" + lockfile@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" dependencies: signal-exit "^3.0.2" +lodash._baseindexof@*: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c" + integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw= + lodash._baseuniq@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8" @@ -3507,23 +3876,41 @@ lodash._baseuniq@~4.6.0: lodash._createset "~4.0.0" lodash._root "~3.0.0" +lodash._bindcallback@*: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= + +lodash._cacheindexof@*: + version "3.0.2" + resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92" + integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI= + +lodash._createcache@*: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093" + integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM= + dependencies: + lodash._getnative "^3.0.0" + lodash._createset@~4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26" +lodash._getnative@*, lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + lodash._root@~3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" -lodash.assign@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - lodash.capitalize@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" -lodash.clonedeep@~4.5.0: +lodash.clonedeep@^4.5.0, lodash.clonedeep@~4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -3531,6 +3918,11 @@ lodash.escaperegexp@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -3544,6 +3936,16 @@ lodash.memoize@4.x: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.restparam@*: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= + +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -3556,10 +3958,15 @@ lodash.union@~4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" -lodash.uniq@~4.5.0: +lodash.uniq@^4.5.0, lodash.uniq@~4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" +lodash.uniqby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302" + integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI= + lodash.without@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" @@ -3568,7 +3975,7 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" -lodash@^4.17.13: +lodash@^4.17.13, lodash@^4.17.15: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -3594,13 +4001,25 @@ lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" -lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3: +lru-cache@^4.0.1: version "4.1.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" dependencies: pseudomap "^1.0.2" yallist "^2.1.2" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +macos-release@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" + integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -3627,38 +4046,23 @@ make-error@1.x: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== -"make-fetch-happen@^2.5.0 || 3 || 4", make-fetch-happen@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" +make-fetch-happen@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz#aa8387104f2687edca01c8687ee45013d02d19bd" + integrity sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag== dependencies: agentkeepalive "^3.4.1" - cacache "^11.0.1" + cacache "^12.0.0" http-cache-semantics "^3.8.1" http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^4.1.2" + https-proxy-agent "^2.2.3" + lru-cache "^5.1.1" mississippi "^3.0.0" node-fetch-npm "^2.0.2" promise-retry "^1.1.1" socks-proxy-agent "^4.0.0" ssri "^6.0.0" -make-fetch-happen@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-3.0.0.tgz#7b661d2372fc4710ab5cc8e1fa3c290eea69a961" - dependencies: - agentkeepalive "^3.4.1" - cacache "^10.0.4" - http-cache-semantics "^3.8.1" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.0" - lru-cache "^4.1.2" - mississippi "^3.0.0" - node-fetch-npm "^2.0.2" - promise-retry "^1.1.1" - socks-proxy-agent "^3.0.1" - ssri "^5.2.4" - makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -3683,19 +4087,22 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -marked-terminal@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.0.0.tgz#01758f657977a0e72ebd2a339f8ac100c1d04240" +marked-terminal@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-3.3.0.tgz#25ce0c0299285998c7636beaefc87055341ba1bd" + integrity sha512-+IUQJ5VlZoAFsM5MHNT7g3RHSkA3eETqhRCdXv4niUMAKHQ7lb1yvAcuGPmm4soxhmtX13u4Li6ZToXtvSEH+A== dependencies: - cardinal "^1.0.0" - chalk "^1.1.3" + ansi-escapes "^3.1.0" + cardinal "^2.1.1" + chalk "^2.4.1" cli-table "^0.3.1" - lodash.assign "^4.2.0" node-emoji "^1.4.1" + supports-hyperlinks "^1.0.1" -marked@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-0.4.0.tgz#9ad2c2a7a1791f10a852e0112f77b571dce10c66" +marked@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e" + integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg== md5-file@^4.0.0: version "4.0.0" @@ -3730,14 +4137,30 @@ meow@^4.0.0: redent "^2.0.0" trim-newlines "^2.0.0" +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + yargs-parser "^10.0.0" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -merge2@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" +merge2@^1.2.3, merge2@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" @@ -3757,6 +4180,14 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + mime-db@~1.35.0: version "1.35.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.35.0.tgz#0569d657466491283709663ad379a99b90d9ab47" @@ -3767,14 +4198,20 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "~1.35.0" -mime@^2.0.3: - version "2.3.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" +mime@^2.4.3: + version "2.4.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -3807,26 +4244,26 @@ minipass@^2.2.1, minipass@^2.3.3: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^2.3.5, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + minizlib@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" dependencies: minipass "^2.2.1" -mississippi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^2.0.1" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" + minipass "^2.9.0" mississippi@^3.0.0: version "3.0.0" @@ -3850,7 +4287,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: +mkdirp@0.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -4036,25 +4473,26 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.2.0.tgz#4ee79bde909262f9775f731e3656d0db55ced5b5" +node-fetch@^2.3.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-gyp@^3.6.2, node-gyp@^3.7.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" +node-gyp@^5.0.2, node-gyp@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.0.5.tgz#f6cf1da246eb8c42b097d7cd4d6c3ce23a4163af" + integrity sha512-WABl9s4/mqQdZneZHVWVG4TVr6QQJZUC6PAx47ITSk9lreZ1n+7Z9mMAIbA3vnO4J9W20P7LhCxtzfWsAD/KDw== dependencies: - fstream "^1.0.0" + env-paths "^1.0.0" glob "^7.0.3" graceful-fs "^4.1.2" mkdirp "^0.5.0" nopt "2 || 3" npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" request "^2.87.0" rimraf "2" semver "~5.3.0" - tar "^2.0.0" + tar "^4.4.12" which "1" node-int64@^0.4.0: @@ -4106,7 +4544,7 @@ nopt@^4.0.1, nopt@~4.0.1: abbrev "1" osenv "^0.1.4" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, "normalize-package-data@~1.0.1 || ^2.0.0", normalize-package-data@~2.4.0: +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: @@ -4115,19 +4553,31 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" -normalize-url@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.2.0.tgz#98d0948afc82829f374320f405fe9ca55a5f8567" +normalize-url@^4.0.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -npm-audit-report@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.1.tgz#e79ea1fcb5ffaf3031102b389d5222c2b0459632" +npm-audit-report@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.2.tgz#303bc78cd9e4c226415076a4f7e528c89fc77018" + integrity sha512-abeqS5ONyXNaZJPGAf6TOUMNdSe1Y6cpc9MLBRn+CuUoYbfdca6AxOyXVlfIv9OgKX+cacblbG5w7A6ccwoTPw== dependencies: cli-table3 "^0.5.0" console-control-strings "^1.1.0" @@ -4140,30 +4590,32 @@ npm-cache-filename@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/npm-cache-filename/-/npm-cache-filename-1.0.2.tgz#ded306c5b0bfc870a9e9faf823bc5f283e05ae11" -npm-install-checks@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.0.tgz#d4aecdfd51a53e3723b7b2f93b2ee28e307bc0d7" +npm-install-checks@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-3.0.2.tgz#ab2e32ad27baa46720706908e5b14c1852de44d9" + integrity sha512-E4kzkyZDIWoin6uT5howP8VDvkM+E8IQDcHAycaAxMbwkqhIg5eEYALnXOl3Hq9MrkdQB/2/g1xwBINXdKSRkg== dependencies: semver "^2.3.0 || 3.x || 4 || 5" -npm-lifecycle@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.0.3.tgz#696bedf1143371163e9cc16fe872357e25d8d90e" +npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.4.tgz#de6975c7d8df65f5150db110b57cce498b0b604c" + integrity sha512-tgs1PaucZwkxECGKhC/stbEgFyc3TGh2TJcg2CDr6jbvQRdteHNhmMeljRzpe4wgFAXQADoy1cSqqi7mtiAa5A== dependencies: byline "^5.0.0" - graceful-fs "^4.1.11" - node-gyp "^3.6.2" + graceful-fs "^4.1.15" + node-gyp "^5.0.2" resolve-from "^4.0.0" slide "^1.1.6" uid-number "0.0.6" umask "^1.1.0" - which "^1.3.0" + which "^1.3.1" npm-logical-tree@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/npm-logical-tree/-/npm-logical-tree-1.2.1.tgz#44610141ca24664cad35d1e607176193fd8f5b88" -"npm-package-arg@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^5.1.2 || 6", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: +"npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", "npm-package-arg@^5.1.2 || 6", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" dependencies: @@ -4172,65 +4624,61 @@ npm-logical-tree@^1.2.1: semver "^5.5.0" validate-npm-package-name "^3.0.0" -npm-packlist@^1.1.10, npm-packlist@^1.1.6, npm-packlist@~1.1.10: +npm-package-arg@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.1.tgz#02168cb0a49a2b75bf988a28698de7b529df5cb7" + integrity sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg== + dependencies: + hosted-git-info "^2.7.1" + osenv "^0.1.5" + semver "^5.6.0" + validate-npm-package-name "^3.0.0" + +npm-packlist@^1.1.12, npm-packlist@^1.4.6: + version "1.4.6" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" + integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-packlist@^1.1.6: version "1.1.11" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.11.tgz#84e8c683cbe7867d34b1d357d893ce29e28a02de" dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npm-pick-manifest@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.1.0.tgz#dc381bdd670c35d81655e1d5a94aa3dd4d87fce5" +npm-pick-manifest@^3.0.0, npm-pick-manifest@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz#f4d9e5fd4be2153e5f4e5f9b7be8dc419a99abb7" + integrity sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw== dependencies: + figgy-pudding "^3.5.1" npm-package-arg "^6.0.0" semver "^5.4.1" -npm-profile@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-3.0.2.tgz#58d568f1b56ef769602fd0aed8c43fa0e0de0f57" +npm-profile@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-profile/-/npm-profile-4.0.2.tgz#8272a71c19634d0dce9c35a5daf8ee589cbb0f52" + integrity sha512-VRsC04pvRH+9cF+PoVh2nTmJjiG21yu59IHpsBpkxk+jaGAV8lxx96G4SDc0jOHAkfWLXbc6kIph3dGAuRnotQ== dependencies: aproba "^1.1.2 || 2" - make-fetch-happen "^2.5.0 || 3 || 4" - -npm-registry-client@^8.5.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/npm-registry-client/-/npm-registry-client-8.6.0.tgz#7f1529f91450732e89f8518e0f21459deea3e4c4" - dependencies: - concat-stream "^1.5.2" - graceful-fs "^4.1.6" - normalize-package-data "~1.0.1 || ^2.0.0" - npm-package-arg "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" - once "^1.3.3" - request "^2.74.0" - retry "^0.10.0" - safe-buffer "^5.1.1" - semver "2 >=2.2.1 || 3.x || 4 || 5" - slide "^1.1.3" - ssri "^5.2.4" - optionalDependencies: - npmlog "2 || ^3.1.0 || ^4.0.0" - -npm-registry-fetch@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-1.1.1.tgz#710bc5947d9ee2c549375072dab6d5d17baf2eb2" - dependencies: - bluebird "^3.5.1" - figgy-pudding "^3.0.0" - lru-cache "^4.1.2" - make-fetch-happen "^3.0.0" - npm-package-arg "^6.0.0" - safe-buffer "^5.1.1" + figgy-pudding "^3.4.1" + npm-registry-fetch "^4.0.0" -npm-registry-fetch@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.2.0.tgz#94ec859c4dd395f924e575cee471da6fd3906d53" +npm-registry-fetch@^4.0.0, npm-registry-fetch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-4.0.2.tgz#2b1434f93ccbe6b6385f8e45f45db93e16921d7a" + integrity sha512-Z0IFtPEozNdeZRPh3aHHxdG+ZRpzcbQaJLthsm3VhNf6DScicTFRHZzK82u8RsJUsUHkX+QH/zcB/5pmd20H4A== dependencies: + JSONStream "^1.3.4" bluebird "^3.5.1" - figgy-pudding "^3.2.0" - lru-cache "^4.1.3" - make-fetch-happen "^4.0.1" + figgy-pudding "^3.4.1" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" npm-package-arg "^6.1.0" + safe-buffer "^5.2.0" npm-run-path@^2.0.0: version "2.0.2" @@ -4238,124 +4686,139 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.0.tgz#d644ec1bd0569187d2a52909971023a0a58e8438" + integrity sha512-8eyAOAH+bYXFPSnNnKr3J+yoybe8O87Is5rtAQ8qRczJz1ajcsjg8l2oZqP+Ppx15Ii3S1vUTjQN2h4YO2tWWQ== + dependencies: + path-key "^3.0.0" + npm-user-validate@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/npm-user-validate/-/npm-user-validate-1.0.0.tgz#8ceca0f5cea04d4e93519ef72d0557a75122e951" -npm@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/npm/-/npm-6.3.0.tgz#de7df51f6d1b05b088486097cf7993dbbcac752f" +npm@^6.10.3: + version "6.13.2" + resolved "https://registry.yarnpkg.com/npm/-/npm-6.13.2.tgz#fb3b9500fcc5394a2727848e2a45cd6d245eaad4" + integrity sha512-TG7AFkKpjBNJh8OVJYcGaAbW0PZxEkjew51Lc6TRdhQpNjSSEnAOEpidApqEuciB7cs09C8mxbo8NbuPs4QDzg== dependencies: - JSONStream "^1.3.3" + JSONStream "^1.3.5" abbrev "~1.1.1" ansicolors "~0.3.2" ansistyles "~0.1.3" - aproba "~1.2.0" + aproba "^2.0.0" archy "~1.0.0" - bin-links "^1.1.2" - bluebird "~3.5.1" - byte-size "^4.0.3" - cacache "^11.1.0" - call-limit "~1.1.0" - chownr "~1.0.1" + bin-links "^1.1.3" + bluebird "^3.5.5" + byte-size "^5.0.1" + cacache "^12.0.3" + call-limit "^1.1.1" + chownr "^1.1.3" + ci-info "^2.0.0" cli-columns "^3.1.2" - cli-table3 "^0.5.0" - cmd-shim "~2.0.2" + cli-table3 "^0.5.1" + cmd-shim "^3.0.3" columnify "~1.5.4" - config-chain "~1.1.11" + config-chain "^1.1.12" detect-indent "~5.0.0" detect-newline "^2.1.0" dezalgo "~1.0.3" editor "~1.0.0" - figgy-pudding "^3.2.0" + figgy-pudding "^3.5.1" find-npm-prefix "^1.0.2" fs-vacuum "~1.2.10" fs-write-stream-atomic "~1.0.10" - gentle-fs "^2.0.1" - glob "~7.1.2" - graceful-fs "~4.1.11" + gentle-fs "^2.2.1" + glob "^7.1.4" + graceful-fs "^4.2.3" has-unicode "~2.0.1" - hosted-git-info "^2.6.0" - iferr "^1.0.0" + hosted-git-info "^2.8.5" + iferr "^1.0.2" + infer-owner "^1.0.4" inflight "~1.0.6" - inherits "~2.0.3" + inherits "^2.0.4" ini "^1.3.5" init-package-json "^1.10.3" - is-cidr "^2.0.6" + is-cidr "^3.0.0" json-parse-better-errors "^1.0.2" lazy-property "~1.0.0" - libcipm "^2.0.0" - libnpmhook "^4.0.1" + libcipm "^4.0.7" + libnpm "^3.0.1" + libnpmaccess "^3.0.2" + libnpmhook "^5.0.3" + libnpmorg "^1.0.1" + libnpmsearch "^2.0.2" + libnpmteam "^1.0.2" libnpx "^10.2.0" - lock-verify "^2.0.2" + lock-verify "^2.1.0" lockfile "^1.0.4" lodash._baseuniq "~4.6.0" lodash.clonedeep "~4.5.0" lodash.union "~4.6.0" lodash.uniq "~4.5.0" lodash.without "~4.4.0" - lru-cache "^4.1.3" + lru-cache "^5.1.1" meant "~1.0.1" mississippi "^3.0.0" mkdirp "~0.5.1" move-concurrently "^1.0.1" - node-gyp "^3.7.0" + node-gyp "^5.0.5" nopt "~4.0.1" - normalize-package-data "~2.4.0" - npm-audit-report "^1.3.1" + normalize-package-data "^2.5.0" + npm-audit-report "^1.3.2" npm-cache-filename "~1.0.2" - npm-install-checks "~3.0.0" - npm-lifecycle "^2.0.3" - npm-package-arg "^6.1.0" - npm-packlist "~1.1.10" - npm-pick-manifest "^2.1.0" - npm-profile "^3.0.2" - npm-registry-client "^8.5.1" - npm-registry-fetch "^1.1.0" + npm-install-checks "^3.0.2" + npm-lifecycle "^3.1.4" + npm-package-arg "^6.1.1" + npm-packlist "^1.4.6" + npm-pick-manifest "^3.0.2" + npm-profile "^4.0.2" + npm-registry-fetch "^4.0.2" npm-user-validate "~1.0.0" npmlog "~4.1.2" once "~1.4.0" - opener "~1.4.3" + opener "^1.5.1" osenv "^0.1.5" - pacote "^8.1.6" + pacote "^9.5.9" path-is-inside "~1.0.2" promise-inflight "~1.0.1" qrcode-terminal "^0.12.0" - query-string "^6.1.0" + query-string "^6.8.2" qw "~1.0.1" read "~1.0.7" - read-cmd-shim "~1.0.1" + read-cmd-shim "^1.0.5" read-installed "~4.0.3" - read-package-json "^2.0.13" - read-package-tree "^5.2.1" - readable-stream "^2.3.6" - request "^2.81.0" + read-package-json "^2.1.0" + read-package-tree "^5.3.1" + readable-stream "^3.4.0" + readdir-scoped-modules "^1.1.0" + request "^2.88.0" retry "^0.12.0" - rimraf "~2.6.2" + rimraf "^2.6.3" safe-buffer "^5.1.2" - semver "^5.5.0" - sha "~2.0.1" + semver "^5.7.1" + sha "^3.0.0" slide "~1.1.6" sorted-object "~2.0.1" sorted-union-stream "~2.1.3" - ssri "^6.0.0" - stringify-package "^1.0.0" - tar "^4.4.4" + ssri "^6.0.1" + stringify-package "^1.0.1" + tar "^4.4.13" text-table "~0.2.0" tiny-relative-date "^1.3.0" uid-number "0.0.6" umask "~1.1.0" - unique-filename "~1.1.0" + unique-filename "^1.1.1" unpipe "~1.0.0" update-notifier "^2.5.0" - uuid "^3.3.2" - validate-npm-package-license "^3.0.3" + uuid "^3.3.3" + validate-npm-package-license "^3.0.4" validate-npm-package-name "~3.0.0" which "^1.3.1" - worker-farm "^1.6.0" - write-file-atomic "^2.3.0" + worker-farm "^1.7.0" + write-file-atomic "^2.4.3" -"npmlog@0 || 1 || 2 || 3 || 4", "npmlog@2 || ^3.1.0 || ^4.0.0", npmlog@^4.0.2, npmlog@~4.1.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -4411,15 +4874,28 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0, once@~1.4.0: +octokit-pagination-methods@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" + integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== + +once@^1.3.0, once@^1.3.1, once@^1.4.0, once@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" -opener@~1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== optimist@^0.6.1: version "0.6.1" @@ -4451,6 +4927,14 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" +os-name@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" + integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== + dependencies: + macos-release "^2.2.0" + windows-release "^3.1.0" + os-tmpdir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4460,7 +4944,7 @@ os@^0.1.1: resolved "https://registry.yarnpkg.com/os/-/os-0.1.1.tgz#208845e89e193ad4d971474b93947736a56d13f3" integrity sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M= -osenv@0, osenv@^0.1.4, osenv@^0.1.5: +osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" dependencies: @@ -4474,19 +4958,26 @@ p-each-series@^1.0.0: dependencies: p-reduce "^1.0.0" -p-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-1.0.0.tgz#629d317150209c8fd508ba137713ef4bb920e9db" +p-filter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== dependencies: - p-map "^1.0.0" + p-map "^2.0.0" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" -p-is-promise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-is-promise@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" + integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== p-limit@^1.1.0: version "1.3.0" @@ -4519,25 +5010,33 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-locate@^4.1.0: +p-locate@^4.0.0, p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" -p-map@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" -p-retry@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-2.0.0.tgz#b97f1f4d6d81a3c065b2b40107b811e995c1bfba" +p-reduce@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== + +p-retry@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.2.0.tgz#ea9066c6b44f23cab4cd42f6147cdbbc6604da5d" + integrity sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA== dependencies: + "@types/retry" "^0.12.0" retry "^0.12.0" p-try@^1.0.0: @@ -4557,35 +5056,40 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -pacote@^8.1.6: - version "8.1.6" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-8.1.6.tgz#8e647564d38156367e7a9dc47a79ca1ab278d46e" +pacote@^9.1.0, pacote@^9.5.3, pacote@^9.5.9: + version "9.5.10" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.5.10.tgz#5a4fdf0bcea9dea2eb4a80ea56216f65681710b7" + integrity sha512-YfMv9yyUFojekkPB4x2pL7DvAaQ5KF+XObfrhNBreXkLopo9k9nOPszObZ4V7ORoLsaFq4ZaK851JxfJxfpfAg== dependencies: - bluebird "^3.5.1" - cacache "^11.0.2" - get-stream "^3.0.0" - glob "^7.1.2" - lru-cache "^4.1.3" - make-fetch-happen "^4.0.1" + bluebird "^3.5.3" + cacache "^12.0.2" + chownr "^1.1.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.3" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + make-fetch-happen "^5.0.0" minimatch "^3.0.4" - minipass "^2.3.3" + minipass "^2.3.5" mississippi "^3.0.0" mkdirp "^0.5.1" normalize-package-data "^2.4.0" npm-package-arg "^6.1.0" - npm-packlist "^1.1.10" - npm-pick-manifest "^2.1.0" + npm-packlist "^1.1.12" + npm-pick-manifest "^3.0.0" + npm-registry-fetch "^4.0.0" osenv "^0.1.5" promise-inflight "^1.0.1" promise-retry "^1.1.1" - protoduck "^5.0.0" + protoduck "^5.0.1" rimraf "^2.6.2" safe-buffer "^5.1.2" - semver "^5.5.0" - ssri "^6.0.0" - tar "^4.4.3" - unique-filename "^1.1.0" - which "^1.3.0" + semver "^5.6.0" + ssri "^6.0.1" + tar "^4.4.10" + unique-filename "^1.1.1" + which "^1.3.1" parallel-transform@^1.1.0: version "1.1.0" @@ -4595,9 +5099,12 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -parse-github-url@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" parse-json@^4.0.0: version "4.0.0" @@ -4606,12 +5113,15 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-url@^1.3.0: - version "1.3.11" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-1.3.11.tgz#57c15428ab8a892b1f43869645c711d0e144b554" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" parse5@4.0.0: version "4.0.0" @@ -4621,10 +5131,6 @@ pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -4646,7 +5152,7 @@ path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" -path-key@^3.1.0: +path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== @@ -4661,6 +5167,11 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -4669,6 +5180,11 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" +picomatch@^2.0.5: + version "2.1.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" + integrity sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA== + pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -4784,15 +5300,12 @@ proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.6" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.6.tgz#f8bb263ea1b5fd7a7604d26b8be39bd77678bf8a" - -protoduck@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.0.tgz#752145e6be0ad834cb25716f670a713c860dce70" +protoduck@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== dependencies: - genfun "^4.0.1" + genfun "^5.0.0" prr@~1.0.1: version "1.0.1" @@ -4806,7 +5319,7 @@ psl@^1.1.24: version "1.1.29" resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" -pump@^2.0.0, pump@^2.0.1: +pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" dependencies: @@ -4848,11 +5361,13 @@ qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" -query-string@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.1.0.tgz#01e7d69f6a0940dac67a937d6c6325647aa4532a" +query-string@^6.8.2: + version "6.9.0" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.9.0.tgz#1c3b727c370cf00f177c99f328fda2108f8fa3dd" + integrity sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA== dependencies: decode-uri-component "^0.2.0" + split-on-first "^1.0.0" strict-uri-encode "^2.0.0" quick-lru@^1.0.0: @@ -4877,12 +5392,19 @@ react-is@^16.8.4: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== -read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1: +read-cmd-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" dependencies: graceful-fs "^4.1.2" +read-cmd-shim@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz#87e43eba50098ba5a32d0ceb583ab8e43b961c16" + integrity sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA== + dependencies: + graceful-fs "^4.1.2" + read-installed@~4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" @@ -4907,15 +5429,26 @@ read-installed@~4.0.3: optionalDependencies: graceful-fs "^4.1.2" -read-package-tree@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.1.tgz#6218b187d6fac82289ce4387bbbaf8eef536ad63" +read-package-json@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.0.tgz#e3d42e6c35ea5ae820d9a03ab0c7291217fc51d5" + integrity sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A== + dependencies: + glob "^7.1.1" + json-parse-better-errors "^1.0.1" + normalize-package-data "^2.0.0" + slash "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.2" + +read-package-tree@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - once "^1.3.0" read-package-json "^2.0.0" readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" read-pkg-up@^3.0.0: version "3.0.0" @@ -4931,6 +5464,15 @@ read-pkg-up@^4.0.0: find-up "^3.0.0" read-pkg "^3.0.0" +read-pkg-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.0.tgz#3f3e53858ec5ae5e6fe14bc479da0a7c98f85ff3" + integrity sha512-t2ODkS/vTTcRlKwZiZsaLGb5iwfx9Urp924aGzVyboU6+7Z2i6eGr/G1Z4mjvwLLQV3uFOBKobNRGM3ux2PD/w== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -4939,13 +5481,15 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -read-pkg@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" +read-pkg@^5.0.0, read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== dependencies: - normalize-package-data "^2.3.2" - parse-json "^4.0.0" - pify "^3.0.0" + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" read@1, read@~1.0.1, read@~1.0.7: version "1.0.7" @@ -4953,7 +5497,7 @@ read@1, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -4965,6 +5509,15 @@ read@1, read@~1.0.1, read@~1.0.7: string_decoder "~1.1.1" util-deprecate "~1.0.1" +"readable-stream@2 || 3", readable-stream@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@~1.1.10: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -4983,6 +5536,16 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" +readdir-scoped-modules@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== + dependencies: + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -4997,11 +5560,17 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" -redeyed@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-1.0.1.tgz#e96c193b40c0816b00aec842698e61185e55498a" +redeyed@~2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" + integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= dependencies: - esprima "~3.0.0" + esprima "~4.0.0" + +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -5015,13 +5584,21 @@ regexp-clone@1.0.0, regexp-clone@^1.0.0: resolved "https://registry.yarnpkg.com/regexp-clone/-/regexp-clone-1.0.0.tgz#222db967623277056260b992626354a04ce9bf63" integrity sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw== -registry-auth-token@^3.0.1, registry-auth-token@^3.3.1: +registry-auth-token@^3.0.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" dependencies: rc "^1.1.6" safe-buffer "^5.0.1" +registry-auth-token@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.0.0.tgz#30e55961eec77379da551ea5c4cf43cbf03522be" + integrity sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw== + dependencies: + rc "^1.2.8" + safe-buffer "^5.0.1" + registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" @@ -5054,7 +5631,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@^2.74.0, request@^2.81.0, request@^2.87.0: +request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" dependencies: @@ -5119,6 +5696,11 @@ resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -5127,7 +5709,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@1.x: +resolve@1.x, resolve@^1.10.0: version "1.13.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== @@ -5152,13 +5734,18 @@ retry@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" +reusify@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2: +rimraf@2, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -5176,6 +5763,11 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -5186,6 +5778,11 @@ safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -5228,37 +5825,37 @@ seek-bzip@^1.0.5: dependencies: commander "~2.8.1" -semantic-release@^15.8.1: - version "15.9.8" - resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.9.8.tgz#cacd6a160f8155f1ef98eef5923af19979bc34e5" +semantic-release@^15.13.31: + version "15.13.31" + resolved "https://registry.yarnpkg.com/semantic-release/-/semantic-release-15.13.31.tgz#75560e61562b5b7aa3e66256fd3454683c6508a6" + integrity sha512-mrtYkH4p0FvXIRFCsr2r5il/A+Uj7oeeq+dgyojAbr4Tzywv9AlCYHeE3A8U3eE4bMJPiBV4YnQRsk1QS8yDDw== dependencies: - "@semantic-release/commit-analyzer" "^6.0.0" + "@semantic-release/commit-analyzer" "^6.1.0" "@semantic-release/error" "^2.2.0" - "@semantic-release/github" "^5.0.0" - "@semantic-release/npm" "^5.0.1" - "@semantic-release/release-notes-generator" "^7.0.0" - aggregate-error "^1.0.0" - cosmiconfig "^5.0.1" - debug "^3.1.0" - env-ci "^2.0.0" - execa "^0.10.0" - figures "^2.0.0" - find-versions "^2.0.0" - get-stream "^4.0.0" + "@semantic-release/github" "^5.1.0" + "@semantic-release/npm" "^5.0.5" + "@semantic-release/release-notes-generator" "^7.1.2" + aggregate-error "^3.0.0" + cosmiconfig "^6.0.0" + debug "^4.0.0" + env-ci "^4.0.0" + execa "^3.2.0" + figures "^3.0.0" + find-versions "^3.0.0" + get-stream "^5.0.0" git-log-parser "^1.2.0" - git-url-parse "^10.0.1" - hook-std "^1.1.0" - hosted-git-info "^2.7.1" - lodash "^4.17.4" - marked "^0.4.0" - marked-terminal "^3.0.0" - p-locate "^3.0.0" - p-reduce "^1.0.0" - read-pkg-up "^4.0.0" - resolve-from "^4.0.0" - semver "^5.4.1" + hook-std "^2.0.0" + hosted-git-info "^3.0.0" + lodash "^4.17.15" + marked "^0.7.0" + marked-terminal "^3.2.0" + p-locate "^4.0.0" + p-reduce "^2.0.0" + read-pkg-up "^7.0.0" + resolve-from "^5.0.0" + semver "^6.0.0" signale "^1.2.1" - yargs "^12.0.0" + yargs "^15.0.1" semver-diff@^2.0.0: version "2.1.0" @@ -5266,15 +5863,16 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -semver-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-1.0.0.tgz#92a4969065f9c70c694753d55248fc68f8f652c9" +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 >=2.2.1 || 3.x || 4 || 5", "semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" -semver@^5.5, semver@^5.6.0: +semver@^5.5, semver@^5.5.1, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -5310,12 +5908,12 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -sha@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/sha/-/sha-2.0.1.tgz#6030822fbd2c9823949f8f72ed6411ee5cf25aae" +sha@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/sha/-/sha-3.0.0.tgz#b2f2f90af690c16a3a839a6a6c680ea51fedd1ae" + integrity sha512-DOYnM37cNsLNSGIG/zZWch5CKIRNoLdYUQTQlcgkRkoYIUwDYjqDyye16YcDZg/OPdcbUgTKMjc4SY6TB7ZAPw== dependencies: graceful-fs "^4.1.2" - readable-stream "^2.0.2" shebang-command@^1.2.0: version "1.2.0" @@ -5374,19 +5972,20 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + sliced@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= -slide@^1.1.3, slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: +slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" -smart-buffer@^1.0.13: - version "1.1.15" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" - smart-buffer@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" @@ -5418,13 +6017,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -socks-proxy-agent@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-3.0.1.tgz#2eae7cf8e2a82d34565761539a7f9718c5617659" - dependencies: - agent-base "^4.1.0" - socks "^1.1.10" - socks-proxy-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" @@ -5432,13 +6024,6 @@ socks-proxy-agent@^4.0.0: agent-base "~4.2.0" socks "~2.2.0" -socks@^1.1.10: - version "1.1.10" - resolved "https://registry.yarnpkg.com/socks/-/socks-1.1.10.tgz#5b8b7fc7c8f341c53ed056e929b7bf4de8ba7b5a" - dependencies: - ip "^1.1.4" - smart-buffer "^1.0.13" - socks@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.1.tgz#68ad678b3642fbc5d99c64c165bc561eab0215f9" @@ -5525,6 +6110,11 @@ spdx-license-ids@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -5568,16 +6158,17 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -ssri@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" - dependencies: - safe-buffer "^5.1.1" - ssri@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.0.tgz#fc21bfc90e03275ac3e23d5a42e38b8a1cbc130d" +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + stack-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" @@ -5653,6 +6244,22 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -5667,6 +6274,11 @@ stringify-package@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.0.tgz#e02828089333d7d45cd8c287c30aa9a13375081b" +stringify-package@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stringify-package/-/stringify-package-1.0.1.tgz#e5aa3643e7f74d0f28628b72f3dad5cecfc3ba85" + integrity sha512-sa4DUQsYciMP1xhKWGuFM04fB0LG/9DlluZoSVywUMRNvzid6XucHK0/90xGxRoHrAaROrcHK1aPKaijCtSrhg== + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -5686,6 +6298,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -5700,6 +6319,11 @@ strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" @@ -5708,9 +6332,12 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +supports-color@^5.0.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" supports-color@^5.3.0: version "5.4.0" @@ -5725,6 +6352,14 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-hyperlinks@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" + integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== + dependencies: + has-flag "^2.0.0" + supports-color "^5.0.0" + symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -5741,15 +6376,7 @@ tar-stream@^1.5.2: to-buffer "^1.1.0" xtend "^4.0.0" -tar@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -tar@^4, tar@^4.4.3, tar@^4.4.4: +tar@^4: version "4.4.6" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b" dependencies: @@ -5761,6 +6388,33 @@ tar@^4, tar@^4.4.3, tar@^4.4.4: safe-buffer "^5.1.2" yallist "^3.0.2" +tar@^4.4.10, tar@^4.4.12, tar@^4.4.13: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -5796,6 +6450,13 @@ through2@^2.0.0, through2@^2.0.2, through2@~2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" +through2@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" + integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== + dependencies: + readable-stream "2 || 3" + through@2, "through@>=2.2.7 <3", through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -5841,6 +6502,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -5951,11 +6619,21 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-fest@^0.3.0: +type-fest@^0.3.0, type-fest@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -6010,9 +6688,10 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^0.4.3" -unique-filename@^1.1.0, unique-filename@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.0.tgz#d05f2fe4032560871f30e93cbe735eea201514f3" +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" @@ -6028,6 +6707,13 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" +universal-user-agent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.0.tgz#27da2ec87e32769619f68a14996465ea1cb9df16" + integrity sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA== + dependencies: + os-name "^3.1.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -6076,15 +6762,11 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url-template@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -6092,6 +6774,13 @@ util-extend@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + dependencies: + object.getownpropertydescriptors "^2.0.3" + util.promisify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" @@ -6108,7 +6797,7 @@ uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" dependencies: @@ -6202,6 +6891,13 @@ window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +windows-release@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" + integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== + dependencies: + execa "^1.0.0" + wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" @@ -6220,6 +6916,13 @@ worker-farm@^1.6.0: dependencies: errno "~0.1.7" +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -6236,6 +6939,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -6257,6 +6969,15 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" @@ -6271,10 +6992,6 @@ xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -6283,7 +7000,7 @@ y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: +y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" @@ -6295,9 +7012,22 @@ yallist@^3.0.0, yallist@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" -yargs-parser@10.x, yargs-parser@^10.1.0: +yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2" + integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw== + dependencies: + "@babel/runtime" "^7.6.3" + +yargs-parser@10.x, yargs-parser@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== dependencies: camelcase "^4.1.0" @@ -6309,6 +7039,14 @@ yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^16.1.0: + version "16.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" @@ -6332,23 +7070,6 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.1.tgz#6432e56123bb4e7c3562115401e98374060261c2" - dependencies: - cliui "^4.0.0" - decamelize "^2.0.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^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 || ^4.0.0" - yargs-parser "^10.1.0" - yargs@^13.3.0: version "13.3.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" @@ -6365,6 +7086,23 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.1" +yargs@^15.0.1: + version "15.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.0.2.tgz#4248bf218ef050385c4f7e14ebdf425653d13bd3" + integrity sha512-GH/X/hYt+x5hOat4LMnCqMd8r5Cv78heOMIJn1hr7QPPBqfeC6p89Y78+WB9yGDvfpCvgasfmWLzNzEioOUD9Q== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^16.1.0" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"