From af092e3bf9a95b4f9570fa85480e32669fa29a12 Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Wed, 8 May 2019 15:06:32 +0200 Subject: [PATCH] feat: Tracing + Reduced Bundle Size + build updates (#2038) * feat: Tracing Integration * feat: Update dependencies * fix: Remove opentracing package since code moved into integration * fix: Ignore tsbuildinfo * feat: Tracing integration + refactorings * fix: linter * feat: Add more options to tracing integration * ref: Small internal refactoring * meta: Changelog * feat: Move transaction to scope * fix: Changelog * fix: Tests * fix: Run yarn install * fix: Also clone span * meta: Changelog and version bump * meta: Changelog * ci: Remove saucelabs test * fix: Docs error * fix: Use utils in integrations, Remove incremental mode * fix: Linting * ref: Remove async/await syntax * feat: SpanContext to Span * feat: CR * fix: CR --- .gitignore | 1 + .travis.yml | 9 - CHANGELOG.md | 8 + dangerfile.ts | 2 +- lerna.json | 2 +- package.json | 28 +- packages/browser/.npmignore | 1 + packages/browser/package.json | 32 +- packages/browser/rollup.config.js | 4 +- packages/browser/src/sdk.ts | 4 +- packages/browser/src/transports/base.ts | 4 +- packages/browser/src/transports/fetch.ts | 2 +- packages/browser/src/transports/xhr.ts | 2 +- packages/browser/src/version.ts | 2 +- .../browser/test/mocks/simpletransport.ts | 2 +- packages/core/.npmignore | 1 + packages/core/package.json | 18 +- packages/core/src/baseclient.ts | 30 +- .../core/src/integrations/inboundfilters.ts | 19 +- packages/core/src/transports/noop.ts | 4 +- packages/core/test/mocks/transport.ts | 4 +- packages/hub/.npmignore | 1 + packages/hub/package.json | 14 +- packages/hub/src/hub.ts | 16 + packages/hub/src/index.ts | 1 + packages/hub/src/scope.ts | 54 + packages/hub/src/span.ts | 47 + packages/hub/test/scope.test.ts | 29 +- packages/hub/test/spancontext.test.ts | 32 + packages/integrations/.npmignore | 1 + packages/integrations/package.json | 24 +- packages/integrations/rollup.config.js | 4 +- packages/integrations/src/index.ts | 1 + packages/integrations/src/tracing.ts | 179 ++ packages/minimal/.npmignore | 1 + packages/minimal/package.json | 14 +- packages/node/.npmignore | 1 + packages/node/package.json | 20 +- packages/node/src/handlers.ts | 15 +- .../node/src/integrations/linkederrors.ts | 6 +- packages/node/src/parsers.ts | 2 +- packages/node/src/transports/base.ts | 4 +- packages/node/src/transports/http.ts | 2 +- packages/node/src/transports/https.ts | 2 +- packages/node/src/version.ts | 2 +- .../node/test/helper/settimeouttransport.ts | 16 - packages/node/test/index.test.ts | 2 - .../test/integrations/linkederrors.test.ts | 64 +- packages/opentracing/.npmignore | 3 - packages/opentracing/LICENSE | 29 - packages/opentracing/README.md | 39 - packages/opentracing/package.json | 73 - packages/opentracing/src/index.ts | 3 - .../opentracing/src/opentracingintegration.ts | 46 - packages/opentracing/src/span.ts | 158 -- packages/opentracing/src/spancontext.ts | 25 - packages/opentracing/src/tracer.ts | 97 -- packages/opentracing/tsconfig.build.json | 9 - packages/opentracing/tsconfig.esm.json | 8 - packages/opentracing/tsconfig.json | 9 - packages/opentracing/tslint.json | 3 - packages/types/.npmignore | 1 + packages/types/package.json | 8 +- packages/types/src/event.ts | 2 - packages/types/src/hub.ts | 3 + packages/types/src/scope.ts | 18 + packages/types/src/span.ts | 6 +- packages/typescript/.npmignore | 1 + packages/typescript/package.json | 2 +- packages/typescript/tslint.json | 2 + packages/utils/package.json | 12 +- packages/utils/src/promisebuffer.ts | 10 +- packages/utils/src/string.ts | 17 + packages/utils/src/syncpromise.ts | 12 +- yarn.lock | 1550 +++++++++-------- 75 files changed, 1413 insertions(+), 1466 deletions(-) create mode 100644 packages/hub/src/span.ts create mode 100644 packages/hub/test/spancontext.test.ts create mode 100644 packages/integrations/src/tracing.ts delete mode 100644 packages/node/test/helper/settimeouttransport.ts delete mode 100644 packages/opentracing/.npmignore delete mode 100644 packages/opentracing/LICENSE delete mode 100644 packages/opentracing/README.md delete mode 100644 packages/opentracing/package.json delete mode 100644 packages/opentracing/src/index.ts delete mode 100644 packages/opentracing/src/opentracingintegration.ts delete mode 100644 packages/opentracing/src/span.ts delete mode 100644 packages/opentracing/src/spancontext.ts delete mode 100644 packages/opentracing/src/tracer.ts delete mode 100644 packages/opentracing/tsconfig.build.json delete mode 100644 packages/opentracing/tsconfig.esm.json delete mode 100644 packages/opentracing/tsconfig.json delete mode 100644 packages/opentracing/tslint.json diff --git a/.gitignore b/.gitignore index 300aee3c0cee..4e390c6617a0 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ packages/*/esm/ coverage/ scratch/ *.pyc +*.tsbuildinfo # logs yarn-error.log diff --git a/.travis.yml b/.travis.yml index 179e0d0b22d4..7383de8dc6bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,8 +21,6 @@ cache: matrix: fast_finish: true - allow_failures: - - script: scripts/browser-saucelabs.sh stages: - Test @@ -70,13 +68,6 @@ jobs: chrome: stable firefox: latest script: scripts/raven-js.sh - - stage: Saucelabs - name: '@sentry/browser - SauceLabs tests' - if: fork = false - node_js: '8' - addons: - sauce_connect: true - script: scripts/browser-saucelabs.sh - stage: Deploy name: '@sentry/packages - pack and zeus upload' node_js: '8' diff --git a/CHANGELOG.md b/CHANGELOG.md index 0110a9320783..26e840d60ea4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## Unreleased + +- [opentracing] ref: Removed opentracing package +- [integrations] feat: Add tracing integration +- [hub] feat: Add tracing related function to scope and hub (`Scope.startSpan`, `Scope.setSpan`, `Hub.traceHeaders`) +- [hub] feat: Add new function to Scope `setContext` +- [hub] feat: Add new function to Scope `setTransaction` + ## 5.1.3 - [browser] fix: GlobalHandler integration sometimes receives Event objects as message: Fix #1949 diff --git a/dangerfile.ts b/dangerfile.ts index 979ae3129462..fa1fe26e3ed8 100644 --- a/dangerfile.ts +++ b/dangerfile.ts @@ -5,7 +5,7 @@ import { resolve } from 'path'; import tslint from 'danger-plugin-tslint'; import { prettyResults } from 'danger-plugin-tslint/dist/prettyResults'; -const packages = ['browser', 'core', 'hub', 'integrations', 'opentracing', 'minimal', 'node', 'types', 'utils']; +const packages = ['browser', 'core', 'hub', 'integrations', 'minimal', 'node', 'types', 'utils']; export default async () => { if (!danger.github) { diff --git a/lerna.json b/lerna.json index 700092299213..bf9071a9eb84 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "lerna": "3.4.0", - "version": "5.1.3", + "version": "5.2.0-beta.0", "packages": "packages/*", "ignore": "raven-*", "npmClient": "yarn", diff --git a/package.json b/package.json index c1555d85d168..938fb6145d83 100644 --- a/package.json +++ b/package.json @@ -30,31 +30,31 @@ "packages/utils" ], "devDependencies": { - "@google-cloud/storage": "^2.3.1", + "@google-cloud/storage": "^2.5.0", "@strictsoftware/typedoc-plugin-monorepo": "^0.2.1", "@types/chai": "^4.1.3", "@types/jest": "^24.0.11", "@types/mocha": "^5.2.0", - "@types/node": "^11.11.3", + "@types/node": "^11.13.7", "@types/raven": "^2.5.1", - "@types/sinon": "^7.0.10", + "@types/sinon": "^7.0.11", "chai": "^4.1.2", - "codecov": "^3.0.2", - "danger": "^7.0.14", + "codecov": "^3.3.0", + "danger": "^7.1.3", "danger-plugin-tslint": "^2.0.0", - "jest": "^24.5.0", - "lerna": "3.13.1", - "mocha": "^6.0.2", + "jest": "^24.7.1", + "lerna": "3.13.4", + "mocha": "^6.1.4", "npm-run-all": "^4.1.2", - "prettier": "^1.14.0", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", - "replace-in-file": "^3.4.4", + "replace-in-file": "^4.0.0", "rimraf": "^2.6.3", - "sinon": "^7.2.7", - "ts-jest": "^24.0.0", - "tslint": "^5.14.0", + "sinon": "^7.3.2", + "ts-jest": "^24.0.2", + "tslint": "^5.16.0", "typedoc": "^0.14.2", - "typescript": "^3.3.3333", + "typescript": "^3.4.5", "typescript-tslint-plugin": "^0.3.1" } } diff --git a/packages/browser/.npmignore b/packages/browser/.npmignore index d92f664ecfe3..a83fc4bb0929 100644 --- a/packages/browser/.npmignore +++ b/packages/browser/.npmignore @@ -2,3 +2,4 @@ !/dist/**/* !/build/**/* !/esm/**/* +*.tsbuildinfo diff --git a/packages/browser/package.json b/packages/browser/package.json index a9aa9909f2af..2a7f8723552f 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "5.1.3", + "version": "5.2.0-beta.0", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -16,17 +16,17 @@ "access": "public" }, "dependencies": { - "@sentry/core": "5.1.2", - "@sentry/types": "5.1.0", - "@sentry/utils": "5.1.2", + "@sentry/core": "5.2.0-beta.0", + "@sentry/types": "5.2.0-beta.0", + "@sentry/utils": "5.2.0-beta.0", "tslib": "^1.9.3" }, "devDependencies": { "@types/md5": "2.1.33", "chai": "^4.1.2", - "jest": "^24.5.0", - "jsdom": "^14.0.0", - "karma": "^4.0.1", + "jest": "^24.7.1", + "jsdom": "^15.0.0", + "karma": "^4.1.0", "karma-chai": "^0.1.0", "karma-chrome-launcher": "^2.2.0", "karma-failed-reporter": "0.0.3", @@ -39,19 +39,19 @@ "karma-typescript": "^4.0.0", "karma-typescript-es6-transform": "^4.0.0", "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "rollup": "^1.6.0", - "rollup-plugin-commonjs": "^9.2.1", + "rollup": "^1.10.1", + "rollup-plugin-commonjs": "^9.3.4", "rollup-plugin-license": "^0.8.1", - "rollup-plugin-node-resolve": "^4.0.1", + "rollup-plugin-node-resolve": "^4.2.3", "rollup-plugin-terser": "^4.0.4", - "rollup-plugin-typescript2": "^0.20.1", - "sinon": "^7.2.7", - "tslint": "^5.14.0", - "typescript": "^3.3.3333", - "webpack": "^4.29.6" + "rollup-plugin-typescript2": "^0.21.0", + "sinon": "^7.3.2", + "tslint": "^5.16.0", + "typescript": "^3.4.5", + "webpack": "^4.30.0" }, "scripts": { "build": "run-s build:dist build:esm build:bundle", diff --git a/packages/browser/rollup.config.js b/packages/browser/rollup.config.js index 4c49fb298b1a..5659005ca703 100644 --- a/packages/browser/rollup.config.js +++ b/packages/browser/rollup.config.js @@ -43,9 +43,7 @@ const plugins = [ include: ['*.ts+(|x)', '**/*.ts+(|x)', '../**/*.ts+(|x)'], }), resolve({ - module: true, - browser: false, - modulesOnly: false, + mainFields: ['module'], }), commonjs(), ]; diff --git a/packages/browser/src/sdk.ts b/packages/browser/src/sdk.ts index 8fbedee0c10b..5b0832e272c5 100644 --- a/packages/browser/src/sdk.ts +++ b/packages/browser/src/sdk.ts @@ -124,7 +124,7 @@ export function onLoad(callback: () => void): void { * * @param timeout Maximum time in ms the client should wait. */ -export async function flush(timeout?: number): Promise { +export function flush(timeout?: number): Promise { const client = getCurrentHub().getClient(); if (client) { return client.flush(timeout); @@ -138,7 +138,7 @@ export async function flush(timeout?: number): Promise { * * @param timeout Maximum time in ms the client should wait. */ -export async function close(timeout?: number): Promise { +export function close(timeout?: number): Promise { const client = getCurrentHub().getClient(); if (client) { return client.close(timeout); diff --git a/packages/browser/src/transports/base.ts b/packages/browser/src/transports/base.ts index 17ecd54f16bb..3955b3dd8fcc 100644 --- a/packages/browser/src/transports/base.ts +++ b/packages/browser/src/transports/base.ts @@ -19,14 +19,14 @@ export abstract class BaseTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: Event): Promise { + public sendEvent(_: Event): Promise { throw new SentryError('Transport Class has to implement `sendEvent` method'); } /** * @inheritDoc */ - public async close(timeout?: number): Promise { + public close(timeout?: number): Promise { return this._buffer.drain(timeout); } } diff --git a/packages/browser/src/transports/fetch.ts b/packages/browser/src/transports/fetch.ts index 4c064eed3532..bfeca66b7ea3 100644 --- a/packages/browser/src/transports/fetch.ts +++ b/packages/browser/src/transports/fetch.ts @@ -10,7 +10,7 @@ export class FetchTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(event: Event): Promise { + public sendEvent(event: Event): Promise { const defaultOptions: RequestInit = { body: JSON.stringify(event), method: 'POST', diff --git a/packages/browser/src/transports/xhr.ts b/packages/browser/src/transports/xhr.ts index f94bce8c182d..1e2430f2e423 100644 --- a/packages/browser/src/transports/xhr.ts +++ b/packages/browser/src/transports/xhr.ts @@ -7,7 +7,7 @@ export class XHRTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(event: Event): Promise { + public sendEvent(event: Event): Promise { return this._buffer.add( new Promise((resolve, reject) => { const request = new XMLHttpRequest(); diff --git a/packages/browser/src/version.ts b/packages/browser/src/version.ts index c9326be12f48..4a3bb928cc2f 100644 --- a/packages/browser/src/version.ts +++ b/packages/browser/src/version.ts @@ -1,2 +1,2 @@ export const SDK_NAME = 'sentry.javascript.browser'; -export const SDK_VERSION = '5.1.3'; +export const SDK_VERSION = '5.2.0-beta.0'; diff --git a/packages/browser/test/mocks/simpletransport.ts b/packages/browser/test/mocks/simpletransport.ts index 998426441803..a8f8dcb357ee 100644 --- a/packages/browser/test/mocks/simpletransport.ts +++ b/packages/browser/test/mocks/simpletransport.ts @@ -2,7 +2,7 @@ import { Event, Response, Status } from '../../src'; import { BaseTransport } from '../../src/transports'; export class SimpleTransport extends BaseTransport { - public async sendEvent(_: Event): Promise { + public sendEvent(_: Event): Promise { return this._buffer.add( Promise.resolve({ status: Status.fromHttpCode(200), diff --git a/packages/core/.npmignore b/packages/core/.npmignore index 3f69e7aaba85..14e80551ae7c 100644 --- a/packages/core/.npmignore +++ b/packages/core/.npmignore @@ -1,3 +1,4 @@ * !/dist/**/* !/esm/**/* +*.tsbuildinfo diff --git a/packages/core/package.json b/packages/core/package.json index 741ffa07ffd2..bbd559e0a327 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "5.1.2", + "version": "5.2.0-beta.0", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -16,20 +16,20 @@ "access": "public" }, "dependencies": { - "@sentry/hub": "5.1.2", - "@sentry/minimal": "5.1.2", - "@sentry/types": "5.1.0", - "@sentry/utils": "5.1.2", + "@sentry/hub": "5.2.0-beta.0", + "@sentry/minimal": "5.2.0-beta.0", + "@sentry/types": "5.2.0-beta.0", + "@sentry/utils": "5.2.0-beta.0", "tslib": "^1.9.3" }, "devDependencies": { - "jest": "^24.5.0", + "jest": "^24.7.1", "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "tslint": "^5.14.0", - "typescript": "^3.3.3333" + "tslint": "^5.16.0", + "typescript": "^3.4.5" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/core/src/baseclient.ts b/packages/core/src/baseclient.ts index 075d7b0492fd..6f604eb0b9f8 100644 --- a/packages/core/src/baseclient.ts +++ b/packages/core/src/baseclient.ts @@ -165,24 +165,26 @@ export abstract class BaseClient implement /** * @inheritDoc */ - public async flush(timeout?: number): Promise { - const clientReady = await this._isClientProcessing(timeout); - if (this._processingInterval) { - clearInterval(this._processingInterval); - } - const transportFlushed = await this._getBackend() - .getTransport() - .close(timeout); - return clientReady && transportFlushed; + public flush(timeout?: number): Promise { + return this._isClientProcessing(timeout).then(clientReady => { + if (this._processingInterval) { + clearInterval(this._processingInterval); + } + return this._getBackend() + .getTransport() + .close(timeout) + .then(transportFlushed => clientReady && transportFlushed); + }); } /** * @inheritDoc */ - public async close(timeout?: number): Promise { - const result = await this.flush(timeout); - this.getOptions().enabled = false; - return result; + public close(timeout?: number): Promise { + return this.flush(timeout).then(result => { + this.getOptions().enabled = false; + return result; + }); } /** @@ -205,7 +207,7 @@ export abstract class BaseClient implement } /** Waits for the client to be done with processing. */ - protected async _isClientProcessing(timeout?: number): Promise { + protected _isClientProcessing(timeout?: number): Promise { return new Promise(resolve => { let ticked: number = 0; const tick: number = 1; diff --git a/packages/core/src/integrations/inboundfilters.ts b/packages/core/src/integrations/inboundfilters.ts index 83d0c7902692..6df4b2d3d0e6 100644 --- a/packages/core/src/integrations/inboundfilters.ts +++ b/packages/core/src/integrations/inboundfilters.ts @@ -1,6 +1,6 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub'; import { Event, Integration } from '@sentry/types'; -import { getEventDescription, isRegExp, logger } from '@sentry/utils'; +import { getEventDescription, isMatchingPattern, logger } from '@sentry/utils'; // "Script error." is hard coded into browsers for errors that it can't read. // this is the result of a script being pulled in from an external domain and CORS. @@ -102,7 +102,7 @@ export class InboundFilters implements Integration { return this._getPossibleEventMessages(event).some(message => // Not sure why TypeScript complains here... - (options.ignoreErrors as Array).some(pattern => this._isMatchingPattern(message, pattern)), + (options.ignoreErrors as Array).some(pattern => isMatchingPattern(message, pattern)), ); } @@ -113,7 +113,7 @@ export class InboundFilters implements Integration { return false; } const url = this._getEventFilterUrl(event); - return !url ? false : options.blacklistUrls.some(pattern => this._isMatchingPattern(url, pattern)); + return !url ? false : options.blacklistUrls.some(pattern => isMatchingPattern(url, pattern)); } /** JSDoc */ @@ -123,7 +123,7 @@ export class InboundFilters implements Integration { return true; } const url = this._getEventFilterUrl(event); - return !url ? true : options.whitelistUrls.some(pattern => this._isMatchingPattern(url, pattern)); + return !url ? true : options.whitelistUrls.some(pattern => isMatchingPattern(url, pattern)); } /** JSDoc */ @@ -140,17 +140,6 @@ export class InboundFilters implements Integration { }; } - /** JSDoc */ - private _isMatchingPattern(value: string, pattern: RegExp | string): boolean { - if (isRegExp(pattern)) { - return (pattern as RegExp).test(value); - } - if (typeof pattern === 'string') { - return value.includes(pattern); - } - return false; - } - /** JSDoc */ private _getPossibleEventMessages(event: Event): string[] { if (event.message) { diff --git a/packages/core/src/transports/noop.ts b/packages/core/src/transports/noop.ts index 21e56df43d79..4ccd027e80aa 100644 --- a/packages/core/src/transports/noop.ts +++ b/packages/core/src/transports/noop.ts @@ -5,7 +5,7 @@ export class NoopTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: Event): Promise { + public sendEvent(_: Event): Promise { return Promise.resolve({ reason: `NoopTransport: Event has been skipped because no Dsn is configured.`, status: Status.Skipped, @@ -15,7 +15,7 @@ export class NoopTransport implements Transport { /** * @inheritDoc */ - public async close(_?: number): Promise { + public close(_?: number): Promise { return Promise.resolve(true); } } diff --git a/packages/core/test/mocks/transport.ts b/packages/core/test/mocks/transport.ts index ec143ae7fdd6..374dc29b1c50 100644 --- a/packages/core/test/mocks/transport.ts +++ b/packages/core/test/mocks/transport.ts @@ -13,7 +13,7 @@ export class FakeTransport implements Transport { public sentCount: number = 0; public delay: number = 2000; - public async sendEvent(_event: Event): Promise { + public sendEvent(_event: Event): Promise { this.sendCalled += 1; return this._buffer.add( new Promise(async res => { @@ -24,7 +24,7 @@ export class FakeTransport implements Transport { ); } - public async close(timeout?: number): Promise { + public close(timeout?: number): Promise { return this._buffer.drain(timeout); } } diff --git a/packages/hub/.npmignore b/packages/hub/.npmignore index 3f69e7aaba85..14e80551ae7c 100644 --- a/packages/hub/.npmignore +++ b/packages/hub/.npmignore @@ -1,3 +1,4 @@ * !/dist/**/* !/esm/**/* +*.tsbuildinfo diff --git a/packages/hub/package.json b/packages/hub/package.json index cbbe73a61579..e2a46ebeef85 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "5.1.2", + "version": "5.2.0-beta.0", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -16,18 +16,18 @@ "access": "public" }, "dependencies": { - "@sentry/types": "5.1.0", - "@sentry/utils": "5.1.2", + "@sentry/types": "5.2.0-beta.0", + "@sentry/utils": "5.2.0-beta.0", "tslib": "^1.9.3" }, "devDependencies": { - "jest": "^24.5.0", + "jest": "^24.7.1", "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "tslint": "^5.14.0", - "typescript": "^3.3.3333" + "tslint": "^5.16.0", + "typescript": "^3.4.5" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/hub/src/hub.ts b/packages/hub/src/hub.ts index 82fc575ec543..12aa9aa2f4b3 100644 --- a/packages/hub/src/hub.ts +++ b/packages/hub/src/hub.ts @@ -263,6 +263,22 @@ export class Hub implements HubInterface { return null; } } + + /** + * @inheritDoc + */ + public traceHeaders(): { [key: string]: string } { + const top = this.getStackTop(); + if (top.scope && top.client) { + const span = top.scope.getSpan(); + if (span) { + return { + 'sentry-trace': span.toTraceparent(), + }; + } + } + return {}; + } } /** Returns the global shim registry. */ diff --git a/packages/hub/src/index.ts b/packages/hub/src/index.ts index 6656b1b24df9..a380a431945e 100644 --- a/packages/hub/src/index.ts +++ b/packages/hub/src/index.ts @@ -1,3 +1,4 @@ export { Carrier, Layer } from './interfaces'; export { addGlobalEventProcessor, Scope } from './scope'; export { getCurrentHub, getHubFromCarrier, getMainCarrier, Hub, makeMain, setHubOnCarrier } from './hub'; +export { Span, TRACEPARENT_REGEXP } from './span'; diff --git a/packages/hub/src/scope.ts b/packages/hub/src/scope.ts index b6a5ae052572..c1da5813b91e 100644 --- a/packages/hub/src/scope.ts +++ b/packages/hub/src/scope.ts @@ -1,6 +1,8 @@ import { Breadcrumb, Event, EventHint, EventProcessor, Scope as ScopeInterface, Severity, User } from '@sentry/types'; import { getGlobalObject, isThenable, normalize, SyncPromise } from '@sentry/utils'; +import { Span } from './span'; + /** * Holds additional event information. {@link Scope.applyToEvent} will be * called by the client before an event will be sent. @@ -36,6 +38,12 @@ export class Scope implements ScopeInterface { /** Severity */ protected _level?: Severity; + /** Transaction */ + protected _transaction?: string; + + /** Span */ + protected _span?: Span; + /** * Add internal on change listener. Used for sub SDKs that need to store the scope. * @hidden @@ -165,6 +173,15 @@ export class Scope implements ScopeInterface { return this; } + /** + * @inheritDoc + */ + public setTransaction(transaction?: string): this { + this._transaction = transaction; + this._notifyScopeListeners(); + return this; + } + /** * @inheritDoc */ @@ -174,6 +191,32 @@ export class Scope implements ScopeInterface { return this; } + /** + * @inheritDoc + */ + public setSpan(span?: Span): this { + this._span = span; + this._notifyScopeListeners(); + return this; + } + + /** + * @inheritDoc + */ + public startSpan(): Span { + const span = new Span(); + this.setSpan(span); + return span; + } + + /** + * Internal getter for Span, used in Hub. + * @hidden + */ + public getSpan(): Span | undefined { + return this._span; + } + /** * Inherit values from the parent scope. * @param scope to clone. @@ -190,6 +233,8 @@ export class Scope implements ScopeInterface { newScope._context = { ...scope._context }; newScope._user = scope._user; newScope._level = scope._level; + newScope._span = scope._span; + newScope._transaction = scope._transaction; newScope._fingerprint = scope._fingerprint; newScope._eventProcessors = [...scope._eventProcessors]; } @@ -206,7 +251,9 @@ export class Scope implements ScopeInterface { this._user = {}; this._context = {}; this._level = undefined; + this._transaction = undefined; this._fingerprint = undefined; + this._span = undefined; this._notifyScopeListeners(); return this; } @@ -283,6 +330,13 @@ export class Scope implements ScopeInterface { if (this._level) { event.level = this._level; } + if (this._transaction) { + event.transaction = this._transaction; + } + if (this._span) { + event.contexts = event.contexts || {}; + event.contexts.trace = this._span; + } this._applyFingerprint(event); diff --git a/packages/hub/src/span.ts b/packages/hub/src/span.ts new file mode 100644 index 000000000000..0ad4b0ffc1d9 --- /dev/null +++ b/packages/hub/src/span.ts @@ -0,0 +1,47 @@ +import { Span as SpanInterface } from '@sentry/types'; +import { uuid4 } from '@sentry/utils'; + +export const TRACEPARENT_REGEXP = /([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})/; + +/** + * Span containg all data about a span + */ +export class Span implements SpanInterface { + public constructor( + private readonly _traceId: string = uuid4(), + private readonly _spanId: string = uuid4().substring(16), + private readonly _recorded: boolean = false, + private readonly _parent?: Span, + ) {} + + /** + * Continues a trace + * @param traceparent Traceparent string + */ + public static fromTraceparent(traceparent: string): Span | undefined { + const matches = traceparent.match(TRACEPARENT_REGEXP); + if (matches) { + const parent = new Span(matches[2], matches[3], matches[4] === '01' ? true : false); + return new Span(matches[2], undefined, undefined, parent); + } + return undefined; + } + + /** + * @inheritDoc + */ + public toTraceparent(): string { + return `00-${this._traceId}-${this._spanId}-${this._recorded ? '01' : '00'}`; + } + + /** + * @inheritDoc + */ + public toJSON(): object { + return { + parent: (this._parent && this._parent.toJSON()) || undefined, + span_id: this._spanId, + trace_id: this._traceId, + }; + } +} diff --git a/packages/hub/test/scope.test.ts b/packages/hub/test/scope.test.ts index d23de7b437e4..59c378efb022 100644 --- a/packages/hub/test/scope.test.ts +++ b/packages/hub/test/scope.test.ts @@ -83,6 +83,20 @@ describe('Scope', () => { }); }); + describe('transaction', () => { + test('set', () => { + const scope = new Scope(); + scope.setTransaction('/abc'); + expect((scope as any)._transaction).toEqual('/abc'); + }); + test('unset', () => { + const scope = new Scope(); + scope.setTransaction('/abc'); + scope.setTransaction(); + expect((scope as any)._transaction).toBeUndefined(); + }); + }); + describe('context', () => { test('set', () => { const scope = new Scope(); @@ -130,13 +144,14 @@ describe('Scope', () => { }); test('applyToEvent', () => { - expect.assertions(7); + expect.assertions(8); const scope = new Scope(); scope.setExtra('a', 2); scope.setTag('a', 'b'); scope.setUser({ id: '1' }); scope.setFingerprint(['abcd']); scope.setLevel(Severity.Warning); + scope.setTransaction('/abc'); scope.addBreadcrumb({ message: 'test' }, 100); scope.setContext('os', { id: '1' }); const event: Event = {}; @@ -146,6 +161,7 @@ describe('Scope', () => { expect(processedEvent!.user).toEqual({ id: '1' }); expect(processedEvent!.fingerprint).toEqual(['abcd']); expect(processedEvent!.level).toEqual('warning'); + expect(processedEvent!.transaction).toEqual('/abc'); expect(processedEvent!.breadcrumbs![0]).toHaveProperty('message', 'test'); expect(processedEvent!.contexts).toEqual({ os: { id: '1' } }); }); @@ -206,6 +222,17 @@ describe('Scope', () => { }); }); + test('applyToEvent scope transaction should be stronger', () => { + expect.assertions(1); + const scope = new Scope(); + scope.setTransaction('/abc'); + const event: Event = {}; + event.transaction = '/cdf'; + return scope.applyToEvent(event).then(processedEvent => { + expect(processedEvent!.transaction).toEqual('/abc'); + }); + }); + test('clear', () => { const scope = new Scope(); scope.setExtra('a', 2); diff --git a/packages/hub/test/spancontext.test.ts b/packages/hub/test/spancontext.test.ts new file mode 100644 index 000000000000..d03d632e712b --- /dev/null +++ b/packages/hub/test/spancontext.test.ts @@ -0,0 +1,32 @@ +import { Span, TRACEPARENT_REGEXP } from '../src'; + +describe('Span', () => { + test('toTraceparent', () => { + expect(new Span().toTraceparent()).toMatch(TRACEPARENT_REGEXP); + }); + + test('fromTraceparent', () => { + const from = Span.fromTraceparent('00-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bbbbbbbbbbbbbbbb-00') as any; + expect(from._parent._traceId).toEqual('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); + expect(from._parent._spanId).toEqual('bbbbbbbbbbbbbbbb'); + expect(from._traceId).toEqual('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); + expect(from._spanId).not.toEqual('bbbbbbbbbbbbbbbb'); + expect(from._recorded).toEqual(false); + }); + + test('fromTraceparent - invalid', () => { + expect(Span.fromTraceparent('00-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bbbbbbbbbbbbbbbb-x')).toBeUndefined(); + }); + + test('toJSON', () => { + expect(JSON.stringify(new Span('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbb'))).toEqual( + `{"span_id":"bbbbbbbbbbbbbbbb","trace_id":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}`, + ); + }); + + test('toJSON with parent', () => { + const spanA = new Span('a', 'b'); + const spanB = new Span('c', 'd', false, spanA); + expect(JSON.stringify(spanB)).toEqual(`{"parent":{"span_id":"b","trace_id":"a"},"span_id":"d","trace_id":"c"}`); + }); +}); diff --git a/packages/integrations/.npmignore b/packages/integrations/.npmignore index d92f664ecfe3..a83fc4bb0929 100644 --- a/packages/integrations/.npmignore +++ b/packages/integrations/.npmignore @@ -2,3 +2,4 @@ !/dist/**/* !/build/**/* !/esm/**/* +*.tsbuildinfo diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 9430806ae4a1..9c5e7a8902d9 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "5.1.2", + "version": "5.2.0-beta.0", "description": "Pluggable integrations that can be used to enchance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -14,26 +14,26 @@ }, "main": "dist/index.js", "module": "esm/index.js", - "browser": "dist/index.js", "types": "dist/index.d.ts", "dependencies": { - "@sentry/types": "5.1.0", - "@sentry/utils": "5.1.2" + "@sentry/types": "5.2.0-beta.0", + "@sentry/utils": "5.2.0-beta.0", + "tslib": "^1.9.3" }, "devDependencies": { "chai": "^4.1.2", - "jest": "^24.5.0", + "jest": "^24.7.1", "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "rollup": "^1.6.0", - "rollup-plugin-commonjs": "^9.2.1", - "rollup-plugin-node-resolve": "^4.0.1", + "rollup": "^1.10.1", + "rollup-plugin-commonjs": "^9.3.4", + "rollup-plugin-node-resolve": "^4.2.3", "rollup-plugin-terser": "^4.0.4", - "rollup-plugin-typescript2": "^0.20.1", - "tslint": "^5.14.0", - "typescript": "^3.3.3333" + "rollup-plugin-typescript2": "^0.21.0", + "tslint": "^5.16.0", + "typescript": "^3.4.5" }, "scripts": { "build": "run-p build:es5 build:esm build:bundle", diff --git a/packages/integrations/rollup.config.js b/packages/integrations/rollup.config.js index ae793bc91157..eb75c68ce42c 100644 --- a/packages/integrations/rollup.config.js +++ b/packages/integrations/rollup.config.js @@ -36,9 +36,7 @@ const plugins = [ include: ['*.ts+(|x)', '**/*.ts+(|x)', '../**/*.ts+(|x)'], }), resolve({ - browser: true, - module: false, - modulesOnly: true, + mainFields: ['module'], }), commonjs(), ]; diff --git a/packages/integrations/src/index.ts b/packages/integrations/src/index.ts index f44a7196fb85..27914f2c5302 100644 --- a/packages/integrations/src/index.ts +++ b/packages/integrations/src/index.ts @@ -6,5 +6,6 @@ export { Ember } from './ember'; export { ExtraErrorData } from './extraerrordata'; export { ReportingObserver } from './reportingobserver'; export { RewriteFrames } from './rewriteframes'; +export { Tracing } from './tracing'; export { Transaction } from './transaction'; export { Vue } from './vue'; diff --git a/packages/integrations/src/tracing.ts b/packages/integrations/src/tracing.ts new file mode 100644 index 000000000000..26d6f177bdfd --- /dev/null +++ b/packages/integrations/src/tracing.ts @@ -0,0 +1,179 @@ +import { EventProcessor, Hub, Integration } from '@sentry/types'; +import { consoleSandbox, fill, getGlobalObject, isMatchingPattern, supportsNativeFetch } from '@sentry/utils'; + +/** JSDoc */ +interface TracingOptions { + tracingOrigins: Array; + traceXHR?: boolean; + traceFetch?: boolean; + autoStartOnDomReady?: boolean; +} + +/** + * Tracing Integration + */ +export class Tracing implements Integration { + /** + * @inheritDoc + */ + public name: string = Tracing.id; + + /** + * @inheritDoc + */ + public static id: string = 'Tracing'; + + /** + * If we have an xhr we need to store the url in the instance. + * + */ + // @ts-ignore + private _xhrUrl?: string; + + /** + * Constructor for Tracing + * + * @param _options TracingOptions + */ + public constructor(private readonly _options: TracingOptions) { + if (!Array.isArray(_options.tracingOrigins) || _options.tracingOrigins.length === 0) { + consoleSandbox(() => { + const defaultTracingOrigins = ['localhost', /^\//]; + // @ts-ignore + console.warn( + 'Sentry: You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.', + ); + // @ts-ignore + console.warn(`Sentry: We added a reasonable default for you: ${defaultTracingOrigins}`); + _options.tracingOrigins = defaultTracingOrigins; + }); + } + } + + /** + * @inheritDoc + */ + public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void { + if (this._options.traceXHR !== false) { + this._traceXHR(getCurrentHub); + } + if (this._options.traceFetch !== false) { + this._traceFetch(getCurrentHub); + } + if (this._options.autoStartOnDomReady !== false) { + getGlobalObject().addEventListener('DOMContentLoaded', () => { + Tracing.startTrace(getCurrentHub(), getGlobalObject().location.href); + }); + getGlobalObject().document.onreadystatechange = () => { + if (document.readyState === 'complete') { + Tracing.startTrace(getCurrentHub(), getGlobalObject().location.href); + } + }; + } + } + + /** + * Starts a new trace + * @param hub The hub to start the trace on + * @param transaction Optional transaction + */ + public static startTrace(hub: Hub, transaction?: string): void { + hub.configureScope(scope => { + scope.startSpan(); + scope.setTransaction(transaction); + }); + } + + /** + * JSDoc + */ + private _traceXHR(getCurrentHub: () => Hub): void { + if (!('XMLHttpRequest' in global)) { + return; + } + + const xhrproto = XMLHttpRequest.prototype; + + fill( + xhrproto, + 'open', + originalOpen => + function(this: XMLHttpRequest, ...args: any[]): void { + // @ts-ignore + const self = getCurrentHub().getIntegration(Tracing); + if (self) { + self._xhrUrl = args[1] as string; + } + // tslint:disable-next-line: no-unsafe-any + return originalOpen.apply(this, args); + }, + ); + + fill( + xhrproto, + 'send', + originalSend => + function(this: XMLHttpRequest, ...args: any[]): void { + // @ts-ignore + const self = getCurrentHub().getIntegration(Tracing); + if (self && self._xhrUrl) { + const headers = getCurrentHub().traceHeaders(); + // tslint:disable-next-line: prefer-for-of + const isWhitelisted = self._options.tracingOrigins.some((origin: string | RegExp) => + isMatchingPattern(self._xhrUrl, origin), + ); + + if (isWhitelisted && this.setRequestHeader) { + Object.keys(headers).forEach(key => { + this.setRequestHeader(key, headers[key]); + }); + } + } + // tslint:disable-next-line: no-unsafe-any + return originalSend.apply(this, args); + }, + ); + } + + /** + * JSDoc + */ + private _traceFetch(getCurrentHub: () => Hub): void { + if (!supportsNativeFetch()) { + return; + } + + // tslint:disable: only-arrow-functions + fill(getGlobalObject(), 'fetch', function(originalFetch: () => void): () => void { + return function(...args: any[]): void { + // @ts-ignore + const self = getCurrentHub().getIntegration(Tracing); + if (self) { + const url = args[0] as string; + const options = args[1] as { [key: string]: any }; + + let whiteListed = false; + self._options.tracingOrigins.forEach((whiteListUrl: string) => { + if (!whiteListed) { + whiteListed = isMatchingPattern(url, whiteListUrl); + } + }); + + if (options && whiteListed) { + if (options.headers) { + options.headers = { + ...options.headers, + ...getCurrentHub().traceHeaders(), + }; + } else { + options.headers = getCurrentHub().traceHeaders(); + } + } + } + // tslint:disable-next-line: no-unsafe-any + return originalFetch.apply(global, args); + }; + }); + // tslint:enable: only-arrow-functions + } +} diff --git a/packages/minimal/.npmignore b/packages/minimal/.npmignore index 3f69e7aaba85..14e80551ae7c 100644 --- a/packages/minimal/.npmignore +++ b/packages/minimal/.npmignore @@ -1,3 +1,4 @@ * !/dist/**/* !/esm/**/* +*.tsbuildinfo diff --git a/packages/minimal/package.json b/packages/minimal/package.json index 09dd2c7d556b..64143bcbca34 100644 --- a/packages/minimal/package.json +++ b/packages/minimal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/minimal", - "version": "5.1.2", + "version": "5.2.0-beta.0", "description": "Sentry minimal library that can be used in other packages", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/minimal", @@ -16,18 +16,18 @@ "access": "public" }, "dependencies": { - "@sentry/hub": "5.1.2", - "@sentry/types": "5.1.0", + "@sentry/hub": "5.2.0-beta.0", + "@sentry/types": "5.2.0-beta.0", "tslib": "^1.9.3" }, "devDependencies": { - "jest": "^24.5.0", + "jest": "^24.7.1", "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "tslint": "^5.14.0", - "typescript": "^3.3.3333" + "tslint": "^5.16.0", + "typescript": "^3.4.5" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/node/.npmignore b/packages/node/.npmignore index 3f69e7aaba85..14e80551ae7c 100644 --- a/packages/node/.npmignore +++ b/packages/node/.npmignore @@ -1,3 +1,4 @@ * !/dist/**/* !/esm/**/* +*.tsbuildinfo diff --git a/packages/node/package.json b/packages/node/package.json index dc7d1a53c521..8939b7046113 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "5.1.2", + "version": "5.2.0-beta.0", "description": "Offical Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -16,10 +16,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "5.1.2", - "@sentry/hub": "5.1.2", - "@sentry/types": "5.1.0", - "@sentry/utils": "5.1.2", + "@sentry/core": "5.2.0-beta.0", + "@sentry/hub": "5.2.0-beta.0", + "@sentry/types": "5.2.0-beta.0", + "@sentry/utils": "5.2.0-beta.0", "cookie": "0.3.1", "https-proxy-agent": "2.2.1", "lru_map": "0.3.3", @@ -28,15 +28,15 @@ "devDependencies": { "@types/cookie": "0.3.2", "@types/lru-cache": "^5.1.0", - "@types/node": "^11.11.3", + "@types/node": "^11.13.7", "express": "^4.16.4", - "jest": "^24.5.0", + "jest": "^24.7.1", "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "tslint": "^5.14.0", - "typescript": "^3.3.3333" + "tslint": "^5.16.0", + "typescript": "^3.4.5" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/node/src/handlers.ts b/packages/node/src/handlers.ts index 48893b97b8fd..9c0295f2faab 100644 --- a/packages/node/src/handlers.ts +++ b/packages/node/src/handlers.ts @@ -1,4 +1,5 @@ -import { captureException, getCurrentHub } from '@sentry/core'; +import { captureException, getCurrentHub, withScope } from '@sentry/core'; +import { Span } from '@sentry/hub'; import { Event } from '@sentry/types'; import { forget, isString, logger, normalize } from '@sentry/utils'; import * as cookie from 'cookie'; @@ -292,9 +293,15 @@ export function errorHandler(): ( next(error); return; } - const eventId = captureException(error); - (_res as any).sentry = eventId; - next(error); + withScope(scope => { + if (_req.headers && isString(_req.headers['sentry-trace'])) { + const span = Span.fromTraceparent(_req.headers['sentry-trace'] as string); + scope.setSpan(span); + } + const eventId = captureException(error); + (_res as any).sentry = eventId; + next(error); + }); }; } diff --git a/packages/node/src/integrations/linkederrors.ts b/packages/node/src/integrations/linkederrors.ts index 775be8c11a20..adcd3b3753a1 100644 --- a/packages/node/src/integrations/linkederrors.ts +++ b/packages/node/src/integrations/linkederrors.ts @@ -43,7 +43,7 @@ export class LinkedErrors implements Integration { addGlobalEventProcessor((event: Event, hint?: EventHint) => { const self = getCurrentHub().getIntegration(LinkedErrors); if (self) { - return (self.handler(event, hint) as unknown) as Promise; + return (self.handler(event, hint) as unknown) as Promise; } return event; }); @@ -52,12 +52,12 @@ export class LinkedErrors implements Integration { /** * @inheritDoc */ - public handler(event: Event, hint?: EventHint): SyncPromise { + public handler(event: Event, hint?: EventHint): SyncPromise { if (!event.exception || !event.exception.values || !hint || !(hint.originalException instanceof Error)) { return SyncPromise.resolve(event); } - return new SyncPromise(resolve => { + return new SyncPromise(resolve => { this.walkErrorTree(hint.originalException as ExtendedError, this._key).then((linkedErrors: Exception[]) => { if (event && event.exception && event.exception.values) { event.exception.values = [...linkedErrors, ...event.exception.values]; diff --git a/packages/node/src/parsers.ts b/packages/node/src/parsers.ts index dc8150187948..eb13f44fad4f 100644 --- a/packages/node/src/parsers.ts +++ b/packages/node/src/parsers.ts @@ -102,7 +102,7 @@ function readSourceFiles(filenames: string[]): SyncPromise<{ [key: string]: stri continue; } - readFile(filename, (err: Error, data: Buffer) => { + readFile(filename, (err: Error | null, data: Buffer) => { const content = err ? null : data.toString(); sourceFiles[filename] = content; diff --git a/packages/node/src/transports/base.ts b/packages/node/src/transports/base.ts index 059b3e66a9b4..d0599eab6d78 100644 --- a/packages/node/src/transports/base.ts +++ b/packages/node/src/transports/base.ts @@ -108,14 +108,14 @@ export abstract class BaseTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: Event): Promise { + public sendEvent(_: Event): Promise { throw new SentryError('Transport Class has to implement `sendEvent` method.'); } /** * @inheritDoc */ - public async close(timeout?: number): Promise { + public close(timeout?: number): Promise { return this._buffer.drain(timeout); } } diff --git a/packages/node/src/transports/http.ts b/packages/node/src/transports/http.ts index 46e879422f1e..7761f53e4a35 100644 --- a/packages/node/src/transports/http.ts +++ b/packages/node/src/transports/http.ts @@ -21,7 +21,7 @@ export class HTTPTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(event: Event): Promise { + public sendEvent(event: Event): Promise { if (!this.module) { throw new SentryError('No module available in HTTPTransport'); } diff --git a/packages/node/src/transports/https.ts b/packages/node/src/transports/https.ts index 8713caff72e6..dea845c96431 100644 --- a/packages/node/src/transports/https.ts +++ b/packages/node/src/transports/https.ts @@ -21,7 +21,7 @@ export class HTTPSTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(event: Event): Promise { + public sendEvent(event: Event): Promise { if (!this.module) { throw new SentryError('No module available in HTTPSTransport'); } diff --git a/packages/node/src/version.ts b/packages/node/src/version.ts index 224ec0b3676b..c3551bfe522a 100644 --- a/packages/node/src/version.ts +++ b/packages/node/src/version.ts @@ -1,2 +1,2 @@ export const SDK_NAME = 'sentry.javascript.node'; -export const SDK_VERSION = '5.1.2'; +export const SDK_VERSION = '5.2.0-beta.0'; diff --git a/packages/node/test/helper/settimeouttransport.ts b/packages/node/test/helper/settimeouttransport.ts deleted file mode 100644 index 2cfa2bd88465..000000000000 --- a/packages/node/test/helper/settimeouttransport.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Response, Status } from '../../src'; -import { BaseTransport } from '../../src/transports'; - -export class SetTimeoutTransport extends BaseTransport { - public async sendEvent(_: string): Promise { - return this.buffer.add( - new Promise(resolve => { - setTimeout(() => { - resolve({ - status: Status.fromHttpCode(200), - }); - }, 1); - }), - ); - } -} diff --git a/packages/node/test/index.test.ts b/packages/node/test/index.test.ts index 548951a9099e..6627d3ecc767 100644 --- a/packages/node/test/index.test.ts +++ b/packages/node/test/index.test.ts @@ -14,8 +14,6 @@ import { } from '../src'; import { NodeBackend } from '../src/backend'; -import { SetTimeoutTransport } from './helper/settimeouttransport'; - const dsn = 'https://53039209a22b4ec1bcc296a3c9fdecd6@sentry.io/4291'; declare var global: any; diff --git a/packages/node/test/integrations/linkederrors.test.ts b/packages/node/test/integrations/linkederrors.test.ts index d2e0a978941b..ec1bd564a4c3 100644 --- a/packages/node/test/integrations/linkederrors.test.ts +++ b/packages/node/test/integrations/linkederrors.test.ts @@ -4,7 +4,7 @@ import { Event } from '../../src'; import { NodeBackend } from '../../src/backend'; import { LinkedErrors } from '../../src/integrations/linkederrors'; -let linkedErrors: LinkedErrors; +let linkedErrors: any; describe('LinkedErrors', () => { beforeEach(() => { @@ -18,7 +18,7 @@ describe('LinkedErrors', () => { const event = { message: 'foo', }; - return linkedErrors.handler(event).then(result => { + return linkedErrors.handler(event).then((result: any) => { expect(spy.mock.calls.length).toEqual(0); expect(result).toEqual(event); }); @@ -77,17 +77,17 @@ describe('LinkedErrors', () => { .handler(event, { originalException: one, }) - .then(result => { - expect(result!.exception!.values!.length).toEqual(3); - expect(result!.exception!.values![0].type).toEqual('SyntaxError'); - expect(result!.exception!.values![0].value).toEqual('three'); - expect(result!.exception!.values![0].stacktrace).toHaveProperty('frames'); - expect(result!.exception!.values![1].type).toEqual('TypeError'); - expect(result!.exception!.values![1].value).toEqual('two'); - expect(result!.exception!.values![1].stacktrace).toHaveProperty('frames'); - expect(result!.exception!.values![2].type).toEqual('Error'); - expect(result!.exception!.values![2].value).toEqual('one'); - expect(result!.exception!.values![2].stacktrace).toHaveProperty('frames'); + .then((result: any) => { + expect(result.exception.values.length).toEqual(3); + expect(result.exception.values[0].type).toEqual('SyntaxError'); + expect(result.exception.values[0].value).toEqual('three'); + expect(result.exception.values[0].stacktrace).toHaveProperty('frames'); + expect(result.exception.values[1].type).toEqual('TypeError'); + expect(result.exception.values[1].value).toEqual('two'); + expect(result.exception.values[1].stacktrace).toHaveProperty('frames'); + expect(result.exception.values[2].type).toEqual('Error'); + expect(result.exception.values[2].value).toEqual('one'); + expect(result.exception.values[2].stacktrace).toHaveProperty('frames'); }), ); }); @@ -110,17 +110,17 @@ describe('LinkedErrors', () => { .handler(event, { originalException: one, }) - .then(result => { - expect(result!.exception!.values!.length).toEqual(3); - expect(result!.exception!.values![0].type).toEqual('SyntaxError'); - expect(result!.exception!.values![0].value).toEqual('three'); - expect(result!.exception!.values![0].stacktrace).toHaveProperty('frames'); - expect(result!.exception!.values![1].type).toEqual('TypeError'); - expect(result!.exception!.values![1].value).toEqual('two'); - expect(result!.exception!.values![1].stacktrace).toHaveProperty('frames'); - expect(result!.exception!.values![2].type).toEqual('Error'); - expect(result!.exception!.values![2].value).toEqual('one'); - expect(result!.exception!.values![2].stacktrace).toHaveProperty('frames'); + .then((result: any) => { + expect(result.exception.values.length).toEqual(3); + expect(result.exception.values[0].type).toEqual('SyntaxError'); + expect(result.exception.values[0].value).toEqual('three'); + expect(result.exception.values[0].stacktrace).toHaveProperty('frames'); + expect(result.exception.values[1].type).toEqual('TypeError'); + expect(result.exception.values[1].value).toEqual('two'); + expect(result.exception.values[1].stacktrace).toHaveProperty('frames'); + expect(result.exception.values[2].type).toEqual('Error'); + expect(result.exception.values[2].value).toEqual('one'); + expect(result.exception.values[2].stacktrace).toHaveProperty('frames'); }), ); }); @@ -143,14 +143,14 @@ describe('LinkedErrors', () => { .handler(event, { originalException: one, }) - .then(result => { - expect(result!.exception!.values!.length).toEqual(2); - expect(result!.exception!.values![0].type).toEqual('TypeError'); - expect(result!.exception!.values![0].value).toEqual('two'); - expect(result!.exception!.values![0].stacktrace).toHaveProperty('frames'); - expect(result!.exception!.values![1].type).toEqual('Error'); - expect(result!.exception!.values![1].value).toEqual('one'); - expect(result!.exception!.values![1].stacktrace).toHaveProperty('frames'); + .then((result: any) => { + expect(result.exception.values.length).toEqual(2); + expect(result.exception.values[0].type).toEqual('TypeError'); + expect(result.exception.values[0].value).toEqual('two'); + expect(result.exception.values[0].stacktrace).toHaveProperty('frames'); + expect(result.exception.values[1].type).toEqual('Error'); + expect(result.exception.values[1].value).toEqual('one'); + expect(result.exception.values[1].stacktrace).toHaveProperty('frames'); }), ); }); diff --git a/packages/opentracing/.npmignore b/packages/opentracing/.npmignore deleted file mode 100644 index 3f69e7aaba85..000000000000 --- a/packages/opentracing/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!/dist/**/* -!/esm/**/* diff --git a/packages/opentracing/LICENSE b/packages/opentracing/LICENSE deleted file mode 100644 index 8b42db873c95..000000000000 --- a/packages/opentracing/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2019, Sentry -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/opentracing/README.md b/packages/opentracing/README.md deleted file mode 100644 index 0b524ee4159b..000000000000 --- a/packages/opentracing/README.md +++ /dev/null @@ -1,39 +0,0 @@ -

- - - -
-

- -# Sentry JavaScript OpenTracing API - -[![npm version](https://img.shields.io/npm/v/@sentry/opentracing.svg)](https://www.npmjs.com/package/@sentry/opentracing) -[![npm dm](https://img.shields.io/npm/dm/@sentry/opentracing.svg)](https://www.npmjs.com/package/@sentry/opentracing) -[![npm dt](https://img.shields.io/npm/dt/@sentry/opentracing.svg)](https://www.npmjs.com/package/@sentry/opentracing) -[![typedoc](https://img.shields.io/badge/docs-typedoc-blue.svg)](http://getsentry.github.io/sentry-javascript/) - -## Links - -- [Official SDK Docs](https://docs.sentry.io/quickstart/) -- [TypeDoc](http://getsentry.github.io/sentry-javascript/) - -## General - -This package implements the OpenTracing API and provides an integration that can be used by our other SDKs. - -```js -import * as Sentry from '@sentry/browser'; -import * as OpenTracing from '@sentry/opentracing'; - -const ot = new OpenTracing.Integration(ENV.traceId); - -Sentry.init({ - debug: true, - dsn: ENV.sentry.dsn, - integrations: [ot], - beforeSend(event) { - console.log(event); - return event; - }, -}); -``` diff --git a/packages/opentracing/package.json b/packages/opentracing/package.json deleted file mode 100644 index a438ce095678..000000000000 --- a/packages/opentracing/package.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "name": "@sentry/opentracing", - "version": "5.1.2", - "description": "Sentry OpenTracing SDK", - "repository": "git://github.com/getsentry/sentry-javascript.git", - "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/minimal", - "author": "Sentry", - "license": "BSD-3-Clause", - "engines": { - "node": ">=6" - }, - "main": "dist/index.js", - "module": "esm/index.js", - "types": "dist/index.d.ts", - "publishConfig": { - "access": "public" - }, - "dependencies": { - "@sentry/hub": "5.1.2", - "@sentry/types": "5.1.0", - "@sentry/utils": "5.1.2", - "opentracing": "0.14.3" - }, - "devDependencies": { - "jest": "^24.5.0", - "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", - "prettier-check": "^2.0.0", - "rimraf": "^2.6.3", - "tslint": "^5.14.0", - "typescript": "^3.3.3333" - }, - "scripts": { - "build": "run-p build:es5 build:esm", - "build:es5": "tsc -p tsconfig.build.json", - "build:esm": "tsc -p tsconfig.esm.json", - "build:watch": "run-p build:watch:es5 build:watch:esm", - "build:watch:es5": "tsc -p tsconfig.build.json -w --preserveWatchOutput", - "build:watch:esm": "tsc -p tsconfig.esm.json -w --preserveWatchOutput", - "clean": "rimraf dist coverage", - "link:yarn": "yarn link", - "lint": "run-s lint:prettier lint:tslint", - "lint:prettier": "prettier-check \"{src,test}/**/*.ts\"", - "lint:tslint": "tslint -t stylish -p .", - "lint:tslint:json": "tslint --format json -p . | tee lint-results.json", - "fix": "run-s fix:tslint fix:prettier", - "fix:prettier": "prettier --write \"{src,test}/**/*.ts\"", - "fix:tslint": "tslint --fix -t stylish -p .", - "test": "jest --passWithNoTests", - "test:watch": "jest --watch --passWithNoTests" - }, - "jest": { - "collectCoverage": true, - "transform": { - "^.+\\.ts$": "ts-jest" - }, - "moduleFileExtensions": [ - "js", - "ts" - ], - "testEnvironment": "node", - "testMatch": [ - "**/*.test.ts" - ], - "globals": { - "ts-jest": { - "tsConfig": "./tsconfig.json", - "diagnostics": false - } - } - }, - "sideEffects": false -} diff --git a/packages/opentracing/src/index.ts b/packages/opentracing/src/index.ts deleted file mode 100644 index e1692afcd9dc..000000000000 --- a/packages/opentracing/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { Span } from './span'; -export { Tracer } from './tracer'; -export { OpenTracingIntegration as Integration } from './opentracingintegration'; diff --git a/packages/opentracing/src/opentracingintegration.ts b/packages/opentracing/src/opentracingintegration.ts deleted file mode 100644 index 90dab2a3aaea..000000000000 --- a/packages/opentracing/src/opentracingintegration.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { Integration } from '@sentry/types'; - -import { Tracer } from './tracer'; - -/** - * Session Tracking Integration - */ -export class OpenTracingIntegration implements Integration { - /** - * @inheritDoc - */ - public name: string = OpenTracingIntegration.id; - - /** - * @inheritDoc - */ - public static id: string = 'OpenTracingIntegration'; - - /** - * Constructor for OpenTracingIntegration - * - * @param traceId Optional TraceId that should be set into the integration. - * @param _tracer Optional custom tracer that should be used. - */ - public constructor(traceId?: string, private readonly _tracer: Tracer = new Tracer()) { - _tracer.setTraceId(traceId); - } - - /** - * @inheritDoc - */ - public setupOnce(): void { - const span = this._tracer.startSpan('sdk.init'); - span.finish(); - setTimeout(() => { - this._tracer.flush(); - }); - } - - /** - * Returns the Tracer which can be used as the parent. - */ - public getTracer(): Tracer { - return this._tracer; - } -} diff --git a/packages/opentracing/src/span.ts b/packages/opentracing/src/span.ts deleted file mode 100644 index 5474357d9588..000000000000 --- a/packages/opentracing/src/span.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { Span as SpanInterface } from '@sentry/types'; -import * as opentracing from 'opentracing'; - -import { SpanContext } from './spancontext'; -import { Tracer } from './tracer'; - -/** - * Interface for log entries. - */ -interface Log { - data: { [key: string]: any }; - timestamp?: number; -} - -/** - * Span represents a logical unit of work as part of a broader Trace. Examples - * of span might include remote procedure calls or a in-process function calls - * to sub-components. A Trace has a single, top-level "root" Span that in turn - * may have zero or more child Spans, which in turn may have children. - */ -export class Span extends opentracing.Span implements SpanInterface { - private _flushed: boolean = false; - private _finishTime: number = 0; - - private readonly _logs: Log[] = []; - - public tags: { - [key: string]: string; - } = {}; - - public baggage: { - [key: string]: string; - } = {}; - - public constructor( - private readonly _usedTracer: Tracer, - private _operation: string, - private readonly _spanContext: SpanContext, - private readonly _references?: opentracing.Reference[], - private readonly _startTime: number = Date.now(), - ) { - super(); - } - - /** - * Returns the context. - */ - protected _context(): SpanContext { - return this._spanContext; - } - - /** - * Returns the tracer passed to the span. - */ - protected _tracer(): Tracer { - return this._usedTracer; - } - - /** - * Sets the operation name. - */ - protected _setOperationName(name: string): void { - this._operation = name; - } - - /** - * Implementation for {@link setBaggageItem} - */ - protected _setBaggageItem(key: string, value: string): void { - this.baggage[key] = value; - } - - /** - * Implementation for {@link getBaggageItem} - */ - protected _getBaggageItem(key: string): string | undefined { - return this.baggage[key]; - } - - /** - * Adds tags { [key: string]: string } to the span - */ - protected _addTags(set: { [key: string]: string }): void { - const keys = Object.keys(set); - for (const key of keys) { - this.tags[key] = set[key]; - } - } - - /** - * Store log entry. - */ - protected _log(data: { [key: string]: any }, timestamp: number = Date.now() / 1000): void { - this._logs.push({ - data, - timestamp, - }); - } - - /** - * Implementation for {@link finish} - */ - protected _finish(finishTime: number = Date.now()): void { - this._finishTime = finishTime; - } - - /** - * Returns the operationName. - */ - public getOperationName(): string { - return this._operation; - } - - /** - * Returns the duration of the span. - */ - public duration(): number { - return this._finishTime - this._startTime; - } - - /** - * Returns wether the span has been finished. - */ - public isFinished(): boolean { - return this._finishTime > 0; - } - - /** - * Marks the span as flushed. - */ - public flush(): this { - this._flushed = true; - return this; - } - - /** - * Returns wether the span has already be flushed. - */ - public isFlushed(): boolean { - return this._flushed; - } - - /** - * @inheritDoc - */ - public toJSON(): object { - return { - finish_time: (this._finishTime && this._finishTime / 1000) || undefined, - logs: this._logs.length === 0 ? undefined : this._logs, - operation: this._operation, - references: this._references || undefined, - span_id: this._spanContext.spanId, - start_time: this._startTime / 1000, - tags: Object.keys(this.tags).length === 0 ? undefined : this.tags, - trace_id: this._spanContext.traceId, - }; - } -} diff --git a/packages/opentracing/src/spancontext.ts b/packages/opentracing/src/spancontext.ts deleted file mode 100644 index e22cf9e3995d..000000000000 --- a/packages/opentracing/src/spancontext.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { uuid4 } from '@sentry/utils'; - -/** - * SpanContext represents Span state that must propagate to descendant Spans - * and across process boundaries. - * - * SpanContext is logically divided into two pieces: the user-level "Baggage" - * (see setBaggageItem and getBaggageItem) that propagates across Span - * boundaries and any Tracer-implementation-specific fields that are needed to - * identify or otherwise contextualize the associated Span instance (e.g., a - * tuple). - */ -export class SpanContext { - public constructor( - public readonly traceId?: string, - public readonly spanId: string = uuid4().substring(16), // private readonly parentId: string, - ) {} - - /** - * Returns debug version of the span. - */ - public toString(): string { - return `${(this.traceId && `trace-id:${this.traceId};`) || ''}span-id:${this.spanId}`; - } -} diff --git a/packages/opentracing/src/tracer.ts b/packages/opentracing/src/tracer.ts deleted file mode 100644 index 9b161741db74..000000000000 --- a/packages/opentracing/src/tracer.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { getCurrentHub } from '@sentry/hub'; -import * as opentracing from 'opentracing'; - -import { Span } from './span'; -import { SpanContext } from './spancontext'; - -/** - * Tracer is the entry-point between the instrumentation API and the tracing - * implementation. - * - * The default object acts as a no-op implementation. - * - * Note to implementators: derived classes can choose to directly implement the - * methods in the "OpenTracing API methods" section, or optionally the subset of - * underscore-prefixed methods to pick up the argument checking and handling - * automatically from the base class. - */ -export class Tracer extends opentracing.Tracer { - private _traceId?: string = undefined; - private readonly _spans: Span[] = []; - - /** - * Called by public method startSpan - * @param name Name of the operation - * @param fields Options for the span {@link opentracing.SpanOptions} - */ - protected _startSpan(name: string, fields: opentracing.SpanOptions): Span { - const span = new Span(this, name, new SpanContext(this._traceId), fields.references, fields.startTime); - this._spans.push(span); - return span; - } - - /** - * @hidden - */ - protected _inject(context: SpanContext, format: string, carrier: any): void { - // tslint:disable: no-unsafe-any - switch (format) { - case opentracing.FORMAT_TEXT_MAP: - case opentracing.FORMAT_HTTP_HEADERS: - const headerName = 'traceparent'; - const headerValue: string = `00-${context.traceId}-${context.spanId}-00`; - - if (typeof carrier.setRequestHeader === 'function') { - carrier.setRequestHeader(headerName, headerValue); - } else if (carrier.headers && typeof carrier.headers.append === 'function') { - carrier.headers.append(headerName, headerValue); - } else { - carrier[headerName] = headerValue; - } - - break; - case opentracing.FORMAT_BINARY: - break; - default: - // We do nothing - } - // tslint:enable: no-unsafe-any - } - - /** - * @inheritDoc - */ - public startSpan(name: string, options: opentracing.SpanOptions = {}): Span { - return (super.startSpan(name, options) as unknown) as Span; - } - - /** - * @inheritDoc - */ - public inject(spanContext: SpanContext | Span, format: string, carrier: any): void { - const context = spanContext instanceof Span ? spanContext.context() : spanContext; - this._inject(context as SpanContext, format, carrier); - } - - /** - * Sets the current traceId, all new created spans will receive the traceId. - * - * @param traceId A string representing the traceId - */ - public setTraceId(traceId?: string): void { - this._traceId = traceId; - } - - /** - * Flushes all spans and sends an event - */ - public flush(): void { - const finishedSpans = this._spans.filter((span: Span) => span.isFinished() && !span.isFlushed()); - if (finishedSpans.length) { - getCurrentHub().captureEvent({ - spans: finishedSpans.map((span: Span) => span.flush()), - type: 'none', // This ensures a Sentry event will not be created on the server - }); - } - } -} diff --git a/packages/opentracing/tsconfig.build.json b/packages/opentracing/tsconfig.build.json deleted file mode 100644 index c0816d87b819..000000000000 --- a/packages/opentracing/tsconfig.build.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "baseUrl": ".", - "outDir": "dist", - "rootDir": "src" - }, - "include": ["src/**/*.ts"] -} diff --git a/packages/opentracing/tsconfig.esm.json b/packages/opentracing/tsconfig.esm.json deleted file mode 100644 index 33a3842217d4..000000000000 --- a/packages/opentracing/tsconfig.esm.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.esm.json", - "compilerOptions": { - "baseUrl": ".", - "outDir": "esm" - }, - "include": ["src/**/*"] -} diff --git a/packages/opentracing/tsconfig.json b/packages/opentracing/tsconfig.json deleted file mode 100644 index 7f080cf686bc..000000000000 --- a/packages/opentracing/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.build.json", - "include": ["src/**/*.ts"], - "exclude": ["dist"], - "compilerOptions": { - "rootDir": ".", - "types": ["node", "jest"] - } -} diff --git a/packages/opentracing/tslint.json b/packages/opentracing/tslint.json deleted file mode 100644 index 3016a27a85cc..000000000000 --- a/packages/opentracing/tslint.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "@sentry/typescript/tslint" -} diff --git a/packages/types/.npmignore b/packages/types/.npmignore index 3f69e7aaba85..14e80551ae7c 100644 --- a/packages/types/.npmignore +++ b/packages/types/.npmignore @@ -1,3 +1,4 @@ * !/dist/**/* !/esm/**/* +*.tsbuildinfo diff --git a/packages/types/package.json b/packages/types/package.json index a4020a9bc864..9f9bb1127b3c 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "5.1.0", + "version": "5.2.0-beta.0", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", @@ -17,10 +17,10 @@ }, "devDependencies": { "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", - "tslint": "^5.14.0", - "typescript": "^3.3.3333" + "tslint": "^5.16.0", + "typescript": "^3.4.5" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/types/src/event.ts b/packages/types/src/event.ts index 09deae746e60..aa997f65f0f2 100644 --- a/packages/types/src/event.ts +++ b/packages/types/src/event.ts @@ -3,7 +3,6 @@ import { Exception } from './exception'; import { Request } from './request'; import { SdkInfo } from './sdkinfo'; import { Severity } from './severity'; -import { Span } from './span'; import { Stacktrace } from './stacktrace'; import { User } from './user'; @@ -33,7 +32,6 @@ export interface Event { tags?: { [key: string]: string }; extra?: { [key: string]: any }; user?: User; - spans?: Span[]; type?: EventType; } diff --git a/packages/types/src/hub.ts b/packages/types/src/hub.ts index 49e764e5c289..b1dc37f8c30a 100644 --- a/packages/types/src/hub.ts +++ b/packages/types/src/hub.ts @@ -125,4 +125,7 @@ export interface Hub { /** Returns the integration if installed on the current client. */ getIntegration(integration: IntegrationClass): T | null; + + /** Returns all trace headers that are currently on the top scope. */ + traceHeaders(): { [key: string]: string }; } diff --git a/packages/types/src/scope.ts b/packages/types/src/scope.ts index 8f0c0ea01eb4..9f2c6fb6714c 100644 --- a/packages/types/src/scope.ts +++ b/packages/types/src/scope.ts @@ -1,6 +1,7 @@ import { Breadcrumb } from './breadcrumb'; import { EventProcessor } from './eventprocessor'; import { Severity } from './severity'; +import { Span } from './span'; import { User } from './user'; /** @@ -56,6 +57,12 @@ export interface Scope { */ setLevel(level: Severity): this; + /** + * Sets the transaction on the scope for future events. + * @param transaction string This will be converted in a tag in Sentry + */ + setTransaction(transaction?: string): this; + /** * Sets context data with the given name. * @param name of the context @@ -63,6 +70,17 @@ export interface Scope { */ setContext(name: string, context: { [key: string]: any } | null): this; + /** + * Sets the Span on the scope. + * @param span Span + */ + setSpan(span?: Span): this; + + /** + * Starts a new Span. + */ + startSpan(): Span; + /** Clears the current scope and resets its properties. */ clear(): this; diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 727c6f52a800..5d86766f798f 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -1,5 +1,7 @@ -/** JSDoc */ +/** Span holding trace_id, span_id */ export interface Span { - /** JSDoc */ + /** Return a traceparent compatible header string */ + toTraceparent(): string; + /** Convert the object to JSON */ toJSON(): object; } diff --git a/packages/typescript/.npmignore b/packages/typescript/.npmignore index d59f27ed8132..687bd6f5dde6 100644 --- a/packages/typescript/.npmignore +++ b/packages/typescript/.npmignore @@ -1,3 +1,4 @@ * !/tsconfig.json !/tslint.json +*.tsbuildinfo diff --git a/packages/typescript/package.json b/packages/typescript/package.json index f9ba40a3c3da..b3781cf089a0 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/typescript", - "version": "5.1.0", + "version": "5.2.0-beta.0", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/raven-js.git", "homepage": "https://github.com/getsentry/raven-js/tree/master/packages/typescript", diff --git a/packages/typescript/tslint.json b/packages/typescript/tslint.json index 5ab7ab7b378f..b6e7db3053f1 100644 --- a/packages/typescript/tslint.json +++ b/packages/typescript/tslint.json @@ -17,6 +17,8 @@ "no-inferrable-types": false, "ban-ts-ignore": false, "increment-decrement": false, + "promise-function-async": false, + "ban-types": [true, ["async", "Use Promises instead, it add a lot to bundle size."]], // These are too strict in tslint:all "comment-format": [true, "check-space"], "completed-docs": [ diff --git a/packages/utils/package.json b/packages/utils/package.json index 44efded72909..f09953906224 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "5.1.2", + "version": "5.2.0-beta.0", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -16,18 +16,18 @@ "access": "public" }, "dependencies": { - "@sentry/types": "5.1.0", + "@sentry/types": "5.2.0-beta.0", "tslib": "^1.9.3" }, "devDependencies": { "chai": "^4.1.2", - "jest": "^24.5.0", + "jest": "^24.7.1", "npm-run-all": "^4.1.2", - "prettier": "^1.16.4", + "prettier": "^1.17.0", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "tslint": "^5.14.0", - "typescript": "^3.3.3333" + "tslint": "^5.16.0", + "typescript": "^3.4.5" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/utils/src/promisebuffer.ts b/packages/utils/src/promisebuffer.ts index 4fcc32ff6f2c..942d851c36d2 100644 --- a/packages/utils/src/promisebuffer.ts +++ b/packages/utils/src/promisebuffer.ts @@ -20,7 +20,7 @@ export class PromiseBuffer { * @param task Can be any Promise * @returns The original promise. */ - public async add(task: Promise): Promise { + public add(task: Promise): Promise { if (!this.isReady()) { return Promise.reject(new SentryError('Not adding Promise due to buffer limit reached.')); } @@ -28,8 +28,8 @@ export class PromiseBuffer { this._buffer.push(task); } task - .then(async () => this.remove(task)) - .catch(async () => + .then(() => this.remove(task)) + .catch(() => this.remove(task).catch(() => { // We have to add this catch here otherwise we have an unhandledPromiseRejection // because it's a new Promise chain. @@ -44,7 +44,7 @@ export class PromiseBuffer { * @param task Can be any Promise * @returns Removed promise. */ - public async remove(task: Promise): Promise { + public remove(task: Promise): Promise { const removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0]; return removedTask; } @@ -62,7 +62,7 @@ export class PromiseBuffer { * * @param timeout Number in ms to wait until it resolves with false. */ - public async drain(timeout?: number): Promise { + public drain(timeout?: number): Promise { return new Promise(resolve => { const capturedSetTimeout = setTimeout(() => { if (timeout && timeout > 0) { diff --git a/packages/utils/src/string.ts b/packages/utils/src/string.ts index 68ece1afb80b..3a0d489089c3 100644 --- a/packages/utils/src/string.ts +++ b/packages/utils/src/string.ts @@ -1,3 +1,5 @@ +import { isRegExp } from './is'; + /** * Truncates given string to the maximum characters count * @@ -103,3 +105,18 @@ export function keysToEventMessage(keys: string[], maxLength: number = 40): stri return ''; } + +/** + * Checks if the value matches a regex or includes the string + * @param value The string value to be checked against + * @param pattern Either a regex or a string that must be contained in value + */ +export function isMatchingPattern(value: string, pattern: RegExp | string): boolean { + if (isRegExp(pattern)) { + return (pattern as RegExp).test(value); + } + if (typeof pattern === 'string') { + return value.includes(pattern); + } + return false; +} diff --git a/packages/utils/src/syncpromise.ts b/packages/utils/src/syncpromise.ts index 302dbd4ec2bf..282cceeb363f 100644 --- a/packages/utils/src/syncpromise.ts +++ b/packages/utils/src/syncpromise.ts @@ -1,12 +1,12 @@ import { isThenable } from './is'; -/** JSDoc */ +/** SyncPromise internal states */ enum States { - /** JSDoc */ + /** Pending */ PENDING = 'PENDING', - /** JSDoc */ + /** Resolved / OK */ RESOLVED = 'RESOLVED', - /** JSDoc */ + /** Rejected / Error */ REJECTED = 'REJECTED', } @@ -98,8 +98,8 @@ export class SyncPromise implements PromiseLike { /** JSDoc */ public then( - onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, - onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null, + onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined, + onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined, ): SyncPromise { // public then(onSuccess?: HandlerOnSuccess, onFail?: HandlerOnFail): SyncPromise { return new SyncPromise((resolve, reject) => { diff --git a/yarn.lock b/yarn.lock index 1f13b7446fac..1a949cc6652a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -171,60 +171,63 @@ reflect-metadata "^0.1.12" tslib "^1.8.1" -"@google-cloud/common@^0.31.0": - version "0.31.0" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.31.0.tgz#51a82d681043e2718bd32708586d3131b019d7a8" - integrity sha512-mO7WFavzqmr24btNb2zimUh+M3fGnIKGbkR1VT6ZG3yDV+S7BiZPmPiFHKRJVrxwi5sA9U6X6fpNpHgj7j2a2w== - dependencies: - "@google-cloud/projectify" "^0.3.2" - "@google-cloud/promisify" "^0.3.0" - "@types/duplexify" "^3.5.0" - "@types/request" "^2.47.0" - arrify "^1.0.1" +"@google-cloud/common@^0.32.0": + version "0.32.1" + resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.32.1.tgz#6a32c340172cea3db6674d0e0e34e78740a0073f" + integrity sha512-bLdPzFvvBMtVkwsoBtygE9oUm3yrNmPa71gvOgucYI/GqvNP2tb6RYsDHPq98kvignhcgHGDI5wyNgxaCo8bKQ== + dependencies: + "@google-cloud/projectify" "^0.3.3" + "@google-cloud/promisify" "^0.4.0" + "@types/request" "^2.48.1" + arrify "^2.0.0" duplexify "^3.6.0" ent "^2.2.0" - extend "^3.0.1" - google-auth-library "^3.0.0" - pify "^4.0.0" + extend "^3.0.2" + google-auth-library "^3.1.1" + pify "^4.0.1" retry-request "^4.0.0" + teeny-request "^3.11.3" -"@google-cloud/paginator@^0.1.0": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-0.1.2.tgz#a7e6579e43f153055b4c65035a6729490a611a60" +"@google-cloud/paginator@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-0.2.0.tgz#eab2e6aa4b81df7418f6c51e2071f64dab2c2fa5" + integrity sha512-2ZSARojHDhkLvQ+CS32K+iUhBsWg3AEw+uxtqblA7xoCABDyhpj99FPp35xy6A+XlzMhOSrHHaxFE+t6ZTQq0w== dependencies: arrify "^1.0.1" extend "^3.0.1" - is "^3.2.1" split-array-stream "^2.0.0" stream-events "^1.0.4" -"@google-cloud/projectify@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-0.3.2.tgz#ed54c98cae646dc03a742eac288184a13d33a4c2" +"@google-cloud/projectify@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-0.3.3.tgz#bde9103d50b20a3ea3337df8c6783a766e70d41d" + integrity sha512-7522YHQ4IhaafgSunsFF15nG0TGVmxgXidy9cITMe+256RgqfcrfWphiMufW+Ou4kqagW/u3yxwbzVEW3dk2Uw== -"@google-cloud/promisify@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-0.3.1.tgz#f641e6d944a8e0a05ee0cb1091dfa60089becdba" +"@google-cloud/promisify@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-0.4.0.tgz#4fbfcf4d85bb6a2e4ccf05aa63d2b10d6c9aad9b" + integrity sha512-4yAHDC52TEMCNcMzVC8WlqnKKKq+Ssi2lXoUg9zWWkZ6U6tq9ZBRYLHHCRdfU+EU9YJsVmivwGcKYCjRGjnf4Q== -"@google-cloud/storage@^2.3.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-2.4.2.tgz#24c3ea68e3368ec42193532a7b6e22e16bc3ea49" - integrity sha512-G4rlt5h2oypPYU2ZtmF3N0FpE47aRvsxp8NmZEdlScd5LgjDAu5Ha01hMOA/ZHBVsUlOGFfa+TxU5Ei/56+0Gg== +"@google-cloud/storage@^2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-2.5.0.tgz#9dd3566d8155cf5ba0c212208f69f9ecd47fbd7e" + integrity sha512-q1mwB6RUebIahbA3eriRs8DbG2Ij81Ynb9k8hMqTPkmbd8/S6Z0d6hVvfPmnyvX9Ej13IcmEYIbymuq/RBLghA== dependencies: - "@google-cloud/common" "^0.31.0" - "@google-cloud/paginator" "^0.1.0" - "@google-cloud/promisify" "^0.3.0" + "@google-cloud/common" "^0.32.0" + "@google-cloud/paginator" "^0.2.0" + "@google-cloud/promisify" "^0.4.0" arrify "^1.0.0" async "^2.0.1" compressible "^2.0.12" concat-stream "^2.0.0" + date-and-time "^0.6.3" duplexify "^3.5.0" extend "^3.0.0" - gcs-resumable-upload "^0.14.1" + gcs-resumable-upload "^1.0.0" hash-stream-validation "^0.2.1" mime "^2.2.0" mime-types "^2.0.8" - once "^1.3.1" + onetime "^5.1.0" pumpify "^1.5.1" snakeize "^0.1.0" stream-events "^1.0.1" @@ -232,42 +235,41 @@ through2 "^3.0.0" xdg-basedir "^3.0.0" -"@jest/console@^24.3.0": - version "24.3.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.3.0.tgz#7bd920d250988ba0bf1352c4493a48e1cb97671e" - integrity sha512-NaCty/OOei6rSDcbPdMiCbYCI0KGFGPgGO6B09lwWt5QTxnkuhKYET9El5u5z1GAcSxkQmSMtM63e24YabCWqA== +"@jest/console@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" + integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== dependencies: "@jest/source-map" "^24.3.0" - "@types/node" "*" chalk "^2.0.1" slash "^2.0.0" -"@jest/core@^24.5.0": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.5.0.tgz#2cefc6a69e9ebcae1da8f7c75f8a257152ba1ec0" - integrity sha512-RDZArRzAs51YS7dXG1pbXbWGxK53rvUu8mCDYsgqqqQ6uSOaTjcVyBl2Jce0exT2rSLk38ca7az7t2f3b0/oYQ== +"@jest/core@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.7.1.tgz#6707f50db238d0c5988860680e2e414df0032024" + integrity sha512-ivlZ8HX/FOASfHcb5DJpSPFps8ydfUYzLZfgFFqjkLijYysnIEOieg72YRhO4ZUB32xu40hsSMmaw+IGYeKONA== dependencies: - "@jest/console" "^24.3.0" - "@jest/reporters" "^24.5.0" - "@jest/test-result" "^24.5.0" - "@jest/transform" "^24.5.0" - "@jest/types" "^24.5.0" + "@jest/console" "^24.7.1" + "@jest/reporters" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" ansi-escapes "^3.0.0" chalk "^2.0.1" exit "^0.1.2" graceful-fs "^4.1.15" - jest-changed-files "^24.5.0" - jest-config "^24.5.0" - jest-haste-map "^24.5.0" - jest-message-util "^24.5.0" + jest-changed-files "^24.7.0" + jest-config "^24.7.1" + jest-haste-map "^24.7.1" + jest-message-util "^24.7.1" jest-regex-util "^24.3.0" - jest-resolve-dependencies "^24.5.0" - jest-runner "^24.5.0" - jest-runtime "^24.5.0" - jest-snapshot "^24.5.0" - jest-util "^24.5.0" - jest-validate "^24.5.0" - jest-watcher "^24.5.0" + jest-resolve-dependencies "^24.7.1" + jest-runner "^24.7.1" + jest-runtime "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" + jest-validate "^24.7.0" + jest-watcher "^24.7.1" micromatch "^3.1.10" p-each-series "^1.0.0" pirates "^4.0.1" @@ -275,36 +277,34 @@ rimraf "^2.5.4" strip-ansi "^5.0.0" -"@jest/environment@^24.5.0": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.5.0.tgz#a2557f7808767abea3f9e4cc43a172122a63aca8" - integrity sha512-tzUHR9SHjMXwM8QmfHb/EJNbF0fjbH4ieefJBvtwO8YErLTrecc1ROj0uo2VnIT6SlpEGZnvdCK6VgKYBo8LsA== - dependencies: - "@jest/fake-timers" "^24.5.0" - "@jest/transform" "^24.5.0" - "@jest/types" "^24.5.0" - "@types/node" "*" - jest-mock "^24.5.0" - -"@jest/fake-timers@^24.5.0": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.5.0.tgz#4a29678b91fd0876144a58f8d46e6c62de0266f0" - integrity sha512-i59KVt3QBz9d+4Qr4QxsKgsIg+NjfuCjSOWj3RQhjF5JNy+eVJDhANQ4WzulzNCHd72srMAykwtRn5NYDGVraw== - dependencies: - "@jest/types" "^24.5.0" - "@types/node" "*" - jest-message-util "^24.5.0" - jest-mock "^24.5.0" - -"@jest/reporters@^24.5.0": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.5.0.tgz#9363a210d0daa74696886d9cb294eb8b3ad9b4d9" - integrity sha512-vfpceiaKtGgnuC3ss5czWOihKOUSyjJA4M4udm6nH8xgqsuQYcyDCi4nMMcBKsHXWgz9/V5G7iisnZGfOh1w6Q== - dependencies: - "@jest/environment" "^24.5.0" - "@jest/test-result" "^24.5.0" - "@jest/transform" "^24.5.0" - "@jest/types" "^24.5.0" +"@jest/environment@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.7.1.tgz#9b9196bc737561f67ac07817d4c5ece772e33135" + integrity sha512-wmcTTYc4/KqA+U5h1zQd5FXXynfa7VGP2NfF+c6QeGJ7c+2nStgh65RQWNX62SC716dTtqheTRrZl0j+54oGHw== + dependencies: + "@jest/fake-timers" "^24.7.1" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" + jest-mock "^24.7.0" + +"@jest/fake-timers@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.7.1.tgz#56e5d09bdec09ee81050eaff2794b26c71d19db2" + integrity sha512-4vSQJDKfR2jScOe12L9282uiwuwQv9Lk7mgrCSZHA9evB9efB/qx8i0KJxsAKtp8fgJYBJdYY7ZU6u3F4/pyjA== + dependencies: + "@jest/types" "^24.7.0" + jest-message-util "^24.7.1" + jest-mock "^24.7.0" + +"@jest/reporters@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.7.1.tgz#38ac0b096cd691bbbe3051ddc25988d42e37773a" + integrity sha512-bO+WYNwHLNhrjB9EbPL4kX/mCCG4ZhhfWmO3m4FSpbgr7N83MFejayz30kKjgqr7smLyeaRFCBQMbXpUgnhAJw== + dependencies: + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.2" @@ -312,11 +312,11 @@ istanbul-lib-coverage "^2.0.2" istanbul-lib-instrument "^3.0.1" istanbul-lib-source-maps "^3.0.1" - jest-haste-map "^24.5.0" - jest-resolve "^24.5.0" - jest-runtime "^24.5.0" - jest-util "^24.5.0" - jest-worker "^24.4.0" + jest-haste-map "^24.7.1" + jest-resolve "^24.7.1" + jest-runtime "^24.7.1" + jest-util "^24.7.1" + jest-worker "^24.6.0" node-notifier "^5.2.1" slash "^2.0.0" source-map "^0.6.0" @@ -331,52 +331,62 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/test-result@^24.5.0": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.5.0.tgz#ab66fb7741a04af3363443084e72ea84861a53f2" - integrity sha512-u66j2vBfa8Bli1+o3rCaVnVYa9O8CAFZeqiqLVhnarXtreSXG33YQ6vNYBogT7+nYiFNOohTU21BKiHlgmxD5A== +"@jest/test-result@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.7.1.tgz#19eacdb29a114300aed24db651e5d975f08b6bbe" + integrity sha512-3U7wITxstdEc2HMfBX7Yx3JZgiNBubwDqQMh+BXmZXHa3G13YWF3p6cK+5g0hGkN3iufg/vGPl3hLxQXD74Npg== dependencies: - "@jest/console" "^24.3.0" - "@jest/types" "^24.5.0" - "@types/istanbul-lib-coverage" "^1.1.0" + "@jest/console" "^24.7.1" + "@jest/types" "^24.7.0" + "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/transform@^24.5.0": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.5.0.tgz#6709fc26db918e6af63a985f2cc3c464b4cf99d9" - integrity sha512-XSsDz1gdR/QMmB8UCKlweAReQsZrD/DK7FuDlNo/pE8EcKMrfi2kqLRk8h8Gy/PDzgqJj64jNEzOce9pR8oj1w== +"@jest/test-sequencer@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.7.1.tgz#9c18e428e1ad945fa74f6233a9d35745ca0e63e0" + integrity sha512-84HQkCpVZI/G1zq53gHJvSmhUer4aMYp9tTaffW28Ih5OxfCg8hGr3nTSbL1OhVDRrFZwvF+/R9gY6JRkDUpUA== + dependencies: + "@jest/test-result" "^24.7.1" + jest-haste-map "^24.7.1" + jest-runner "^24.7.1" + jest-runtime "^24.7.1" + +"@jest/transform@^24.7.1": + version "24.7.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.7.1.tgz#872318f125bcfab2de11f53b465ab1aa780789c2" + integrity sha512-EsOUqP9ULuJ66IkZQhI5LufCHlTbi7hrcllRMUEV/tOgqBVQi93+9qEvkX0n8mYpVXQ8VjwmICeRgg58mrtIEw== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.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.5.0" + jest-haste-map "^24.7.1" jest-regex-util "^24.3.0" - jest-util "^24.5.0" + jest-util "^24.7.1" micromatch "^3.1.10" realpath-native "^1.1.0" slash "^2.0.0" source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/types@^24.5.0": - version "24.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.5.0.tgz#feee214a4d0167b0ca447284e95a57aa10b3ee95" - integrity sha512-kN7RFzNMf2R8UDadPOl6ReyI+MT8xfqRuAnuVL+i4gwjv/zubdDK+EDeLHYwq1j0CSSR2W/MmgaRlMZJzXdmVA== +"@jest/types@^24.7.0": + version "24.7.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.7.0.tgz#c4ec8d1828cdf23234d9b4ee31f5482a3f04f48b" + integrity sha512-ipJUa2rFWiKoBqMKP63Myb6h9+iT3FHRTF2M8OR6irxWzItisa8i4dcSg14IbvmXUnBlHBlUQPYUHWyX3UPpYA== dependencies: - "@types/istanbul-lib-coverage" "^1.1.0" + "@types/istanbul-lib-coverage" "^2.0.0" "@types/yargs" "^12.0.9" -"@lerna/add@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.13.1.tgz#2cd7838857edb3b43ed73e3c21f69a20beb9b702" - integrity sha512-cXk42YbuhzEnADCK8Qte5laC9Qo03eJLVnr0qKY85jQUM/T4URe3IIUemqpg0CpVATrB+Vz+iNdeqw9ng1iALw== +"@lerna/add@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.13.3.tgz#f4c1674839780e458f0426d4f7b6d0a77b9a2ae9" + integrity sha512-T3/Lsbo9ZFq+vL3ssaHxA8oKikZAPTJTGFe4CRuQgWCDd/M61+51jeWsngdaHpwzSSRDRjxg8fJTG10y10pnfA== dependencies: - "@lerna/bootstrap" "3.13.1" - "@lerna/command" "3.13.1" - "@lerna/filter-options" "3.13.0" + "@lerna/bootstrap" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" "@lerna/npm-conf" "3.13.0" "@lerna/validation-error" "3.13.0" dedent "^0.7.0" @@ -394,19 +404,19 @@ "@lerna/validation-error" "3.13.0" npmlog "^4.1.2" -"@lerna/bootstrap@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.13.1.tgz#f2edd7c8093c8b139e78b0ca5f845f23efd01f08" - integrity sha512-mKdi5Ds5f82PZwEFyB9/W60I3iELobi1i87sTeVrbJh/um7GvqpSPy7kG/JPxyOdMpB2njX6LiJgw+7b6BEPWw== +"@lerna/bootstrap@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.13.3.tgz#a0e5e466de5c100b49d558d39139204fc4db5c95" + integrity sha512-2XzijnLHRZOVQh8pwS7+5GR3cG4uh+EiLrWOishCq2TVzkqgjaS3GGBoef7KMCXfWHoLqAZRr/jEdLqfETLVqg== dependencies: "@lerna/batch-packages" "3.13.0" - "@lerna/command" "3.13.1" - "@lerna/filter-options" "3.13.0" - "@lerna/has-npm-version" "3.13.0" - "@lerna/npm-install" "3.13.0" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" + "@lerna/has-npm-version" "3.13.3" + "@lerna/npm-install" "3.13.3" "@lerna/package-graph" "3.13.0" "@lerna/pulse-till-done" "3.13.0" - "@lerna/rimraf-dir" "3.13.0" + "@lerna/rimraf-dir" "3.13.3" "@lerna/run-lifecycle" "3.13.0" "@lerna/run-parallel-batches" "3.13.0" "@lerna/symlink-binary" "3.13.0" @@ -424,44 +434,44 @@ read-package-tree "^5.1.6" semver "^5.5.0" -"@lerna/changed@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.13.1.tgz#dc92476aad43c932fe741969bbd0bcf6146a4c52" - integrity sha512-BRXitEJGOkoudbxEewW7WhjkLxFD+tTk4PrYpHLyCBk63pNTWtQLRE6dc1hqwh4emwyGncoyW6RgXfLgMZgryw== +"@lerna/changed@3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.13.4.tgz#c69d8a079999e49611dd58987f08437baee81ad4" + integrity sha512-9lfOyRVObasw6L/z7yCSfsEl1QKy0Eamb8t2Krg1deIoAt+cE3JXOdGGC1MhOSli+7f/U9LyLXjJzIOs/pc9fw== dependencies: - "@lerna/collect-updates" "3.13.0" - "@lerna/command" "3.13.1" + "@lerna/collect-updates" "3.13.3" + "@lerna/command" "3.13.3" "@lerna/listable" "3.13.0" "@lerna/output" "3.13.0" - "@lerna/version" "3.13.1" + "@lerna/version" "3.13.4" -"@lerna/check-working-tree@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.13.0.tgz#1ddcd4d9b1aceb65efaaa4cd1333a66706d67c9c" - integrity sha512-dsdO15NXX5To+Q53SYeCrBEpiqv4m5VkaPZxbGQZNwoRen1MloXuqxSymJANQn+ZLEqarv5V56gydebeROPH5A== +"@lerna/check-working-tree@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.13.3.tgz#836a3ffd4413a29aca92ccca4a115e4f97109992" + integrity sha512-LoGZvTkne+V1WpVdCTU0XNzFKsQa2AiAFKksGRT0v8NQj6VAPp0jfVYDayTqwaWt2Ne0OGKOFE79Y5LStOuhaQ== dependencies: - "@lerna/describe-ref" "3.13.0" + "@lerna/describe-ref" "3.13.3" "@lerna/validation-error" "3.13.0" -"@lerna/child-process@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.13.0.tgz#84e35adf3217a6983edd28080657b9596a052674" - integrity sha512-0iDS8y2jiEucD4fJHEzKoc8aQJgm7s+hG+0RmDNtfT0MM3n17pZnf5JOMtS1FJp+SEXOjMKQndyyaDIPFsnp6A== +"@lerna/child-process@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.13.3.tgz#6c084ee5cca9fc9e04d6bf4fc3f743ed26ff190c" + integrity sha512-3/e2uCLnbU+bydDnDwyadpOmuzazS01EcnOleAnuj9235CU2U97DH6OyoG1EW/fU59x11J+HjIqovh5vBaMQjQ== dependencies: chalk "^2.3.1" execa "^1.0.0" strong-log-transformer "^2.0.0" -"@lerna/clean@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.13.1.tgz#9a7432efceccd720a51da5c76f849fc59c5a14ce" - integrity sha512-myGIaXv7RUO2qCFZXvx8SJeI+eN6y9SUD5zZ4/LvNogbOiEIlujC5lUAqK65rAHayQ9ltSa/yK6Xv510xhZXZQ== +"@lerna/clean@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.13.3.tgz#5673a1238e0712d31711e7e4e8cb9641891daaea" + integrity sha512-xmNauF1PpmDaKdtA2yuRc23Tru4q7UMO6yB1a/TTwxYPYYsAWG/CBK65bV26J7x4RlZtEv06ztYGMa9zh34UXA== dependencies: - "@lerna/command" "3.13.1" - "@lerna/filter-options" "3.13.0" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" "@lerna/prompt" "3.13.0" "@lerna/pulse-till-done" "3.13.0" - "@lerna/rimraf-dir" "3.13.0" + "@lerna/rimraf-dir" "3.13.3" p-map "^1.2.0" p-map-series "^1.0.0" p-waterfall "^1.0.0" @@ -476,23 +486,23 @@ npmlog "^4.1.2" yargs "^12.0.1" -"@lerna/collect-updates@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.13.0.tgz#f0828d84ff959ff153d006765659ffc4d68cdefc" - integrity sha512-uR3u6uTzrS1p46tHQ/mlHog/nRJGBqskTHYYJbgirujxm6FqNh7Do+I1Q/7zSee407G4lzsNxZdm8IL927HemQ== +"@lerna/collect-updates@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.13.3.tgz#616648da59f0aff4a8e60257795cc46ca6921edd" + integrity sha512-sTpALOAxli/ZS+Mjq6fbmjU9YXqFJ2E4FrE1Ijl4wPC5stXEosg2u0Z1uPY+zVKdM+mOIhLxPVdx83rUgRS+Cg== dependencies: - "@lerna/child-process" "3.13.0" - "@lerna/describe-ref" "3.13.0" + "@lerna/child-process" "3.13.3" + "@lerna/describe-ref" "3.13.3" minimatch "^3.0.4" npmlog "^4.1.2" slash "^1.0.0" -"@lerna/command@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.13.1.tgz#b60dda2c0d9ffbb6030d61ddf7cceedc1e8f7e6e" - integrity sha512-SYWezxX+iheWvzRoHCrbs8v5zHPaxAx3kWvZhqi70vuGsdOVAWmaG4IvHLn11ztS+Vpd5PM+ztBWSbnykpLFKQ== +"@lerna/command@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.13.3.tgz#5b20b3f507224573551039e0460bc36c39f7e9d1" + integrity sha512-WHFIQCubJV0T8gSLRNr6exZUxTswrh+iAtJCb86SE0Sa+auMPklE8af7w2Yck5GJfewmxSjke3yrjNxQrstx7w== dependencies: - "@lerna/child-process" "3.13.0" + "@lerna/child-process" "3.13.3" "@lerna/package-graph" "3.13.0" "@lerna/project" "3.13.1" "@lerna/validation-error" "3.13.0" @@ -528,13 +538,13 @@ fs-extra "^7.0.0" npmlog "^4.1.2" -"@lerna/create@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.13.1.tgz#2c1284cfdc59f0d2b88286d78bc797f4ab330f79" - integrity sha512-pLENMXgTkQuvKxAopjKeoLOv9fVUCnpTUD7aLrY5d95/1xqSZlnsOcQfUYcpMf3GpOvHc8ILmI5OXkPqjAf54g== +"@lerna/create@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.13.3.tgz#6ded142c54b7f3cea86413c3637b067027b7f55d" + integrity sha512-4M5xT1AyUMwt1gCDph4BfW3e6fZmt0KjTa3FoXkUotf/w/eqTsc2IQ+ULz2+gOFQmtuNbqIZEOK3J4P9ArJJ/A== dependencies: - "@lerna/child-process" "3.13.0" - "@lerna/command" "3.13.1" + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" "@lerna/npm-conf" "3.13.0" "@lerna/validation-error" "3.13.0" camelcase "^5.0.0" @@ -552,42 +562,42 @@ validate-npm-package-name "^3.0.0" whatwg-url "^7.0.0" -"@lerna/describe-ref@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.13.0.tgz#fb4c3863fd6bcccad67ce7b183887a5fc1942bb6" - integrity sha512-UJefF5mLxLae9I2Sbz5RLYGbqbikRuMqdgTam0MS5OhXnyuuKYBUpwBshCURNb1dPBXTQhSwc7+oUhORx8ojCg== +"@lerna/describe-ref@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.13.3.tgz#13318513613f6a407d37fc5dc025ec2cfb705606" + integrity sha512-5KcLTvjdS4gU5evW8ESbZ0BF44NM5HrP3dQNtWnOUSKJRgsES8Gj0lq9AlB2+YglZfjEftFT03uOYOxnKto4Uw== dependencies: - "@lerna/child-process" "3.13.0" + "@lerna/child-process" "3.13.3" npmlog "^4.1.2" -"@lerna/diff@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.13.1.tgz#5c734321b0f6c46a3c87f55c99afef3b01d46520" - integrity sha512-cKqmpONO57mdvxtp8e+l5+tjtmF04+7E+O0QEcLcNUAjC6UR2OSM77nwRCXDukou/1h72JtWs0jjcdYLwAmApg== +"@lerna/diff@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.13.3.tgz#883cb3a83a956dbfc2c17bc9a156468a5d3fae17" + integrity sha512-/DRS2keYbnKaAC+5AkDyZRGkP/kT7v1GlUS0JGZeiRDPQ1H6PzhX09EgE5X6nj0Ytrm0sUasDeN++CDVvgaI+A== dependencies: - "@lerna/child-process" "3.13.0" - "@lerna/command" "3.13.1" + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" "@lerna/validation-error" "3.13.0" npmlog "^4.1.2" -"@lerna/exec@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.13.1.tgz#4439e90fb0877ec38a6ef933c86580d43eeaf81b" - integrity sha512-I34wEP9lrAqqM7tTXLDxv/6454WFzrnXDWpNDbiKQiZs6SIrOOjmm6I4FiQsx+rU3o9d+HkC6tcUJRN5mlJUgA== +"@lerna/exec@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.13.3.tgz#5d2eda3f6e584f2f15b115e8a4b5bc960ba5de85" + integrity sha512-c0bD4XqM96CTPV8+lvkxzE7mkxiFyv/WNM4H01YvvbFAJzk+S4Y7cBtRkIYFTfkFZW3FLo8pEgtG1ONtIdM+tg== dependencies: "@lerna/batch-packages" "3.13.0" - "@lerna/child-process" "3.13.0" - "@lerna/command" "3.13.1" - "@lerna/filter-options" "3.13.0" + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" "@lerna/run-parallel-batches" "3.13.0" "@lerna/validation-error" "3.13.0" -"@lerna/filter-options@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.13.0.tgz#976e3d8b9fcd47001ab981d276565c1e9f767868" - integrity sha512-SRp7DCo9zrf+7NkQxZMkeyO1GRN6GICoB9UcBAbXhLbWisT37Cx5/6+jh49gYB63d/0/WYHSEPMlheUrpv1Srw== +"@lerna/filter-options@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.13.3.tgz#aa42a4ab78837b8a6c4278ba871d27e92d77c54f" + integrity sha512-DbtQX4eRgrBz1wCFWRP99JBD7ODykYme9ykEK79+RrKph40znhJQRlLg4idogj6IsUEzwo1OHjihCzSfnVo6Cg== dependencies: - "@lerna/collect-updates" "3.13.0" + "@lerna/collect-updates" "3.13.3" "@lerna/filter-packages" "3.13.0" dedent "^0.7.0" @@ -616,12 +626,12 @@ ssri "^6.0.1" tar "^4.4.8" -"@lerna/github-client@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.13.1.tgz#cb9bf9f01685a0cee0fac63f287f6c3673e45aa3" - integrity sha512-iPLUp8FFoAKGURksYEYZzfuo9TRA+NepVlseRXFaWlmy36dCQN20AciINpoXiXGoHcEUHXUKHQvY3ARFdMlf3w== +"@lerna/github-client@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.13.3.tgz#bcf9b4ff40bdd104cb40cd257322f052b41bb9ce" + integrity sha512-fcJkjab4kX0zcLLSa/DCUNvU3v8wmy2c1lhdIbL7s7gABmDcV0QZq93LhnEee3VkC9UpnJ6GKG4EkD7eIifBnA== dependencies: - "@lerna/child-process" "3.13.0" + "@lerna/child-process" "3.13.3" "@octokit/plugin-enterprise-rest" "^2.1.1" "@octokit/rest" "^16.16.0" git-url-parse "^11.1.2" @@ -632,21 +642,21 @@ resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== -"@lerna/has-npm-version@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.13.0.tgz#6e1f7e9336cce3e029066f0175f06dd9d51ad09f" - integrity sha512-Oqu7DGLnrMENPm+bPFGOHnqxK8lCnuYr6bk3g/CoNn8/U0qgFvHcq6Iv8/Z04TsvleX+3/RgauSD2kMfRmbypg== +"@lerna/has-npm-version@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.13.3.tgz#167e3f602a2fb58f84f93cf5df39705ca6432a2d" + integrity sha512-mQzoghRw4dBg0R9FFfHrj0TH0glvXyzdEZmYZ8Isvx5BSuEEwpsryoywuZSdppcvLu8o7NAdU5Tac8cJ/mT52w== dependencies: - "@lerna/child-process" "3.13.0" + "@lerna/child-process" "3.13.3" semver "^5.5.0" -"@lerna/import@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.13.1.tgz#69d641341a38b79bd379129da1c717d51dd728c7" - integrity sha512-A1Vk1siYx1XkRl6w+zkaA0iptV5TIynVlHPR9S7NY0XAfhykjztYVvwtxarlh6+VcNrO9We6if0+FXCrfDEoIg== +"@lerna/import@3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.13.4.tgz#e9a1831b8fed33f3cbeab3b84c722c9371a2eaf7" + integrity sha512-dn6eNuPEljWsifBEzJ9B6NoaLwl/Zvof7PBUPA4hRyRlqG5sXRn6F9DnusMTovvSarbicmTURbOokYuotVWQQA== dependencies: - "@lerna/child-process" "3.13.0" - "@lerna/command" "3.13.1" + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" "@lerna/prompt" "3.13.0" "@lerna/pulse-till-done" "3.13.0" "@lerna/validation-error" "3.13.0" @@ -654,35 +664,35 @@ fs-extra "^7.0.0" p-map-series "^1.0.0" -"@lerna/init@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.13.1.tgz#0392c822abb3d63a75be4916c5e761cfa7b34dda" - integrity sha512-M59WACqim8WkH5FQEGOCEZ89NDxCKBfFTx4ZD5ig3LkGyJ8RdcJq5KEfpW/aESuRE9JrZLzVr0IjKbZSxzwEMA== +"@lerna/init@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.13.3.tgz#ebd522fee9b9d7d3b2dacb0261eaddb4826851ff" + integrity sha512-bK/mp0sF6jT0N+c+xrbMCqN4xRoiZCXQzlYsyACxPK99KH/mpHv7hViZlTYUGlYcymtew6ZC770miv5A9wF9hA== dependencies: - "@lerna/child-process" "3.13.0" - "@lerna/command" "3.13.1" + "@lerna/child-process" "3.13.3" + "@lerna/command" "3.13.3" fs-extra "^7.0.0" p-map "^1.2.0" write-json-file "^2.3.0" -"@lerna/link@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.13.1.tgz#7d8ed4774bfa198d1780f790a14abb8722a3aad1" - integrity sha512-N3h3Fj1dcea+1RaAoAdy4g2m3fvU7m89HoUn5X/Zcw5n2kPoK8kTO+NfhNAatfRV8VtMXst8vbNrWQQtfm0FFw== +"@lerna/link@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.13.3.tgz#11124d4a0c8d0b79752fbda3babedfd62dd57847" + integrity sha512-IHhtdhA0KlIdevCsq6WHkI2rF3lHWHziJs2mlrEWAKniVrFczbELON1KJAgdJS1k3kAP/WeWVqmIYZ2hJDxMvg== dependencies: - "@lerna/command" "3.13.1" + "@lerna/command" "3.13.3" "@lerna/package-graph" "3.13.0" "@lerna/symlink-dependencies" "3.13.0" p-map "^1.2.0" slash "^1.0.0" -"@lerna/list@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.13.1.tgz#f9513ed143e52156c10ada4070f903c5847dcd10" - integrity sha512-635iRbdgd9gNvYLLIbYdQCQLr+HioM5FGJLFS0g3DPGygr6iDR8KS47hzCRGH91LU9NcM1mD1RoT/AChF+QbiA== +"@lerna/list@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.13.3.tgz#fa93864d43cadeb4cd540a4e78a52886c57dbe74" + integrity sha512-rLRDsBCkydMq2FL6WY1J/elvnXIjxxRtb72lfKHdvDEqVdquT5Qgt9ci42hwjmcocFwWcFJgF6BZozj5pbc13A== dependencies: - "@lerna/command" "3.13.1" - "@lerna/filter-options" "3.13.0" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" "@lerna/listable" "3.13.0" "@lerna/output" "3.13.0" @@ -723,12 +733,12 @@ npm-registry-fetch "^3.9.0" npmlog "^4.1.2" -"@lerna/npm-install@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.13.0.tgz#88f4cc39f4f737c8a8721256b915ea1bcc6a7227" - integrity sha512-qNyfts//isYQxore6fsPorNYJmPVKZ6tOThSH97tP0aV91zGMtrYRqlAoUnDwDdAjHPYEM16hNujg2wRmsqqIw== +"@lerna/npm-install@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.13.3.tgz#9b09852732e51c16d2e060ff2fd8bfbbb49cf7ba" + integrity sha512-7Jig9MLpwAfcsdQ5UeanAjndChUjiTjTp50zJ+UZz4CbIBIDhoBehvNMTCL2G6pOEC7sGEg6sAqJINAqred6Tg== dependencies: - "@lerna/child-process" "3.13.0" + "@lerna/child-process" "3.13.3" "@lerna/get-npm-exec-opts" "3.13.0" fs-extra "^7.0.0" npm-package-arg "^6.1.0" @@ -736,25 +746,26 @@ signal-exit "^3.0.2" write-pkg "^3.1.0" -"@lerna/npm-publish@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.13.0.tgz#5c74808376e778865ffdc5885fe83935e15e60c3" - integrity sha512-y4WO0XTaf9gNRkI7as6P2ItVDOxmYHwYto357fjybcnfXgMqEA94c3GJ++jU41j0A9vnmYC6/XxpTd9sVmH9tA== +"@lerna/npm-publish@3.13.2": + version "3.13.2" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.13.2.tgz#ad713ca6f91a852687d7d0e1bda7f9c66df21768" + integrity sha512-HMucPyEYZfom5tRJL4GsKBRi47yvSS2ynMXYxL3kO0ie+j9J7cb0Ir8NmaAMEd3uJWJVFCPuQarehyfTDZsSxg== dependencies: "@lerna/run-lifecycle" "3.13.0" figgy-pudding "^3.5.1" fs-extra "^7.0.0" libnpmpublish "^1.1.1" + npm-package-arg "^6.1.0" npmlog "^4.1.2" pify "^3.0.0" read-package-json "^2.0.13" -"@lerna/npm-run-script@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.13.0.tgz#e5997f045402b9948bdc066033ebb36bf94fc9e4" - integrity sha512-hiL3/VeVp+NFatBjkGN8mUdX24EfZx9rQlSie0CMgtjc7iZrtd0jCguLomSCRHYjJuvqgbp+LLYo7nHVykfkaQ== +"@lerna/npm-run-script@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.13.3.tgz#9bb6389ed70cd506905d6b05b6eab336b4266caf" + integrity sha512-qR4o9BFt5hI8Od5/DqLalOJydnKpiQFEeN0h9xZi7MwzuX1Ukwh3X22vqsX4YRbipIelSFtrDzleNVUm5jj0ow== dependencies: - "@lerna/child-process" "3.13.0" + "@lerna/child-process" "3.13.3" "@lerna/get-npm-exec-opts" "3.13.0" npmlog "^4.1.2" @@ -823,21 +834,21 @@ inquirer "^6.2.0" npmlog "^4.1.2" -"@lerna/publish@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.13.1.tgz#217e401dcb5824cdd6d36555a36303fb7520c514" - integrity sha512-KhCJ9UDx76HWCF03i5TD7z5lX+2yklHh5SyO8eDaLptgdLDQ0Z78lfGj3JhewHU2l46FztmqxL/ss0IkWHDL+g== +"@lerna/publish@3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.13.4.tgz#25b678c285110897a7fc5198a35bdfa9db7f9cc1" + integrity sha512-v03pabiPlqCDwX6cVNis1PDdT6/jBgkVb5Nl4e8wcJXevIhZw3ClvtI94gSZu/wdoVFX0RMfc8QBVmaimSO0qg== dependencies: "@lerna/batch-packages" "3.13.0" - "@lerna/check-working-tree" "3.13.0" - "@lerna/child-process" "3.13.0" - "@lerna/collect-updates" "3.13.0" - "@lerna/command" "3.13.1" - "@lerna/describe-ref" "3.13.0" + "@lerna/check-working-tree" "3.13.3" + "@lerna/child-process" "3.13.3" + "@lerna/collect-updates" "3.13.3" + "@lerna/command" "3.13.3" + "@lerna/describe-ref" "3.13.3" "@lerna/log-packed" "3.13.0" "@lerna/npm-conf" "3.13.0" "@lerna/npm-dist-tag" "3.13.0" - "@lerna/npm-publish" "3.13.0" + "@lerna/npm-publish" "3.13.2" "@lerna/output" "3.13.0" "@lerna/pack-directory" "3.13.1" "@lerna/prompt" "3.13.0" @@ -845,7 +856,7 @@ "@lerna/run-lifecycle" "3.13.0" "@lerna/run-parallel-batches" "3.13.0" "@lerna/validation-error" "3.13.0" - "@lerna/version" "3.13.1" + "@lerna/version" "3.13.4" figgy-pudding "^3.5.1" fs-extra "^7.0.0" libnpmaccess "^3.0.1" @@ -875,12 +886,12 @@ npmlog "^4.1.2" read-cmd-shim "^1.0.1" -"@lerna/rimraf-dir@3.13.0": - version "3.13.0" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.13.0.tgz#bb1006104b4aabcb6985624273254648f872b278" - integrity sha512-kte+pMemulre8cmPqljxIYjCmdLByz8DgHBHXB49kz2EiPf8JJ+hJFt0PzEubEyJZ2YE2EVAx5Tv5+NfGNUQyQ== +"@lerna/rimraf-dir@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.13.3.tgz#3a8e71317fde853893ef0262bc9bba6a180b7227" + integrity sha512-d0T1Hxwu3gpYVv73ytSL+/Oy8JitsmvOYUR5ouRSABsmqS7ZZCh5t6FgVDDGVXeuhbw82+vuny1Og6Q0k4ilqw== dependencies: - "@lerna/child-process" "3.13.0" + "@lerna/child-process" "3.13.3" npmlog "^4.1.2" path-exists "^3.0.0" rimraf "^2.6.2" @@ -903,15 +914,15 @@ p-map "^1.2.0" p-map-series "^1.0.0" -"@lerna/run@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.13.1.tgz#87e174c1d271894ddd29adc315c068fb7b1b0117" - integrity sha512-nv1oj7bsqppWm1M4ifN+/IIbVu9F4RixrbQD2okqDGYne4RQPAXyb5cEZuAzY/wyGTWWiVaZ1zpj5ogPWvH0bw== +"@lerna/run@3.13.3": + version "3.13.3" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.13.3.tgz#0781c82d225ef6e85e28d3e763f7fc090a376a21" + integrity sha512-ygnLIfIYS6YY1JHWOM4CsdZiY8kTYPsDFOLAwASlRnlAXF9HiMT08GFXLmMHIblZJ8yJhsM2+QgraCB0WdxzOQ== dependencies: "@lerna/batch-packages" "3.13.0" - "@lerna/command" "3.13.1" - "@lerna/filter-options" "3.13.0" - "@lerna/npm-run-script" "3.13.0" + "@lerna/command" "3.13.3" + "@lerna/filter-options" "3.13.3" + "@lerna/npm-run-script" "3.13.3" "@lerna/output" "3.13.0" "@lerna/run-parallel-batches" "3.13.0" "@lerna/timer" "3.13.0" @@ -953,18 +964,18 @@ dependencies: npmlog "^4.1.2" -"@lerna/version@3.13.1": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.13.1.tgz#5e919d13abb13a663dcc7922bb40931f12fb137b" - integrity sha512-WpfKc5jZBBOJ6bFS4atPJEbHSiywQ/Gcd+vrwaEGyQHWHQZnPTvhqLuq3q9fIb9sbuhH5pSY6eehhuBrKqTnjg== +"@lerna/version@3.13.4": + version "3.13.4" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.13.4.tgz#ea23b264bebda425ccbfcdcd1de13ef45a390e59" + integrity sha512-pptWUEgN/lUTQZu34+gfH1g4Uhs7TDKRcdZY9A4T9k6RTOwpKC2ceLGiXdeR+ZgQJAey2C4qiE8fo5Z6Rbc6QA== dependencies: "@lerna/batch-packages" "3.13.0" - "@lerna/check-working-tree" "3.13.0" - "@lerna/child-process" "3.13.0" - "@lerna/collect-updates" "3.13.0" - "@lerna/command" "3.13.1" + "@lerna/check-working-tree" "3.13.3" + "@lerna/child-process" "3.13.3" + "@lerna/collect-updates" "3.13.3" + "@lerna/command" "3.13.3" "@lerna/conventional-commits" "3.13.0" - "@lerna/github-client" "3.13.1" + "@lerna/github-client" "3.13.3" "@lerna/output" "3.13.0" "@lerna/prompt" "3.13.0" "@lerna/run-lifecycle" "3.13.0" @@ -1081,7 +1092,7 @@ universal-user-agent "^2.0.0" url-template "^2.0.8" -"@sinonjs/commons@^1", "@sinonjs/commons@^1.3.1": +"@sinonjs/commons@^1", "@sinonjs/commons@^1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78" integrity sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw== @@ -1118,7 +1129,7 @@ array-from "^2.1.1" lodash "^4.17.11" -"@sinonjs/samsam@^3.1.0", "@sinonjs/samsam@^3.2.0": +"@sinonjs/samsam@^3.1.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.0.tgz#9557ea89cd39dbc94ffbd093c8085281cac87416" integrity sha512-beHeJM/RRAaLLsMJhsCvHK31rIqZuobfPLa/80yGH5hnD8PV1hyh9xJBJNFfNmO7yWqm+zomijHsXpI6iTQJfQ== @@ -1127,6 +1138,15 @@ array-from "^2.1.1" lodash "^4.17.11" +"@sinonjs/samsam@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.1.tgz#e88c53fbd9d91ad9f0f2b0140c16c7c107fe0d07" + integrity sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw== + dependencies: + "@sinonjs/commons" "^1.0.2" + array-from "^2.1.1" + lodash "^4.17.11" + "@sinonjs/text-encoding@^0.7.1": version "0.7.1" resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" @@ -1187,12 +1207,6 @@ resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.2.tgz#453f4b14b25da6a8ea4494842dedcbf0151deef9" integrity sha512-aHQA072E10/8iUQsPH7mQU/KUyQBZAGzTVRCUvnSz8mSvbrYsP4xEO2RSA0Pjltolzi0j8+8ixrm//Hr4umPzw== -"@types/duplexify@^3.5.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.0.tgz#dfc82b64bd3a2168f5bd26444af165bf0237dcd8" - dependencies: - "@types/node" "*" - "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" @@ -1235,10 +1249,10 @@ resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.3.tgz#b672cfaac25cbbc634a0fd92c515f66faa18dbca" integrity sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ== -"@types/istanbul-lib-coverage@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#2cc2ca41051498382b43157c8227fea60363f94a" - integrity sha512-ohkhb9LehJy+PA40rDtGAji61NCgdtKLAlFoYp4cnuuQEswwdK3vz9SOIkkyc3wrk8dzjphQApNs56yyXLStaQ== +"@types/istanbul-lib-coverage@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz#1eb8c033e98cf4e1a4cedcaf8bcafe8cb7591e85" + integrity sha512-eAtOAFZefEnfJiRFQBGw1eYqa5GTLCZ1y86N0XSI/D6EB+E8z6VPV/UL7Gi5UEclFqoQk+6NRqEDsfmDLXn8sg== "@types/jest-diff@*": version "20.0.1" @@ -1289,15 +1303,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.4.tgz#ceb0048a546db453f6248f2d1d95e937a6f00a14" integrity sha512-Zl8dGvAcEmadgs1tmSPcvwzO1YRsz38bVJQvH1RvRqSR9/5n61Q1ktcDL0ht3FXWR+ZpVmXVwN1LuH4Ax23NsA== -"@types/node@^11.11.3": - version "11.11.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.3.tgz#7c6b0f8eaf16ae530795de2ad1b85d34bf2f5c58" - integrity sha512-wp6IOGu1lxsfnrD+5mX6qwSwWuqsdkKKxTN4aQc4wByHAKZJf9/D4KXPQ1POUjEbnCP5LMggB0OEFNY9OTsMqg== - -"@types/node@^11.9.5": - version "11.10.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-11.10.4.tgz#3f5fc4f0f322805f009e00ab35a2ff3d6b778e42" - integrity sha512-wa09itaLE8L705aXd8F80jnFpxz3Y1/KRHfKsYL2bPc0XF+wEWu8sR9n5bmeu8Ba1N9z2GRNzm/YdHcghLkLKg== +"@types/node@^11.13.5", "@types/node@^11.13.7": + version "11.13.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.7.tgz#85dbb71c510442d00c0631f99dae957ce44fd104" + integrity sha512-suFHr6hcA9mp8vFrZTgrmqW2ZU3mbWsryQtQlY/QvwTISCw7nw/j+bCQPPohqmskhmqa5wLNuMHTTsc+xf1MQg== "@types/raven@^2.5.1": version "2.5.3" @@ -1306,15 +1315,23 @@ dependencies: "@types/node" "*" -"@types/request@^2.47.0": +"@types/request@^2.48.1": version "2.48.1" resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.1.tgz#e402d691aa6670fbbff1957b15f1270230ab42fa" + integrity sha512-ZgEZ1TiD+KGA9LiAAPPJL68Id2UWfeSO62ijSXZjFJArVV+2pKcsVHmrcu+1oiE3q6eDGiFiSolRc4JHoerBBg== dependencies: "@types/caseless" "*" "@types/form-data" "*" "@types/node" "*" "@types/tough-cookie" "*" +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + "@types/shelljs@^0.8.0": version "0.8.3" resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.3.tgz#f713f312dbae49ab5025290007e71ea32998e9a9" @@ -1323,10 +1340,10 @@ "@types/glob" "*" "@types/node" "*" -"@types/sinon@^7.0.10": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.0.10.tgz#1f921f0c347b19f754e61dbc671c088df73fe1ff" - integrity sha512-4w7SvsiUOtd4mUfund9QROPSJ5At/GQskDpqd87pJIRI6ULWSJqHI3GIZE337wQuN3aznroJGr94+o8fwvL37Q== +"@types/sinon@^7.0.11": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.0.11.tgz#6f28f005a36e779b7db0f1359b9fb9eef72aae88" + integrity sha512-6ee09Ugx6GyEr0opUIakmxIWFNmqYPjkqa3/BuxCBokA0klsOLPgMD5K4q40lH7/yZVuJVzOfQpd7pipwjngkQ== "@types/stack-utils@^1.0.1": version "1.0.1" @@ -1526,6 +1543,13 @@ abort-controller@^2.0.2: dependencies: event-target-shim "^5.0.0" +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + accepts@~1.3.4, accepts@~1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" @@ -1837,6 +1861,11 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= +arrify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1937,7 +1966,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -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: @@ -2084,16 +2113,16 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.5.0.tgz#0ea042789810c2bec9065f7c8ab4dc18e1d28559" - integrity sha512-0fKCXyRwxFTJL0UXDJiT2xYxO9Lu2vBd9n+cC+eDjESzcVG3s2DRGAxbzJX21fceB1WYoBjAh8pQ83dKcl003g== +babel-jest@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.7.1.tgz#73902c9ff15a7dfbdc9994b0b17fcefd96042178" + integrity sha512-GPnLqfk8Mtt0i4OemjWkChi73A3ALs4w2/QbG64uAj8b5mmwzxc7jbJVRZt8NJkxi6FopVHog9S3xX6UJKb2qg== dependencies: - "@jest/transform" "^24.5.0" - "@jest/types" "^24.5.0" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" "@types/babel__core" "^7.1.0" babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.3.0" + babel-preset-jest "^24.6.0" chalk "^2.4.2" slash "^2.0.0" @@ -2118,10 +2147,10 @@ babel-plugin-istanbul@^5.1.0: istanbul-lib-instrument "^3.0.0" test-exclude "^5.0.0" -babel-plugin-jest-hoist@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.3.0.tgz#f2e82952946f6e40bb0a75d266a3790d854c8b5b" - integrity sha512-nWh4N1mVH55Tzhx2isvUN5ebM5CDUvIpXPZYMRazQughie/EqGnbR+czzoQlhUmJG9pPJmYDRhvocotb2THl1w== +babel-plugin-jest-hoist@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" + integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== dependencies: "@types/babel__traverse" "^7.0.6" @@ -2370,13 +2399,13 @@ babel-preset-env@^1.7.0: invariant "^2.2.2" semver "^5.3.0" -babel-preset-jest@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.3.0.tgz#db88497e18869f15b24d9c0e547d8e0ab950796d" - integrity sha512-VGTV2QYBa/Kn3WCOKdfS31j9qomaXSgJqi65B6o05/1GsJyj9LVhSljM9ro4S+IBGj/ENhNBuH9bpqzztKAQSw== +babel-preset-jest@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" + integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== dependencies: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.3.0" + babel-plugin-jest-hoist "^24.6.0" babel-register@^6.26.0: version "6.26.0" @@ -2745,10 +2774,10 @@ builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -builtin-modules@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.0.0.tgz#1e587d44b006620d90286cc7a9238bbc6129cab1" - integrity sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg== +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== builtin-status-codes@^3.0.0: version "3.0.0" @@ -3126,10 +3155,10 @@ code-point-at@^1.0.0: resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -codecov@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.2.0.tgz#4465ee19884528092d8c313e1f9e4bdc7d3065cd" - integrity sha512-3NJvNARXxilqnqVfgzDHyVrF4oeVgaYW1c1O6Oi5mn93exE7HTSSFNiYdwojWW6IwrCZABJ8crpNbKoo9aUHQw== +codecov@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.3.0.tgz#7bf337b3f7b0474606b5c31c56dd9e44e395e15d" + integrity sha512-S70c3Eg9SixumOvxaKE/yKUxb9ihu/uebD9iPO2IR73IdP4i6ZzjXEULj3d0HeyWPr0DqBfDkjNBWxURjVO5hw== dependencies: argv "^0.0.2" ignore-walk "^3.0.1" @@ -3610,10 +3639,10 @@ danger-plugin-tslint@^2.0.0: optionalDependencies: serve "^5.1.5" -danger@^7.0.14: - version "7.0.14" - resolved "https://registry.yarnpkg.com/danger/-/danger-7.0.14.tgz#c600b463f591a5c8aeac926b6066cf415ecd6e88" - integrity sha512-8JoWH5wge25vo0ROSplA+edy2PVk5Ttn7iR7oEq/XwWxp18lHG4B8JuYgMWqp68EcJbJlKxTWQfmANJudmJuiA== +danger@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/danger/-/danger-7.1.3.tgz#aa731051cdf72f2758322beb366d5acb11a5d4a9" + integrity sha512-DBVqEKQL4yatDLq4xDUMSvYyl49PuzwR89cLpWsrIHqP6WwDqwFgNydlPbAsUlVvVYv5MfDxlWOI8hZ7yqSw4A== dependencies: "@babel/polyfill" "^7.2.5" "@octokit/rest" "^16.14.1" @@ -3632,8 +3661,10 @@ danger@^7.0.14: lodash.includes "^4.3.0" lodash.isobject "^3.0.2" lodash.keys "^4.0.8" + lodash.mapvalues "^4.6.0" lodash.memoize "^4.1.2" memfs-or-file-map-to-github-branch "^1.1.0" + micromatch "^3.1.10" node-cleanup "^2.1.2" node-fetch "^2.3.0" override-require "^1.1.1" @@ -3675,6 +3706,11 @@ data-urls@^1.0.0, data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" +date-and-time@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/date-and-time/-/date-and-time-0.6.3.tgz#2daee52df67c28bd93bce862756ac86b68cf4237" + integrity sha512-lcWy3AXDRJOD7MplwZMmNSRM//kZtJaLz4n6D1P5z9wEmZGBKhJRBIr1Xs9KNQJmdXPblvgffynYji4iylUTcA== + date-format@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.0.0.tgz#7cf7b172f1ec564f0003b39ea302c5498fb98c8f" @@ -3857,11 +3893,6 @@ destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -4240,10 +4271,6 @@ estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= -estree-walker@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" - estree-walker@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.0.tgz#5d865327c44a618dde5699f763891ae31f257dae" @@ -4370,23 +4397,23 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: +expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= dependencies: homedir-polyfill "^1.0.1" -expect@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.5.0.tgz#492fb0df8378d8474cc84b827776b069f46294ed" - integrity sha512-p2Gmc0CLxOgkyA93ySWmHFYHUPFIHG6XZ06l7WArWAsrqYVaVEkOU5NtT5i68KUyGKbkQgDCkiT65bWmdoL6Bw== +expect@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.7.1.tgz#d91defbab4e627470a152feaf35b3c31aa1c7c14" + integrity sha512-mGfvMTPduksV3xoI0xur56pQsg2vJjNf5+a+bXOjqCkiCBbmCayrBbHS/75y9K430cfqyocPr2ZjiNiRx4SRKw== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" ansi-styles "^3.2.0" jest-get-type "^24.3.0" - jest-matcher-utils "^24.5.0" - jest-message-util "^24.5.0" + jest-matcher-utils "^24.7.0" + jest-message-util "^24.7.1" jest-regex-util "^24.3.0" express@^4.16.4: @@ -4581,6 +4608,13 @@ find-cache-dir@^2.0.0: make-dir "^1.0.0" pkg-dir "^3.0.0" +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -4596,23 +4630,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -findup-sync@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - flat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" @@ -4788,6 +4805,16 @@ gaxios@^1.0.2, gaxios@^1.0.4, gaxios@^1.2.1: https-proxy-agent "^2.2.1" node-fetch "^2.2.0" +gaxios@^1.5.0: + version "1.8.4" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-1.8.4.tgz#e08c34fe93c0a9b67a52b7b9e7a64e6435f9a339" + integrity sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw== + dependencies: + abort-controller "^3.0.0" + extend "^3.0.2" + https-proxy-agent "^2.2.1" + node-fetch "^2.3.0" + gcp-metadata@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.9.3.tgz#1f9d7495f7460a14526481f29e11596dd563dd26" @@ -4796,15 +4823,24 @@ gcp-metadata@^0.9.3: gaxios "^1.0.2" json-bigint "^0.3.0" -gcs-resumable-upload@^0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-0.14.1.tgz#d0b0b2acc608d63e4164329b0a1231227383b532" - integrity sha512-vkIxLeVyW20DdcyhI8GvOkISV62y7+fKAdelUTn8F5en8AmPduqro5xz3VoHkj/RJ3PQmqNovYYaYPyPHwebzw== +gcp-metadata@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-1.0.0.tgz#5212440229fa099fc2f7c2a5cdcb95575e9b2ca6" + integrity sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ== + dependencies: + gaxios "^1.0.2" + json-bigint "^0.3.0" + +gcs-resumable-upload@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-1.1.0.tgz#2b06f5876dcf60f18a309343f79ed951aff01399" + integrity sha512-uBz7uHqp44xjSDzG3kLbOYZDjxxR/UAGbB47A0cC907W6yd2LkcyFDTHg+bjivkHMwiJlKv4guVWcjPCk2zScg== dependencies: + abort-controller "^2.0.2" configstore "^4.0.0" + gaxios "^1.5.0" google-auth-library "^3.0.0" pumpify "^1.5.1" - request "^2.87.0" stream-events "^1.0.4" genfun@^5.0.0: @@ -4979,26 +5015,6 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - globals@^11.1.0: version "11.11.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" @@ -5036,6 +5052,21 @@ google-auth-library@^3.0.0: lru-cache "^5.0.0" semver "^5.5.0" +google-auth-library@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-3.1.2.tgz#ff2f88cd5cd2118a57bd3d5ad3c093c8837fc350" + integrity sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ== + dependencies: + base64-js "^1.3.0" + fast-text-encoding "^1.0.0" + gaxios "^1.2.1" + gcp-metadata "^1.0.0" + gtoken "^2.3.2" + https-proxy-agent "^2.2.1" + jws "^3.1.5" + lru-cache "^5.0.0" + semver "^5.5.0" + google-p12-pem@^1.0.0: version "1.0.2" resolved "http://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.2.tgz#c8a3843504012283a0dbffc7430b7c753ecd4b07" @@ -5786,7 +5817,7 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -5796,10 +5827,6 @@ is-wsl@^1.1.0: resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= -is@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5" - isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -5930,65 +5957,66 @@ istanbul@0.4.5, istanbul@^0.4.0: which "^1.1.1" wordwrap "^1.0.0" -jest-changed-files@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.5.0.tgz#4075269ee115d87194fd5822e642af22133cf705" - integrity sha512-Ikl29dosYnTsH9pYa1Tv9POkILBhN/TLZ37xbzgNsZ1D2+2n+8oEZS2yP1BrHn/T4Rs4Ggwwbp/x8CKOS5YJOg== +jest-changed-files@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.7.0.tgz#39d723a11b16ed7b373ac83adc76a69464b0c4fa" + integrity sha512-33BgewurnwSfJrW7T5/ZAXGE44o7swLslwh8aUckzq2e17/2Os1V0QU506ZNik3hjs8MgnEMKNkcud442NCDTw== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.5.0.tgz#598139d3446d1942fb7dc93944b9ba766d756d4b" - integrity sha512-P+Jp0SLO4KWN0cGlNtC7JV0dW1eSFR7eRpoOucP2UM0sqlzp/bVHeo71Omonvigrj9AvCKy7NtQANtqJ7FXz8g== +jest-cli@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.7.1.tgz#6093a539073b6f4953145abeeb9709cd621044f1" + integrity sha512-32OBoSCVPzcTslGFl6yVCMzB2SqX3IrWwZCY5mZYkb0D2WsogmU3eV2o8z7+gRQa4o4sZPX/k7GU+II7CxM6WQ== dependencies: - "@jest/core" "^24.5.0" - "@jest/test-result" "^24.5.0" - "@jest/types" "^24.5.0" + "@jest/core" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" chalk "^2.0.1" exit "^0.1.2" import-local "^2.0.0" is-ci "^2.0.0" - jest-config "^24.5.0" - jest-util "^24.5.0" - jest-validate "^24.5.0" + jest-config "^24.7.1" + jest-util "^24.7.1" + jest-validate "^24.7.0" prompts "^2.0.1" realpath-native "^1.1.0" yargs "^12.0.2" -jest-config@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.5.0.tgz#404d1bc6bb81aed6bd1890d07e2dca9fbba2e121" - integrity sha512-t2UTh0Z2uZhGBNVseF8wA2DS2SuBiLOL6qpLq18+OZGfFUxTM7BzUVKyHFN/vuN+s/aslY1COW95j1Rw81huOQ== +jest-config@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.7.1.tgz#6c1dd4db82a89710a3cf66bdba97827c9a1cf052" + integrity sha512-8FlJNLI+X+MU37j7j8RE4DnJkvAghXmBWdArVzypW6WxfGuxiL/CCkzBg0gHtXhD2rxla3IMOSUAHylSKYJ83g== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^24.5.0" - babel-jest "^24.5.0" + "@jest/test-sequencer" "^24.7.1" + "@jest/types" "^24.7.0" + babel-jest "^24.7.1" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^24.5.0" - jest-environment-node "^24.5.0" + jest-environment-jsdom "^24.7.1" + jest-environment-node "^24.7.1" jest-get-type "^24.3.0" - jest-jasmine2 "^24.5.0" + jest-jasmine2 "^24.7.1" jest-regex-util "^24.3.0" - jest-resolve "^24.5.0" - jest-util "^24.5.0" - jest-validate "^24.5.0" + jest-resolve "^24.7.1" + jest-util "^24.7.1" + jest-validate "^24.7.0" micromatch "^3.1.10" - pretty-format "^24.5.0" + pretty-format "^24.7.0" realpath-native "^1.1.0" -jest-diff@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.5.0.tgz#a2d8627964bb06a91893c0fbcb28ab228c257652" - integrity sha512-mCILZd9r7zqL9Uh6yNoXjwGQx0/J43OD2vvWVKwOEOLZliQOsojXwqboubAQ+Tszrb6DHGmNU7m4whGeB9YOqw== +jest-diff@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.7.0.tgz#5d862899be46249754806f66e5729c07fcb3580f" + integrity sha512-ULQZ5B1lWpH70O4xsANC4tf4Ko6RrpwhE3PtG6ERjMg1TiYTC2Wp4IntJVGro6a8HG9luYHhhmF4grF0Pltckg== dependencies: chalk "^2.0.1" diff-sequences "^24.3.0" jest-get-type "^24.3.0" - pretty-format "^24.5.0" + pretty-format "^24.7.0" jest-docblock@^24.3.0: version "24.3.0" @@ -5997,119 +6025,123 @@ jest-docblock@^24.3.0: dependencies: detect-newline "^2.1.0" -jest-each@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.5.0.tgz#da14d017a1b7d0f01fb458d338314cafe7f72318" - integrity sha512-6gy3Kh37PwIT5sNvNY2VchtIFOOBh8UCYnBlxXMb5sr5wpJUDPTUATX2Axq1Vfk+HWTMpsYPeVYp4TXx5uqUBw== +jest-each@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.7.1.tgz#fcc7dda4147c28430ad9fb6dc7211cd17ab54e74" + integrity sha512-4fsS8fEfLa3lfnI1Jw6NxjhyRTgfpuOVTeUZZFyVYqeTa4hPhr2YkToUhouuLTrL2eMGOfpbdMyRx0GQ/VooKA== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" chalk "^2.0.1" jest-get-type "^24.3.0" - jest-util "^24.5.0" - pretty-format "^24.5.0" - -jest-environment-jsdom@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.5.0.tgz#1c3143063e1374100f8c2723a8b6aad23b6db7eb" - integrity sha512-62Ih5HbdAWcsqBx2ktUnor/mABBo1U111AvZWcLKeWN/n/gc5ZvDBKe4Og44fQdHKiXClrNGC6G0mBo6wrPeGQ== - dependencies: - "@jest/environment" "^24.5.0" - "@jest/fake-timers" "^24.5.0" - "@jest/types" "^24.5.0" - jest-mock "^24.5.0" - jest-util "^24.5.0" + jest-util "^24.7.1" + pretty-format "^24.7.0" + +jest-environment-jsdom@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.7.1.tgz#a40e004b4458ebeb8a98082df135fd501b9fbbd6" + integrity sha512-Gnhb+RqE2JuQGb3kJsLF8vfqjt3PHKSstq4Xc8ic+ax7QKo4Z0RWGucU3YV+DwKR3T9SYc+3YCUQEJs8r7+Jxg== + dependencies: + "@jest/environment" "^24.7.1" + "@jest/fake-timers" "^24.7.1" + "@jest/types" "^24.7.0" + jest-mock "^24.7.0" + jest-util "^24.7.1" jsdom "^11.5.1" -jest-environment-node@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.5.0.tgz#763eebdf529f75b60aa600c6cf8cb09873caa6ab" - integrity sha512-du6FuyWr/GbKLsmAbzNF9mpr2Iu2zWSaq/BNHzX+vgOcts9f2ayXBweS7RAhr+6bLp6qRpMB6utAMF5Ygktxnw== +jest-environment-node@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.7.1.tgz#fa2c047a31522a48038d26ee4f7c8fd9c1ecfe12" + integrity sha512-GJJQt1p9/C6aj6yNZMvovZuxTUd+BEJprETdvTKSb4kHcw4mFj8777USQV0FJoJ4V3djpOwA5eWyPwfq//PFBA== dependencies: - "@jest/environment" "^24.5.0" - "@jest/fake-timers" "^24.5.0" - "@jest/types" "^24.5.0" - jest-mock "^24.5.0" - jest-util "^24.5.0" + "@jest/environment" "^24.7.1" + "@jest/fake-timers" "^24.7.1" + "@jest/types" "^24.7.0" + jest-mock "^24.7.0" + jest-util "^24.7.1" jest-get-type@^24.3.0: version "24.3.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.3.0.tgz#582cfd1a4f91b5cdad1d43d2932f816d543c65da" integrity sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow== -jest-haste-map@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.5.0.tgz#3f17d0c548b99c0c96ed2893f9c0ccecb2eb9066" - integrity sha512-mb4Yrcjw9vBgSvobDwH8QUovxApdimGcOkp+V1ucGGw4Uvr3VzZQBJhNm1UY3dXYm4XXyTW2G7IBEZ9pM2ggRQ== +jest-haste-map@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.7.1.tgz#772e215cd84080d4bbcb759cfb668ad649a21471" + integrity sha512-g0tWkzjpHD2qa03mTKhlydbmmYiA2KdcJe762SbfFo/7NIMgBWAA0XqQlApPwkWOF7Cxoi/gUqL0i6DIoLpMBw== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" + anymatch "^2.0.0" fb-watchman "^2.0.0" graceful-fs "^4.1.15" invariant "^2.2.4" jest-serializer "^24.4.0" - jest-util "^24.5.0" - jest-worker "^24.4.0" + jest-util "^24.7.1" + jest-worker "^24.6.0" micromatch "^3.1.10" sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^1.2.7" -jest-jasmine2@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.5.0.tgz#e6af4d7f73dc527d007cca5a5b177c0bcc29d111" - integrity sha512-sfVrxVcx1rNUbBeyIyhkqZ4q+seNKyAG6iM0S2TYBdQsXjoFDdqWFfsUxb6uXSsbimbXX/NMkJIwUZ1uT9+/Aw== +jest-jasmine2@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.7.1.tgz#01398686dabe46553716303993f3be62e5d9d818" + integrity sha512-Y/9AOJDV1XS44wNwCaThq4Pw3gBPiOv/s6NcbOAkVRRUEPu+36L2xoPsqQXsDrxoBerqeyslpn2TpCI8Zr6J2w== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.5.0" - "@jest/test-result" "^24.5.0" - "@jest/types" "^24.5.0" + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" chalk "^2.0.1" co "^4.6.0" - expect "^24.5.0" + expect "^24.7.1" is-generator-fn "^2.0.0" - jest-each "^24.5.0" - jest-matcher-utils "^24.5.0" - jest-message-util "^24.5.0" - jest-runtime "^24.5.0" - jest-snapshot "^24.5.0" - jest-util "^24.5.0" - pretty-format "^24.5.0" + jest-each "^24.7.1" + jest-matcher-utils "^24.7.0" + jest-message-util "^24.7.1" + jest-runtime "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" + pretty-format "^24.7.0" throat "^4.0.0" -jest-leak-detector@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.5.0.tgz#21ae2b3b0da252c1171cd494f75696d65fb6fa89" - integrity sha512-LZKBjGovFRx3cRBkqmIg+BZnxbrLqhQl09IziMk3oeh1OV81Hg30RUIx885mq8qBv1PA0comB9bjKcuyNO1bCQ== +jest-leak-detector@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.7.0.tgz#323ff93ed69be12e898f5b040952f08a94288ff9" + integrity sha512-zV0qHKZGXtmPVVzT99CVEcHE9XDf+8LwiE0Ob7jjezERiGVljmqKFWpV2IkG+rkFIEUHFEkMiICu7wnoPM/RoQ== dependencies: - pretty-format "^24.5.0" + pretty-format "^24.7.0" -jest-matcher-utils@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.5.0.tgz#5995549dcf09fa94406e89526e877b094dad8770" - integrity sha512-QM1nmLROjLj8GMGzg5VBra3I9hLpjMPtF1YqzQS3rvWn2ltGZLrGAO1KQ9zUCVi5aCvrkbS5Ndm2evIP9yZg1Q== +jest-matcher-utils@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.7.0.tgz#bbee1ff37bc8b2e4afcaabc91617c1526af4bcd4" + integrity sha512-158ieSgk3LNXeUhbVJYRXyTPSCqNgVXOp/GT7O94mYd3pk/8+odKTyR1JLtNOQSPzNi8NFYVONtvSWA/e1RDXg== dependencies: chalk "^2.0.1" - jest-diff "^24.5.0" + jest-diff "^24.7.0" jest-get-type "^24.3.0" - pretty-format "^24.5.0" + pretty-format "^24.7.0" -jest-message-util@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.5.0.tgz#181420a65a7ef2e8b5c2f8e14882c453c6d41d07" - integrity sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ== +jest-message-util@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.7.1.tgz#f1dc3a6c195647096a99d0f1dadbc447ae547018" + integrity sha512-dk0gqVtyqezCHbcbk60CdIf+8UHgD+lmRHifeH3JRcnAqh4nEyPytSc9/L1+cQyxC+ceaeP696N4ATe7L+omcg== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.5.0" - "@jest/types" "^24.5.0" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" "@types/stack-utils" "^1.0.1" chalk "^2.0.1" micromatch "^3.1.10" slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.5.0.tgz#976912c99a93f2a1c67497a9414aa4d9da4c7b76" - integrity sha512-ZnAtkWrKf48eERgAOiUxVoFavVBziO2pAi2MfZ1+bGXVkDfxWLxU0//oJBkgwbsv6OAmuLBz4XFFqvCFMqnGUw== +jest-mock@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.7.0.tgz#e49ce7262c12d7f5897b0d8af77f6db8e538023b" + integrity sha512-6taW4B4WUcEiT2V9BbOmwyGuwuAFT2G8yghF7nyNW1/2gq5+6aTqSPcS9lS6ArvEkX55vbPAS/Jarx5LSm4Fng== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" jest-pnp-resolver@^1.2.1: version "1.2.1" @@ -6121,75 +6153,75 @@ jest-regex-util@^24.3.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== -jest-resolve-dependencies@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.5.0.tgz#1a0dae9cdd41349ca4a84148b3e78da2ba33fd4b" - integrity sha512-dRVM1D+gWrFfrq2vlL5P9P/i8kB4BOYqYf3S7xczZ+A6PC3SgXYSErX/ScW/469pWMboM1uAhgLF+39nXlirCQ== +jest-resolve-dependencies@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.1.tgz#cf93bbef26999488a96a2b2012f9fe7375aa378f" + integrity sha512-2Eyh5LJB2liNzfk4eo7bD1ZyBbqEJIyyrFtZG555cSWW9xVHxII2NuOkSl1yUYTAYCAmM2f2aIT5A7HzNmubyg== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" jest-regex-util "^24.3.0" - jest-snapshot "^24.5.0" + jest-snapshot "^24.7.1" -jest-resolve@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.5.0.tgz#8c16ba08f60a1616c3b1cd7afb24574f50a24d04" - integrity sha512-ZIfGqLX1Rg8xJpQqNjdoO8MuxHV1q/i2OO1hLXjgCWFWs5bsedS8UrOdgjUqqNae6DXA+pCyRmdcB7lQEEbXew== +jest-resolve@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.7.1.tgz#e4150198299298380a75a9fd55043fa3b9b17fde" + integrity sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" browser-resolve "^1.11.3" chalk "^2.0.1" jest-pnp-resolver "^1.2.1" realpath-native "^1.1.0" -jest-runner@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.5.0.tgz#9be26ece4fd4ab3dfb528b887523144b7c5ffca8" - integrity sha512-oqsiS9TkIZV5dVkD+GmbNfWBRPIvxqmlTQ+AQUJUQ07n+4xTSDc40r+aKBynHw9/tLzafC00DIbJjB2cOZdvMA== +jest-runner@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.7.1.tgz#41c8a02a06aa23ea82d8bffd69d7fa98d32f85bf" + integrity sha512-aNFc9liWU/xt+G9pobdKZ4qTeG/wnJrJna3VqunziDNsWT3EBpmxXZRBMKCsNMyfy+A/XHiV+tsMLufdsNdgCw== dependencies: - "@jest/console" "^24.3.0" - "@jest/environment" "^24.5.0" - "@jest/test-result" "^24.5.0" - "@jest/types" "^24.5.0" + "@jest/console" "^24.7.1" + "@jest/environment" "^24.7.1" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" chalk "^2.4.2" exit "^0.1.2" graceful-fs "^4.1.15" - jest-config "^24.5.0" + jest-config "^24.7.1" jest-docblock "^24.3.0" - jest-haste-map "^24.5.0" - jest-jasmine2 "^24.5.0" - jest-leak-detector "^24.5.0" - jest-message-util "^24.5.0" - jest-resolve "^24.5.0" - jest-runtime "^24.5.0" - jest-util "^24.5.0" - jest-worker "^24.4.0" + jest-haste-map "^24.7.1" + jest-jasmine2 "^24.7.1" + jest-leak-detector "^24.7.0" + jest-message-util "^24.7.1" + jest-resolve "^24.7.1" + jest-runtime "^24.7.1" + jest-util "^24.7.1" + jest-worker "^24.6.0" source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.5.0.tgz#3a76e0bfef4db3896d5116e9e518be47ba771aa2" - integrity sha512-GTFHzfLdwpaeoDPilNpBrorlPoNZuZrwKKzKJs09vWwHo+9TOsIIuszK8cWOuKC7ss07aN1922Ge8fsGdsqCuw== +jest-runtime@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.7.1.tgz#2ffd70b22dd03a5988c0ab9465c85cdf5d25c597" + integrity sha512-0VAbyBy7tll3R+82IPJpf6QZkokzXPIS71aDeqh+WzPRXRCNz6StQ45otFariPdJ4FmXpDiArdhZrzNAC3sj6A== dependencies: - "@jest/console" "^24.3.0" - "@jest/environment" "^24.5.0" + "@jest/console" "^24.7.1" + "@jest/environment" "^24.7.1" "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.5.0" - "@jest/types" "^24.5.0" + "@jest/transform" "^24.7.1" + "@jest/types" "^24.7.0" "@types/yargs" "^12.0.2" chalk "^2.0.1" exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.1.15" - jest-config "^24.5.0" - jest-haste-map "^24.5.0" - jest-message-util "^24.5.0" - jest-mock "^24.5.0" + jest-config "^24.7.1" + jest-haste-map "^24.7.1" + jest-message-util "^24.7.1" + jest-mock "^24.7.0" jest-regex-util "^24.3.0" - jest-resolve "^24.5.0" - jest-snapshot "^24.5.0" - jest-util "^24.5.0" - jest-validate "^24.5.0" + jest-resolve "^24.7.1" + jest-snapshot "^24.7.1" + jest-util "^24.7.1" + jest-validate "^24.7.0" realpath-native "^1.1.0" slash "^2.0.0" strip-bom "^3.0.0" @@ -6200,35 +6232,34 @@ jest-serializer@^24.4.0: resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== -jest-snapshot@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.5.0.tgz#e5d224468a759fd19e36f01217aac912f500f779" - integrity sha512-eBEeJb5ROk0NcpodmSKnCVgMOo+Qsu5z9EDl3tGffwPzK1yV37mjGWF2YeIz1NkntgTzP+fUL4s09a0+0dpVWA== +jest-snapshot@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.7.1.tgz#bd5a35f74aedff070975e9e9c90024f082099568" + integrity sha512-8Xk5O4p+JsZZn4RCNUS3pxA+ORKpEKepE+a5ejIKrId9CwrVN0NY+vkqEkXqlstA5NMBkNahXkR/4qEBy0t5yA== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" chalk "^2.0.1" - expect "^24.5.0" - jest-diff "^24.5.0" - jest-matcher-utils "^24.5.0" - jest-message-util "^24.5.0" - jest-resolve "^24.5.0" + expect "^24.7.1" + jest-diff "^24.7.0" + jest-matcher-utils "^24.7.0" + jest-message-util "^24.7.1" + jest-resolve "^24.7.1" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^24.5.0" + pretty-format "^24.7.0" semver "^5.5.0" -jest-util@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.5.0.tgz#9d9cb06d9dcccc8e7cc76df91b1635025d7baa84" - integrity sha512-Xy8JsD0jvBz85K7VsTIQDuY44s+hYJyppAhcsHsOsGisVtdhar6fajf2UOf2mEVEgh15ZSdA0zkCuheN8cbr1Q== +jest-util@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.7.1.tgz#b4043df57b32a23be27c75a2763d8faf242038ff" + integrity sha512-/KilOue2n2rZ5AnEBYoxOXkeTu6vi7cjgQ8MXEkih0oeAXT6JkS3fr7/j8+engCjciOU1Nq5loMSKe0A1oeX0A== dependencies: - "@jest/console" "^24.3.0" - "@jest/fake-timers" "^24.5.0" + "@jest/console" "^24.7.1" + "@jest/fake-timers" "^24.7.1" "@jest/source-map" "^24.3.0" - "@jest/test-result" "^24.5.0" - "@jest/types" "^24.5.0" - "@types/node" "*" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" callsites "^3.0.0" chalk "^2.0.1" graceful-fs "^4.1.15" @@ -6237,30 +6268,29 @@ jest-util@^24.5.0: slash "^2.0.0" source-map "^0.6.0" -jest-validate@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.5.0.tgz#62fd93d81214c070bb2d7a55f329a79d8057c7de" - integrity sha512-gg0dYszxjgK2o11unSIJhkOFZqNRQbWOAB2/LOUdsd2LfD9oXiMeuee8XsT0iRy5EvSccBgB4h/9HRbIo3MHgQ== +jest-validate@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.7.0.tgz#70007076f338528ee1b1c8a8258b1b0bb982508d" + integrity sha512-cgai/gts9B2chz1rqVdmLhzYxQbgQurh1PEQSvSgPZ8KGa1AqXsqC45W5wKEwzxKrWqypuQrQxnF4+G9VejJJA== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" camelcase "^5.0.0" chalk "^2.0.1" jest-get-type "^24.3.0" leven "^2.1.0" - pretty-format "^24.5.0" + pretty-format "^24.7.0" -jest-watcher@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.5.0.tgz#da7bd9cb5967e274889b42078c8f501ae1c47761" - integrity sha512-/hCpgR6bg0nKvD3nv4KasdTxuhwfViVMHUATJlnGCD0r1QrmIssimPbmc5KfAQblAVxkD8xrzuij9vfPUk1/rA== +jest-watcher@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.7.1.tgz#e161363d7f3f4e1ef3d389b7b3a0aad247b673f5" + integrity sha512-Wd6TepHLRHVKLNPacEsBwlp9raeBIO+01xrN24Dek4ggTS8HHnOzYSFnvp+6MtkkJ3KfMzy220KTi95e2rRkrw== dependencies: - "@jest/test-result" "^24.5.0" - "@jest/types" "^24.5.0" - "@types/node" "*" + "@jest/test-result" "^24.7.1" + "@jest/types" "^24.7.0" "@types/yargs" "^12.0.9" ansi-escapes "^3.0.0" chalk "^2.0.1" - jest-util "^24.5.0" + jest-util "^24.7.1" string-length "^2.0.0" jest-worker@^24.0.0: @@ -6271,22 +6301,21 @@ jest-worker@^24.0.0: merge-stream "^1.0.1" supports-color "^6.1.0" -jest-worker@^24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.4.0.tgz#fbc452b0120bb5c2a70cdc88fa132b48eeb11dd0" - integrity sha512-BH9X/klG9vxwoO99ZBUbZFfV8qO0XNZ5SIiCyYK2zOuJBl6YJVAeNIQjcoOVNu4HGEHeYEKsUWws8kSlSbZ9YQ== +jest-worker@^24.6.0: + version "24.6.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" + integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== dependencies: - "@types/node" "*" merge-stream "^1.0.1" supports-color "^6.1.0" -jest@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.5.0.tgz#38f11ae2c2baa2f86c2bc4d8a91d2b51612cd19a" - integrity sha512-lxL+Fq5/RH7inxxmfS2aZLCf8MsS+YCUBfeiNO6BWz/MmjhDGaIEA/2bzEf9q4Q0X+mtFHiinHFvQ0u+RvW/qQ== +jest@^24.7.1: + version "24.7.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.7.1.tgz#0d94331cf510c75893ee32f87d7321d5bf8f2501" + integrity sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA== dependencies: import-local "^2.0.0" - jest-cli "^24.5.0" + jest-cli "^24.7.1" "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -6297,7 +6326,15 @@ js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@3.12.0, js-yaml@3.x, js-yaml@^3.7.0: +js-yaml@3.13.1, js-yaml@^3.13.0: + 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.x: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: @@ -6349,10 +6386,10 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsdom@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.0.0.tgz#c7f1441ebcc57902d08d5fb2f6ba2baf746da7c6" - integrity sha512-/VkyPmdtbwqpJSkwDx3YyJ3U1oawYNB/h5z8vTUZGAzjtu2OHTeFRfnJqyMHsJ5Cyes23trOmvUpM1GfHH1leA== +jsdom@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.0.0.tgz#60cf177d79c7fa1a498453c9e2534f57e65d151f" + integrity sha512-rJnHm7CHyIj4tDyz9VaCt0f0P0nEh/wEmMfwp9mMixy+L/r8OW/BNcgmIlfZuBBnVQS3eRBpvd/qM3R7vr7e3A== dependencies: abab "^2.0.0" acorn "^6.0.4" @@ -6364,16 +6401,16 @@ jsdom@^14.0.0: domexception "^1.0.1" escodegen "^1.11.0" html-encoding-sniffer "^1.0.2" - nwsapi "^2.0.9" + nwsapi "^2.1.3" parse5 "5.1.0" pn "^1.1.0" request "^2.88.0" request-promise-native "^1.0.5" - saxes "^3.1.5" + saxes "^3.1.9" symbol-tree "^3.2.2" tough-cookie "^2.5.0" w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.0.1" + w3c-xmlserializer "^1.1.2" webidl-conversions "^4.0.2" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" @@ -6652,10 +6689,10 @@ karma-typescript@^4.0.0: util "^0.11.1" vm-browserify "1.1.0" -karma@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.1.tgz#2581d6caa0d4cd28b65131561b47bad6d5478773" - integrity sha512-ind+4s03BqIXas7ZmraV3/kc5+mnqwCd+VDX1FndS6jxbt03kQKX2vXrWxNLuCjVYmhMwOZosAEKMM0a2q7w7A== +karma@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-4.1.0.tgz#d07387c9743a575b40faf73e8a3eb5421c2193e1" + integrity sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" @@ -6750,26 +6787,26 @@ left-pad@^1.3.0: resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== -lerna@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.13.1.tgz#feaff562176f304bd82329ca29ce46ab6c033463" - integrity sha512-7kSz8LLozVsoUNTJzJzy+b8TnV9YdviR2Ee2PwGZSlVw3T1Rn7kOAPZjEi+3IWnOPC96zMPHVmjCmzQ4uubalw== +lerna@3.13.4: + version "3.13.4" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.13.4.tgz#03026c11c5643f341fda42e4fb1882e2df35e6cb" + integrity sha512-qTp22nlpcgVrJGZuD7oHnFbTk72j2USFimc2Pj4kC0/rXmcU2xPtCiyuxLl8y6/6Lj5g9kwEuvKDZtSXujjX/A== dependencies: - "@lerna/add" "3.13.1" - "@lerna/bootstrap" "3.13.1" - "@lerna/changed" "3.13.1" - "@lerna/clean" "3.13.1" + "@lerna/add" "3.13.3" + "@lerna/bootstrap" "3.13.3" + "@lerna/changed" "3.13.4" + "@lerna/clean" "3.13.3" "@lerna/cli" "3.13.0" - "@lerna/create" "3.13.1" - "@lerna/diff" "3.13.1" - "@lerna/exec" "3.13.1" - "@lerna/import" "3.13.1" - "@lerna/init" "3.13.1" - "@lerna/link" "3.13.1" - "@lerna/list" "3.13.1" - "@lerna/publish" "3.13.1" - "@lerna/run" "3.13.1" - "@lerna/version" "3.13.1" + "@lerna/create" "3.13.3" + "@lerna/diff" "3.13.3" + "@lerna/exec" "3.13.3" + "@lerna/import" "3.13.4" + "@lerna/init" "3.13.3" + "@lerna/link" "3.13.3" + "@lerna/list" "3.13.3" + "@lerna/publish" "3.13.4" + "@lerna/run" "3.13.3" + "@lerna/version" "3.13.4" import-local "^1.0.0" npmlog "^4.1.2" @@ -6931,6 +6968,11 @@ lodash.keys@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" integrity sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU= +lodash.mapvalues@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -7000,10 +7042,10 @@ lolex@^2.3.2: version "2.7.5" resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733" -lolex@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-3.1.0.tgz#1a7feb2fefd75b3e3a7f79f0e110d9476e294434" - integrity sha512-zFo5MgCJ0rZ7gQg69S4pqBsLURbFw11X68C18OcJjJQbqaXm2NoTrGl1IMM3TIz0/BnN1tIs2tzmmqvCsOMMjw== +lolex@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.0.1.tgz#4a99c2251579d693c6a083446dae0e5c3844d3fa" + integrity sha512-UHuOBZ5jjsKuzbB/gRNNW8Vg8f00Emgskdq2kvZxgBJCS0aqquAuXai/SkWORlKeZEiNQWZjFZOqIUcH9LqKCw== longest@^1.0.1: version "1.0.1" @@ -7067,6 +7109,13 @@ magic-string@^0.19.0: dependencies: vlq "^0.2.1" +magic-string@^0.25.2: + version "0.25.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" + integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== + dependencies: + sourcemap-codec "^1.4.4" + make-dir@^1.0.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -7268,7 +7317,7 @@ micro@7.3.3: raw-body "2.2.0" update-notifier "2.1.0" -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -7346,6 +7395,11 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== +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== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -7427,33 +7481,33 @@ mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@ dependencies: minimist "0.0.8" -mocha@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.0.2.tgz#cdc1a6fdf66472c079b5605bac59d29807702d2c" - integrity sha512-RtTJsmmToGyeTznSOMoM6TPEk1A84FQaHIciKrRqARZx+B5ccJ5tXlmJzEKGBxZdqk9UjpRsesZTUkZmR5YnuQ== +mocha@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-6.1.4.tgz#e35fada242d5434a7e163d555c705f6875951640" + integrity sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg== dependencies: ansi-colors "3.2.3" browser-stdout "1.3.1" debug "3.2.6" diff "3.5.0" escape-string-regexp "1.0.5" - findup-sync "2.0.0" + find-up "3.0.0" glob "7.1.3" growl "1.10.5" he "1.2.0" - js-yaml "3.12.0" + js-yaml "3.13.1" log-symbols "2.2.0" minimatch "3.0.4" mkdirp "0.5.1" ms "2.1.1" - node-environment-flags "1.0.4" + node-environment-flags "1.0.5" object.assign "4.1.0" strip-json-comments "2.0.1" supports-color "6.0.0" which "1.3.1" wide-align "1.1.3" - yargs "12.0.5" - yargs-parser "11.1.1" + yargs "13.2.2" + yargs-parser "13.0.0" yargs-unparser "1.5.0" mock-require@^3.0.2: @@ -7581,12 +7635,13 @@ node-cleanup@^2.1.2: resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" integrity sha1-esGavSl+Caf3KnFUXZUbUX5N3iw= -node-environment-flags@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.4.tgz#0b784a6551426bfc16d3b2208424dcbc2b2ff038" - integrity sha512-M9rwCnWVLW7PX+NUWe3ejEdiLYinRpsEre9hMkU/6NS4h+EEulYaDH1gCEZ2gyXsmw+RXYDaV2JkkTNcsPDJ0Q== +node-environment-flags@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.5.tgz#fa930275f5bf5dae188d6192b24b4c8bbac3d76a" + integrity sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== dependencies: object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" node-fetch-npm@^2.0.2: version "2.0.2" @@ -7846,11 +7901,16 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7, nwsapi@^2.0.9: +nwsapi@^2.0.7: version "2.1.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.0.tgz#781065940aed90d9bb01ca5d0ce0fcf81c32712f" integrity sha512-ZG3bLAvdHmhIjaQ/Db1qvBxsGvFMLIRpQszyqbg31VJ53UP++uZX1/gf3Ut96pdwN9AuDwlMqIYLm0UPCdUeHg== +nwsapi@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.3.tgz#25f3a5cec26c654f7376df6659cdf84b99df9558" + integrity sha512-RowAaJGEgYXEZfQ7tvvdtAQUKPyTR6T6wNu0fwlNsGQYr/h3yQc6oI8WnVZh3Y/Sylwc+dtAlvPqfFZjhTyk3A== + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" @@ -7940,10 +8000,12 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" -opentracing@0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.3.tgz#23e3ad029fa66a653926adbe57e834469f8550aa" - integrity sha1-I+OtAp+mamU5Jq2+V+g0Rp+FUKo= +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" opn@5.1.0: version "5.1.0" @@ -8402,7 +8464,7 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.0: +pify@^4.0.0, pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -8485,17 +8547,17 @@ prettier-check@^2.0.0: dependencies: execa "^0.6.0" -prettier@^1.14.0, prettier@^1.16.4: - version "1.16.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717" - integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g== +prettier@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.0.tgz#53b303676eed22cc14a9f0cec09b477b3026c008" + integrity sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw== -pretty-format@^24.5.0: - version "24.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.5.0.tgz#cc69a0281a62cd7242633fc135d6930cd889822d" - integrity sha512-/3RuSghukCf8Riu5Ncve0iI+BzVkbRU5EeUoArKARZobREycuH5O4waxvaNIloEXdb0qwgmEAed5vTpX1HNROQ== +pretty-format@^24.7.0: + version "24.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.7.0.tgz#d23106bc2edcd776079c2daa5da02bcb12ed0c10" + integrity sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA== dependencies: - "@jest/types" "^24.5.0" + "@jest/types" "^24.7.0" ansi-regex "^4.0.0" ansi-styles "^3.2.0" react-is "^16.8.4" @@ -8985,10 +9047,10 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -replace-in-file@^3.4.4: - version "3.4.4" - resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-3.4.4.tgz#2c2b95a493dc4f6161c2bcd29a661be16d03d323" - integrity sha512-ehq0dFsxSpfPiPLBU5kli38Ud8bZL0CQKG8WQVbvhmyilXaMJ8y4LtDZs/K3MD8C0+rHbsfW8c9r2bUEy0B/6Q== +replace-in-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-4.0.0.tgz#824c04b453f8eaa617aa47f133e99dcbc8b19368" + integrity sha512-qbKJSOYMVSRzd10d0dOsGZoKQFMV17c2Vns9HH64pAYuPQO4xyDvwUOro2wYOk4kkerooTKbPSD6ETSdlHspuQ== dependencies: chalk "^2.4.2" glob "^7.1.3" @@ -9066,14 +9128,6 @@ resolve-cwd@^2.0.0: dependencies: resolve-from "^3.0.0" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -9167,15 +9221,15 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-commonjs@^9.2.1: - version "9.2.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.1.tgz#bb151ca8fa23600c7a03e25f9f0a45b1ee922dac" - integrity sha512-X0A/Cp/t+zbONFinBhiTZrfuUaVwRIp4xsbKq/2ohA2CDULa/7ONSJTelqxon+Vds2R2t2qJTqJQucKUC8GKkw== +rollup-plugin-commonjs@^9.3.4: + version "9.3.4" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.3.4.tgz#2b3dddbbbded83d45c36ff101cdd29e924fd23bc" + integrity sha512-DTZOvRoiVIHHLFBCL4pFxOaJt8pagxsVldEXBOn6wl3/V21wVaj17HFfyzTsQUuou3sZL3lEJZVWKPFblJfI6w== dependencies: - estree-walker "^0.5.2" - magic-string "^0.25.1" + estree-walker "^0.6.0" + magic-string "^0.25.2" resolve "^1.10.0" - rollup-pluginutils "^2.3.3" + rollup-pluginutils "^2.6.0" rollup-plugin-license@^0.8.1: version "0.8.1" @@ -9188,12 +9242,13 @@ rollup-plugin-license@^0.8.1: mkdirp "0.5.1" moment "2.23.0" -rollup-plugin-node-resolve@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.1.tgz#f95765d174e5daeef9ea6268566141f53aa9d422" - integrity sha512-fSS7YDuCe0gYqKsr5OvxMloeZYUSgN43Ypi1WeRZzQcWtHgFayV5tUSPYpxuaioIIWaBXl6NrVk0T2/sKwueLg== +rollup-plugin-node-resolve@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.3.tgz#638a373a54287d19fcc088fdd1c6fd8a58e4d90a" + integrity sha512-r+WaesPzdGEynpLZLALFEDugA4ACa5zn7bc/+LVX4vAXQQ8IgDHv0xfsSvJ8tDXUtprfBtrDtRFg27ifKjcJTg== dependencies: - builtin-modules "^3.0.0" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" is-module "^1.0.0" resolve "^1.10.0" @@ -9207,17 +9262,17 @@ rollup-plugin-terser@^4.0.4: serialize-javascript "^1.6.1" terser "^3.14.1" -rollup-plugin-typescript2@^0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.20.1.tgz#fb1d411975cd875d24882ea66f5f4fd11d2f2240" - integrity sha512-uxA5JQNOfmJ9rsO0yJKTObb1t4nNYUexCg9zxhEKF+NzZwljYWdfgrA06UzA24cOk8fQjGEe7Q5+Vge2vFlnnw== +rollup-plugin-typescript2@^0.21.0: + version "0.21.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.21.0.tgz#cc61ed756ac6e68cb3c03f7ee78001346243ed54" + integrity sha512-fbUAc2bvWxRrg1GGMYCFVf6aSxq3zvWn0sY2ubzFW9shJNT95ztFbM6GHO4/2rDSCjier7IswQnbr1ySqoLNPw== dependencies: fs-extra "7.0.1" resolve "1.10.0" rollup-pluginutils "2.4.1" tslib "1.9.3" -rollup-pluginutils@2.4.1, rollup-pluginutils@^2.3.3: +rollup-pluginutils@2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.4.1.tgz#de43ab54965bbf47843599a7f3adceb723de38db" integrity sha512-wesMQ9/172IJDIW/lYWm0vW0LiKe5Ekjws481R7z9WTRtmO59cqyM/2uUlxvf6yzm/fElFmHUobeQOYz46dZJw== @@ -9225,13 +9280,21 @@ rollup-pluginutils@2.4.1, rollup-pluginutils@^2.3.3: estree-walker "^0.6.0" micromatch "^3.1.10" -rollup@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.6.0.tgz#4329f4634718197c678d18491724d50d8b7ee76c" - integrity sha512-qu9iWyuiOxAuBM8cAwLuqPclYdarIpayrkfQB7aTGTiyYPbvx+qVF33sIznfq4bxZCiytQux/FvZieUBAXivCw== +rollup-pluginutils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.6.0.tgz#203706edd43dfafeaebc355d7351119402fc83ad" + integrity sha512-aGQwspEF8oPKvg37u3p7h0cYNwmJR1sCBMZGZ5b9qy8HGtETknqjzcxrDRrcAnJNXN18lBH4Q9vZYth/p4n8jQ== + dependencies: + estree-walker "^0.6.0" + micromatch "^3.1.10" + +rollup@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.10.1.tgz#aeb763bbe98f707dc6496708db88372fa66687e7" + integrity sha512-pW353tmBE7QP622ITkGxtqF0d5gSRCVPD9xqM+fcPjudeZfoXMFW2sCzsTe2TU/zU1xamIjiS9xuFCPVT9fESw== dependencies: "@types/estree" "0.0.39" - "@types/node" "^11.9.5" + "@types/node" "^11.13.5" acorn "^6.1.1" rsvp@^3.3.3: @@ -9313,10 +9376,10 @@ sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" -saxes@^3.1.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.6.tgz#2d948a47b54918516c5a64096f08865deb5bd8cd" - integrity sha512-LAYs+lChg1v5uKNzPtsgTxSS5hLo8aIhSMCJt1WMpefAxm3D1RTpMwSpb6ebdL31cubiLTnhokVktBW+cv9Y9w== +saxes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.9.tgz#c1c197cd54956d88c09f960254b999e192d7058b" + integrity sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw== dependencies: xmlchars "^1.3.1" @@ -9349,6 +9412,11 @@ semver-diff@^2.0.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" +semver@^5.7.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -9515,16 +9583,16 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -sinon@^7.2.7: - version "7.2.7" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.2.7.tgz#ee90f83ce87d9a6bac42cf32a3103d8c8b1bfb68" - integrity sha512-rlrre9F80pIQr3M36gOdoCEWzFAMDgHYD8+tocqOw+Zw9OZ8F84a80Ds69eZfcjnzDqqG88ulFld0oin/6rG/g== +sinon@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.3.2.tgz#82dba3a6d85f6d2181e1eca2c10d8657c2161f28" + integrity sha512-thErC1z64BeyGiPvF8aoSg0LEnptSaWE7YhdWWbWXgelOyThent7uKOnnEh9zBxDbKixtr5dEko+ws1sZMuFMA== dependencies: - "@sinonjs/commons" "^1.3.1" + "@sinonjs/commons" "^1.4.0" "@sinonjs/formatio" "^3.2.1" - "@sinonjs/samsam" "^3.2.0" + "@sinonjs/samsam" "^3.3.1" diff "^3.5.0" - lolex "^3.1.0" + lolex "^4.0.1" nise "^1.4.10" supports-color "^5.5.0" @@ -9723,7 +9791,7 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -sourcemap-codec@^1.4.1: +sourcemap-codec@^1.4.1, sourcemap-codec@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" @@ -10336,10 +10404,10 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= -ts-jest@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.0.tgz#3f26bf2ec1fa584863a5a9c29bd8717d549efbf6" - integrity sha512-o8BO3TkMREpAATaFTrXkovMsCpBl2z4NDBoLJuWZcJJj1ijI49UnvDMfVpj+iogn/Jl8Pbhuei5nc/Ti+frEHw== +ts-jest@^24.0.2: + version "24.0.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-24.0.2.tgz#8dde6cece97c31c03e80e474c749753ffd27194d" + integrity sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -10369,18 +10437,18 @@ tslint-consistent-codestyle@^1.15.1: tslib "^1.7.1" tsutils "^2.29.0" -tslint@^5.14.0: - version "5.14.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.14.0.tgz#be62637135ac244fc9b37ed6ea5252c9eba1616e" - integrity sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ== +tslint@^5.16.0: + version "5.16.0" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.16.0.tgz#ae61f9c5a98d295b9a4f4553b1b1e831c1984d67" + integrity sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA== 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" glob "^7.1.1" - js-yaml "^3.7.0" + js-yaml "^3.13.0" minimatch "^3.0.4" mkdirp "^0.5.1" resolve "^1.3.2" @@ -10487,10 +10555,10 @@ typescript@3.2.x: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" integrity sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg== -typescript@^3.3.3333: - version "3.3.3333" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3333.tgz#171b2c5af66c59e9431199117a3bcadc66fdcfd6" - integrity sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw== +typescript@^3.4.5: + version "3.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.4.5.tgz#2d2618d10bb566572b8d7aad5180d84257d70a99" + integrity sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw== uglify-js@^2.6: version "2.8.29" @@ -10793,16 +10861,16 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -w3c-xmlserializer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.0.1.tgz#054cdcd359dc5d1f3ec9be4e272c756af4b21d39" - integrity sha512-XZGI1OH/OLQr/NaJhhPmzhngwcAnZDLytsvXnRmlYeRkmbb0I7sqFFA22erq4WQR0sUu17ZSQOAV9mFwCqKRNg== +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== dependencies: domexception "^1.0.1" webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" -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" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= @@ -10835,10 +10903,10 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.29.6: - version "4.29.6" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.6.tgz#66bf0ec8beee4d469f8b598d3988ff9d8d90e955" - integrity sha512-MwBwpiE1BQpMDkbnUUaW6K8RFZjljJHArC6tWQJoFm0oQtfoSebtg4Y7/QHnJ/SddtjYLHaKGX64CFjG5rehJw== +webpack@^4.30.0: + version "4.30.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.30.0.tgz#aca76ef75630a22c49fcc235b39b4c57591d33a9" + integrity sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -10898,7 +10966,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@1.3.1, which@^1.1.1, which@^1.2.1, which@^1.2.14, which@^1.2.8, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@1, which@1.3.1, which@^1.1.1, which@^1.2.1, which@^1.2.8, 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: @@ -11091,18 +11159,18 @@ yargs-parser@10.x: dependencies: camelcase "^4.1.0" -yargs-parser@11.1.1, yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== +yargs-parser@13.0.0, yargs-parser@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" + integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.0.0.tgz#3fc44f3e76a8bdb1cc3602e860108602e5ccde8b" - integrity sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -11123,22 +11191,22 @@ yargs-unparser@1.5.0: lodash "^4.17.11" yargs "^12.0.5" -yargs@12.0.5, yargs@^12.0.1, yargs@^12.0.2, yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" +yargs@13.2.2, yargs@^13.2.2: + version "13.2.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" + integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== dependencies: cliui "^4.0.0" - decamelize "^1.2.0" find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" require-directory "^2.1.1" - require-main-filename "^1.0.1" + require-main-filename "^2.0.0" set-blocking "^2.0.0" - string-width "^2.0.0" + string-width "^3.0.0" which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + y18n "^4.0.0" + yargs-parser "^13.0.0" yargs@^11.0.0: version "11.1.0" @@ -11158,22 +11226,22 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^13.2.2: - version "13.2.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.2.tgz#0c101f580ae95cea7f39d927e7770e3fdc97f993" - integrity sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== +yargs@^12.0.1, yargs@^12.0.2, yargs@^12.0.5: + version "12.0.5" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" dependencies: cliui "^4.0.0" + decamelize "^1.2.0" find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" require-directory "^2.1.1" - require-main-filename "^2.0.0" + require-main-filename "^1.0.1" set-blocking "^2.0.0" - string-width "^3.0.0" + string-width "^2.0.0" which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" yargs@~3.10.0: version "3.10.0"