From 2c74fc5a8f3c910d335ceebf16e6f4e3bda3035d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 31 Jan 2019 12:24:47 +0100 Subject: [PATCH 1/9] fix: Events created from exception shouldnt have top-level message attribute (#1831) --- CHANGELOG.md | 16 +++++++++++++++- packages/node/src/parsers.ts | 2 -- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index abb994eb19b7..1479f0dffbf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,20 @@ # Changelog -## Unreleased +## v5 + +### Migration from v4 + +This major bump brings a lot of internal improvements. If you were using the SDK without any special abilities, +basically, the way we describe it in the docs, you should be fine by just updating it. This is a **breaking** release +since we removed some methods from the public API and removed some classes from the default export. + +- **breaking** [node] fix: Events created from exception shouldn't have top-level message attribute +- [utils] ref: Update wrap method to hide internal sentry flags +- [utils] fix: Make internal Sentry flags non-enumerable in fill util +- [utils] ref: Move `SentryError` + `PromiseBuffer` to utils +- **breaking** [core] ref: Use `SyncPromise` internally, this reduces memory pressure by a lot. +- **breaking** [browser] ref: Removed `BrowserBackend` from default export. +- **breaking** [node] ref: Removed `BrowserBackend` from default export. ## 4.6.3 diff --git a/packages/node/src/parsers.ts b/packages/node/src/parsers.ts index 9dd135bef2d2..da112a6025ce 100644 --- a/packages/node/src/parsers.ts +++ b/packages/node/src/parsers.ts @@ -235,13 +235,11 @@ export async function getExceptionFromError(error: Error, options?: NodeOptions) /** JSDoc */ export async function parseError(error: ExtendedError, options?: NodeOptions): Promise { - const name = error.name || error.constructor.name; const exception = await getExceptionFromError(error, options); return { exception: { values: [exception], }, - message: `${name}: ${error.message || ''}`, }; } From 0d0594ac0952b7ae1796e8333f71cdcf6200d588 Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Fri, 8 Feb 2019 14:19:40 +0100 Subject: [PATCH 2/9] Use SyncPromise internally & Remove deprecated API & Trim Public API (#1858) * ref: Move PromiseBuffer and Error to utils package * ref: Remove all async api * ref: Remove invokeClientAsync function * feat: Finish Node SDK * feat: SyncPromise implementation * fix: Browser SDK * fix: beforeSend callback * fix: Core tests * fix: linting and tests * fix: browser npm package + add error for manual tests * meta: Remove deprecations * fix: Typedocs and public exposed functions * meta: Changelog * Apply suggestions from code review Co-Authored-By: HazAT * fix: CodeReview * feat: https://github.com/getsentry/sentry-javascript/pull/1871 --- packages/browser/rollup.config.js | 2 +- packages/browser/src/backend.ts | 75 +++--- packages/browser/src/client.ts | 3 +- packages/browser/src/index.ts | 2 +- .../browser/src/integrations/breadcrumbs.ts | 4 +- packages/browser/src/integrations/helpers.ts | 16 +- .../browser/src/integrations/linkederrors.ts | 2 +- .../src/integrations/pluggable/ember.ts | 2 +- .../browser/src/integrations/pluggable/vue.ts | 2 +- .../browser/src/integrations/useragent.ts | 2 +- packages/browser/src/parsers.ts | 14 +- packages/browser/src/sdk.ts | 26 +- packages/browser/src/tracekit.ts | 6 + packages/browser/src/transports/base.ts | 4 +- packages/browser/test/backend.test.ts | 28 +- .../test/integrations/linkederrors.test.ts | 83 +++--- packages/browser/test/manual/npm-build.js | 5 +- packages/core/README.md | 2 + packages/core/src/basebackend.ts | 22 +- packages/core/src/baseclient.ts | 249 ++++++++--------- packages/core/src/dsn.ts | 2 +- packages/core/src/index.ts | 2 - packages/core/src/integration.ts | 20 +- packages/core/src/integrations/dedupe.ts | 2 +- .../core/src/integrations/extraerrordata.ts | 2 +- .../core/src/integrations/inboundfilters.ts | 2 +- packages/core/src/integrations/index.ts | 1 - .../core/src/integrations/pluggable/debug.ts | 2 +- .../integrations/pluggable/rewriteframes.ts | 10 +- .../core/src/integrations/sdkinformation.ts | 24 -- packages/core/src/interfaces.ts | 22 +- packages/core/test/lib/base.test.ts | 210 +++++++++------ packages/core/test/lib/dsn.test.ts | 2 +- .../lib/integrations/rewriteframes.test.ts | 22 +- packages/core/test/mocks/backend.ts | 19 +- packages/core/test/mocks/integration.ts | 2 +- packages/hub/package.json | 2 +- packages/hub/src/hub.ts | 29 +- packages/hub/src/index.ts | 2 +- packages/hub/src/interfaces.ts | 10 +- packages/hub/src/scope.ts | 47 +++- packages/hub/test/hub.test.ts | 43 +-- packages/hub/test/scope.test.ts | 131 ++++++--- packages/minimal/package.json | 2 +- packages/node/src/backend.ts | 48 ++-- packages/node/src/client.ts | 3 +- packages/node/src/handlers.ts | 17 +- packages/node/src/index.ts | 5 +- .../node/src/integrations/linkederrors.ts | 34 ++- .../src/integrations/onuncaughtexception.ts | 6 +- .../src/integrations/pluggable/modules.ts | 2 +- .../src/integrations/pluggable/transaction.ts | 4 +- packages/node/src/parsers.ts | 209 ++++++++------- packages/node/src/sdk.ts | 15 +- packages/node/src/transports/base.ts | 9 +- packages/node/src/transports/http.ts | 2 +- packages/node/src/transports/https.ts | 2 +- packages/node/test/index.test.ts | 2 +- .../test/integrations/linkederrors.test.ts | 138 ++++++---- .../test/integrations/transaction.test.ts | 20 +- packages/node/test/parsers.test.ts | 48 ++-- packages/node/test/transports/http.test.ts | 2 +- packages/node/test/transports/https.test.ts | 2 +- packages/types/src/index.ts | 9 +- packages/typescript/tslint.json | 14 +- packages/utils/package.json | 2 +- packages/{core => utils}/src/error.ts | 0 packages/utils/src/is.ts | 9 + packages/{core => utils}/src/promisebuffer.ts | 0 packages/utils/src/syncpromise.ts | 161 +++++++++++ packages/utils/test/is.test.ts | 20 +- .../lib => utils/test}/promisebuffer.test.ts | 2 +- packages/utils/test/syncpromise.test.ts | 250 ++++++++++++++++++ 73 files changed, 1418 insertions(+), 776 deletions(-) delete mode 100644 packages/core/src/integrations/sdkinformation.ts rename packages/{core => utils}/src/error.ts (100%) rename packages/{core => utils}/src/promisebuffer.ts (100%) create mode 100644 packages/utils/src/syncpromise.ts rename packages/{core/test/lib => utils/test}/promisebuffer.test.ts (98%) create mode 100644 packages/utils/test/syncpromise.test.ts diff --git a/packages/browser/rollup.config.js b/packages/browser/rollup.config.js index 57d039b440dd..41227d9efdae 100644 --- a/packages/browser/rollup.config.js +++ b/packages/browser/rollup.config.js @@ -66,7 +66,7 @@ export default [ interop: false, sourcemap: true, }, - external: ['@sentry/core', '@sentry/hub', '@sentry/minimal', 'tslib'], + external: ['@sentry/core', '@sentry/hub', '@sentry/minimal'], plugins: [ typescript({ tsconfig: 'tsconfig.build.json', diff --git a/packages/browser/src/backend.ts b/packages/browser/src/backend.ts index 6ffc8c72b070..9720099da19b 100644 --- a/packages/browser/src/backend.ts +++ b/packages/browser/src/backend.ts @@ -1,7 +1,9 @@ -import { BaseBackend, Options, SentryError } from '@sentry/core'; +import { BaseBackend, Options } from '@sentry/core'; import { SentryEvent, SentryEventHint, Severity, Transport } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; import { isDOMError, isDOMException, isError, isErrorEvent, isPlainObject } from '@sentry/utils/is'; import { supportsBeacon, supportsFetch } from '@sentry/utils/supports'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { addExceptionTypeValue, eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers'; import { computeStackTrace } from './tracekit'; import { BeaconTransport, FetchTransport, XHRTransport } from './transports'; @@ -26,7 +28,10 @@ export interface BrowserOptions extends Options { whitelistUrls?: Array; } -/** The Sentry Browser SDK Backend. */ +/** + * The Sentry Browser SDK Backend. + * @hidden + */ export class BrowserBackend extends BaseBackend { /** * @inheritDoc @@ -69,48 +74,60 @@ export class BrowserBackend extends BaseBackend { /** * @inheritDoc */ - public async eventFromException(exception: any, hint?: SentryEventHint): Promise { - let event; + public eventFromException(exception: any, hint?: SentryEventHint): SyncPromise { + let event: SentryEvent; if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error - const ex = exception as ErrorEvent; - exception = ex.error; // tslint:disable-line:no-parameter-reassignment + const errorEvent = exception as ErrorEvent; + exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment event = eventFromStacktrace(computeStackTrace(exception as Error)); + return SyncPromise.resolve(this.buildEvent(event)); } else if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) { // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers) // then we just extract the name and message, as they don't provide anything else // https://developer.mozilla.org/en-US/docs/Web/API/DOMError // https://developer.mozilla.org/en-US/docs/Web/API/DOMException - const ex = exception as DOMException; - const name = ex.name || (isDOMError(ex) ? 'DOMError' : 'DOMException'); - const message = ex.message ? `${name}: ${ex.message}` : name; - - event = await this.eventFromMessage(message, Severity.Error, hint); - addExceptionTypeValue(event, message); + const domException = exception as DOMException; + const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException'); + const message = domException.message ? `${name}: ${domException.message}` : name; + + return this.eventFromMessage(message, Severity.Error, hint).then(messageEvent => { + addExceptionTypeValue(messageEvent, message); + return SyncPromise.resolve(this.buildEvent(messageEvent)); + }); } else if (isError(exception as Error)) { // we have a real Error object, do nothing event = eventFromStacktrace(computeStackTrace(exception as Error)); + return SyncPromise.resolve(this.buildEvent(event)); } else if (isPlainObject(exception as {}) && hint && hint.syntheticException) { // If it is plain Object, serialize it manually and extract options // This will allow us to group events based on top-level keys // which is much better than creating new group when any key/value change - const ex = exception as {}; - event = eventFromPlainObject(ex, hint.syntheticException); + const objectException = exception as {}; + event = eventFromPlainObject(objectException, hint.syntheticException); addExceptionTypeValue(event, 'Custom Object'); - } else { - // If none of previous checks were valid, then it means that - // it's not a DOMError/DOMException - // it's not a plain Object - // it's not a valid ErrorEvent (one with an error property) - // it's not an Error - // So bail out and capture it as a simple message: - const ex = exception as string; - event = await this.eventFromMessage(ex, undefined, hint); - addExceptionTypeValue(event, `${ex}`); + return SyncPromise.resolve(this.buildEvent(event)); } - event = { + // If none of previous checks were valid, then it means that + // it's not a DOMError/DOMException + // it's not a plain Object + // it's not a valid ErrorEvent (one with an error property) + // it's not an Error + // So bail out and capture it as a simple message: + const stringException = exception as string; + return this.eventFromMessage(stringException, undefined, hint).then(messageEvent => { + addExceptionTypeValue(messageEvent, `${stringException}`); + return SyncPromise.resolve(this.buildEvent(messageEvent)); + }); + } + + /** + * This is an internal helper function that creates an event. + */ + private buildEvent(event: SentryEvent, hint?: SentryEventHint): SentryEvent { + return { ...event, event_id: hint && hint.event_id, exception: { @@ -121,18 +138,16 @@ export class BrowserBackend extends BaseBackend { }, }, }; - - return event; } /** * @inheritDoc */ - public async eventFromMessage( + public eventFromMessage( message: string, level: Severity = Severity.Info, hint?: SentryEventHint, - ): Promise { + ): SyncPromise { const event: SentryEvent = { event_id: hint && hint.event_id, level, @@ -147,6 +162,6 @@ export class BrowserBackend extends BaseBackend { }; } - return event; + return SyncPromise.resolve(event); } } diff --git a/packages/browser/src/client.ts b/packages/browser/src/client.ts index 9ec02ca7eceb..77e4f1138168 100644 --- a/packages/browser/src/client.ts +++ b/packages/browser/src/client.ts @@ -2,6 +2,7 @@ import { API, BaseClient, Scope } from '@sentry/core'; import { DsnLike, SentryEvent, SentryEventHint } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; import { getGlobalObject } from '@sentry/utils/misc'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { BrowserBackend, BrowserOptions } from './backend'; import { SDK_NAME, SDK_VERSION } from './version'; @@ -49,7 +50,7 @@ export class BrowserClient extends BaseClient { /** * @inheritDoc */ - protected async prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): Promise { + protected prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): SyncPromise { event.platform = event.platform || 'javascript'; event.sdk = { ...event.sdk, diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index c6a6e2d4d213..7ace8a2bc6c6 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -27,7 +27,7 @@ export { Scope, } from '@sentry/core'; -export { BrowserBackend, BrowserOptions } from './backend'; +export { BrowserOptions } from './backend'; export { BrowserClient, ReportDialogOptions } from './client'; export { defaultIntegrations, forceLoad, init, lastEventId, onLoad, showReportDialog, flush, close } from './sdk'; export { SDK_NAME, SDK_VERSION } from './version'; diff --git a/packages/browser/src/integrations/breadcrumbs.ts b/packages/browser/src/integrations/breadcrumbs.ts index 12d53c1f2ac9..e6e1c56ed7cc 100644 --- a/packages/browser/src/integrations/breadcrumbs.ts +++ b/packages/browser/src/integrations/breadcrumbs.ts @@ -12,7 +12,9 @@ import { breadcrumbEventHandler, keypressEventHandler, wrap } from './helpers'; const global = getGlobalObject() as Window; let lastHref: string | undefined; -/** JSDoc */ +/** + * @hidden + */ export interface SentryWrappedXMLHttpRequest extends XMLHttpRequest { [key: string]: any; __sentry_xhr__?: { diff --git a/packages/browser/src/integrations/helpers.ts b/packages/browser/src/integrations/helpers.ts index 1c39f2429f81..913fc6100990 100644 --- a/packages/browser/src/integrations/helpers.ts +++ b/packages/browser/src/integrations/helpers.ts @@ -9,11 +9,16 @@ let keypressTimeout: number | undefined; let lastCapturedEvent: Event | undefined; let ignoreOnError: number = 0; -/** JSDoc */ +/** + * @hidden + */ export function shouldIgnoreOnError(): boolean { return ignoreOnError > 0; } -/** JSDoc */ + +/** + * @hidden + */ export function ignoreNextOnError(): void { // onerror should trigger before setTimeout ignoreOnError += 1; @@ -28,6 +33,7 @@ export function ignoreNextOnError(): void { * * @param fn A function to wrap. * @returns The wrapped function. + * @hidden */ export function wrap( fn: SentryWrappedFunction, @@ -79,8 +85,8 @@ export function wrap( } catch (ex) { ignoreNextOnError(); - withScope(async scope => { - scope.addEventProcessor(async (event: SentryEvent) => { + withScope(scope => { + scope.addEventProcessor((event: SentryEvent) => { const processedEvent = { ...event }; if (options.mechanism) { @@ -141,6 +147,7 @@ export function wrap( * Wraps addEventListener to capture UI breadcrumbs * @param eventName the event name (e.g. "click") * @returns wrapped breadcrumb events handler + * @hidden */ export function breadcrumbEventHandler(eventName: string): (event: Event) => void { return (event: Event) => { @@ -185,6 +192,7 @@ export function breadcrumbEventHandler(eventName: string): (event: Event) => voi /** * Wraps addEventListener to capture keypress UI events * @returns wrapped keypress events handler + * @hidden */ export function keypressEventHandler(): (event: Event) => void { // TODO: if somehow user switches keypress target before diff --git a/packages/browser/src/integrations/linkederrors.ts b/packages/browser/src/integrations/linkederrors.ts index 6b7538ebcfca..9433760c9928 100644 --- a/packages/browser/src/integrations/linkederrors.ts +++ b/packages/browser/src/integrations/linkederrors.ts @@ -47,7 +47,7 @@ export class LinkedErrors implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async (event: SentryEvent, hint?: SentryEventHint) => { + addGlobalEventProcessor((event: SentryEvent, hint?: SentryEventHint) => { const self = getCurrentHub().getIntegration(LinkedErrors); if (self) { return self.handler(event, hint); diff --git a/packages/browser/src/integrations/pluggable/ember.ts b/packages/browser/src/integrations/pluggable/ember.ts index 76269f40dd33..d2ed2fdae4b7 100644 --- a/packages/browser/src/integrations/pluggable/ember.ts +++ b/packages/browser/src/integrations/pluggable/ember.ts @@ -81,7 +81,7 @@ export class Ember implements Integration { * @param scope The scope currently used. */ private addIntegrationToSdkInfo(scope: Scope): void { - scope.addEventProcessor(async (event: SentryEvent) => { + scope.addEventProcessor((event: SentryEvent) => { if (event.sdk) { const integrations = event.sdk.integrations || []; event.sdk = { diff --git a/packages/browser/src/integrations/pluggable/vue.ts b/packages/browser/src/integrations/pluggable/vue.ts index 1dc6dd8f4295..b91a19a9cea7 100644 --- a/packages/browser/src/integrations/pluggable/vue.ts +++ b/packages/browser/src/integrations/pluggable/vue.ts @@ -92,7 +92,7 @@ export class Vue implements Integration { scope.setExtra(key, metadata[key]); }); - scope.addEventProcessor(async (event: SentryEvent) => { + scope.addEventProcessor((event: SentryEvent) => { if (event.sdk) { const integrations = event.sdk.integrations || []; event.sdk = { diff --git a/packages/browser/src/integrations/useragent.ts b/packages/browser/src/integrations/useragent.ts index bd6611e53764..8f8eea74ea53 100644 --- a/packages/browser/src/integrations/useragent.ts +++ b/packages/browser/src/integrations/useragent.ts @@ -20,7 +20,7 @@ export class UserAgent implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async (event: SentryEvent) => { + addGlobalEventProcessor((event: SentryEvent) => { if (getCurrentHub().getIntegration(UserAgent)) { if (!global.navigator || !global.location) { return event; diff --git a/packages/browser/src/parsers.ts b/packages/browser/src/parsers.ts index 04c6ae133265..3be0460277a0 100644 --- a/packages/browser/src/parsers.ts +++ b/packages/browser/src/parsers.ts @@ -9,6 +9,7 @@ const STACKTRACE_LIMIT = 50; /** * This function creates an exception from an TraceKitStackTrace * @param stacktrace TraceKitStackTrace that will be converted to an exception + * @hidden */ export function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): SentryException { const frames = prepareFramesForEvent(stacktrace.stack); @@ -30,7 +31,9 @@ export function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): SentryE return exception; } -/** JSDoc */ +/** + * @hidden + */ export function eventFromPlainObject(exception: {}, syntheticException: Error | null): SentryEvent { const exceptionKeys = Object.keys(exception).sort(); const event: SentryEvent = { @@ -52,7 +55,9 @@ export function eventFromPlainObject(exception: {}, syntheticException: Error | return event; } -/** JSDoc */ +/** + * @hidden + */ export function eventFromStacktrace(stacktrace: TraceKitStackTrace): SentryEvent { const exception = exceptionFromStacktrace(stacktrace); @@ -63,7 +68,9 @@ export function eventFromStacktrace(stacktrace: TraceKitStackTrace): SentryEvent }; } -/** JSDoc */ +/** + * @hidden + */ export function prepareFramesForEvent(stack: TraceKitStackFrame[]): StackFrame[] { if (!stack || !stack.length) { return []; @@ -104,6 +111,7 @@ export function prepareFramesForEvent(stack: TraceKitStackFrame[]): StackFrame[] * @param event The event to modify. * @param value Value of the exception. * @param type Type of the exception. + * @hidden */ export function addExceptionTypeValue(event: SentryEvent, value?: string, type?: string): void { event.exception = event.exception || {}; diff --git a/packages/browser/src/sdk.ts b/packages/browser/src/sdk.ts index c76f81ad0171..8df613ca5d37 100644 --- a/packages/browser/src/sdk.ts +++ b/packages/browser/src/sdk.ts @@ -4,17 +4,13 @@ import { BrowserClient, ReportDialogOptions } from './client'; import { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations'; export const defaultIntegrations = [ - // Common new CoreIntegrations.Dedupe(), new CoreIntegrations.InboundFilters(), new CoreIntegrations.FunctionToString(), new CoreIntegrations.ExtraErrorData(), - // Native Wrappers new TryCatch(), new Breadcrumbs(), - // Global Handlers new GlobalHandlers(), - // Misc new LinkedErrors(), new UserAgent(), ]; @@ -27,29 +23,42 @@ export const defaultIntegrations = [ * the provided methods. * * @example + * + * ``` + * * import { init } from '@sentry/browser'; * * init({ * dsn: '__DSN__', * // ... * }); + * ``` * * @example + * ``` + * * import { configureScope } from '@sentry/browser'; * configureScope((scope: Scope) => { * scope.setExtra({ battery: 0.7 }); * scope.setTag({ user_mode: 'admin' }); * scope.setUser({ id: '4711' }); * }); + * ``` * * @example + * ``` + * * import { addBreadcrumb } from '@sentry/browser'; * addBreadcrumb({ * message: 'My Breadcrumb', * // ... * }); + * ``` * * @example + * + * ``` + * * import * as Sentry from '@sentry/browser'; * Sentry.captureMessage('Hello, world!'); * Sentry.captureException(new Error('Good bye')); @@ -59,8 +68,9 @@ export const defaultIntegrations = [ * // ... * ], * }); + * ``` * - * @see BrowserOptions for documentation on configuration options. + * @see {@link BrowserOptions} for documentation on configuration options. */ export function init(options: BrowserOptions = {}): void { if (options.defaultIntegrations === undefined) { @@ -91,14 +101,16 @@ export function lastEventId(): string | undefined { } /** - * This function is here to be API compatible with the loader + * This function is here to be API compatible with the loader. + * @hidden */ export function forceLoad(): void { // Noop } /** - * This function is here to be API compatible with the loader + * This function is here to be API compatible with the loader. + * @hidden */ export function onLoad(callback: () => void): void { callback(); diff --git a/packages/browser/src/tracekit.ts b/packages/browser/src/tracekit.ts index 02641369a286..4176df2c8d9b 100644 --- a/packages/browser/src/tracekit.ts +++ b/packages/browser/src/tracekit.ts @@ -3,6 +3,9 @@ import { isUndefined, isError, isErrorEvent } from '@sentry/utils/is'; import { getGlobalObject } from '@sentry/utils/misc'; +/** + * @hidden + */ export interface StackFrame { url: string; func: string; @@ -12,6 +15,9 @@ export interface StackFrame { context: string[]; } +/** + * @hidden + */ export interface StackTrace { /** * Known modes: callers, failed, multiline, onerror, stack, stacktrace diff --git a/packages/browser/src/transports/base.ts b/packages/browser/src/transports/base.ts index 14c6a42de6cc..17d9f5bd2b1a 100644 --- a/packages/browser/src/transports/base.ts +++ b/packages/browser/src/transports/base.ts @@ -1,5 +1,7 @@ -import { API, PromiseBuffer, SentryError } from '@sentry/core'; +import { API } from '@sentry/core'; import { SentryResponse, Transport, TransportOptions } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; +import { PromiseBuffer } from '@sentry/utils/promisebuffer'; /** Base Transport class implementation */ export abstract class BaseTransport implements Transport { diff --git a/packages/browser/test/backend.test.ts b/packages/browser/test/backend.test.ts index 413cd91fe2e6..fe107bf60342 100644 --- a/packages/browser/test/backend.test.ts +++ b/packages/browser/test/backend.test.ts @@ -1,35 +1,13 @@ import { expect } from 'chai'; -import { Status } from '../src'; import { BrowserBackend } from '../src/backend'; -import { SimpleTransport } from './mocks/simpletransport'; - -const dsn = 'https://123@sentry.io/42'; -const testEvent = { - event_id: '1337', - message: 'Pickle Rick', - user: { - username: 'Morty', - }, -}; let backend: BrowserBackend; describe('BrowserBackend', () => { describe('sendEvent()', () => { - it('should throw when no Dsn is provided', async () => { - backend = new BrowserBackend({ dsn }); - - try { - await backend.sendEvent(testEvent); - } catch (e) { - expect(e.message).equal('Cannot sendEvent without a valid Dsn'); - } - }); - - it('should call sendEvent() on provided transport', async () => { - backend = new BrowserBackend({ dsn, transport: SimpleTransport }); - const status = await backend.sendEvent(testEvent); - expect(status.status).equal(Status.Success); + it('should use NoopTransport', async () => { + backend = new BrowserBackend({}); + expect(backend.getTransport().constructor.name).to.equal('NoopTransport'); }); }); }); diff --git a/packages/browser/test/integrations/linkederrors.test.ts b/packages/browser/test/integrations/linkederrors.test.ts index 26e9e6a8420b..27a6dfdc995b 100644 --- a/packages/browser/test/integrations/linkederrors.test.ts +++ b/packages/browser/test/integrations/linkederrors.test.ts @@ -64,22 +64,23 @@ describe('LinkedErrors', () => { const originalException = one; const backend = new BrowserBackend({}); - const event = await backend.eventFromException(originalException); - const result = linkedErrors.handler(event, { - originalException, + return backend.eventFromException(originalException).then(event => { + const result = linkedErrors.handler(event, { + originalException, + }); + + // It shouldn't include root exception, as it's already processed in the event by the main error handler + expect(result!.exception!.values!.length).equal(3); + expect(result!.exception!.values![0].type).equal('SyntaxError'); + expect(result!.exception!.values![0].value).equal('three'); + expect(result!.exception!.values![0].stacktrace).to.have.property('frames'); + expect(result!.exception!.values![1].type).equal('TypeError'); + expect(result!.exception!.values![1].value).equal('two'); + expect(result!.exception!.values![1].stacktrace).to.have.property('frames'); + expect(result!.exception!.values![2].type).equal('Error'); + expect(result!.exception!.values![2].value).equal('one'); + expect(result!.exception!.values![2].stacktrace).to.have.property('frames'); }); - - // It shouldn't include root exception, as it's already processed in the event by the main error handler - expect(result!.exception!.values!.length).equal(3); - expect(result!.exception!.values![0].type).equal('SyntaxError'); - expect(result!.exception!.values![0].value).equal('three'); - expect(result!.exception!.values![0].stacktrace).to.have.property('frames'); - expect(result!.exception!.values![1].type).equal('TypeError'); - expect(result!.exception!.values![1].value).equal('two'); - expect(result!.exception!.values![1].stacktrace).to.have.property('frames'); - expect(result!.exception!.values![2].type).equal('Error'); - expect(result!.exception!.values![2].value).equal('one'); - expect(result!.exception!.values![2].stacktrace).to.have.property('frames'); }); it('should allow to change walk key', async () => { @@ -97,21 +98,22 @@ describe('LinkedErrors', () => { const originalException = one; const backend = new BrowserBackend({}); - const event = await backend.eventFromException(originalException); - const result = linkedErrors.handler(event, { - originalException, + return backend.eventFromException(originalException).then(event => { + const result = linkedErrors.handler(event, { + originalException, + }); + + expect(result!.exception!.values!.length).equal(3); + expect(result!.exception!.values![0].type).equal('SyntaxError'); + expect(result!.exception!.values![0].value).equal('three'); + expect(result!.exception!.values![0].stacktrace).to.have.property('frames'); + expect(result!.exception!.values![1].type).equal('TypeError'); + expect(result!.exception!.values![1].value).equal('two'); + expect(result!.exception!.values![1].stacktrace).to.have.property('frames'); + expect(result!.exception!.values![2].type).equal('Error'); + expect(result!.exception!.values![2].value).equal('one'); + expect(result!.exception!.values![2].stacktrace).to.have.property('frames'); }); - - expect(result!.exception!.values!.length).equal(3); - expect(result!.exception!.values![0].type).equal('SyntaxError'); - expect(result!.exception!.values![0].value).equal('three'); - expect(result!.exception!.values![0].stacktrace).to.have.property('frames'); - expect(result!.exception!.values![1].type).equal('TypeError'); - expect(result!.exception!.values![1].value).equal('two'); - expect(result!.exception!.values![1].stacktrace).to.have.property('frames'); - expect(result!.exception!.values![2].type).equal('Error'); - expect(result!.exception!.values![2].value).equal('one'); - expect(result!.exception!.values![2].stacktrace).to.have.property('frames'); }); it('should allow to change stack size limit', async () => { @@ -126,18 +128,19 @@ describe('LinkedErrors', () => { two.cause = three; const backend = new BrowserBackend({}); - const event = await backend.eventFromException(one); - const result = linkedErrors.handler(event, { - originalException: one, + return backend.eventFromException(one).then(event => { + const result = linkedErrors.handler(event, { + originalException: one, + }); + + expect(result!.exception!.values!.length).equal(2); + expect(result!.exception!.values![0].type).equal('TypeError'); + expect(result!.exception!.values![0].value).equal('two'); + expect(result!.exception!.values![0].stacktrace).to.have.property('frames'); + expect(result!.exception!.values![1].type).equal('Error'); + expect(result!.exception!.values![1].value).equal('one'); + expect(result!.exception!.values![1].stacktrace).to.have.property('frames'); }); - - expect(result!.exception!.values!.length).equal(2); - expect(result!.exception!.values![0].type).equal('TypeError'); - expect(result!.exception!.values![0].value).equal('two'); - expect(result!.exception!.values![0].stacktrace).to.have.property('frames'); - expect(result!.exception!.values![1].type).equal('Error'); - expect(result!.exception!.values![1].value).equal('one'); - expect(result!.exception!.values![1].stacktrace).to.have.property('frames'); }); }); }); diff --git a/packages/browser/test/manual/npm-build.js b/packages/browser/test/manual/npm-build.js index 4527264152b0..2486ae9b7da0 100644 --- a/packages/browser/test/manual/npm-build.js +++ b/packages/browser/test/manual/npm-build.js @@ -39,7 +39,10 @@ function runTests() { const bundlePath = path.join(__dirname, 'tmp.js'); const { window } = new JSDOM(``, { runScripts: 'dangerously' }); - window.onerror = function() { + window.onerror = function(error) { + console.error('ERROR thrown in manual test:'); + console.error(error); + console.error('------------------'); process.exit(1); }; diff --git a/packages/core/README.md b/packages/core/README.md index 84ca4586b865..b228fc669a80 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -21,3 +21,5 @@ This package contains interface definitions, base classes and utilities for building Sentry JavaScript SDKs, like `@sentry/node` or `@sentry/browser`. + +Please consider all classes and exported functions and interfaces `internal`. diff --git a/packages/core/src/basebackend.ts b/packages/core/src/basebackend.ts index b42439622175..fe214cab84be 100644 --- a/packages/core/src/basebackend.ts +++ b/packages/core/src/basebackend.ts @@ -1,8 +1,9 @@ import { Scope } from '@sentry/hub'; -import { Breadcrumb, SentryEvent, SentryEventHint, SentryResponse, Severity, Transport } from '@sentry/types'; +import { Breadcrumb, SentryEvent, SentryEventHint, Severity, Transport } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; import { logger } from '@sentry/utils/logger'; import { serialize } from '@sentry/utils/object'; -import { SentryError } from './error'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { Backend, Options } from './interfaces'; import { NoopTransport } from './transports/noop'; @@ -40,29 +41,24 @@ export abstract class BaseBackend implements Backend { /** * @inheritDoc */ - public async eventFromException(_exception: any, _hint?: SentryEventHint): Promise { + public eventFromException(_exception: any, _hint?: SentryEventHint): SyncPromise { throw new SentryError('Backend has to implement `eventFromException` method'); } /** * @inheritDoc */ - public async eventFromMessage(_message: string, _level?: Severity, _hint?: SentryEventHint): Promise { + public eventFromMessage(_message: string, _level?: Severity, _hint?: SentryEventHint): SyncPromise { throw new SentryError('Backend has to implement `eventFromMessage` method'); } /** * @inheritDoc */ - public async sendEvent(event: SentryEvent): Promise { - // TODO: Remove with v5 - // tslint:disable-next-line - if (this.transport.captureEvent) { - // tslint:disable-next-line - return this.transport.captureEvent(event); - } - // -------------------- - return this.transport.sendEvent(serialize(event)); + public sendEvent(event: SentryEvent): void { + this.transport.sendEvent(serialize(event)).catch(reason => { + logger.error(`Error while sending event: ${reason}`); + }); } /** diff --git a/packages/core/src/baseclient.ts b/packages/core/src/baseclient.ts index cd2dc37541b6..0eac7bcf6ef9 100644 --- a/packages/core/src/baseclient.ts +++ b/packages/core/src/baseclient.ts @@ -6,20 +6,17 @@ import { SentryBreadcrumbHint, SentryEvent, SentryEventHint, - SentryResponse, Severity, - Status, } from '@sentry/types'; -import { forget } from '@sentry/utils/async'; -import { isPrimitive } from '@sentry/utils/is'; +import { isPrimitive, isThenable } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; import { consoleSandbox, uuid4 } from '@sentry/utils/misc'; import { truncate } from '@sentry/utils/string'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { BackendClass } from './basebackend'; import { Dsn } from './dsn'; import { IntegrationIndex, setupIntegrations } from './integration'; import { Backend, Client, Options } from './interfaces'; -import { PromiseBuffer } from './promisebuffer'; /** * Default maximum number of breadcrumbs added to an event. Can be overwritten @@ -96,9 +93,6 @@ export abstract class BaseClient implement /** Array of used integrations. */ private readonly integrations: IntegrationIndex; - /** A simple buffer holding all requests. */ - protected readonly buffer: PromiseBuffer = new PromiseBuffer(); - /** * Initializes this client instance. * @@ -136,46 +130,57 @@ export abstract class BaseClient implement /** * @inheritDoc */ - public async captureException(exception: any, hint?: SentryEventHint, scope?: Scope): Promise { - return this.buffer.add( - (async () => { - const event = await this.getBackend().eventFromException(exception, hint); - return this.captureEvent(event, hint, scope); - })(), - ); + public captureException(exception: any, hint?: SentryEventHint, scope?: Scope): string | undefined { + let eventId: string | undefined = hint && hint.event_id; + + this.getBackend() + .eventFromException(exception, hint) + .then(event => this.processEvent(event, hint, scope)) + .then(finalEvent => { + eventId = finalEvent.event_id; + }) + .catch(reason => { + logger.log(reason); + }); + + return eventId; } /** * @inheritDoc */ - public async captureMessage( - message: string, - level?: Severity, - hint?: SentryEventHint, - scope?: Scope, - ): Promise { - return this.buffer.add( - (async () => { - const event = isPrimitive(message) - ? await this.getBackend().eventFromMessage(`${message}`, level, hint) - : await this.getBackend().eventFromException(message, hint); - - return this.captureEvent(event, hint, scope); - })(), - ); + public captureMessage(message: string, level?: Severity, hint?: SentryEventHint, scope?: Scope): string | undefined { + let eventId: string | undefined = hint && hint.event_id; + + const promisedEvent = isPrimitive(message) + ? this.getBackend().eventFromMessage(`${message}`, level, hint) + : this.getBackend().eventFromException(message, hint); + + promisedEvent + .then(event => this.processEvent(event, hint, scope)) + .then(finalEvent => { + eventId = finalEvent.event_id; + }) + .catch(reason => { + logger.log(reason); + }); + + return eventId; } /** * @inheritDoc */ - public async captureEvent(event: SentryEvent, hint?: SentryEventHint, scope?: Scope): Promise { - // Adding this here is technically not correct since if you call captureMessage/captureException it's already - // buffered. But since we not really need the count and we only need to know if the buffer is full or not, - // This is fine... - return this.buffer.add( - (async () => - this.processEvent(event, async finalEvent => this.getBackend().sendEvent(finalEvent), hint, scope))(), - ); + public captureEvent(event: SentryEvent, hint?: SentryEventHint, scope?: Scope): string | undefined { + let eventId: string | undefined = hint && hint.event_id; + this.processEvent(event, hint, scope) + .then(finalEvent => { + eventId = finalEvent.event_id; + }) + .catch(reason => { + logger.log(reason); + }); + return eventId; } /** @@ -241,7 +246,7 @@ export abstract class BaseClient implement * @param scope A scope containing event metadata. * @returns A new event with more information. */ - protected async prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): Promise { + protected prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): SyncPromise { const { environment, maxBreadcrumbs = DEFAULT_BREADCRUMBS, release, dist } = this.getOptions(); const prepared = { ...event }; @@ -274,13 +279,17 @@ export abstract class BaseClient implement prepared.event_id = uuid4(); } + // We prepare the result here with a resolved SentryEvent. + let result = SyncPromise.resolve(prepared); + // This should be the last thing called, since we want that // {@link Hub.addEventProcessor} gets the finished prepared event. if (scope) { - return scope.applyToEvent(prepared, hint, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS)); + // In case we have a hub we reassign it. + result = scope.applyToEvent(prepared, hint, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS)); } - return prepared; + return result; } /** @@ -290,109 +299,103 @@ export abstract class BaseClient implement * platform specific meta data (such as the User's IP address) must be added * by the SDK implementor. * - * The returned event status offers clues to whether the event was sent to - * Sentry and accepted there. If the {@link Options.shouldSend} hook returns - * `false`, the status will be {@link SendStatus.Skipped}. If the rate limit - * was exceeded, the status will be {@link SendStatus.RateLimit}. * * @param event The event to send to Sentry. - * @param send A function to actually send the event. - * @param scope A scope containing event metadata. * @param hint May contain additional informartion about the original exception. - * @returns A Promise that resolves with the event status. + * @param scope A scope containing event metadata. + * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send. */ - protected async processEvent( - event: SentryEvent, - send: (finalEvent: SentryEvent) => Promise, - hint?: SentryEventHint, - scope?: Scope, - ): Promise { + protected processEvent(event: SentryEvent, hint?: SentryEventHint, scope?: Scope): SyncPromise { + const { beforeSend, sampleRate } = this.getOptions(); + if (!this.isEnabled()) { - return { - status: Status.Skipped, - }; + return SyncPromise.reject('SDK not enabled, will not send event.'); } - const { beforeSend, sampleRate } = this.getOptions(); - // 1.0 === 100% events are sent // 0.0 === 0% events are sent if (typeof sampleRate === 'number' && Math.random() > sampleRate) { - return { - status: Status.Skipped, - }; + return SyncPromise.reject('This event has been sampled, will not send event.'); } - const prepared = await this.prepareEvent(event, scope, hint); - if (prepared === null) { - return { - status: Status.Skipped, - }; - } - - let finalEvent: SentryEvent | null = prepared; - - try { - const isInternalException = hint && hint.data && (hint.data as { [key: string]: any }).__sentry__ === true; - if (!isInternalException && beforeSend) { - finalEvent = await beforeSend(prepared, hint); - if ((typeof finalEvent as any) === 'undefined') { - logger.error('`beforeSend` method has to return `null` or a valid event'); + return new SyncPromise((resolve, reject) => { + this.prepareEvent(event, scope, hint).then(prepared => { + if (prepared === null) { + reject('An event processor returned null, will not send event.'); + return; } - } - } catch (exception) { - forget( - this.captureException(exception, { - data: { - __sentry__: true, - }, - originalException: exception as Error, - }), - ); - - return { - reason: 'Event processing in beforeSend method threw an exception', - status: Status.Invalid, - }; - } - if (finalEvent === null) { - return { - reason: 'Event dropped due to being discarded by beforeSend method', - status: Status.Skipped, - }; - } + let finalEvent: SentryEvent | null = prepared; + + try { + const isInternalException = hint && hint.data && (hint.data as { [key: string]: any }).__sentry__ === true; + if (isInternalException || !beforeSend) { + this.getBackend().sendEvent(finalEvent); + resolve(finalEvent); + return; + } + + const beforeSendResult = beforeSend(prepared, hint); + if ((typeof beforeSendResult as any) === 'undefined') { + logger.error('`beforeSend` method has to return `null` or a valid event.'); + } else if (isThenable(beforeSendResult)) { + this.handleAsyncBeforeSend(beforeSendResult as Promise, resolve, reject); + } else { + finalEvent = beforeSendResult as SentryEvent | null; + + if (finalEvent === null) { + logger.log('`beforeSend` returned `null`, will not send event.'); + resolve(null); + return; + } + + // From here on we are really async + this.getBackend().sendEvent(finalEvent); + resolve(finalEvent); + } + } catch (exception) { + this.captureException(exception, { + data: { + __sentry__: true, + }, + originalException: exception as Error, + }); + reject('`beforeSend` throw an error, will not send event.'); + } + }); + }); + } - try { - const response = await send(finalEvent); - response.event = finalEvent; - - if (response.status === Status.RateLimit) { - // TODO: Handle rate limits and maintain a queue. For now, we require SDK - // implementors to override this method and handle it themselves. - } - return response; - } catch (error) { - // We have a catch here since the transport can reject the request internally. - // If we do not catch this here, we will run into an endless loop. - logger.error(`${error}`); - return { - reason: `${error}`, - status: Status.Failed, - }; - } + /** + * Resolves before send Promise and calls resolve/reject on parent SyncPromise. + */ + private handleAsyncBeforeSend( + beforeSend: Promise, + resolve: (event: SentryEvent) => void, + reject: (reason: string) => void, + ): void { + beforeSend + .then(processedEvent => { + if (processedEvent === null) { + reject('`beforeSend` returned `null`, will not send event.'); + return; + } + // From here on we are really async + this.getBackend().sendEvent(processedEvent); + resolve(processedEvent); + }) + .catch(e => { + reject(`beforeSend rejected with ${e}`); + }); } /** * @inheritDoc */ public async flush(timeout?: number): Promise { - return (await Promise.all([ - this.getBackend() - .getTransport() - .close(timeout), - this.buffer.drain(timeout), - ])).reduce((prev, current) => prev && current); + return this.getBackend() + .getTransport() + .close(timeout); } /** diff --git a/packages/core/src/dsn.ts b/packages/core/src/dsn.ts index 9287b3c98ed5..364cf2187ca0 100644 --- a/packages/core/src/dsn.ts +++ b/packages/core/src/dsn.ts @@ -1,7 +1,7 @@ import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; import { isNaN } from '@sentry/utils/is'; import { assign } from '@sentry/utils/object'; -import { SentryError } from './error'; /** Regular expression used to parse a Dsn. */ const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+))?@)([\w\.-]+)(?::(\d+))?\/(.+)/; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index aa425970895f..020e0c5d115a 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -11,8 +11,6 @@ export { API } from './api'; export { BaseClient } from './baseclient'; export { BackendClass, BaseBackend } from './basebackend'; export { Dsn } from './dsn'; -export { SentryError } from './error'; -export { PromiseBuffer } from './promisebuffer'; export { Backend, Client, LogLevel, Options } from './interfaces'; export { initAndBind, ClientClass } from './sdk'; export { NoopTransport } from './transports/noop'; diff --git a/packages/core/src/integration.ts b/packages/core/src/integration.ts index 37317986e162..8f38d425c52a 100644 --- a/packages/core/src/integration.ts +++ b/packages/core/src/integration.ts @@ -47,25 +47,11 @@ export function getIntegrationsToSetup(options: Options): Integration[] { } /** Setup given integration */ -export function setupIntegration(integration: Integration, options: Options): void { +export function setupIntegration(integration: Integration): void { if (installedIntegrations.indexOf(getIntegrationName(integration)) !== -1) { return; } - - try { - integration.setupOnce(); - } catch (_Oo) { - /** @deprecated */ - // TODO: Remove in v5 - - // tslint:disable:deprecation - if (integration.install) { - logger.warn(`Integration ${getIntegrationName(integration)}: The install method is deprecated. Use "setupOnce".`); - integration.install(options); - } - // tslint:enable:deprecation - } - + integration.setupOnce(); installedIntegrations.push(getIntegrationName(integration)); logger.log(`Integration installed: ${getIntegrationName(integration)}`); } @@ -80,7 +66,7 @@ export function setupIntegrations(options: O): IntegrationInd const integrations: IntegrationIndex = {}; getIntegrationsToSetup(options).forEach(integration => { integrations[getIntegrationName(integration)] = integration; - setupIntegration(integration, options); + setupIntegration(integration); }); return integrations; } diff --git a/packages/core/src/integrations/dedupe.ts b/packages/core/src/integrations/dedupe.ts index fafa4ca8ce70..34b492c184dc 100644 --- a/packages/core/src/integrations/dedupe.ts +++ b/packages/core/src/integrations/dedupe.ts @@ -24,7 +24,7 @@ export class Dedupe implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async (currentEvent: SentryEvent) => { + addGlobalEventProcessor((currentEvent: SentryEvent) => { const self = getCurrentHub().getIntegration(Dedupe); if (self) { // Juuust in case something goes wrong diff --git a/packages/core/src/integrations/extraerrordata.ts b/packages/core/src/integrations/extraerrordata.ts index 263cd96f2a03..650adeffa2a2 100644 --- a/packages/core/src/integrations/extraerrordata.ts +++ b/packages/core/src/integrations/extraerrordata.ts @@ -27,7 +27,7 @@ export class ExtraErrorData implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async (event: SentryEvent, hint?: SentryEventHint) => { + addGlobalEventProcessor((event: SentryEvent, hint?: SentryEventHint) => { const self = getCurrentHub().getIntegration(ExtraErrorData); if (!self) { return event; diff --git a/packages/core/src/integrations/inboundfilters.ts b/packages/core/src/integrations/inboundfilters.ts index 31f7dc35831c..ca62140405ca 100644 --- a/packages/core/src/integrations/inboundfilters.ts +++ b/packages/core/src/integrations/inboundfilters.ts @@ -35,7 +35,7 @@ export class InboundFilters implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async (event: SentryEvent) => { + addGlobalEventProcessor((event: SentryEvent) => { const hub = getCurrentHub(); if (!hub) { return event; diff --git a/packages/core/src/integrations/index.ts b/packages/core/src/integrations/index.ts index 64f1fc91de67..24708d2c64f9 100644 --- a/packages/core/src/integrations/index.ts +++ b/packages/core/src/integrations/index.ts @@ -1,6 +1,5 @@ export { Dedupe } from './dedupe'; export { FunctionToString } from './functiontostring'; -export { SDKInformation } from './sdkinformation'; export { InboundFilters } from './inboundfilters'; export { ExtraErrorData } from './extraerrordata'; diff --git a/packages/core/src/integrations/pluggable/debug.ts b/packages/core/src/integrations/pluggable/debug.ts index 424969ac7c84..4b440dd16e08 100644 --- a/packages/core/src/integrations/pluggable/debug.ts +++ b/packages/core/src/integrations/pluggable/debug.ts @@ -37,7 +37,7 @@ export class Debug implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async (event: SentryEvent, hint?: SentryEventHint) => { + addGlobalEventProcessor((event: SentryEvent, hint?: SentryEventHint) => { const self = getCurrentHub().getIntegration(Debug); if (self) { // tslint:disable:no-console diff --git a/packages/core/src/integrations/pluggable/rewriteframes.ts b/packages/core/src/integrations/pluggable/rewriteframes.ts index 976df048048a..c803d99ed5ea 100644 --- a/packages/core/src/integrations/pluggable/rewriteframes.ts +++ b/packages/core/src/integrations/pluggable/rewriteframes.ts @@ -2,7 +2,7 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub'; import { Integration, SentryEvent, StackFrame } from '@sentry/types'; import { basename, relative } from '@sentry/utils/path'; -type StackFrameIteratee = (frame: StackFrame) => Promise; +type StackFrameIteratee = (frame: StackFrame) => StackFrame; /** Rewrite event frames paths */ export class RewriteFrames implements Integration { @@ -24,7 +24,7 @@ export class RewriteFrames implements Integration { /** * @inheritDoc */ - private readonly iteratee: StackFrameIteratee = async (frame: StackFrame) => { + private readonly iteratee: StackFrameIteratee = (frame: StackFrame) => { if (frame.filename && frame.filename.startsWith('/')) { const base = this.root ? relative(this.root, frame.filename) : basename(frame.filename); frame.filename = `app:///${base}`; @@ -48,7 +48,7 @@ export class RewriteFrames implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async event => { + addGlobalEventProcessor(event => { const self = getCurrentHub().getIntegration(RewriteFrames); if (self) { return self.process(event); @@ -58,12 +58,12 @@ export class RewriteFrames implements Integration { } /** JSDoc */ - public async process(event: SentryEvent): Promise { + public process(event: SentryEvent): SentryEvent { const frames = this.getFramesFromEvent(event); if (frames) { for (const i in frames) { // tslint:disable-next-line - frames[i] = await this.iteratee(frames[i]); + frames[i] = this.iteratee(frames[i]); } } return event; diff --git a/packages/core/src/integrations/sdkinformation.ts b/packages/core/src/integrations/sdkinformation.ts deleted file mode 100644 index 58ce510a5651..000000000000 --- a/packages/core/src/integrations/sdkinformation.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Integration } from '@sentry/types'; -import { logger } from '@sentry/utils/logger'; - -/** - * @deprecated - * This file can be safely removed in the next major bump - */ - -/** Adds SDK info to an event. */ -export class SDKInformation implements Integration { - /** - * @inheritDoc - */ - public name: string = 'SDKInformation'; - - /** - * @inheritDoc - */ - public setupOnce(): void { - logger.warn( - "SDKInformation Integration is deprecated and can be safely removed. It's functionality has been merged into the SDK's core.", - ); - } -} diff --git a/packages/core/src/interfaces.ts b/packages/core/src/interfaces.ts index fcd72fa3a2dd..e732fb4cc9fe 100644 --- a/packages/core/src/interfaces.ts +++ b/packages/core/src/interfaces.ts @@ -6,12 +6,12 @@ import { SentryBreadcrumbHint, SentryEvent, SentryEventHint, - SentryResponse, Severity, Transport, TransportClass, TransportOptions, } from '@sentry/types'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { Dsn } from './dsn'; /** Console logging verbosity for the SDK. */ @@ -112,7 +112,7 @@ export interface Options { * @param hint May contain additional information about the original exception. * @returns A new event that will be sent | null. */ - beforeSend?(event: SentryEvent, hint?: SentryEventHint): SentryEvent | null | Promise; + beforeSend?(event: SentryEvent, hint?: SentryEventHint): Promise | SentryEvent | null; /** * A callback invoked when adding a breadcrumb, allowing to optionally modify @@ -162,9 +162,9 @@ export interface Client { * @param exception An exception-like object. * @param hint May contain additional information about the original exception. * @param scope An optional scope containing event metadata. - * @returns SentryResponse status and event + * @returns The event id */ - captureException(exception: any, hint?: SentryEventHint, scope?: Scope): Promise; + captureException(exception: any, hint?: SentryEventHint, scope?: Scope): string | undefined; /** * Captures a message event and sends it to Sentry. @@ -173,9 +173,9 @@ export interface Client { * @param level Define the level of the message. * @param hint May contain additional information about the original exception. * @param scope An optional scope containing event metadata. - * @returns SentryResponse status and event + * @returns The event id */ - captureMessage(message: string, level?: Severity, hint?: SentryEventHint, scope?: Scope): Promise; + captureMessage(message: string, level?: Severity, hint?: SentryEventHint, scope?: Scope): string | undefined; /** * Captures a manually created event and sends it to Sentry. @@ -183,9 +183,9 @@ export interface Client { * @param event The event to send to Sentry. * @param hint May contain additional information about the original exception. * @param scope An optional scope containing event metadata. - * @returns SentryResponse status and event + * @returns The event id */ - captureEvent(event: SentryEvent, hint?: SentryEventHint, scope?: Scope): Promise; + captureEvent(event: SentryEvent, hint?: SentryEventHint, scope?: Scope): string | undefined; /** * Records a new breadcrumb which will be attached to future events. @@ -252,13 +252,13 @@ export interface Backend { install?(): boolean; /** Creates a {@link SentryEvent} from an exception. */ - eventFromException(exception: any, hint?: SentryEventHint): Promise; + eventFromException(exception: any, hint?: SentryEventHint): SyncPromise; /** Creates a {@link SentryEvent} from a plain message. */ - eventFromMessage(message: string, level?: Severity, hint?: SentryEventHint): Promise; + eventFromMessage(message: string, level?: Severity, hint?: SentryEventHint): SyncPromise; /** Submits the event to Sentry */ - sendEvent(event: SentryEvent): Promise; + sendEvent(event: SentryEvent): void; /** * Receives a breadcrumb and stores it in a platform-dependent way. diff --git a/packages/core/test/lib/base.test.ts b/packages/core/test/lib/base.test.ts index 5698c353bd94..120fd04b555c 100644 --- a/packages/core/test/lib/base.test.ts +++ b/packages/core/test/lib/base.test.ts @@ -1,6 +1,6 @@ import { Scope } from '@sentry/hub'; -import { SentryEvent, Status } from '@sentry/types'; -import { SentryError } from '../../src/error'; +import { SentryEvent } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; import { TestBackend } from '../mocks/backend'; import { TestClient } from '../mocks/client'; import { TestIntegration } from '../mocks/integration'; @@ -38,49 +38,62 @@ jest.mock('@sentry/utils/string', () => ({ })); describe('BaseClient', () => { + beforeEach(() => { + TestBackend.sendEventCalled = undefined; + TestBackend.instance = undefined; + }); + describe('constructor() / getDsn()', () => { test('returns the Dsn', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN }); expect(client.getDsn()!.toString()).toBe(PUBLIC_DSN); }); test('allows missing Dsn', () => { + expect.assertions(1); const client = new TestClient({}); expect(client.getDsn()).toBeUndefined(); }); test('throws with invalid Dsn', () => { + expect.assertions(1); expect(() => new TestClient({ dsn: 'abc' })).toThrow(SentryError); }); }); describe('install()', () => { - test('calls install() on Backend', async () => { + test('calls install() on Backend', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN }); client.install(); expect(TestBackend.instance!.installed).toBe(1); }); - test('calls install() only once', async () => { + test('calls install() only once', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN }); client.install(); client.install(); expect(TestBackend.instance!.installed).toBe(1); }); - test('resolves the result of install()', async () => { + test('resolves the result of install()', () => { + expect.assertions(1); const client = new TestClient({ mockInstallFailure: true }); const installed = client.install(); expect(installed).toBeFalsy(); }); - test('does not install() when disabled', async () => { + test('does not install() when disabled', () => { + expect.assertions(1); const client = new TestClient({ enabled: false, dsn: PUBLIC_DSN }); client.install(); expect(TestBackend.instance!.installed).toBe(0); }); - test('does not install() without Dsn', async () => { + test('does not install() without Dsn', () => { + expect.assertions(1); const client = new TestClient({}); client.install(); expect(TestBackend.instance!.installed).toBe(0); @@ -89,6 +102,7 @@ describe('BaseClient', () => { describe('getOptions()', () => { test('returns the options', () => { + expect.assertions(1); const options = { dsn: PUBLIC_DSN, test: true }; const client = new TestClient(options); expect(client.getOptions()).toEqual(options); @@ -97,6 +111,7 @@ describe('BaseClient', () => { describe('getBreadcrumbs() / addBreadcrumb()', () => { test('adds a breadcrumb', () => { + expect.assertions(1); const client = new TestClient({}); const scope = new Scope(); scope.addBreadcrumb({ message: 'hello' }, 100); @@ -105,6 +120,7 @@ describe('BaseClient', () => { }); test('adds a timestamp to new breadcrumbs', () => { + expect.assertions(1); const client = new TestClient({}); const scope = new Scope(); scope.addBreadcrumb({ message: 'hello' }, 100); @@ -113,6 +129,7 @@ describe('BaseClient', () => { }); test('discards breadcrumbs beyond maxBreadcrumbs', () => { + expect.assertions(2); const client = new TestClient({ maxBreadcrumbs: 1 }); const scope = new Scope(); scope.addBreadcrumb({ message: 'hello' }, 100); @@ -122,6 +139,7 @@ describe('BaseClient', () => { }); test('allows concurrent updates', () => { + expect.assertions(1); const client = new TestClient({}); const scope = new Scope(); client.addBreadcrumb({ message: 'hello' }, undefined, scope); @@ -130,6 +148,7 @@ describe('BaseClient', () => { }); test('calls beforeBreadcrumb and adds the breadcrumb without any changes', () => { + expect.assertions(1); const beforeBreadcrumb = jest.fn(breadcrumb => breadcrumb); const client = new TestClient({ beforeBreadcrumb }); const scope = new Scope(); @@ -138,6 +157,7 @@ describe('BaseClient', () => { }); test('calls beforeBreadcrumb and uses the new one', () => { + expect.assertions(1); const beforeBreadcrumb = jest.fn(() => ({ message: 'changed' })); const client = new TestClient({ beforeBreadcrumb }); const scope = new Scope(); @@ -146,6 +166,7 @@ describe('BaseClient', () => { }); test('calls beforeBreadcrumb and discards the breadcrumb when returned null', () => { + expect.assertions(1); const beforeBreadcrumb = jest.fn(() => null); const client = new TestClient({ beforeBreadcrumb }); const scope = new Scope(); @@ -154,6 +175,7 @@ describe('BaseClient', () => { }); test('calls beforeBreadcrumb gets an access to a hint as a second argument', () => { + expect.assertions(2); const beforeBreadcrumb = jest.fn((breadcrumb, hint) => ({ ...breadcrumb, data: hint.data })); const client = new TestClient({ beforeBreadcrumb }); const scope = new Scope(); @@ -164,10 +186,10 @@ describe('BaseClient', () => { }); describe('captures', () => { - test('captures and sends exceptions', async () => { + test('captures and sends exceptions', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN }); - const scope = new Scope(); - await client.captureException(new Error('test exception'), undefined, scope); + client.captureException(new Error('test exception')); expect(TestBackend.instance!.event).toEqual({ event_id: '42', exception: { @@ -181,54 +203,56 @@ describe('BaseClient', () => { }); }); - test('captures and sends messages', async () => { + test('captures and sends messages', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN }); - const scope = new Scope(); - await client.captureMessage('test message', undefined, undefined, scope); + client.captureMessage('test message'); expect(TestBackend.instance!.event).toEqual({ event_id: '42', - fingerprint: ['test message'], message: 'test message', }); }); - test.only('should call eventFromException if input to captureMessage is not a primitive', async () => { + test('should call eventFromException if input to captureMessage is not a primitive', () => { + expect.assertions(2); const client = new TestClient({ dsn: PUBLIC_DSN }); - const scope = new Scope(); const spy = jest.spyOn(TestBackend.instance!, 'eventFromException'); - await client.captureMessage('foo', undefined, undefined, scope); - await client.captureMessage(null, undefined, undefined, scope); - await client.captureMessage(undefined, undefined, undefined, scope); - await client.captureMessage(1, undefined, undefined, scope); - await client.captureMessage(false, undefined, undefined, scope); + client.captureMessage('foo'); + client.captureMessage(null as any); + client.captureMessage(undefined as any); + client.captureMessage(1 as any); + client.captureMessage(false as any); expect(spy.mock.calls.length).toEqual(0); - await client.captureMessage({}, undefined, undefined, scope); - await client.captureMessage([], undefined, undefined, scope); + client.captureMessage({} as any); + client.captureMessage([] as any); expect(spy.mock.calls.length).toEqual(2); }); }); describe('captureEvent() / prepareEvent()', () => { - test('skips when disabled', async () => { + test('skips when disabled', () => { + expect.assertions(1); const client = new TestClient({ enabled: false, dsn: PUBLIC_DSN }); const scope = new Scope(); - await client.captureEvent({}, undefined, scope); + client.captureEvent({}, undefined, scope); expect(TestBackend.instance!.event).toBeUndefined(); }); - test('skips without a Dsn', async () => { + test('skips without a Dsn', () => { + expect.assertions(1); const client = new TestClient({}); const scope = new Scope(); - await client.captureEvent({}, undefined, scope); + client.captureEvent({}, undefined, scope); expect(TestBackend.instance!.event).toBeUndefined(); }); - test('sends an event', async () => { + test('sends an event', () => { + expect.assertions(2); const client = new TestClient({ dsn: PUBLIC_DSN }); const scope = new Scope(); - await client.captureEvent({ message: 'message' }, undefined, scope); + client.captureEvent({ message: 'message' }, undefined, scope); expect(TestBackend.instance!.event!.message).toBe('message'); expect(TestBackend.instance!.event).toEqual({ event_id: '42', @@ -237,13 +261,14 @@ describe('BaseClient', () => { }); }); - test('adds the configured environment', async () => { + test('adds the configured environment', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN, environment: 'env', }); const scope = new Scope(); - await client.captureEvent({ message: 'message' }, undefined, scope); + client.captureEvent({ message: 'message' }, undefined, scope); expect(TestBackend.instance!.event!).toEqual({ environment: 'env', event_id: '42', @@ -252,13 +277,14 @@ describe('BaseClient', () => { }); }); - test('adds the configured release', async () => { + test('adds the configured release', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN, release: 'v1.0.0', }); const scope = new Scope(); - await client.captureEvent({ message: 'message' }, undefined, scope); + client.captureEvent({ message: 'message' }, undefined, scope); expect(TestBackend.instance!.event!).toEqual({ event_id: '42', fingerprint: ['message'], @@ -267,11 +293,12 @@ describe('BaseClient', () => { }); }); - test('adds breadcrumbs', async () => { + test('adds breadcrumbs', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN }); const scope = new Scope(); scope.addBreadcrumb({ message: 'breadcrumb' }, 100); - await client.captureEvent({ message: 'message' }, undefined, scope); + client.captureEvent({ message: 'message' }, undefined, scope); expect(TestBackend.instance!.event!).toEqual({ breadcrumbs: [{ message: 'breadcrumb' }], event_id: '42', @@ -280,12 +307,13 @@ describe('BaseClient', () => { }); }); - test('limits previously saved breadcrumbs', async () => { + test('limits previously saved breadcrumbs', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN, maxBreadcrumbs: 1 }); const scope = new Scope(); scope.addBreadcrumb({ message: '1' }, 100); scope.addBreadcrumb({ message: '2' }, 200); - await client.captureEvent({ message: 'message' }, undefined, scope); + client.captureEvent({ message: 'message' }, undefined, scope); expect(TestBackend.instance!.event!).toEqual({ breadcrumbs: [{ message: '2' }], event_id: '42', @@ -294,13 +322,14 @@ describe('BaseClient', () => { }); }); - test('adds context data', async () => { + test('adds context data', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN }); const scope = new Scope(); scope.setExtra('b', 'b'); scope.setTag('a', 'a'); scope.setUser({ id: 'user' }); - await client.captureEvent({ message: 'message' }, undefined, scope); + client.captureEvent({ message: 'message' }, undefined, scope); expect(TestBackend.instance!.event!).toEqual({ event_id: '42', extra: { b: 'b' }, @@ -311,11 +340,12 @@ describe('BaseClient', () => { }); }); - test('adds fingerprint', async () => { + test('adds fingerprint', () => { + expect.assertions(1); const client = new TestClient({ dsn: PUBLIC_DSN }); const scope = new Scope(); scope.setFingerprint(['abcd']); - await client.captureEvent({ message: 'message' }, undefined, scope); + client.captureEvent({ message: 'message' }, undefined, scope); expect(TestBackend.instance!.event!).toEqual({ event_id: '42', fingerprint: ['abcd'], @@ -323,89 +353,107 @@ describe('BaseClient', () => { }); }); - test('calls beforeSend and uses original event without any changes', async () => { + test('calls beforeSend and uses original event without any changes', () => { + expect.assertions(1); const beforeSend = jest.fn(event => event); const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); - const scope = new Scope(); - await client.captureEvent({ message: 'hello' }, undefined, scope); + client.captureEvent({ message: 'hello' }); expect(TestBackend.instance!.event!.message).toBe('hello'); }); - test('calls beforeSend and uses the new one', async () => { - const beforeSend = jest.fn(() => ({ message: 'changed' })); + test('calls beforeSend and uses the new one', () => { + expect.assertions(1); + const beforeSend = jest.fn(() => ({ message: 'changed1' })); const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); - const scope = new Scope(); - await client.captureEvent({ message: 'hello' }, undefined, scope); - expect(TestBackend.instance!.event!.message).toBe('changed'); + client.captureEvent({ message: 'hello' }); + expect(TestBackend.instance!.event!.message).toBe('changed1'); }); - test('calls beforeSend and discards the event', async () => { + test('calls beforeSend and discards the event', () => { + expect.assertions(1); const beforeSend = jest.fn(() => null); const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); - const scope = new Scope(); - await client.captureEvent({ message: 'hello' }, undefined, scope); + client.captureEvent({ message: 'hello' }); expect(TestBackend.instance!.event).toBeUndefined(); }); - test('calls async beforeSend and uses original event without any changes', async () => { + test('calls async beforeSend and uses original event without any changes', done => { + jest.useFakeTimers(); + expect.assertions(1); const beforeSend = jest.fn( async event => new Promise(resolve => { - resolve(event); + setTimeout(() => { + resolve(event); + }, 1); }), ); const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); - const scope = new Scope(); - await client.captureEvent({ message: 'hello' }, undefined, scope); - expect(TestBackend.instance!.event!.message).toBe('hello'); - }); - - test('calls async beforeSend and uses the new one', async () => { + client.captureEvent({ message: 'hello' }); + jest.runOnlyPendingTimers(); + TestBackend.sendEventCalled = (event: SentryEvent) => { + expect(event.message).toBe('hello'); + }; + setTimeout(() => { + done(); + }, 5); + jest.runOnlyPendingTimers(); + }); + + test('calls async beforeSend and uses the new one', done => { + jest.useFakeTimers(); + expect.assertions(1); const beforeSend = jest.fn( async () => new Promise(resolve => { - resolve({ message: 'changed' }); + setTimeout(() => { + resolve({ message: 'changed2' }); + }, 1); }), ); - const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); - const scope = new Scope(); - await client.captureEvent({ message: 'hello' }, undefined, scope); - expect(TestBackend.instance!.event!.message).toBe('changed'); - }); - test('calls async beforeSend and discards the event', async () => { + const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); + client.captureEvent({ message: 'hello' }); + jest.runOnlyPendingTimers(); + TestBackend.sendEventCalled = (event: SentryEvent) => { + expect(event.message).toBe('changed2'); + }; + setTimeout(() => { + done(); + }, 5); + jest.runOnlyPendingTimers(); + }); + + test('calls async beforeSend and discards the event', () => { + jest.useFakeTimers(); + expect.assertions(1); const beforeSend = jest.fn( async () => new Promise(resolve => { - resolve(null); + setTimeout(() => { + resolve(null); + }); }), ); const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); - const scope = new Scope(); - await client.captureEvent({ message: 'hello' }, undefined, scope); + client.captureEvent({ message: 'hello' }); + jest.runAllTimers(); expect(TestBackend.instance!.event).toBeUndefined(); }); - test('calls beforeSend gets an access to a hint as a second argument', async () => { + test('calls beforeSend gets an access to a hint as a second argument', () => { + expect.assertions(2); const beforeSend = jest.fn((event, hint) => ({ ...event, data: hint.data })); const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); - const scope = new Scope(); - await client.captureEvent({ message: 'hello' }, { data: 'someRandomThing' }, scope); + client.captureEvent({ message: 'hello' }, { data: 'someRandomThing' }); expect(TestBackend.instance!.event!.message).toBe('hello'); expect(TestBackend.instance!.event!.data).toBe('someRandomThing'); }); - - test("doesn't do anything with rate limits yet", async () => { - const client = new TestClient({ dsn: PUBLIC_DSN }); - TestBackend.instance!.sendEvent = async () => ({ status: Status.RateLimit }); - const scope = new Scope(); - await client.captureEvent({}, undefined, scope); - // TODO: Test rate limiting queues here - }); }); describe('integrations', () => { test('setup each one of them on ctor', () => { + expect.assertions(2); const client = new TestClient({ dsn: PUBLIC_DSN, integrations: [new TestIntegration()], diff --git a/packages/core/test/lib/dsn.test.ts b/packages/core/test/lib/dsn.test.ts index fc91da7bf3df..b7251b7ec804 100644 --- a/packages/core/test/lib/dsn.test.ts +++ b/packages/core/test/lib/dsn.test.ts @@ -1,5 +1,5 @@ +import { SentryError } from '@sentry/utils/error'; import { Dsn } from '../../src/dsn'; -import { SentryError } from '../../src/error'; describe('Dsn', () => { describe('fromComponents', () => { diff --git a/packages/core/test/lib/integrations/rewriteframes.test.ts b/packages/core/test/lib/integrations/rewriteframes.test.ts index e524d835448a..e825139877b6 100644 --- a/packages/core/test/lib/integrations/rewriteframes.test.ts +++ b/packages/core/test/lib/integrations/rewriteframes.test.ts @@ -44,14 +44,14 @@ describe('RewriteFrames', () => { rewriteFrames = new RewriteFrames(); }); - it('transforms messageEvent frames', async () => { - const event = await rewriteFrames.process(messageEvent); + it('transforms messageEvent frames', () => { + const event = rewriteFrames.process(messageEvent); expect(event.stacktrace!.frames![0].filename).toEqual('app:///file1.js'); expect(event.stacktrace!.frames![1].filename).toEqual('app:///file2.js'); }); - it('transforms exceptionEvent frames', async () => { - const event = await rewriteFrames.process(exceptionEvent); + it('transforms exceptionEvent frames', () => { + const event = rewriteFrames.process(exceptionEvent); expect(event.exception!.values![0].stacktrace!.frames![0].filename).toEqual('app:///file1.js'); expect(event.exception!.values![0].stacktrace!.frames![1].filename).toEqual('app:///file2.js'); }); @@ -64,14 +64,14 @@ describe('RewriteFrames', () => { }); }); - it('transforms messageEvent frames', async () => { - const event = await rewriteFrames.process(messageEvent); + it('transforms messageEvent frames', () => { + const event = rewriteFrames.process(messageEvent); expect(event.stacktrace!.frames![0].filename).toEqual('app:///src/app/file1.js'); expect(event.stacktrace!.frames![1].filename).toEqual('app:///src/app/file2.js'); }); - it('transforms exceptionEvent frames', async () => { - const event = await rewriteFrames.process(exceptionEvent); + it('transforms exceptionEvent frames', () => { + const event = rewriteFrames.process(exceptionEvent); expect(event.exception!.values![0].stacktrace!.frames![0].filename).toEqual('app:///src/app/file1.js'); expect(event.exception!.values![0].stacktrace!.frames![1].filename).toEqual('app:///src/app/file2.js'); }); @@ -80,7 +80,7 @@ describe('RewriteFrames', () => { describe('can use custom iteratee', () => { beforeEach(() => { rewriteFrames = new RewriteFrames({ - iteratee: async (frame: StackFrame) => ({ + iteratee: (frame: StackFrame) => ({ ...frame, function: 'whoops', }), @@ -88,7 +88,7 @@ describe('RewriteFrames', () => { }); it('transforms messageEvent frames', async () => { - const event = await rewriteFrames.process(messageEvent); + const event = rewriteFrames.process(messageEvent); expect(event.stacktrace!.frames![0].filename).toEqual('/www/src/app/file1.js'); expect(event.stacktrace!.frames![0].function).toEqual('whoops'); expect(event.stacktrace!.frames![1].filename).toEqual('/www/src/app/file2.js'); @@ -96,7 +96,7 @@ describe('RewriteFrames', () => { }); it('transforms exceptionEvent frames', async () => { - const event = await rewriteFrames.process(exceptionEvent); + const event = rewriteFrames.process(exceptionEvent); expect(event.exception!.values![0].stacktrace!.frames![0].filename).toEqual('/www/src/app/file1.js'); expect(event.exception!.values![0].stacktrace!.frames![0].function).toEqual('whoops'); expect(event.exception!.values![0].stacktrace!.frames![1].filename).toEqual('/www/src/app/file2.js'); diff --git a/packages/core/test/mocks/backend.ts b/packages/core/test/mocks/backend.ts index 44dbaa47bdb3..b4a741ff8c77 100644 --- a/packages/core/test/mocks/backend.ts +++ b/packages/core/test/mocks/backend.ts @@ -1,4 +1,5 @@ -import { SentryEvent, SentryResponse, Status } from '@sentry/types'; +import { SentryEvent } from '@sentry/types'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { BaseBackend } from '../../src/basebackend'; import { Options } from '../../src/interfaces'; @@ -9,6 +10,7 @@ export interface TestOptions extends Options { export class TestBackend extends BaseBackend { public static instance?: TestBackend; + public static sendEventCalled?: (event: SentryEvent) => void; public installed: number; public event?: SentryEvent; @@ -24,8 +26,8 @@ export class TestBackend extends BaseBackend { return !this.options.mockInstallFailure; } - public async eventFromException(exception: any): Promise { - return { + public eventFromException(exception: any): SyncPromise { + return SyncPromise.resolve({ exception: { values: [ { @@ -34,15 +36,16 @@ export class TestBackend extends BaseBackend { }, ], }, - }; + }); } - public async eventFromMessage(message: string): Promise { - return { message }; + public eventFromMessage(message: string): SyncPromise { + return SyncPromise.resolve({ message }); } - public async sendEvent(event: SentryEvent): Promise { + public sendEvent(event: SentryEvent): void { this.event = event; - return { status: Status.Success }; + // tslint:disable-next-line + TestBackend.sendEventCalled && TestBackend.sendEventCalled(event); } } diff --git a/packages/core/test/mocks/integration.ts b/packages/core/test/mocks/integration.ts index 4f89a04fd78f..a12e7a107e69 100644 --- a/packages/core/test/mocks/integration.ts +++ b/packages/core/test/mocks/integration.ts @@ -8,7 +8,7 @@ export class TestIntegration implements Integration { public setupOnce(): void { configureScope(scope => { - scope.addEventProcessor(async (event: SentryEvent) => { + scope.addEventProcessor((event: SentryEvent) => { if (!getCurrentHub().getIntegration(TestIntegration)) { return event; } diff --git a/packages/hub/package.json b/packages/hub/package.json index fcd4b70f3693..f797d72e4f31 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -44,7 +44,7 @@ "fix:prettier": "prettier --write \"{src,test}/**/*.ts\"", "fix:tslint": "tslint --fix -t stylish -p .", "test": "jest", - "test:watch": "jest --watch --notify" + "test:watch": "jest --watch" }, "jest": { "collectCoverage": true, diff --git a/packages/hub/src/hub.ts b/packages/hub/src/hub.ts index eaafd54d9657..ae49978cc283 100644 --- a/packages/hub/src/hub.ts +++ b/packages/hub/src/hub.ts @@ -27,6 +27,8 @@ declare module 'domain' { * * WARNING: This number should only be incresed when the global interface * changes a and new methods are introduced. + * + * @hidden */ export const API_VERSION = 3; @@ -66,27 +68,13 @@ export class Hub { } } - /** - * Internal helper function to call an async method on the top client if it - * exists. - * - * @param method The method to call on the client/client. - * @param args Arguments to pass to the client/frontend. - */ - private invokeClientAsync(method: string, ...args: any[]): void { - const top = this.getStackTop(); - if (top && top.client && top.client[method]) { - top.client[method](...args, top.scope).catch((err: any) => { - logger.error(err); - }); - } - } - /** * Checks if this hub's version is older than the given version. * * @param version A version number to compare to. * @return True if the given version is newer; otherwise false. + * + * @hidden */ public isOlderThan(version: number): boolean { return this.version < version; @@ -196,7 +184,7 @@ export class Hub { */ public captureException(exception: any, hint?: SentryEventHint): string { const eventId = (this._lastEventId = uuid4()); - this.invokeClientAsync('captureException', exception, { + this.invokeClient('captureException', exception, { ...hint, event_id: eventId, }); @@ -213,7 +201,7 @@ export class Hub { */ public captureMessage(message: string, level?: Severity, hint?: SentryEventHint): string { const eventId = (this._lastEventId = uuid4()); - this.invokeClientAsync('captureMessage', message, level, { + this.invokeClient('captureMessage', message, level, { ...hint, event_id: eventId, }); @@ -228,7 +216,7 @@ export class Hub { */ public captureEvent(event: SentryEvent, hint?: SentryEventHint): string { const eventId = (this._lastEventId = uuid4()); - this.invokeClientAsync('captureEvent', event, { + this.invokeClient('captureEvent', event, { ...hint, event_id: eventId, }); @@ -363,7 +351,7 @@ export function getCurrentHub(): Hub { * This will tell whether a carrier has a hub on it or not * @param carrier object */ -export function hasHubOnCarrier(carrier: any): boolean { +function hasHubOnCarrier(carrier: any): boolean { if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) { return true; } else { @@ -375,6 +363,7 @@ export function hasHubOnCarrier(carrier: any): boolean { * This will create a new {@link Hub} and add to the passed object on * __SENTRY__.hub. * @param carrier object + * @hidden */ export function getHubFromCarrier(carrier: any): Hub { if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) { diff --git a/packages/hub/src/index.ts b/packages/hub/src/index.ts index 743beb0302ef..6656b1b24df9 100644 --- a/packages/hub/src/index.ts +++ b/packages/hub/src/index.ts @@ -1,3 +1,3 @@ export { Carrier, Layer } from './interfaces'; export { addGlobalEventProcessor, Scope } from './scope'; -export { getCurrentHub, getHubFromCarrier, getMainCarrier, Hub, setHubOnCarrier } from './hub'; +export { getCurrentHub, getHubFromCarrier, getMainCarrier, Hub, makeMain, setHubOnCarrier } from './hub'; diff --git a/packages/hub/src/interfaces.ts b/packages/hub/src/interfaces.ts index e1c25ba4969b..963cb08240ab 100644 --- a/packages/hub/src/interfaces.ts +++ b/packages/hub/src/interfaces.ts @@ -1,13 +1,19 @@ import { Hub } from './hub'; import { Scope } from './scope'; -/** A layer in the process stack. */ +/** + * A layer in the process stack. + * @hidden + */ export interface Layer { client?: any; scope?: Scope; } -/** An object that contains a hub and maintains a scope stack. */ +/** + * An object that contains a hub and maintains a scope stack. + * @hidden + */ export interface Carrier { __SENTRY__?: { hub?: Hub; diff --git a/packages/hub/src/scope.ts b/packages/hub/src/scope.ts index c32de00f03a7..1286537745ae 100644 --- a/packages/hub/src/scope.ts +++ b/packages/hub/src/scope.ts @@ -1,7 +1,15 @@ import { Breadcrumb, SentryEvent, SentryEventHint, Severity, User } from '@sentry/types'; +import { isFunction, isThenable } from '@sentry/utils/is'; import { getGlobalObject } from '@sentry/utils/misc'; import { assign, safeNormalize } from '@sentry/utils/object'; +import { SyncPromise } from '@sentry/utils/syncpromise'; +/** + * Event processors are used to change the event before it will be send. + * We strongly advise to make this function sync. + * Returning a Promise will work just fine, but better be sure that you know what you are doing. + * Event processing will be deferred until your Promise is resolved. + */ export type EventProcessor = ( event: SentryEvent, hint?: SentryEventHint, @@ -68,19 +76,29 @@ export class Scope { /** * This will be called after {@link applyToEvent} is finished. */ - protected async notifyEventProcessors(event: SentryEvent, hint?: SentryEventHint): Promise { - let processedEvent: SentryEvent | null = event; - for (const processor of [...getGlobalEventProcessors(), ...this.eventProcessors]) { - try { - processedEvent = await processor({ ...processedEvent }, hint); - if (processedEvent === null) { - return null; + protected notifyEventProcessors( + processors: EventProcessor[], + event: SentryEvent | null, + hint?: SentryEventHint, + index: number = 0, + ): SyncPromise { + return new SyncPromise((resolve, reject) => { + const processor = processors[index]; + if (event === null || !isFunction(processor)) { + resolve(event); + } else { + const result = processor({ ...event }, hint) as SentryEvent | null; + if (isThenable(result)) { + (result as Promise) + .then(final => this.notifyEventProcessors(processors, final, hint, index + 1).then(resolve)) + .catch(reject); + } else { + this.notifyEventProcessors(processors, result, hint, index + 1) + .then(resolve) + .catch(reject); } - } catch (e) { - continue; } - } - return processedEvent; + }); } /** @@ -208,12 +226,13 @@ export class Scope { * @param event SentryEvent * @param hint May contain additional informartion about the original exception. * @param maxBreadcrumbs number of max breadcrumbs to merged into event. + * @hidden */ - public async applyToEvent( + public applyToEvent( event: SentryEvent, hint?: SentryEventHint, maxBreadcrumbs?: number, - ): Promise { + ): SyncPromise { if (this.extra && Object.keys(this.extra).length) { event.extra = { ...this.extra, ...event.extra }; } @@ -237,7 +256,7 @@ export class Scope { : this.breadcrumbs; } - return this.notifyEventProcessors(event, hint); + return this.notifyEventProcessors([...getGlobalEventProcessors(), ...this.eventProcessors], event, hint); } } diff --git a/packages/hub/test/hub.test.ts b/packages/hub/test/hub.test.ts index 7992a3de89fd..75e455c9261b 100644 --- a/packages/hub/test/hub.test.ts +++ b/packages/hub/test/hub.test.ts @@ -3,7 +3,6 @@ import { logger } from '@sentry/utils/logger'; import { getCurrentHub, Hub, Scope } from '../src'; const clientFn = jest.fn(); -const asyncClientFn = async () => Promise.reject('error'); const scope = new Scope(); describe('Hub', () => { @@ -19,7 +18,6 @@ describe('Hub', () => { test('pass in filled layer', () => { const hub = new Hub({ - asyncClientFn, clientFn, }); expect(hub.getStack()).toHaveLength(1); @@ -28,7 +26,6 @@ describe('Hub', () => { test('invoke client sync', () => { const hub = new Hub( { - asyncClientFn, clientFn, }, scope, @@ -42,7 +39,6 @@ describe('Hub', () => { test("don't invoke client sync with wrong func", () => { const hub = new Hub({ - asyncClientFn, clientFn, }); // @ts-ignore @@ -50,20 +46,6 @@ describe('Hub', () => { expect(clientFn).not.toHaveBeenCalled(); }); - test('invoke client async catch error in case', done => { - jest.spyOn(logger, 'error'); - const hub = new Hub({ - asyncClientFn, - clientFn, - }); - (hub as any).invokeClientAsync('asyncClientFn', true); - setTimeout(() => { - // tslint:disable-next-line - expect(logger.error).toHaveBeenCalled(); - done(); - }); - }); - test('isOlderThan', () => { const hub = new Hub(); expect(hub.isOlderThan(0)).toBeFalsy(); @@ -190,7 +172,7 @@ describe('Hub', () => { test('captureException', () => { const hub = new Hub(); - const spy = jest.spyOn(hub as any, 'invokeClientAsync'); + const spy = jest.spyOn(hub as any, 'invokeClient'); hub.captureException('a'); expect(spy).toHaveBeenCalled(); expect(spy.mock.calls[0][0]).toBe('captureException'); @@ -199,7 +181,7 @@ describe('Hub', () => { test('captureMessage', () => { const hub = new Hub(); - const spy = jest.spyOn(hub as any, 'invokeClientAsync'); + const spy = jest.spyOn(hub as any, 'invokeClient'); hub.captureMessage('a'); expect(spy).toHaveBeenCalled(); expect(spy.mock.calls[0][0]).toBe('captureMessage'); @@ -211,7 +193,7 @@ describe('Hub', () => { extra: { b: 3 }, }; const hub = new Hub(); - const spy = jest.spyOn(hub as any, 'invokeClientAsync'); + const spy = jest.spyOn(hub as any, 'invokeClient'); hub.captureEvent(event); expect(spy).toHaveBeenCalled(); expect(spy.mock.calls[0][0]).toBe('captureEvent'); @@ -245,37 +227,38 @@ describe('Hub', () => { }); }); - test('pushScope inherit processors', async () => { + test('pushScope inherit processors', () => { + expect.assertions(1); const event: SentryEvent = { extra: { b: 3 }, }; const localScope = new Scope(); localScope.setExtra('a', 'b'); const hub = new Hub({ a: 'b' }, localScope); - const callCounter = jest.fn(); + localScope.addEventProcessor(async (processedEvent: SentryEvent) => { - callCounter(1); processedEvent.dist = '1'; return processedEvent; }); + hub.pushScope(); const pushedScope = hub.getStackTop().scope; - if (pushedScope) { - const final = await pushedScope.applyToEvent(event); + + return pushedScope!.applyToEvent(event).then(final => { expect(final!.dist).toEqual('1'); - } + }); }); test('captureException should set event_id in hint', () => { const hub = new Hub(); - const spy = jest.spyOn(hub as any, 'invokeClientAsync'); + const spy = jest.spyOn(hub as any, 'invokeClient'); hub.captureException('a'); expect(spy.mock.calls[0][2].event_id).toBeTruthy(); }); test('captureMessage should set event_id in hint', () => { const hub = new Hub(); - const spy = jest.spyOn(hub as any, 'invokeClientAsync'); + const spy = jest.spyOn(hub as any, 'invokeClient'); hub.captureMessage('a'); expect(spy.mock.calls[0][3].event_id).toBeTruthy(); }); @@ -285,7 +268,7 @@ describe('Hub', () => { extra: { b: 3 }, }; const hub = new Hub(); - const spy = jest.spyOn(hub as any, 'invokeClientAsync'); + const spy = jest.spyOn(hub as any, 'invokeClient'); hub.captureEvent(event); expect(spy.mock.calls[0][2].event_id).toBeTruthy(); }); diff --git a/packages/hub/test/scope.test.ts b/packages/hub/test/scope.test.ts index 4b223e868631..7b4c5fc72e1a 100644 --- a/packages/hub/test/scope.test.ts +++ b/packages/hub/test/scope.test.ts @@ -86,7 +86,8 @@ describe('Scope', () => { expect(listener.mock.calls[0][0].extra).toEqual({ a: 2 }); }); - test('applyToEvent', async () => { + test('applyToEvent', () => { + expect.assertions(6); const scope = new Scope(); scope.setExtra('a', 2); scope.setTag('a', 'b'); @@ -95,16 +96,18 @@ describe('Scope', () => { scope.setLevel(Severity.Warning); scope.addBreadcrumb({ message: 'test' }, 100); const event: SentryEvent = {}; - await scope.applyToEvent(event); - expect(event.extra).toEqual({ a: 2 }); - expect(event.tags).toEqual({ a: 'b' }); - expect(event.user).toEqual({ id: '1' }); - expect(event.fingerprint).toEqual(['abcd']); - expect(event.level).toEqual('warning'); - expect(event.breadcrumbs).toEqual([{ message: 'test' }]); + return scope.applyToEvent(event).then(processedEvent => { + expect(processedEvent!.extra).toEqual({ a: 2 }); + expect(processedEvent!.tags).toEqual({ a: 'b' }); + expect(processedEvent!.user).toEqual({ id: '1' }); + expect(processedEvent!.fingerprint).toEqual(['abcd']); + expect(processedEvent!.level).toEqual('warning'); + expect(processedEvent!.breadcrumbs).toEqual([{ message: 'test' }]); + }); }); - test('applyToEvent merge', async () => { + test('applyToEvent merge', () => { + expect.assertions(5); const scope = new Scope(); scope.setExtra('a', 2); scope.setTag('a', 'b'); @@ -118,31 +121,36 @@ describe('Scope', () => { tags: { b: 'c' }, user: { id: '3' }, }; - await scope.applyToEvent(event); - expect(event.extra).toEqual({ a: 2, b: 3 }); - expect(event.tags).toEqual({ a: 'b', b: 'c' }); - expect(event.user).toEqual({ id: '3' }); - expect(event.fingerprint).toEqual(['efgh', 'abcd']); - expect(event.breadcrumbs).toEqual([{ message: 'test2' }]); + return scope.applyToEvent(event).then(processedEvent => { + expect(processedEvent!.extra).toEqual({ a: 2, b: 3 }); + expect(processedEvent!.tags).toEqual({ a: 'b', b: 'c' }); + expect(processedEvent!.user).toEqual({ id: '3' }); + expect(processedEvent!.fingerprint).toEqual(['efgh', 'abcd']); + expect(processedEvent!.breadcrumbs).toEqual([{ message: 'test2' }]); + }); }); test('applyToEvent message fingerprint', async () => { + expect.assertions(1); const scope = new Scope(); const event: SentryEvent = { fingerprint: ['bar'], message: 'foo', }; - await scope.applyToEvent(event); - expect(event.fingerprint).toEqual(['bar', 'foo']); + return scope.applyToEvent(event).then(processedEvent => { + expect(processedEvent!.fingerprint).toEqual(['bar', 'foo']); + }); }); - test('applyToEvent scope level should be stronger', async () => { + test('applyToEvent scope level should be stronger', () => { + expect.assertions(1); const scope = new Scope(); scope.setLevel(Severity.Warning); const event: SentryEvent = {}; event.level = Severity.Critical; - await scope.applyToEvent(event); - expect(event.level).toEqual('warning'); + return scope.applyToEvent(event).then(processedEvent => { + expect(processedEvent!.level).toEqual('warning'); + }); }); test('clear', () => { @@ -157,30 +165,33 @@ describe('Scope', () => { expect((scope as any).extra).toEqual({}); }); - test('addEventProcessor', async done => { - expect.assertions(2); + test('addEventProcessor', () => { + expect.assertions(3); const event: SentryEvent = { extra: { b: 3 }, }; const localScope = new Scope(); localScope.setExtra('a', 'b'); - localScope.addEventProcessor(async (processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: SentryEvent) => { expect(processedEvent.extra).toEqual({ a: 'b', b: 3 }); return processedEvent; }); - localScope.addEventProcessor(async (processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: SentryEvent) => { processedEvent.dist = '1'; return processedEvent; }); - localScope.addEventProcessor(async (processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: SentryEvent) => { expect(processedEvent.dist).toEqual('1'); - done(); return processedEvent; }); - await localScope.applyToEvent(event); + + return localScope.applyToEvent(event).then(final => { + expect(final!.dist).toEqual('1'); + }); }); test('addEventProcessor async', async () => { + jest.useFakeTimers(); expect.assertions(6); const event: SentryEvent = { extra: { b: 3 }, @@ -188,7 +199,7 @@ describe('Scope', () => { const localScope = new Scope(); localScope.setExtra('a', 'b'); const callCounter = jest.fn(); - localScope.addEventProcessor(async (processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: SentryEvent) => { callCounter(1); expect(processedEvent.extra).toEqual({ a: 'b', b: 3 }); return processedEvent; @@ -202,21 +213,57 @@ describe('Scope', () => { processedEvent.dist = '1'; resolve(processedEvent); }, 1); + jest.runAllTimers(); + }), + ); + localScope.addEventProcessor((processedEvent: SentryEvent) => { + callCounter(4); + return processedEvent; + }); + + return localScope.applyToEvent(event).then(processedEvent => { + expect(callCounter.mock.calls[0][0]).toBe(1); + expect(callCounter.mock.calls[1][0]).toBe(2); + expect(callCounter.mock.calls[2][0]).toBe(3); + expect(callCounter.mock.calls[3][0]).toBe(4); + expect(processedEvent!.dist).toEqual('1'); + }); + }); + + test('addEventProcessor async with reject', async () => { + jest.useFakeTimers(); + expect.assertions(2); + const event: SentryEvent = { + extra: { b: 3 }, + }; + const localScope = new Scope(); + localScope.setExtra('a', 'b'); + const callCounter = jest.fn(); + localScope.addEventProcessor((processedEvent: SentryEvent) => { + callCounter(1); + expect(processedEvent.extra).toEqual({ a: 'b', b: 3 }); + return processedEvent; + }); + localScope.addEventProcessor( + async (_processedEvent: SentryEvent) => + new Promise((_, reject) => { + setTimeout(() => { + reject('bla'); + }, 1); + jest.runAllTimers(); }), ); - localScope.addEventProcessor(async (processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: SentryEvent) => { callCounter(4); return processedEvent; }); - const final = await localScope.applyToEvent(event); - expect(callCounter.mock.calls[0][0]).toBe(1); - expect(callCounter.mock.calls[1][0]).toBe(2); - expect(callCounter.mock.calls[2][0]).toBe(3); - expect(callCounter.mock.calls[3][0]).toBe(4); - expect(final!.dist).toEqual('1'); + + return localScope.applyToEvent(event).catch(reason => { + expect(reason).toEqual('bla'); + }); }); - test('addEventProcessor return null', async () => { + test('addEventProcessor return null', () => { expect.assertions(1); const event: SentryEvent = { extra: { b: 3 }, @@ -224,11 +271,12 @@ describe('Scope', () => { const localScope = new Scope(); localScope.setExtra('a', 'b'); localScope.addEventProcessor(async (_: SentryEvent) => null); - const final = await localScope.applyToEvent(event); - expect(final).toBeNull(); + return localScope.applyToEvent(event).then(processedEvent => { + expect(processedEvent).toBeNull(); + }); }); - test('addEventProcessor pass along hint', async () => { + test('addEventProcessor pass along hint', () => { expect.assertions(3); const event: SentryEvent = { extra: { b: 3 }, @@ -240,7 +288,8 @@ describe('Scope', () => { expect(hint!.syntheticException).toBeTruthy(); return internalEvent; }); - const final = await localScope.applyToEvent(event, { syntheticException: new Error('what') }); - expect(final).toEqual(event); + return localScope.applyToEvent(event, { syntheticException: new Error('what') }).then(processedEvent => { + expect(processedEvent).toEqual(event); + }); }); }); diff --git a/packages/minimal/package.json b/packages/minimal/package.json index 4e95d285bca0..8691cbf419d7 100644 --- a/packages/minimal/package.json +++ b/packages/minimal/package.json @@ -44,7 +44,7 @@ "fix:prettier": "prettier --write \"{src,test}/**/*.ts\"", "fix:tslint": "tslint --fix -t stylish -p .", "test": "jest", - "test:watch": "jest --watch --notify" + "test:watch": "jest --watch" }, "jest": { "collectCoverage": true, diff --git a/packages/node/src/backend.ts b/packages/node/src/backend.ts index 5423686e1aa5..e42af177d50c 100644 --- a/packages/node/src/backend.ts +++ b/packages/node/src/backend.ts @@ -2,6 +2,7 @@ import { BaseBackend, Dsn, getCurrentHub, Options } from '@sentry/core'; import { SentryEvent, SentryEventHint, Severity, Transport } from '@sentry/types'; import { isError, isPlainObject } from '@sentry/utils/is'; import { limitObjectDepthToSize, serializeKeysToEventMessage } from '@sentry/utils/object'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { createHash } from 'crypto'; import { extractStackFromError, parseError, parseStack, prepareFramesForEvent } from './parsers'; import { HTTPSTransport, HTTPTransport } from './transports'; @@ -35,7 +36,10 @@ export interface NodeOptions extends Options { frameContextLines?: number; } -/** The Sentry Node SDK Backend. */ +/** + * The Sentry Node SDK Backend. + * @hidden + */ export class NodeBackend extends BaseBackend { /** * @inheritdoc @@ -69,7 +73,7 @@ export class NodeBackend extends BaseBackend { /** * @inheritDoc */ - public async eventFromException(exception: any, hint?: SentryEventHint): Promise { + public eventFromException(exception: any, hint?: SentryEventHint): SyncPromise { let ex: any = exception; if (!isError(exception)) { @@ -97,36 +101,42 @@ export class NodeBackend extends BaseBackend { } } - const event: SentryEvent = await parseError(ex as Error, this.options); - - return { - ...event, - event_id: hint && hint.event_id, - }; + return new SyncPromise(resolve => + parseError(ex as Error, this.options).then(event => { + resolve({ + ...event, + event_id: hint && hint.event_id, + }); + }), + ); } /** * @inheritDoc */ - public async eventFromMessage( + public eventFromMessage( message: string, level: Severity = Severity.Info, hint?: SentryEventHint, - ): Promise { + ): SyncPromise { const event: SentryEvent = { event_id: hint && hint.event_id, level, message, }; - if (this.options.attachStacktrace && hint && hint.syntheticException) { - const stack = hint.syntheticException ? await extractStackFromError(hint.syntheticException) : []; - const frames = await parseStack(stack, this.options); - event.stacktrace = { - frames: prepareFramesForEvent(frames), - }; - } - - return event; + return new SyncPromise(resolve => { + if (this.options.attachStacktrace && hint && hint.syntheticException) { + const stack = hint.syntheticException ? extractStackFromError(hint.syntheticException) : []; + parseStack(stack, this.options).then(frames => { + event.stacktrace = { + frames: prepareFramesForEvent(frames), + }; + resolve(event); + }); + } else { + resolve(event); + } + }); } } diff --git a/packages/node/src/client.ts b/packages/node/src/client.ts index e76ea420fd25..df295e677d80 100644 --- a/packages/node/src/client.ts +++ b/packages/node/src/client.ts @@ -1,5 +1,6 @@ import { BaseClient, Scope } from '@sentry/core'; import { SentryEvent, SentryEventHint } from '@sentry/types'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { NodeBackend, NodeOptions } from './backend'; import { SDK_NAME, SDK_VERSION } from './version'; @@ -21,7 +22,7 @@ export class NodeClient extends BaseClient { /** * @inheritDoc */ - protected async prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): Promise { + protected prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): SyncPromise { event.platform = event.platform || 'node'; event.sdk = { ...event.sdk, diff --git a/packages/node/src/handlers.ts b/packages/node/src/handlers.ts index 4c4827f0fdf6..9d0433f684fb 100644 --- a/packages/node/src/handlers.ts +++ b/packages/node/src/handlers.ts @@ -152,6 +152,7 @@ function extractUserData(req: { [key: string]: any }, keys: boolean | string[]): * @param event Will be mutated and enriched with req data * @param req Request object * @param options object containing flags to enable functionality + * @hidden */ export function parseRequest( event: SentryEvent, @@ -211,7 +212,10 @@ export function parseRequest( return event; } -/** JSDoc */ +/** + * Express compatible request handler. + * @see Exposed as `Handlers.requestHandler` + */ export function requestHandler(options?: { request?: boolean; serverName?: boolean; @@ -230,7 +234,7 @@ export function requestHandler(options?: { local.on('error', next); local.run(() => { getCurrentHub().configureScope(scope => - scope.addEventProcessor(async (event: SentryEvent) => parseRequest(event, req, options)), + scope.addEventProcessor((event: SentryEvent) => parseRequest(event, req, options)), ); next(); }); @@ -253,7 +257,10 @@ function getStatusCodeFromResponse(error: MiddlewareError): number { return statusCode ? parseInt(statusCode as string, 10) : 500; } -/** JSDoc */ +/** + * Express compatible error handler. + * @see Exposed as `Handlers.errorHandler` + */ export function errorHandler(): ( error: MiddlewareError, req: http.IncomingMessage, @@ -277,7 +284,9 @@ export function errorHandler(): ( }; } -/** JSDoc */ +/** + * @hidden + */ export function defaultOnFatalError(error: Error): void { console.error(error && error.stack ? error.stack : error); const options = (getCurrentHub().getClient() as NodeClient).getOptions(); diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 59ec621786e2..1d93d0786a14 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -27,7 +27,7 @@ export { withScope, } from '@sentry/core'; -export { NodeBackend, NodeOptions } from './backend'; +export { NodeOptions } from './backend'; export { NodeClient } from './client'; export { defaultIntegrations, init, flush, close } from './sdk'; export { SDK_NAME, SDK_VERSION } from './version'; @@ -35,7 +35,6 @@ export { SDK_NAME, SDK_VERSION } from './version'; import { Integrations as CoreIntegrations } from '@sentry/core'; import * as Handlers from './handlers'; import * as NodeIntegrations from './integrations'; -import * as Parsers from './parsers'; import * as Transports from './transports'; const INTEGRATIONS = { @@ -43,4 +42,4 @@ const INTEGRATIONS = { ...NodeIntegrations, }; -export { INTEGRATIONS as Integrations, Transports, Parsers, Handlers }; +export { INTEGRATIONS as Integrations, Transports, Handlers }; diff --git a/packages/node/src/integrations/linkederrors.ts b/packages/node/src/integrations/linkederrors.ts index 727bd0f29454..df7395aabb5a 100644 --- a/packages/node/src/integrations/linkederrors.ts +++ b/packages/node/src/integrations/linkederrors.ts @@ -1,5 +1,6 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; import { Integration, SentryEvent, SentryEventHint, SentryException } from '@sentry/types'; +import { SyncPromise } from '@sentry/utils/syncpromise'; import { getExceptionFromError } from '../parsers'; const DEFAULT_KEY = 'cause'; @@ -45,10 +46,10 @@ export class LinkedErrors implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async (event: SentryEvent, hint?: SentryEventHint) => { + addGlobalEventProcessor((event: SentryEvent, hint?: SentryEventHint) => { const self = getCurrentHub().getIntegration(LinkedErrors); if (self) { - return self.handler(event, hint); + return (self.handler(event, hint) as unknown) as Promise; } return event; }); @@ -57,27 +58,36 @@ export class LinkedErrors implements Integration { /** * @inheritDoc */ - public async handler(event: SentryEvent, hint?: SentryEventHint): Promise { + public handler(event: SentryEvent, hint?: SentryEventHint): SyncPromise { if (!event.exception || !event.exception.values || !hint || !(hint.originalException instanceof Error)) { - return event; + return SyncPromise.resolve(event); } - const linkedErrors = await this.walkErrorTree(hint.originalException, this.key); - event.exception.values = [...linkedErrors, ...event.exception.values]; - return event; + + return new SyncPromise(resolve => { + this.walkErrorTree(hint.originalException as ExtendedError, this.key).then((linkedErrors: SentryException[]) => { + if (event && event.exception) { + event.exception.values = [...linkedErrors, ...event.exception.values]; + } + resolve(event); + }); + }); } /** * @inheritDoc */ - public async walkErrorTree( + public walkErrorTree( error: ExtendedError, key: string, stack: SentryException[] = [], - ): Promise { + ): SyncPromise { if (!(error[key] instanceof Error) || stack.length + 1 >= this.limit) { - return stack; + return SyncPromise.resolve(stack); } - const exception = await getExceptionFromError(error[key]); - return this.walkErrorTree(error[key], key, [exception, ...stack]); + return new SyncPromise(resolve => { + getExceptionFromError(error[key]).then((exception: SentryException) => { + this.walkErrorTree(error[key], key, [exception, ...stack]).then(resolve); + }); + }); } } diff --git a/packages/node/src/integrations/onuncaughtexception.ts b/packages/node/src/integrations/onuncaughtexception.ts index f099e5cf6d14..928bc3d40d1d 100644 --- a/packages/node/src/integrations/onuncaughtexception.ts +++ b/packages/node/src/integrations/onuncaughtexception.ts @@ -37,7 +37,9 @@ export class OnUncaughtException implements Integration { } } -/** JSDoc */ +/** + * @hidden + */ export function makeErrorHandler( onFatalError: (firstError: Error, secondError?: Error) => void = defaultOnFatalError, ): (error: Error) => void { @@ -58,7 +60,7 @@ export function makeErrorHandler( caughtFirstError = true; if (hub.getIntegration(OnUncaughtException)) { - hub.withScope(async (scope: Scope) => { + hub.withScope((scope: Scope) => { scope.setLevel(Severity.Fatal); hub.captureException(error, { originalException: error }); if (!calledFatalError) { diff --git a/packages/node/src/integrations/pluggable/modules.ts b/packages/node/src/integrations/pluggable/modules.ts index a689a0cbcf70..8d1a508c116f 100644 --- a/packages/node/src/integrations/pluggable/modules.ts +++ b/packages/node/src/integrations/pluggable/modules.ts @@ -19,7 +19,7 @@ export class Modules implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async event => { + addGlobalEventProcessor(event => { if (!getCurrentHub().getIntegration(Modules)) { return event; } diff --git a/packages/node/src/integrations/pluggable/transaction.ts b/packages/node/src/integrations/pluggable/transaction.ts index eba0c315c2e3..1944c5b1e12c 100644 --- a/packages/node/src/integrations/pluggable/transaction.ts +++ b/packages/node/src/integrations/pluggable/transaction.ts @@ -16,7 +16,7 @@ export class Transaction implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor(async event => { + addGlobalEventProcessor(event => { const self = getCurrentHub().getIntegration(Transaction); if (self) { return self.process(event); @@ -28,7 +28,7 @@ export class Transaction implements Integration { /** * @inheritDoc */ - public async process(event: SentryEvent): Promise { + public process(event: SentryEvent): SentryEvent { const frames = this.getFramesFromEvent(event); // use for loop so we don't have to reverse whole frames array diff --git a/packages/node/src/parsers.ts b/packages/node/src/parsers.ts index da112a6025ce..6c715321c1e6 100644 --- a/packages/node/src/parsers.ts +++ b/packages/node/src/parsers.ts @@ -1,7 +1,8 @@ import { SentryEvent, SentryException, StackFrame } from '@sentry/types'; -import { readFileAsync } from '@sentry/utils/fs'; import { basename, dirname } from '@sentry/utils/path'; import { snipLine } from '@sentry/utils/string'; +import { SyncPromise } from '@sentry/utils/syncpromise'; +import { readFile } from 'fs'; import { LRUMap } from 'lru_map'; import * as stacktrace from 'stack-trace'; import { NodeOptions } from './backend'; @@ -12,6 +13,7 @@ const FILE_CONTENT_CACHE = new LRUMap(100); /** * Resets the file cache. Exists for testing purposes. + * @hidden */ export function resetFileContentCache(): void { FILE_CONTENT_CACHE.clear(); @@ -73,55 +75,61 @@ function getModule(filename: string, base?: string): string { * * @param filenames Array of filepaths to read content from. */ -async function readSourceFiles( - filenames: string[], -): Promise<{ - [key: string]: string; -}> { +function readSourceFiles(filenames: string[]): SyncPromise<{ [key: string]: string | null }> { // we're relying on filenames being de-duped already if (filenames.length === 0) { - return {}; + return SyncPromise.resolve({}); } - const sourceFiles: { - [key: string]: string; - } = {}; - - // tslint:disable-next-line:prefer-for-of - for (let i = 0; i < filenames.length; i++) { - const filename = filenames[i]; - - const cache = FILE_CONTENT_CACHE.get(filename); - // We have a cache hit - if (cache !== undefined) { - // If it's not null (which means we found a file and have a content) - // we set the content and return it later. - if (cache !== null) { - sourceFiles[filename] = cache; + return new SyncPromise<{ + [key: string]: string | null; + }>(resolve => { + const sourceFiles: { + [key: string]: string | null; + } = {}; + + let count = 0; + // tslint:disable-next-line:prefer-for-of + for (let i = 0; i < filenames.length; i++) { + const filename = filenames[i]; + + const cache = FILE_CONTENT_CACHE.get(filename); + // We have a cache hit + if (cache !== undefined) { + // If it's not null (which means we found a file and have a content) + // we set the content and return it later. + if (cache !== null) { + sourceFiles[filename] = cache; + } + count++; + // In any case we want to skip here then since we have a content already or we couldn't + // read the file and don't want to try again. + if (count === filenames.length) { + resolve(sourceFiles); + } + continue; } - // In any case we want to skip here then since we have a content already or we couldn't - // read the file and don't want to try again. - continue; - } - let content = null; - try { - content = await readFileAsync(filename); - sourceFiles[filename] = content; - } catch (_) { - // unsure what to add here as the file is unreadable + readFile(filename, (err: Error, data: Buffer) => { + const content = err ? null : data.toString(); + sourceFiles[filename] = content; + + // We always want to set the cache, even to null which means there was an error reading the file. + // We do not want to try to read the file again. + FILE_CONTENT_CACHE.set(filename, content); + count++; + if (count === filenames.length) { + resolve(sourceFiles); + } + }); } - - // We always want to set the cache, even to null which means there was an error reading the file. - // We do not want to try to read the file again. - FILE_CONTENT_CACHE.set(filename, content); - } - - return sourceFiles; + }); } -/** JSDoc */ -export async function extractStackFromError(error: Error): Promise { +/** + * @hidden + */ +export function extractStackFromError(error: Error): stacktrace.StackFrame[] { const stack = stacktrace.parse(error); if (!stack) { return []; @@ -129,8 +137,10 @@ export async function extractStackFromError(error: Error): Promise { +/** + * @hidden + */ +export function parseStack(stack: stacktrace.StackFrame[], options?: NodeOptions): SyncPromise { const filesToRead: string[] = []; const linesOfContext = @@ -171,15 +181,15 @@ export async function parseStack(stack: stacktrace.StackFrame[], options?: NodeO // We do an early return if we do not want to fetch context liens if (linesOfContext <= 0) { - return frames; + return SyncPromise.resolve(frames); } try { - return await addPrePostContext(filesToRead, frames, linesOfContext); + return addPrePostContext(filesToRead, frames, linesOfContext); } catch (_) { // This happens in electron for example where we are not able to read files from asar. // So it's fine, we recover be just returning all frames without pre/post context. - return frames; + return SyncPromise.resolve(frames); } } @@ -189,61 +199,78 @@ export async function parseStack(stack: stacktrace.StackFrame[], options?: NodeO * @param filesToRead string[] of filepaths * @param frames StackFrame[] containg all frames */ -async function addPrePostContext( +function addPrePostContext( filesToRead: string[], frames: StackFrame[], linesOfContext: number, -): Promise { - const sourceFiles = await readSourceFiles(filesToRead); - return frames.map(frame => { - if (frame.filename && sourceFiles[frame.filename]) { - try { - const lines = sourceFiles[frame.filename].split('\n'); - - frame.pre_context = lines - .slice(Math.max(0, (frame.lineno || 0) - (linesOfContext + 1)), (frame.lineno || 0) - 1) - .map((line: string) => snipLine(line, 0)); - - frame.context_line = snipLine(lines[(frame.lineno || 0) - 1], frame.colno || 0); - - frame.post_context = lines - .slice(frame.lineno || 0, (frame.lineno || 0) + linesOfContext) - .map((line: string) => snipLine(line, 0)); - } catch (e) { - // anomaly, being defensive in case - // unlikely to ever happen in practice but can definitely happen in theory - } - } - return frame; - }); +): SyncPromise { + return new SyncPromise(resolve => + readSourceFiles(filesToRead).then(sourceFiles => { + const result = frames.map(frame => { + if (frame.filename && sourceFiles[frame.filename]) { + try { + const lines = (sourceFiles[frame.filename] as string).split('\n'); + + frame.pre_context = lines + .slice(Math.max(0, (frame.lineno || 0) - (linesOfContext + 1)), (frame.lineno || 0) - 1) + .map((line: string) => snipLine(line, 0)); + + frame.context_line = snipLine(lines[(frame.lineno || 0) - 1], frame.colno || 0); + + frame.post_context = lines + .slice(frame.lineno || 0, (frame.lineno || 0) + linesOfContext) + .map((line: string) => snipLine(line, 0)); + } catch (e) { + // anomaly, being defensive in case + // unlikely to ever happen in practice but can definitely happen in theory + } + } + return frame; + }); + + resolve(result); + }), + ); } -/** JSDoc */ -export async function getExceptionFromError(error: Error, options?: NodeOptions): Promise { +/** + * @hidden + */ +export function getExceptionFromError(error: Error, options?: NodeOptions): SyncPromise { const name = error.name || error.constructor.name; - const stack = await extractStackFromError(error); - const frames = await parseStack(stack, options); - - return { - stacktrace: { - frames: prepareFramesForEvent(frames), - }, - type: name, - value: error.message, - }; + const stack = extractStackFromError(error); + return new SyncPromise(resolve => + parseStack(stack, options).then(frames => { + const result = { + stacktrace: { + frames: prepareFramesForEvent(frames), + }, + type: name, + value: error.message, + }; + resolve(result); + }), + ); } -/** JSDoc */ -export async function parseError(error: ExtendedError, options?: NodeOptions): Promise { - const exception = await getExceptionFromError(error, options); - return { - exception: { - values: [exception], - }, - }; +/** + * @hidden + */ +export function parseError(error: ExtendedError, options?: NodeOptions): SyncPromise { + return new SyncPromise(resolve => + getExceptionFromError(error, options).then((exception: SentryException) => { + resolve({ + exception: { + values: [exception], + }, + }); + }), + ); } -/** JSDoc */ +/** + * @hidden + */ export function prepareFramesForEvent(stack: StackFrame[]): StackFrame[] { if (!stack || !stack.length) { return []; diff --git a/packages/node/src/sdk.ts b/packages/node/src/sdk.ts index f96ca44c09fa..a70e5fb69ac4 100644 --- a/packages/node/src/sdk.ts +++ b/packages/node/src/sdk.ts @@ -29,30 +29,40 @@ export const defaultIntegrations = [ * provided methods. * * @example + * ``` + * * const { init } = require('@sentry/node'); * * init({ * dsn: '__DSN__', * // ... * }); - * + * ``` * * @example + * ``` + * * const { configureScope } = require('@sentry/node'); * configureScope((scope: Scope) => { * scope.setExtra({ battery: 0.7 }); * scope.setTag({ user_mode: 'admin' }); * scope.setUser({ id: '4711' }); * }); + * ``` * * @example + * ``` + * * const { addBreadcrumb } = require('@sentry/node'); * addBreadcrumb({ * message: 'My Breadcrumb', * // ... * }); + * ``` * * @example + * ``` + * * const Sentry = require('@sentry/node'); * Sentry.captureMessage('Hello, world!'); * Sentry.captureException(new Error('Good bye')); @@ -62,8 +72,9 @@ export const defaultIntegrations = [ * // ... * ], * }); + * ``` * - * @see NodeOptions for documentation on configuration options. + * @see {@link NodeOptions} for documentation on configuration options. */ export function init(options: NodeOptions = {}): void { if (options.defaultIntegrations === undefined) { diff --git a/packages/node/src/transports/base.ts b/packages/node/src/transports/base.ts index c1b828757922..4bd74729b473 100644 --- a/packages/node/src/transports/base.ts +++ b/packages/node/src/transports/base.ts @@ -1,12 +1,17 @@ -import { API, PromiseBuffer, SentryError } from '@sentry/core'; +import { API } from '@sentry/core'; import { SentryResponse, Status, Transport, TransportOptions } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; +import { PromiseBuffer } from '@sentry/utils/promisebuffer'; import * as fs from 'fs'; import * as http from 'http'; import * as https from 'https'; import * as url from 'url'; import { SDK_NAME, SDK_VERSION } from '../version'; -/** Internal used interface for typescript */ +/** + * Internal used interface for typescript. + * @hidden + */ export interface HTTPRequest { request( options: http.RequestOptions | https.RequestOptions | string | url.URL, diff --git a/packages/node/src/transports/http.ts b/packages/node/src/transports/http.ts index 4be6ce3ca8f8..4b1f557b6f14 100644 --- a/packages/node/src/transports/http.ts +++ b/packages/node/src/transports/http.ts @@ -1,5 +1,5 @@ -import { SentryError } from '@sentry/core'; import { SentryResponse, TransportOptions } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; import * as http from 'http'; import * as HttpsProxyAgent from 'https-proxy-agent'; import { BaseTransport } from './base'; diff --git a/packages/node/src/transports/https.ts b/packages/node/src/transports/https.ts index 35ca3353bde8..3117845b1ff1 100644 --- a/packages/node/src/transports/https.ts +++ b/packages/node/src/transports/https.ts @@ -1,5 +1,5 @@ -import { SentryError } from '@sentry/core'; import { SentryResponse, TransportOptions } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; import * as https from 'https'; import * as HttpsProxyAgent from 'https-proxy-agent'; import { BaseTransport } from './base'; diff --git a/packages/node/test/index.test.ts b/packages/node/test/index.test.ts index 75cfb49a2a90..ebb194f5c48e 100644 --- a/packages/node/test/index.test.ts +++ b/packages/node/test/index.test.ts @@ -8,12 +8,12 @@ import { configureScope, getCurrentHub, init, - NodeBackend, NodeClient, Scope, SentryEvent, SentryResponse, } from '../src'; +import { NodeBackend } from '../src/backend'; import { SetTimeoutTransport } from './helper/settimeouttransport'; const dsn = 'https://53039209a22b4ec1bcc296a3c9fdecd6@sentry.io/4291'; diff --git a/packages/node/test/integrations/linkederrors.test.ts b/packages/node/test/integrations/linkederrors.test.ts index 1f41ea9265d0..2ab688deeae0 100644 --- a/packages/node/test/integrations/linkederrors.test.ts +++ b/packages/node/test/integrations/linkederrors.test.ts @@ -1,4 +1,5 @@ -import { NodeBackend } from '../../src'; +import { SentryEvent } from '../../src'; +import { NodeBackend } from '../../src/backend'; import { LinkedErrors } from '../../src/integrations/linkederrors'; let linkedErrors: LinkedErrors; @@ -14,26 +15,37 @@ describe('LinkedErrors', () => { describe('handler', () => { it('should bail out if event doesnt contain exception', async () => { + expect.assertions(2); const spy = jest.spyOn(linkedErrors, 'walkErrorTree'); const event = { message: 'foo', }; - const result = await linkedErrors.handler(event); - expect(spy.mock.calls.length).toEqual(0); - expect(result).toEqual(event); + return linkedErrors.handler(event).then(result => { + expect(spy.mock.calls.length).toEqual(0); + expect(result).toEqual(event); + }); }); it('should bail out if event contains exception, but no hint', async () => { + expect.assertions(2); const spy = jest.spyOn(linkedErrors, 'walkErrorTree'); const one = new Error('originalException'); const backend = new NodeBackend({}); - const event = await backend.eventFromException(one); - const result = await linkedErrors.handler(event); - expect(spy.mock.calls.length).toEqual(0); - expect(result).toEqual(event); + let event: SentryEvent | undefined; + return backend + .eventFromException(one) + .then(eventFromException => { + event = eventFromException; + return linkedErrors.handler(eventFromException); + }) + .then(result => { + expect(spy.mock.calls.length).toEqual(0); + expect(result).toEqual(event); + }); }); it('should call walkErrorTree if event contains exception and hint with originalException', async () => { + expect.assertions(1); const spy = jest.spyOn(linkedErrors, 'walkErrorTree').mockImplementation( async () => new Promise<[]>(resolve => { @@ -42,14 +54,19 @@ describe('LinkedErrors', () => { ); const one = new Error('originalException'); const backend = new NodeBackend({}); - const event = await backend.eventFromException(one); - await linkedErrors.handler(event, { - originalException: one, - }); - expect(spy.mock.calls.length).toEqual(1); + return backend.eventFromException(one).then(event => + linkedErrors + .handler(event, { + originalException: one, + }) + .then(_ => { + expect(spy.mock.calls.length).toEqual(1); + }), + ); }); it('should recursively walk error to find linked exceptions and assign them to the event', async () => { + expect.assertions(10); const one: ExtendedError = new Error('one'); const two: ExtendedError = new TypeError('two'); const three: ExtendedError = new SyntaxError('three'); @@ -57,24 +74,28 @@ describe('LinkedErrors', () => { two.cause = three; const backend = new NodeBackend({}); - const event = await backend.eventFromException(one); - const result = await linkedErrors.handler(event, { - originalException: one, - }); - - 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'); + return backend.eventFromException(one).then(event => + 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'); + }), + ); }); it('should allow to change walk key', async () => { + expect.assertions(10); linkedErrors = new LinkedErrors({ key: 'reason', }); @@ -86,24 +107,28 @@ describe('LinkedErrors', () => { two.reason = three; const backend = new NodeBackend({}); - const event = await backend.eventFromException(one); - const result = await linkedErrors.handler(event, { - originalException: one, - }); - - 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'); + return backend.eventFromException(one).then(event => + 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'); + }), + ); }); it('should allow to change stack size limit', async () => { + expect.assertions(7); linkedErrors = new LinkedErrors({ limit: 2, }); @@ -115,18 +140,21 @@ describe('LinkedErrors', () => { two.cause = three; const backend = new NodeBackend({}); - const event = await backend.eventFromException(one); - const result = await linkedErrors.handler(event, { - originalException: one, - }); - - 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'); + return backend.eventFromException(one).then(event => + 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'); + }), + ); }); }); }); diff --git a/packages/node/test/integrations/transaction.test.ts b/packages/node/test/integrations/transaction.test.ts index 8341fd6e496a..e59f724bdd51 100644 --- a/packages/node/test/integrations/transaction.test.ts +++ b/packages/node/test/integrations/transaction.test.ts @@ -4,8 +4,8 @@ const transaction: Transaction = new Transaction(); describe('Transaction', () => { describe('extracts info from module/function of the first `in_app` frame', () => { - it('using module only', async () => { - const event = await transaction.process({ + it('using module only', () => { + const event = transaction.process({ exception: { values: [ { @@ -30,8 +30,8 @@ describe('Transaction', () => { expect(event.transaction).toEqual('Qux/?'); }); - it('using function only', async () => { - const event = await transaction.process({ + it('using function only', () => { + const event = transaction.process({ exception: { values: [ { @@ -56,8 +56,8 @@ describe('Transaction', () => { expect(event.transaction).toEqual('?/Baz'); }); - it('using module and function', async () => { - const event = await transaction.process({ + it('using module and function', () => { + const event = transaction.process({ exception: { values: [ { @@ -84,8 +84,8 @@ describe('Transaction', () => { expect(event.transaction).toEqual('Foo/Bar'); }); - it('using default', async () => { - const event = await transaction.process({ + it('using default', () => { + const event = transaction.process({ exception: { values: [ { @@ -108,8 +108,8 @@ describe('Transaction', () => { expect(event.transaction).toEqual(''); }); - it('no value with no `in_app` frame', async () => { - const event = await transaction.process({ + it('no value with no `in_app` frame', () => { + const event = transaction.process({ exception: { values: [ { diff --git a/packages/node/test/parsers.test.ts b/packages/node/test/parsers.test.ts index 1337413cc53f..01be51e7ea88 100644 --- a/packages/node/test/parsers.test.ts +++ b/packages/node/test/parsers.test.ts @@ -1,7 +1,7 @@ // import { StackFrame } from '@sentry/types'; import * as fs from 'fs'; import * as stacktrace from 'stack-trace'; -import { Parsers } from '../src'; +import * as Parsers from '../src/parsers'; import { getError } from './helper/error'; describe('parsers.ts', () => { @@ -19,27 +19,41 @@ describe('parsers.ts', () => { }); describe('lru file cache', () => { - test('parseStack with same file', async () => { - await Parsers.parseStack(frames); - const mockCalls = spy.mock.calls.length; - await Parsers.parseStack(frames); - // Calls to readFile shouldn't increase if there isn't a new error - expect(spy).toHaveBeenCalledTimes(mockCalls); + test('parseStack with same file', done => { + expect.assertions(1); + let mockCalls = 0; + Parsers.parseStack(frames).then(_ => { + mockCalls = spy.mock.calls.length; + Parsers.parseStack(frames).then(_1 => { + // Calls to readFile shouldn't increase if there isn't a new error + expect(spy).toHaveBeenCalledTimes(mockCalls); + done(); + }); + }); }); - test('parseStack with adding different file', async () => { - await Parsers.parseStack(frames); - const mockCalls = spy.mock.calls.length; - await Parsers.parseStack(stacktrace.parse(getError())); - const newErrorCalls = spy.mock.calls.length; - expect(newErrorCalls).toBeGreaterThan(mockCalls); - await Parsers.parseStack(stacktrace.parse(getError())); - expect(spy).toHaveBeenCalledTimes(newErrorCalls); + test('parseStack with adding different file', done => { + expect.assertions(2); + let mockCalls = 0; + let newErrorCalls = 0; + Parsers.parseStack(frames).then(_ => { + mockCalls = spy.mock.calls.length; + Parsers.parseStack(stacktrace.parse(getError())).then(_1 => { + newErrorCalls = spy.mock.calls.length; + expect(newErrorCalls).toBeGreaterThan(mockCalls); + Parsers.parseStack(stacktrace.parse(getError())).then(_2 => { + expect(spy).toHaveBeenCalledTimes(newErrorCalls); + done(); + }); + }); + }); }); }); test('parseStack with no context', async () => { - await Parsers.parseStack(frames, { frameContextLines: 0 }); - expect(spy).toHaveBeenCalledTimes(0); + expect.assertions(1); + return Parsers.parseStack(frames, { frameContextLines: 0 }).then(_ => { + expect(spy).toHaveBeenCalledTimes(0); + }); }); }); diff --git a/packages/node/test/transports/http.test.ts b/packages/node/test/transports/http.test.ts index a38952233968..be99f0117d69 100644 --- a/packages/node/test/transports/http.test.ts +++ b/packages/node/test/transports/http.test.ts @@ -1,5 +1,5 @@ -import { SentryError } from '@sentry/core'; import { TransportOptions } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; import * as HttpsProxyAgent from 'https-proxy-agent'; import { HTTPTransport } from '../../src/transports/http'; diff --git a/packages/node/test/transports/https.test.ts b/packages/node/test/transports/https.test.ts index 23ec9063ac55..18d759a926ab 100644 --- a/packages/node/test/transports/https.test.ts +++ b/packages/node/test/transports/https.test.ts @@ -1,5 +1,5 @@ -import { SentryError } from '@sentry/core'; import { TransportOptions } from '@sentry/types'; +import { SentryError } from '@sentry/utils/error'; import * as HttpsProxyAgent from 'https-proxy-agent'; import { HTTPSTransport } from '../../src/transports/https'; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 8f7d84095dd9..33655e528980 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -199,12 +199,9 @@ export interface Integration { * Returns {@link IntegrationClass.id} */ name: string; - // TODO: Remove with v5 - /** @deprecated */ - install?(options?: object): void; // This takes no options on purpose, options should be passed in the constructor - setupOnce(): void; // TODO: make not optional + setupOnce(): void; } /** Integration Class Interface */ @@ -253,10 +250,6 @@ export interface Transport { * @param timeout Number time in ms to wait until the buffer is drained. */ close(timeout?: number): Promise; - - // TODO: Remove with v5 - /** @deprecated Implement sendEvent instead */ - captureEvent?(event: SentryEvent): Promise; } /** JSDoc */ diff --git a/packages/typescript/tslint.json b/packages/typescript/tslint.json index 04a6cb6e3c3e..ceec3be0b288 100644 --- a/packages/typescript/tslint.json +++ b/packages/typescript/tslint.json @@ -20,13 +20,13 @@ "completed-docs": [ true, { - "classes": true, - "enums": true, - "enum-members": true, - "functions": true, - "interfaces": true, - "methods": { "tags": { "content": {}, "existence": ["inheritDoc"] } }, - "properties": { "tags": { "content": {}, "existence": ["inheritDoc"] } } + "classes": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, + "enums": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, + "enum-members": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, + "functions": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, + "interfaces": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, + "methods": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, + "properties": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } } } ], "interface-name": [true, "never-prefix"], diff --git a/packages/utils/package.json b/packages/utils/package.json index fc140f4aabfd..d6d838501420 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -42,7 +42,7 @@ "fix:prettier": "prettier --write \"{src,test}/**/*.ts\"", "fix:tslint": "tslint --fix -t stylish -p .", "test": "jest", - "test:watch": "jest --watch --notify" + "test:watch": "jest --watch" }, "jest": { "collectCoverage": true, diff --git a/packages/core/src/error.ts b/packages/utils/src/error.ts similarity index 100% rename from packages/core/src/error.ts rename to packages/utils/src/error.ts diff --git a/packages/utils/src/is.ts b/packages/utils/src/is.ts index 8f4826c739a9..61682f393de1 100644 --- a/packages/utils/src/is.ts +++ b/packages/utils/src/is.ts @@ -150,3 +150,12 @@ export function isSyntheticEvent(wat: any): boolean { // tslint:disable-next-line:no-unsafe-any return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat; } + +/** + * Checks whether given value has a then function. + * @param wat A value to be checked. + */ +export function isThenable(wat: any): boolean { + // tslint:disable-next-line:no-unsafe-any + return Boolean(wat && wat.then && isFunction(wat.then)); +} diff --git a/packages/core/src/promisebuffer.ts b/packages/utils/src/promisebuffer.ts similarity index 100% rename from packages/core/src/promisebuffer.ts rename to packages/utils/src/promisebuffer.ts diff --git a/packages/utils/src/syncpromise.ts b/packages/utils/src/syncpromise.ts new file mode 100644 index 000000000000..e60018c2c99a --- /dev/null +++ b/packages/utils/src/syncpromise.ts @@ -0,0 +1,161 @@ +import { isThenable } from './is'; + +/** JSDoc */ +enum States { + /** JSDoc */ + PENDING = 'PENDING', + /** JSDoc */ + RESOLVED = 'RESOLVED', + /** JSDoc */ + REJECTED = 'REJECTED', +} + +/** JSDoc */ +interface Handler { + onFail: HandlerOnFail; + onSuccess: HandlerOnSuccess; +} + +type HandlerOnSuccess = (value: T) => U | Thenable; +type HandlerOnFail = (reason: any) => U | Thenable; + +/** JSDoc */ +interface Thenable { + then(onSuccess?: HandlerOnSuccess, onFail?: HandlerOnFail | ((reason: any) => void)): Thenable; +} + +type Resolve = (value?: R | Thenable | any) => void; +type Reject = (value?: any) => void; + +/** JSDoc */ +export class SyncPromise implements PromiseLike { + /** JSDoc */ + private state: States = States.PENDING; + /** JSDoc */ + private handlers: Array> = []; + /** JSDoc */ + private value: T | any; + + public constructor(callback: (resolve: Resolve, reject: Reject) => void) { + try { + callback(this.resolve, this.reject); + } catch (e) { + this.reject(e); + } + } + + /** JSDoc */ + private readonly resolve = (value: T) => { + this.setResult(value, States.RESOLVED); + }; + + /** JSDoc */ + private readonly reject = (reason: any) => { + this.setResult(reason, States.REJECTED); + }; + + /** JSDoc */ + private readonly setResult = (value: T | any, state: States) => { + if (this.state !== States.PENDING) { + return; + } + + if (isThenable(value)) { + (value as Thenable).then(this.resolve, this.reject); + return; + } + + this.value = value; + this.state = state; + + this.executeHandlers(); + }; + + /** JSDoc */ + private readonly executeHandlers = () => { + if (this.state === States.PENDING) { + return; + } + + if (this.state === States.REJECTED) { + // tslint:disable-next-line:no-unsafe-any + this.handlers.forEach(h => h.onFail && h.onFail(this.value)); + } else { + // tslint:disable-next-line:no-unsafe-any + this.handlers.forEach(h => h.onSuccess && h.onSuccess(this.value)); + } + + this.handlers = []; + return; + }; + + /** JSDoc */ + private readonly attachHandler = (handler: Handler) => { + this.handlers = this.handlers.concat(handler); + this.executeHandlers(); + }; + + /** JSDoc */ + public then( + onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, + onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null, + ): SyncPromise { + // public then(onSuccess?: HandlerOnSuccess, onFail?: HandlerOnFail): SyncPromise { + return new SyncPromise((resolve, reject) => { + this.attachHandler({ + onFail: reason => { + if (!onrejected) { + reject(reason); + return; + } + + try { + resolve(onrejected(reason)); + return; + } catch (e) { + reject(e); + return; + } + }, + onSuccess: result => { + if (!onfulfilled) { + resolve(result); + return; + } + try { + resolve(onfulfilled(result)); + return; + } catch (e) { + reject(e); + return; + } + }, + }); + }); + } + + /** JSDoc */ + public catch(onFail: HandlerOnFail): SyncPromise { + // tslint:disable-next-line:no-unsafe-any + return this.then((val: any) => val, onFail as any); + } + + /** JSDoc */ + public toString(): string { + return `[object SyncPromise]`; + } + + /** JSDoc */ + public static resolve(value?: U | Thenable): SyncPromise { + return new SyncPromise(resolve => { + resolve(value); + }); + } + + /** JSDoc */ + public static reject(reason?: any): SyncPromise { + return new SyncPromise((_, reject) => { + reject(reason); + }); + } +} diff --git a/packages/utils/test/is.test.ts b/packages/utils/test/is.test.ts index 0fb0ccc9bb89..efbacfaa1b5e 100644 --- a/packages/utils/test/is.test.ts +++ b/packages/utils/test/is.test.ts @@ -1,5 +1,6 @@ -import { isDOMError, isDOMException, isError, isErrorEvent, isPrimitive } from '../src/is'; +import { isDOMError, isDOMException, isError, isErrorEvent, isPrimitive, isThenable } from '../src/is'; import { supportsDOMError, supportsDOMException, supportsErrorEvent } from '../src/supports'; +import { SyncPromise } from '../src/syncpromise'; class SentryError extends Error { public name: string; @@ -71,3 +72,20 @@ describe('isPrimitive()', () => { expect(isPrimitive(new Date())).toEqual(false); }); }); + +describe('isThenable()', () => { + test('should work as advertised', () => { + expect(isThenable(Promise.resolve(true))).toEqual(true); + expect(isThenable(SyncPromise.resolve(true))).toEqual(true); + + expect(isThenable(undefined)).toEqual(false); + expect(isThenable(null)).toEqual(false); + expect(isThenable(true)).toEqual(false); + expect(isThenable('foo')).toEqual(false); + expect(isThenable(42)).toEqual(false); + expect(isThenable({})).toEqual(false); + expect(isThenable([])).toEqual(false); + expect(isThenable(new Error('foo'))).toEqual(false); + expect(isThenable(new Date())).toEqual(false); + }); +}); diff --git a/packages/core/test/lib/promisebuffer.test.ts b/packages/utils/test/promisebuffer.test.ts similarity index 98% rename from packages/core/test/lib/promisebuffer.test.ts rename to packages/utils/test/promisebuffer.test.ts index da2b699fb119..6dff403b02bd 100644 --- a/packages/core/test/lib/promisebuffer.test.ts +++ b/packages/utils/test/promisebuffer.test.ts @@ -1,4 +1,4 @@ -import { PromiseBuffer } from '../../src/promisebuffer'; +import { PromiseBuffer } from '../src/promisebuffer'; // tslint:disable:no-floating-promises diff --git a/packages/utils/test/syncpromise.test.ts b/packages/utils/test/syncpromise.test.ts new file mode 100644 index 000000000000..e11ff58c5d30 --- /dev/null +++ b/packages/utils/test/syncpromise.test.ts @@ -0,0 +1,250 @@ +import { SyncPromise } from '../src/syncpromise'; + +describe('SyncPromise', () => { + test('simple', () => { + expect.assertions(1); + + return new SyncPromise(resolve => { + resolve(42); + }).then(val => { + expect(val).toBe(42); + }); + }); + + test('simple chaining', () => { + expect.assertions(1); + + return new SyncPromise(resolve => { + resolve(42); + }) + .then(_ => SyncPromise.resolve('a')) + .then(_ => SyncPromise.resolve(0.1)) + .then(_ => SyncPromise.resolve(false)) + .then(val => { + expect(val).toBe(false); + }); + }); + + test('compare to regular promise', async () => { + expect.assertions(2); + + const ap = new Promise(resolve => { + resolve('1'); + }); + + const bp = new Promise(resolve => { + resolve('2'); + }); + + const cp = new Promise(resolve => { + resolve('3'); + }); + + const fp = async (s: Promise, prepend: string) => + new Promise(resolve => { + s.then(val => { + resolve(prepend + val); + }).catch(_ => { + // bla + }); + }); + + const res = await cp + .then(async val => fp(Promise.resolve('x'), val)) + .then(async val => fp(bp, val)) + .then(async val => fp(ap, val)); + + expect(res).toBe('3x21'); + + const a = new SyncPromise(resolve => { + resolve('1'); + }); + + const b = new SyncPromise(resolve => { + resolve('2'); + }); + + const c = new SyncPromise(resolve => { + resolve('3'); + }); + + const f = (s: SyncPromise, prepend: string) => + new SyncPromise(resolve => { + s.then(val => { + resolve(prepend + val); + }); + }); + + return c + .then(val => f(SyncPromise.resolve('x'), val)) + .then(val => f(b, val)) + .then(val => f(a, val)) + .then(val => { + expect(val).toBe(res); + }); + }); + + test('simple static', () => { + expect.assertions(1); + + const p = SyncPromise.resolve(10); + return p.then(val => { + expect(val).toBe(10); + }); + }); + + test('using new Promise internally', () => { + expect.assertions(2); + + return new SyncPromise(done => { + new Promise(resolve => { + expect(true).toBe(true); + resolve(41); + }) + .then(done) + .catch(_ => { + // + }); + }).then(val => { + expect(val).toEqual(41); + }); + }); + + test('with setTimeout', () => { + jest.useFakeTimers(); + expect.assertions(1); + + return new SyncPromise(resolve => { + setTimeout(() => { + resolve(12); + }, 10); + jest.runAllTimers(); + }).then(val => { + expect(val).toEqual(12); + }); + }); + + test('calling the callback immediatly', () => { + expect.assertions(1); + + let foo: number = 1; + + new SyncPromise(_ => { + foo = 2; + }); + + expect(foo).toEqual(2); + }); + + test('calling the callback not immediatly', () => { + jest.useFakeTimers(); + expect.assertions(4); + + const qp = new SyncPromise(resolve => + setTimeout(() => { + resolve(2); + }), + ); + qp.then(value => { + expect(value).toEqual(2); + }); + expect(qp).not.toHaveProperty('value'); + qp.then(value => { + expect(value).toEqual(2); + }); + jest.runAllTimers(); + expect(qp).toHaveProperty('value'); + }); + + test('multiple then returning undefined', () => { + expect.assertions(3); + + return new SyncPromise(resolve => { + resolve(2); + }) + .then(result => { + expect(result).toEqual(2); + }) + .then(result => { + expect(result).toBeUndefined(); + }) + .then(result => { + expect(result).toBeUndefined(); + }); + }); + + test('multiple then returning different values', () => { + expect.assertions(3); + + return new SyncPromise(resolve => { + resolve(2); + }) + .then(result => { + expect(result).toEqual(2); + return 3; + }) + .then(result => { + expect(result).toEqual(3); + return 4; + }) + .then(result => { + expect(result).toEqual(4); + }); + }); + + test('multiple then returning different SyncPromise', () => { + expect.assertions(2); + + return new SyncPromise(resolve => { + resolve(2); + }) + .then(result => { + expect(result).toEqual(2); + return new SyncPromise(resolve2 => { + resolve2('yo'); + }); + }) + .then(result => { + expect(result).toEqual('yo'); + }); + }); + + test('reject immediatly and do not call then', () => { + expect.assertions(1); + + return new SyncPromise((_, reject) => { + reject('test'); + }) + .then(_ => { + expect(true).toBeFalsy(); + }) + .catch(reason => { + expect(reason).toBe('test'); + }); + }); + + test('reject', () => { + expect.assertions(1); + + return new SyncPromise((_, reject) => { + reject('test'); + }).catch(reason => { + expect(reason).toBe('test'); + }); + }); + + test('rejecting after first then', () => { + expect.assertions(2); + + return new SyncPromise(resolve => { + resolve(2); + }) + .then(value => { + expect(value).toEqual(2); + return SyncPromise.reject('wat'); + }) + .catch(reason => { + expect(reason).toBe('wat'); + }); + }); +}); From 2051dd253f835d209e9ef131df6886f3b853dd06 Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Wed, 13 Feb 2019 16:17:21 +0100 Subject: [PATCH 3/9] ref: Remove install function from client and backend (#1888) --- packages/browser/src/backend.ts | 18 --------- packages/browser/src/client.ts | 2 +- .../src/integrations/globalhandlers.ts | 2 + packages/core/src/basebackend.ts | 2 +- packages/core/src/baseclient.ts | 25 +----------- packages/core/src/interfaces.ts | 14 ------- packages/core/src/sdk.ts | 1 - packages/core/test/lib/base.test.ts | 38 ------------------- 8 files changed, 5 insertions(+), 97 deletions(-) diff --git a/packages/browser/src/backend.ts b/packages/browser/src/backend.ts index 9720099da19b..cca0c16014e3 100644 --- a/packages/browser/src/backend.ts +++ b/packages/browser/src/backend.ts @@ -1,6 +1,5 @@ import { BaseBackend, Options } from '@sentry/core'; import { SentryEvent, SentryEventHint, Severity, Transport } from '@sentry/types'; -import { SentryError } from '@sentry/utils/error'; import { isDOMError, isDOMException, isError, isErrorEvent, isPlainObject } from '@sentry/utils/is'; import { supportsBeacon, supportsFetch } from '@sentry/utils/supports'; import { SyncPromise } from '@sentry/utils/syncpromise'; @@ -33,23 +32,6 @@ export interface BrowserOptions extends Options { * @hidden */ export class BrowserBackend extends BaseBackend { - /** - * @inheritDoc - */ - public install(): boolean { - // We are only called by the client if the SDK is enabled and a valid Dsn - // has been configured. If no Dsn is present, this indicates a programming - // error. - const dsn = this.options.dsn; - if (!dsn) { - throw new SentryError('Invariant exception: install() must not be called when disabled'); - } - - Error.stackTraceLimit = 50; - - return true; - } - /** * @inheritdoc */ diff --git a/packages/browser/src/client.ts b/packages/browser/src/client.ts index 77e4f1138168..6267c6b2ebfc 100644 --- a/packages/browser/src/client.ts +++ b/packages/browser/src/client.ts @@ -43,7 +43,7 @@ export class BrowserClient extends BaseClient { * * @param options Configuration options for this SDK. */ - public constructor(options: BrowserOptions) { + public constructor(options: BrowserOptions = {}) { super(BrowserBackend, options); } diff --git a/packages/browser/src/integrations/globalhandlers.ts b/packages/browser/src/integrations/globalhandlers.ts index ed4a979c77da..85441d71fdcc 100644 --- a/packages/browser/src/integrations/globalhandlers.ts +++ b/packages/browser/src/integrations/globalhandlers.ts @@ -45,6 +45,8 @@ export class GlobalHandlers implements Integration { * @inheritDoc */ public setupOnce(): void { + Error.stackTraceLimit = 50; + subscribe((stack: TraceKitStackTrace, _: boolean, error: Error) => { // TODO: use stack.context to get a valuable information from TraceKit, eg. // [ diff --git a/packages/core/src/basebackend.ts b/packages/core/src/basebackend.ts index fe214cab84be..1067c1641073 100644 --- a/packages/core/src/basebackend.ts +++ b/packages/core/src/basebackend.ts @@ -22,7 +22,7 @@ export abstract class BaseBackend implements Backend { /** Cached transport used internally. */ protected transport: Transport; - /** Creates a new browser backend instance. */ + /** Creates a new backend instance. */ public constructor(options: O) { this.options = options; if (!this.options.dsn) { diff --git a/packages/core/src/baseclient.ts b/packages/core/src/baseclient.ts index 0eac7bcf6ef9..78374c17346a 100644 --- a/packages/core/src/baseclient.ts +++ b/packages/core/src/baseclient.ts @@ -84,12 +84,6 @@ export abstract class BaseClient implement */ private readonly dsn?: Dsn; - /** - * Stores whether installation has been performed and was successful. Before - * installing, this is undefined. Then it contains the success state. - */ - private installed?: boolean; - /** Array of used integrations. */ private readonly integrations: IntegrationIndex; @@ -106,25 +100,8 @@ export abstract class BaseClient implement if (options.dsn) { this.dsn = new Dsn(options.dsn); } - // We have to setup the integrations in the constructor since we do not want - // that anyone needs to call client.install(); - this.integrations = setupIntegrations(this.options); - } - - /** - * @inheritDoc - */ - public install(): boolean { - if (!this.isEnabled()) { - return (this.installed = false); - } - const backend = this.getBackend(); - if (!this.installed && backend.install) { - backend.install(); - } - - return (this.installed = true); + this.integrations = setupIntegrations(this.options); } /** diff --git a/packages/core/src/interfaces.ts b/packages/core/src/interfaces.ts index e732fb4cc9fe..d7b875a503c6 100644 --- a/packages/core/src/interfaces.ts +++ b/packages/core/src/interfaces.ts @@ -145,17 +145,6 @@ export interface Options { * captureMessage('Custom message'); */ export interface Client { - /** - * Installs the SDK if it hasn't been installed already. - * - * Since this performs modifications in the environment, such as instrumenting - * library functionality or adding signal handlers, this method will only - * execute once and cache its result. - * - * @returns If the installation was the successful or not. - */ - install(): boolean; - /** * Captures an exception event and sends it to Sentry. * @@ -248,9 +237,6 @@ export interface Client { * these any time and they should not be cached. */ export interface Backend { - /** Installs the SDK into the environment. */ - install?(): boolean; - /** Creates a {@link SentryEvent} from an exception. */ eventFromException(exception: any, hint?: SentryEventHint): SyncPromise; diff --git a/packages/core/src/sdk.ts b/packages/core/src/sdk.ts index 855120467f62..f760e65d2448 100644 --- a/packages/core/src/sdk.ts +++ b/packages/core/src/sdk.ts @@ -22,5 +22,4 @@ export function initAndBind(clientClass: Cl const client = new clientClass(options); getCurrentHub().bindClient(client); - client.install(); } diff --git a/packages/core/test/lib/base.test.ts b/packages/core/test/lib/base.test.ts index 120fd04b555c..01fe7443c685 100644 --- a/packages/core/test/lib/base.test.ts +++ b/packages/core/test/lib/base.test.ts @@ -62,44 +62,6 @@ describe('BaseClient', () => { }); }); - describe('install()', () => { - test('calls install() on Backend', () => { - expect.assertions(1); - const client = new TestClient({ dsn: PUBLIC_DSN }); - client.install(); - expect(TestBackend.instance!.installed).toBe(1); - }); - - test('calls install() only once', () => { - expect.assertions(1); - const client = new TestClient({ dsn: PUBLIC_DSN }); - client.install(); - client.install(); - expect(TestBackend.instance!.installed).toBe(1); - }); - - test('resolves the result of install()', () => { - expect.assertions(1); - const client = new TestClient({ mockInstallFailure: true }); - const installed = client.install(); - expect(installed).toBeFalsy(); - }); - - test('does not install() when disabled', () => { - expect.assertions(1); - const client = new TestClient({ enabled: false, dsn: PUBLIC_DSN }); - client.install(); - expect(TestBackend.instance!.installed).toBe(0); - }); - - test('does not install() without Dsn', () => { - expect.assertions(1); - const client = new TestClient({}); - client.install(); - expect(TestBackend.instance!.installed).toBe(0); - }); - }); - describe('getOptions()', () => { test('returns the options', () => { expect.assertions(1); From 86f6e978226ca56c8345a45bb6c182c0feba6a8c Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Fri, 15 Feb 2019 12:28:30 +0100 Subject: [PATCH 4/9] feat: Add major branches to travis --- .travis.yml | 1 + packages/node/test/index.test.ts | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cca494de8cff..1e398b97571c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ branches: only: - master - /^release\/.+$/ + - /^major\/.+$/ install: true sudo: required diff --git a/packages/node/test/index.test.ts b/packages/node/test/index.test.ts index ebb194f5c48e..71b86f38c7bf 100644 --- a/packages/node/test/index.test.ts +++ b/packages/node/test/index.test.ts @@ -131,7 +131,6 @@ describe('SentryNode', () => { }, dsn, }); - client.install(); getCurrentHub().bindClient(client); addBreadcrumb({ message: 'test1' }); addBreadcrumb({ message: 'test2' }); From d074c1c7bd9a65bb029f9b269018a9fb3a15c1f7 Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Mon, 18 Feb 2019 10:19:30 +0100 Subject: [PATCH 5/9] ref: Move public interfaces to types package (#1889) * fix: Events created from exception shouldnt have top-level message attribute (#1831) * Use SyncPromise internally & Remove deprecated API & Trim Public API (#1858) * ref: Move PromiseBuffer and Error to utils package * ref: Remove all async api * ref: Remove invokeClientAsync function * feat: Finish Node SDK * feat: SyncPromise implementation * fix: Browser SDK * fix: beforeSend callback * fix: Core tests * fix: linting and tests * fix: browser npm package + add error for manual tests * meta: Remove deprecations * fix: Typedocs and public exposed functions * meta: Changelog * Apply suggestions from code review Co-Authored-By: HazAT * fix: CodeReview * feat: https://github.com/getsentry/sentry-javascript/pull/1871 * ref: Move public interfaces to types package Move addBreadcrumb from the client to the hub * fix: Tests * fix: Small type issues * ref: Remove scope listeners * fix: Add flush to interface * ref: Remove interfaces from core --- CHANGELOG.md | 2 +- packages/browser/rollup.config.js | 2 +- packages/browser/src/backend.ts | 18 +- packages/browser/src/client.ts | 4 +- packages/browser/src/index.ts | 6 +- .../browser/src/integrations/breadcrumbs.ts | 6 +- .../src/integrations/globalhandlers.ts | 10 +- packages/browser/src/integrations/helpers.ts | 8 +- .../browser/src/integrations/linkederrors.ts | 8 +- .../src/integrations/pluggable/ember.ts | 4 +- .../browser/src/integrations/pluggable/vue.ts | 4 +- packages/browser/src/integrations/trycatch.ts | 6 +- .../browser/src/integrations/useragent.ts | 4 +- packages/browser/src/parsers.ts | 14 +- packages/browser/src/transports/base.ts | 6 +- packages/browser/src/transports/beacon.ts | 4 +- packages/browser/src/transports/fetch.ts | 4 +- packages/browser/src/transports/xhr.ts | 6 +- packages/browser/test/index.test.ts | 8 +- .../browser/test/integrations/helpers.test.ts | 20 +- .../browser/test/mocks/simpletransport.ts | 4 +- packages/core/src/basebackend.ts | 69 ++-- packages/core/src/baseclient.ts | 82 +---- packages/core/src/index.ts | 1 - packages/core/src/integration.ts | 3 +- packages/core/src/integrations/dedupe.ts | 20 +- .../core/src/integrations/extraerrordata.ts | 8 +- .../core/src/integrations/functiontostring.ts | 4 +- .../core/src/integrations/inboundfilters.ts | 19 +- .../core/src/integrations/pluggable/debug.ts | 4 +- .../integrations/pluggable/rewriteframes.ts | 6 +- packages/core/src/interfaces.ts | 281 -------------- packages/core/src/sdk.ts | 2 +- packages/core/src/transports/noop.ts | 4 +- packages/core/test/lib/base.test.ts | 55 +-- packages/core/test/mocks/backend.ts | 20 +- packages/core/test/mocks/integration.ts | 4 +- packages/hub/src/hub.ts | 76 ++-- packages/hub/src/interfaces.ts | 3 +- packages/hub/src/scope.ts | 91 ++--- packages/hub/test/hub.test.ts | 109 +----- packages/hub/test/scope.test.ts | 57 ++- packages/minimal/src/index.ts | 4 +- packages/minimal/test/lib/minimal.test.ts | 51 +-- packages/minimal/test/mocks/client.ts | 2 +- packages/minimal/test/tslint.json | 3 +- packages/node/src/backend.ts | 18 +- packages/node/src/client.ts | 4 +- packages/node/src/handlers.ts | 8 +- packages/node/src/index.ts | 6 +- .../node/src/integrations/linkederrors.ts | 22 +- .../src/integrations/pluggable/transaction.ts | 6 +- packages/node/src/parsers.ts | 12 +- packages/node/src/transports/base.ts | 10 +- packages/node/src/transports/http.ts | 4 +- packages/node/src/transports/https.ts | 4 +- .../node/test/helper/settimeouttransport.ts | 6 +- packages/node/test/index.test.ts | 23 +- .../test/integrations/linkederrors.test.ts | 6 +- packages/node/test/parsers.test.ts | 1 - packages/types/src/breadcrumb.ts | 17 + packages/types/src/client.ts | 73 ++++ packages/types/src/dsn.ts | 37 ++ packages/types/src/event.ts | 45 +++ packages/types/src/eventprocessor.ts | 9 + packages/types/src/exception.ts | 10 + packages/types/src/index.ts | 347 ++---------------- packages/types/src/integration.ts | 19 + packages/types/src/loglevel.ts | 11 + packages/types/src/mechanism.ts | 8 + packages/types/src/options.ts | 107 ++++++ packages/types/src/package.ts | 5 + packages/types/src/request.ts | 10 + packages/types/src/response.ts | 9 + packages/types/src/scope.ts | 53 +++ packages/types/src/sdkinfo.ts | 9 + packages/types/src/severity.ts | 47 +++ packages/types/src/stackframe.ts | 15 + packages/types/src/stacktrace.ts | 7 + packages/types/src/status.ts | 44 +++ packages/types/src/thread.ts | 10 + packages/types/src/transport.ts | 39 ++ packages/types/src/user.ts | 8 + packages/types/src/wrappedfunction.ts | 7 + packages/utils/src/misc.ts | 10 +- packages/utils/src/object.ts | 6 +- 86 files changed, 1038 insertions(+), 1180 deletions(-) delete mode 100644 packages/core/src/interfaces.ts create mode 100644 packages/types/src/breadcrumb.ts create mode 100644 packages/types/src/client.ts create mode 100644 packages/types/src/dsn.ts create mode 100644 packages/types/src/event.ts create mode 100644 packages/types/src/eventprocessor.ts create mode 100644 packages/types/src/exception.ts create mode 100644 packages/types/src/integration.ts create mode 100644 packages/types/src/loglevel.ts create mode 100644 packages/types/src/mechanism.ts create mode 100644 packages/types/src/options.ts create mode 100644 packages/types/src/package.ts create mode 100644 packages/types/src/request.ts create mode 100644 packages/types/src/response.ts create mode 100644 packages/types/src/scope.ts create mode 100644 packages/types/src/sdkinfo.ts create mode 100644 packages/types/src/severity.ts create mode 100644 packages/types/src/stackframe.ts create mode 100644 packages/types/src/stacktrace.ts create mode 100644 packages/types/src/status.ts create mode 100644 packages/types/src/thread.ts create mode 100644 packages/types/src/transport.ts create mode 100644 packages/types/src/user.ts create mode 100644 packages/types/src/wrappedfunction.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 1479f0dffbf5..454ebbf238ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ since we removed some methods from the public API and removed some classes from - **breaking** [node] fix: Events created from exception shouldn't have top-level message attribute - [utils] ref: Update wrap method to hide internal sentry flags -- [utils] fix: Make internal Sentry flags non-enumerable in fill util +- [utils] fix: Make internal Sentry flags non-enumerable in fill utils - [utils] ref: Move `SentryError` + `PromiseBuffer` to utils - **breaking** [core] ref: Use `SyncPromise` internally, this reduces memory pressure by a lot. - **breaking** [browser] ref: Removed `BrowserBackend` from default export. diff --git a/packages/browser/rollup.config.js b/packages/browser/rollup.config.js index 41227d9efdae..57d039b440dd 100644 --- a/packages/browser/rollup.config.js +++ b/packages/browser/rollup.config.js @@ -66,7 +66,7 @@ export default [ interop: false, sourcemap: true, }, - external: ['@sentry/core', '@sentry/hub', '@sentry/minimal'], + external: ['@sentry/core', '@sentry/hub', '@sentry/minimal', 'tslib'], plugins: [ typescript({ tsconfig: 'tsconfig.build.json', diff --git a/packages/browser/src/backend.ts b/packages/browser/src/backend.ts index cca0c16014e3..73cbb77282ef 100644 --- a/packages/browser/src/backend.ts +++ b/packages/browser/src/backend.ts @@ -1,5 +1,5 @@ -import { BaseBackend, Options } from '@sentry/core'; -import { SentryEvent, SentryEventHint, Severity, Transport } from '@sentry/types'; +import { BaseBackend } from '@sentry/core'; +import { Event, EventHint, Options, Severity, Transport } from '@sentry/types'; import { isDOMError, isDOMException, isError, isErrorEvent, isPlainObject } from '@sentry/utils/is'; import { supportsBeacon, supportsFetch } from '@sentry/utils/supports'; import { SyncPromise } from '@sentry/utils/syncpromise'; @@ -56,8 +56,8 @@ export class BrowserBackend extends BaseBackend { /** * @inheritDoc */ - public eventFromException(exception: any, hint?: SentryEventHint): SyncPromise { - let event: SentryEvent; + public eventFromException(exception: any, hint?: EventHint): SyncPromise { + let event: Event; if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) { // If it is an ErrorEvent with `error` property, extract it to get actual Error @@ -108,7 +108,7 @@ export class BrowserBackend extends BaseBackend { /** * This is an internal helper function that creates an event. */ - private buildEvent(event: SentryEvent, hint?: SentryEventHint): SentryEvent { + private buildEvent(event: Event, hint?: EventHint): Event { return { ...event, event_id: hint && hint.event_id, @@ -125,12 +125,8 @@ export class BrowserBackend extends BaseBackend { /** * @inheritDoc */ - public eventFromMessage( - message: string, - level: Severity = Severity.Info, - hint?: SentryEventHint, - ): SyncPromise { - const event: SentryEvent = { + public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): SyncPromise { + const event: Event = { event_id: hint && hint.event_id, level, message, diff --git a/packages/browser/src/client.ts b/packages/browser/src/client.ts index 6267c6b2ebfc..7b2cdd299301 100644 --- a/packages/browser/src/client.ts +++ b/packages/browser/src/client.ts @@ -1,5 +1,5 @@ import { API, BaseClient, Scope } from '@sentry/core'; -import { DsnLike, SentryEvent, SentryEventHint } from '@sentry/types'; +import { DsnLike, Event, EventHint } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; import { getGlobalObject } from '@sentry/utils/misc'; import { SyncPromise } from '@sentry/utils/syncpromise'; @@ -50,7 +50,7 @@ export class BrowserClient extends BaseClient { /** * @inheritDoc */ - protected prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): SyncPromise { + protected prepareEvent(event: Event, scope?: Scope, hint?: EventHint): SyncPromise { event.platform = event.platform || 'javascript'; event.sdk = { ...event.sdk, diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 7ace8a2bc6c6..84a4613191c5 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -2,9 +2,9 @@ export { Breadcrumb, Request, SdkInfo, - SentryEvent, - SentryException, - SentryResponse, + Event, + Exception, + Response, Severity, StackFrame, Stacktrace, diff --git a/packages/browser/src/integrations/breadcrumbs.ts b/packages/browser/src/integrations/breadcrumbs.ts index e6e1c56ed7cc..1a9bfc2613c1 100644 --- a/packages/browser/src/integrations/breadcrumbs.ts +++ b/packages/browser/src/integrations/breadcrumbs.ts @@ -1,5 +1,5 @@ import { API, getCurrentHub } from '@sentry/core'; -import { Breadcrumb, Integration, SentryBreadcrumbHint, Severity } from '@sentry/types'; +import { Breadcrumb, BreadcrumbHint, Integration, Severity } from '@sentry/types'; import { isFunction, isString } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; import { getEventDescription, getGlobalObject, parseUrl } from '@sentry/utils/misc'; @@ -454,9 +454,9 @@ export class Breadcrumbs implements Integration { /** * Helper that checks if integration is enabled on the client. * @param breadcrumb Breadcrumb - * @param hint SentryBreadcrumbHint + * @param hint BreadcrumbHint */ - public static addBreadcrumb(breadcrumb: Breadcrumb, hint?: SentryBreadcrumbHint): void { + public static addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void { if (getCurrentHub().getIntegration(Breadcrumbs)) { getCurrentHub().addBreadcrumb(breadcrumb, hint); } diff --git a/packages/browser/src/integrations/globalhandlers.ts b/packages/browser/src/integrations/globalhandlers.ts index 85441d71fdcc..1b04a2cfdb28 100644 --- a/packages/browser/src/integrations/globalhandlers.ts +++ b/packages/browser/src/integrations/globalhandlers.ts @@ -1,5 +1,5 @@ import { getCurrentHub } from '@sentry/core'; -import { Integration, SentryEvent } from '@sentry/types'; +import { Event, Integration } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; import { safeNormalize, serialize } from '@sentry/utils/object'; import { truncate } from '@sentry/utils/string'; @@ -83,11 +83,11 @@ export class GlobalHandlers implements Integration { } /** - * This function creates an SentryEvent from an TraceKitStackTrace. + * This function creates an Event from an TraceKitStackTrace. * - * @param stacktrace TraceKitStackTrace to be converted to an SentryEvent. + * @param stacktrace TraceKitStackTrace to be converted to an Event. */ - private eventFromGlobalHandler(stacktrace: TraceKitStackTrace): SentryEvent { + private eventFromGlobalHandler(stacktrace: TraceKitStackTrace): Event { const event = eventFromStacktrace(stacktrace); const data: { [key: string]: string } = { @@ -102,7 +102,7 @@ export class GlobalHandlers implements Integration { data.name = stacktrace.name; } - const newEvent: SentryEvent = { + const newEvent: Event = { ...event, exception: { ...event.exception, diff --git a/packages/browser/src/integrations/helpers.ts b/packages/browser/src/integrations/helpers.ts index 913fc6100990..bddf5ff0324f 100644 --- a/packages/browser/src/integrations/helpers.ts +++ b/packages/browser/src/integrations/helpers.ts @@ -1,5 +1,5 @@ import { captureException, getCurrentHub, withScope } from '@sentry/core'; -import { Mechanism, SentryEvent, SentryWrappedFunction } from '@sentry/types'; +import { Event as SentryEvent, Mechanism, WrappedFunction } from '@sentry/types'; import { isFunction } from '@sentry/utils/is'; import { htmlTreeAsString } from '@sentry/utils/misc'; import { serializeObject } from '@sentry/utils/object'; @@ -36,11 +36,11 @@ export function ignoreNextOnError(): void { * @hidden */ export function wrap( - fn: SentryWrappedFunction, + fn: WrappedFunction, options: { mechanism?: Mechanism; } = {}, - before?: SentryWrappedFunction, + before?: WrappedFunction, ): any { if (!isFunction(fn)) { return fn; @@ -63,7 +63,7 @@ export function wrap( return fn; } - const sentryWrapped: SentryWrappedFunction = function(this: any): void { + const sentryWrapped: WrappedFunction = function(this: any): void { if (before && isFunction(before)) { before.apply(this, arguments); } diff --git a/packages/browser/src/integrations/linkederrors.ts b/packages/browser/src/integrations/linkederrors.ts index 9433760c9928..bda28e490a6c 100644 --- a/packages/browser/src/integrations/linkederrors.ts +++ b/packages/browser/src/integrations/linkederrors.ts @@ -1,5 +1,5 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; -import { Integration, SentryEvent, SentryEventHint, SentryException } from '@sentry/types'; +import { Event, EventHint, Exception, Integration } from '@sentry/types'; import { exceptionFromStacktrace } from '../parsers'; import { computeStackTrace } from '../tracekit'; @@ -47,7 +47,7 @@ export class LinkedErrors implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor((event: SentryEvent, hint?: SentryEventHint) => { + addGlobalEventProcessor((event: Event, hint?: EventHint) => { const self = getCurrentHub().getIntegration(LinkedErrors); if (self) { return self.handler(event, hint); @@ -59,7 +59,7 @@ export class LinkedErrors implements Integration { /** * @inheritDoc */ - public handler(event: SentryEvent, hint?: SentryEventHint): SentryEvent | null { + public handler(event: Event, hint?: EventHint): Event | null { if (!event.exception || !event.exception.values || !hint || !(hint.originalException instanceof Error)) { return event; } @@ -71,7 +71,7 @@ export class LinkedErrors implements Integration { /** * @inheritDoc */ - public walkErrorTree(error: ExtendedError, key: string, stack: SentryException[] = []): SentryException[] { + public walkErrorTree(error: ExtendedError, key: string, stack: Exception[] = []): Exception[] { if (!(error[key] instanceof Error) || stack.length + 1 >= this.limit) { return stack; } diff --git a/packages/browser/src/integrations/pluggable/ember.ts b/packages/browser/src/integrations/pluggable/ember.ts index d2ed2fdae4b7..970350efd53d 100644 --- a/packages/browser/src/integrations/pluggable/ember.ts +++ b/packages/browser/src/integrations/pluggable/ember.ts @@ -1,5 +1,5 @@ import { captureException, captureMessage, getCurrentHub, Scope, withScope } from '@sentry/core'; -import { Integration, SentryEvent } from '@sentry/types'; +import { Event, Integration } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; import { getGlobalObject } from '@sentry/utils/misc'; @@ -81,7 +81,7 @@ export class Ember implements Integration { * @param scope The scope currently used. */ private addIntegrationToSdkInfo(scope: Scope): void { - scope.addEventProcessor((event: SentryEvent) => { + scope.addEventProcessor((event: Event) => { if (event.sdk) { const integrations = event.sdk.integrations || []; event.sdk = { diff --git a/packages/browser/src/integrations/pluggable/vue.ts b/packages/browser/src/integrations/pluggable/vue.ts index b91a19a9cea7..461a7844240e 100644 --- a/packages/browser/src/integrations/pluggable/vue.ts +++ b/packages/browser/src/integrations/pluggable/vue.ts @@ -1,5 +1,5 @@ import { captureException, getCurrentHub, withScope } from '@sentry/core'; -import { Integration, SentryEvent } from '@sentry/types'; +import { Event, Integration } from '@sentry/types'; import { isPlainObject, isUndefined } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; import { getGlobalObject } from '@sentry/utils/misc'; @@ -92,7 +92,7 @@ export class Vue implements Integration { scope.setExtra(key, metadata[key]); }); - scope.addEventProcessor((event: SentryEvent) => { + scope.addEventProcessor((event: Event) => { if (event.sdk) { const integrations = event.sdk.integrations || []; event.sdk = { diff --git a/packages/browser/src/integrations/trycatch.ts b/packages/browser/src/integrations/trycatch.ts index 2c9e56aa7479..7ff4c916557a 100644 --- a/packages/browser/src/integrations/trycatch.ts +++ b/packages/browser/src/integrations/trycatch.ts @@ -1,4 +1,4 @@ -import { Integration, SentryWrappedFunction } from '@sentry/types'; +import { Integration, WrappedFunction } from '@sentry/types'; import { getGlobalObject } from '@sentry/utils/misc'; import { fill } from '@sentry/utils/object'; import { breadcrumbEventHandler, keypressEventHandler, wrap } from './helpers'; @@ -124,7 +124,7 @@ export class TryCatch implements Integration { this, eventName, wrap( - (fn as any) as SentryWrappedFunction, + (fn as any) as WrappedFunction, { mechanism: { data: { @@ -152,7 +152,7 @@ export class TryCatch implements Integration { fn: EventListenerObject, options?: boolean | EventListenerOptions, ): () => void { - let callback = (fn as any) as SentryWrappedFunction; + let callback = (fn as any) as WrappedFunction; try { callback = callback && (callback.__sentry_wrapped__ || callback); } catch (e) { diff --git a/packages/browser/src/integrations/useragent.ts b/packages/browser/src/integrations/useragent.ts index 8f8eea74ea53..0cd51c512e33 100644 --- a/packages/browser/src/integrations/useragent.ts +++ b/packages/browser/src/integrations/useragent.ts @@ -1,5 +1,5 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; -import { Integration, SentryEvent } from '@sentry/types'; +import { Event, Integration } from '@sentry/types'; import { getGlobalObject } from '@sentry/utils/misc'; const global = getGlobalObject() as Window; @@ -20,7 +20,7 @@ export class UserAgent implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor((event: SentryEvent) => { + addGlobalEventProcessor((event: Event) => { if (getCurrentHub().getIntegration(UserAgent)) { if (!global.navigator || !global.location) { return event; diff --git a/packages/browser/src/parsers.ts b/packages/browser/src/parsers.ts index 3be0460277a0..67a03f5218f4 100644 --- a/packages/browser/src/parsers.ts +++ b/packages/browser/src/parsers.ts @@ -1,4 +1,4 @@ -import { SentryEvent, SentryException, StackFrame } from '@sentry/types'; +import { Event, Exception, StackFrame } from '@sentry/types'; import { limitObjectDepthToSize, serializeKeysToEventMessage } from '@sentry/utils/object'; import { includes } from '@sentry/utils/string'; import { md5 } from './md5'; @@ -11,10 +11,10 @@ const STACKTRACE_LIMIT = 50; * @param stacktrace TraceKitStackTrace that will be converted to an exception * @hidden */ -export function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): SentryException { +export function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): Exception { const frames = prepareFramesForEvent(stacktrace.stack); - const exception: SentryException = { + const exception: Exception = { type: stacktrace.name, value: stacktrace.message, }; @@ -34,9 +34,9 @@ export function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): SentryE /** * @hidden */ -export function eventFromPlainObject(exception: {}, syntheticException: Error | null): SentryEvent { +export function eventFromPlainObject(exception: {}, syntheticException: Error | null): Event { const exceptionKeys = Object.keys(exception).sort(); - const event: SentryEvent = { + const event: Event = { extra: { __serialized__: limitObjectDepthToSize(exception), }, @@ -58,7 +58,7 @@ export function eventFromPlainObject(exception: {}, syntheticException: Error | /** * @hidden */ -export function eventFromStacktrace(stacktrace: TraceKitStackTrace): SentryEvent { +export function eventFromStacktrace(stacktrace: TraceKitStackTrace): Event { const exception = exceptionFromStacktrace(stacktrace); return { @@ -113,7 +113,7 @@ export function prepareFramesForEvent(stack: TraceKitStackFrame[]): StackFrame[] * @param type Type of the exception. * @hidden */ -export function addExceptionTypeValue(event: SentryEvent, value?: string, type?: string): void { +export function addExceptionTypeValue(event: Event, value?: string, type?: string): void { event.exception = event.exception || {}; event.exception.values = event.exception.values || []; event.exception.values[0] = event.exception.values[0] || {}; diff --git a/packages/browser/src/transports/base.ts b/packages/browser/src/transports/base.ts index 17d9f5bd2b1a..baf9688fe9be 100644 --- a/packages/browser/src/transports/base.ts +++ b/packages/browser/src/transports/base.ts @@ -1,5 +1,5 @@ import { API } from '@sentry/core'; -import { SentryResponse, Transport, TransportOptions } from '@sentry/types'; +import { Response, Transport, TransportOptions } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import { PromiseBuffer } from '@sentry/utils/promisebuffer'; @@ -11,7 +11,7 @@ export abstract class BaseTransport implements Transport { public url: string; /** A simple buffer holding all requests. */ - protected readonly buffer: PromiseBuffer = new PromiseBuffer(30); + protected readonly buffer: PromiseBuffer = new PromiseBuffer(30); public constructor(public options: TransportOptions) { this.url = new API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth(); @@ -20,7 +20,7 @@ export abstract class BaseTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: string): Promise { + public async sendEvent(_: string): Promise { throw new SentryError('Transport Class has to implement `sendEvent` method'); } diff --git a/packages/browser/src/transports/beacon.ts b/packages/browser/src/transports/beacon.ts index 4bd547d7a683..e2ffd37ac67f 100644 --- a/packages/browser/src/transports/beacon.ts +++ b/packages/browser/src/transports/beacon.ts @@ -1,4 +1,4 @@ -import { SentryResponse, Status } from '@sentry/types'; +import { Response, Status } from '@sentry/types'; import { getGlobalObject } from '@sentry/utils/misc'; import { BaseTransport } from './base'; @@ -9,7 +9,7 @@ export class BeaconTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(body: string): Promise { const result = global.navigator.sendBeacon(this.url, body); return this.buffer.add( diff --git a/packages/browser/src/transports/fetch.ts b/packages/browser/src/transports/fetch.ts index c07087c1d794..f27356b41bd7 100644 --- a/packages/browser/src/transports/fetch.ts +++ b/packages/browser/src/transports/fetch.ts @@ -1,4 +1,4 @@ -import { SentryResponse, Status } from '@sentry/types'; +import { Response, Status } from '@sentry/types'; import { getGlobalObject } from '@sentry/utils/misc'; import { supportsReferrerPolicy } from '@sentry/utils/supports'; import { BaseTransport } from './base'; @@ -10,7 +10,7 @@ export class FetchTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(body: string): Promise { const defaultOptions: RequestInit = { body, method: 'POST', diff --git a/packages/browser/src/transports/xhr.ts b/packages/browser/src/transports/xhr.ts index a6e5af9a48c9..15e6e6b9d670 100644 --- a/packages/browser/src/transports/xhr.ts +++ b/packages/browser/src/transports/xhr.ts @@ -1,4 +1,4 @@ -import { SentryResponse, Status } from '@sentry/types'; +import { Response, Status } from '@sentry/types'; import { BaseTransport } from './base'; /** `XHR` based transport */ @@ -6,9 +6,9 @@ export class XHRTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(body: string): Promise { return this.buffer.add( - new Promise((resolve, reject) => { + new Promise((resolve, reject) => { const request = new XMLHttpRequest(); request.onreadystatechange = () => { diff --git a/packages/browser/test/index.test.ts b/packages/browser/test/index.test.ts index 096083173227..4df6ed90b7b4 100644 --- a/packages/browser/test/index.test.ts +++ b/packages/browser/test/index.test.ts @@ -7,11 +7,11 @@ import { captureException, captureMessage, configureScope, + Event, getCurrentHub, init, Integrations, Scope, - SentryEvent, } from '../src'; import { SimpleTransport } from './mocks/simpletransport'; @@ -20,7 +20,7 @@ const dsn = 'https://53039209a22b4ec1bcc296a3c9fdecd6@sentry.io/4291'; declare var global: any; describe('SentryBrowser', () => { - const beforeSend: SinonSpy = spy((event: SentryEvent) => event); + const beforeSend: SinonSpy = spy((event: Event) => event); before(() => { init({ @@ -100,7 +100,7 @@ describe('SentryBrowser', () => { it('should capture a message', done => { getCurrentHub().bindClient( new BrowserClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { expect(event.message).to.equal('test'); expect(event.exception).to.be.undefined; done(); @@ -115,7 +115,7 @@ describe('SentryBrowser', () => { it('should capture an event', done => { getCurrentHub().bindClient( new BrowserClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { expect(event.message).to.equal('event'); expect(event.exception).to.be.undefined; done(); diff --git a/packages/browser/test/integrations/helpers.test.ts b/packages/browser/test/integrations/helpers.test.ts index b608d03440cb..3bd1250507fe 100644 --- a/packages/browser/test/integrations/helpers.test.ts +++ b/packages/browser/test/integrations/helpers.test.ts @@ -1,4 +1,4 @@ -import { SentryWrappedFunction } from '@sentry/types'; +import { WrappedFunction } from '@sentry/types'; import { expect } from 'chai'; import { SinonSpy, spy } from 'sinon'; import { wrap } from '../../src/integrations/helpers'; @@ -23,7 +23,7 @@ describe('wrap()', () => { }); it('bail out with the original if accessing custom props go bad', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; fn.__sentry__ = false; Object.defineProperty(fn, '__sentry_wrapped__', { get(): void { @@ -44,14 +44,14 @@ describe('wrap()', () => { }); it('returns wrapped function if original was already wrapped', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; const wrapped = wrap(fn); expect(wrap(fn)).equal(wrapped); }); it('returns same wrapped function if trying to wrap it again', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; const wrapped = wrap(fn); @@ -59,7 +59,7 @@ describe('wrap()', () => { }); it('calls "before" function when invoking wrapped function', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; const before = spy(); const wrapped = wrap(fn, {}, before); @@ -69,7 +69,7 @@ describe('wrap()', () => { }); it('attaches metadata to original and wrapped functions', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; const wrapped = wrap(fn); @@ -84,7 +84,7 @@ describe('wrap()', () => { }); it('copies over original functions properties', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; fn.some = 1337; fn.property = 'Rick'; @@ -97,7 +97,7 @@ describe('wrap()', () => { }); it('doesnt break when accessing original functions properties blows up', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; Object.defineProperty(fn, 'some', { get(): void { throw new Error('boom'); @@ -110,7 +110,7 @@ describe('wrap()', () => { }); it('recrusively wraps arguments that are functions', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; const fnArgA = () => 1337; const fnArgB = () => 1337; @@ -181,7 +181,7 @@ describe('wrap()', () => { }); it('internal flags shouldnt be enumerable', () => { - const fn = (() => 1337) as SentryWrappedFunction; + const fn = (() => 1337) as WrappedFunction; const wrapped = wrap(fn); // Shouldn't show up in iteration diff --git a/packages/browser/test/mocks/simpletransport.ts b/packages/browser/test/mocks/simpletransport.ts index 2e57687e37be..23c90efb27fe 100644 --- a/packages/browser/test/mocks/simpletransport.ts +++ b/packages/browser/test/mocks/simpletransport.ts @@ -1,8 +1,8 @@ -import { SentryResponse, Status } from '../../src'; +import { Response, Status } from '../../src'; import { BaseTransport } from '../../src/transports'; export class SimpleTransport extends BaseTransport { - public async sendEvent(_: string): Promise { + public async sendEvent(_: string): Promise { return this.buffer.add( Promise.resolve({ status: Status.fromHttpCode(200), diff --git a/packages/core/src/basebackend.ts b/packages/core/src/basebackend.ts index 1067c1641073..cc0d7892262a 100644 --- a/packages/core/src/basebackend.ts +++ b/packages/core/src/basebackend.ts @@ -1,19 +1,60 @@ -import { Scope } from '@sentry/hub'; -import { Breadcrumb, SentryEvent, SentryEventHint, Severity, Transport } from '@sentry/types'; +import { Event, EventHint, Options, Severity, Transport } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import { logger } from '@sentry/utils/logger'; import { serialize } from '@sentry/utils/object'; import { SyncPromise } from '@sentry/utils/syncpromise'; -import { Backend, Options } from './interfaces'; import { NoopTransport } from './transports/noop'; -/** A class object that can instanciate Backend objects. */ +/** + * Internal platform-dependent Sentry SDK Backend. + * + * While {@link Client} contains business logic specific to an SDK, the + * Backend offers platform specific implementations for low-level operations. + * These are persisting and loading information, sending events, and hooking + * into the environment. + * + * Backends receive a handle to the Client in their constructor. When a + * Backend automatically generates events, it must pass them to + * the Client for validation and processing first. + * + * Usually, the Client will be of corresponding type, e.g. NodeBackend + * receives NodeClient. However, higher-level SDKs can choose to instanciate + * multiple Backends and delegate tasks between them. In this case, an event + * generated by one backend might very well be sent by another one. + * + * The client also provides access to options via {@link Client.getOptions}. + * @hidden + */ +export interface Backend { + /** Creates a {@link Event} from an exception. */ + eventFromException(exception: any, hint?: EventHint): SyncPromise; + + /** Creates a {@link Event} from a plain message. */ + eventFromMessage(message: string, level?: Severity, hint?: EventHint): SyncPromise; + + /** Submits the event to Sentry */ + sendEvent(event: Event): void; + + /** + * Returns the transport that is used by the backend. + * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent. + * + * @returns The transport. + */ + getTransport(): Transport; +} + +/** + * A class object that can instanciate Backend objects. + * @hidden + */ export interface BackendClass { new (options: O): B; } /** * This is the base implemention of a Backend. + * @hidden */ export abstract class BaseBackend implements Backend { /** Options passed to the SDK. */ @@ -41,40 +82,26 @@ export abstract class BaseBackend implements Backend { /** * @inheritDoc */ - public eventFromException(_exception: any, _hint?: SentryEventHint): SyncPromise { + public eventFromException(_exception: any, _hint?: EventHint): SyncPromise { throw new SentryError('Backend has to implement `eventFromException` method'); } /** * @inheritDoc */ - public eventFromMessage(_message: string, _level?: Severity, _hint?: SentryEventHint): SyncPromise { + public eventFromMessage(_message: string, _level?: Severity, _hint?: EventHint): SyncPromise { throw new SentryError('Backend has to implement `eventFromMessage` method'); } /** * @inheritDoc */ - public sendEvent(event: SentryEvent): void { + public sendEvent(event: Event): void { this.transport.sendEvent(serialize(event)).catch(reason => { logger.error(`Error while sending event: ${reason}`); }); } - /** - * @inheritDoc - */ - public storeBreadcrumb(_: Breadcrumb): boolean { - return true; - } - - /** - * @inheritDoc - */ - public storeScope(_: Scope): void { - // Noop - } - /** * @inheritDoc */ diff --git a/packages/core/src/baseclient.ts b/packages/core/src/baseclient.ts index 78374c17346a..e7d0deb27eee 100644 --- a/packages/core/src/baseclient.ts +++ b/packages/core/src/baseclient.ts @@ -1,34 +1,13 @@ import { Scope } from '@sentry/hub'; -import { - Breadcrumb, - Integration, - IntegrationClass, - SentryBreadcrumbHint, - SentryEvent, - SentryEventHint, - Severity, -} from '@sentry/types'; +import { Client, Event, EventHint, Integration, IntegrationClass, Options, Severity } from '@sentry/types'; import { isPrimitive, isThenable } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; -import { consoleSandbox, uuid4 } from '@sentry/utils/misc'; +import { uuid4 } from '@sentry/utils/misc'; import { truncate } from '@sentry/utils/string'; import { SyncPromise } from '@sentry/utils/syncpromise'; -import { BackendClass } from './basebackend'; +import { Backend, BackendClass } from './basebackend'; import { Dsn } from './dsn'; import { IntegrationIndex, setupIntegrations } from './integration'; -import { Backend, Client, Options } from './interfaces'; - -/** - * Default maximum number of breadcrumbs added to an event. Can be overwritten - * with {@link Options.maxBreadcrumbs}. - */ -const DEFAULT_BREADCRUMBS = 30; - -/** - * Absolute maximum number of breadcrumbs added to an event. The - * `maxBreadcrumbs` option cannot be higher than this value. - */ -const MAX_BREADCRUMBS = 100; /** * By default, truncates URL values to 250 chars @@ -107,7 +86,7 @@ export abstract class BaseClient implement /** * @inheritDoc */ - public captureException(exception: any, hint?: SentryEventHint, scope?: Scope): string | undefined { + public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined { let eventId: string | undefined = hint && hint.event_id; this.getBackend() @@ -126,7 +105,7 @@ export abstract class BaseClient implement /** * @inheritDoc */ - public captureMessage(message: string, level?: Severity, hint?: SentryEventHint, scope?: Scope): string | undefined { + public captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined { let eventId: string | undefined = hint && hint.event_id; const promisedEvent = isPrimitive(message) @@ -148,7 +127,7 @@ export abstract class BaseClient implement /** * @inheritDoc */ - public captureEvent(event: SentryEvent, hint?: SentryEventHint, scope?: Scope): string | undefined { + public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined { let eventId: string | undefined = hint && hint.event_id; this.processEvent(event, hint, scope) .then(finalEvent => { @@ -160,31 +139,6 @@ export abstract class BaseClient implement return eventId; } - /** - * @inheritDoc - */ - public addBreadcrumb(breadcrumb: Breadcrumb, hint?: SentryBreadcrumbHint, scope?: Scope): void { - const { beforeBreadcrumb, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = this.getOptions(); - - if (maxBreadcrumbs <= 0) { - return; - } - - const timestamp = new Date().getTime() / 1000; - const mergedBreadcrumb = { timestamp, ...breadcrumb }; - const finalBreadcrumb = beforeBreadcrumb - ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null) - : mergedBreadcrumb; - - if (finalBreadcrumb === null) { - return; - } - - if (this.getBackend().storeBreadcrumb(finalBreadcrumb) && scope) { - scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS)); - } - } - /** * @inheritDoc */ @@ -223,10 +177,10 @@ export abstract class BaseClient implement * @param scope A scope containing event metadata. * @returns A new event with more information. */ - protected prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): SyncPromise { - const { environment, maxBreadcrumbs = DEFAULT_BREADCRUMBS, release, dist } = this.getOptions(); + protected prepareEvent(event: Event, scope?: Scope, hint?: EventHint): SyncPromise { + const { environment, release, dist } = this.getOptions(); - const prepared = { ...event }; + const prepared: Event = { ...event }; if (prepared.environment === undefined && environment !== undefined) { prepared.environment = environment; } @@ -256,14 +210,14 @@ export abstract class BaseClient implement prepared.event_id = uuid4(); } - // We prepare the result here with a resolved SentryEvent. - let result = SyncPromise.resolve(prepared); + // We prepare the result here with a resolved Event. + let result = SyncPromise.resolve(prepared); // This should be the last thing called, since we want that // {@link Hub.addEventProcessor} gets the finished prepared event. if (scope) { // In case we have a hub we reassign it. - result = scope.applyToEvent(prepared, hint, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS)); + result = scope.applyToEvent(prepared, hint); } return result; @@ -282,7 +236,7 @@ export abstract class BaseClient implement * @param scope A scope containing event metadata. * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send. */ - protected processEvent(event: SentryEvent, hint?: SentryEventHint, scope?: Scope): SyncPromise { + protected processEvent(event: Event, hint?: EventHint, scope?: Scope): SyncPromise { const { beforeSend, sampleRate } = this.getOptions(); if (!this.isEnabled()) { @@ -302,7 +256,7 @@ export abstract class BaseClient implement return; } - let finalEvent: SentryEvent | null = prepared; + let finalEvent: Event | null = prepared; try { const isInternalException = hint && hint.data && (hint.data as { [key: string]: any }).__sentry__ === true; @@ -316,9 +270,9 @@ export abstract class BaseClient implement if ((typeof beforeSendResult as any) === 'undefined') { logger.error('`beforeSend` method has to return `null` or a valid event.'); } else if (isThenable(beforeSendResult)) { - this.handleAsyncBeforeSend(beforeSendResult as Promise, resolve, reject); + this.handleAsyncBeforeSend(beforeSendResult as Promise, resolve, reject); } else { - finalEvent = beforeSendResult as SentryEvent | null; + finalEvent = beforeSendResult as Event | null; if (finalEvent === null) { logger.log('`beforeSend` returned `null`, will not send event.'); @@ -347,8 +301,8 @@ export abstract class BaseClient implement * Resolves before send Promise and calls resolve/reject on parent SyncPromise. */ private handleAsyncBeforeSend( - beforeSend: Promise, - resolve: (event: SentryEvent) => void, + beforeSend: Promise, + resolve: (event: Event) => void, reject: (reason: string) => void, ): void { beforeSend diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 020e0c5d115a..2d8e542fd022 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -11,7 +11,6 @@ export { API } from './api'; export { BaseClient } from './baseclient'; export { BackendClass, BaseBackend } from './basebackend'; export { Dsn } from './dsn'; -export { Backend, Client, LogLevel, Options } from './interfaces'; export { initAndBind, ClientClass } from './sdk'; export { NoopTransport } from './transports/noop'; diff --git a/packages/core/src/integration.ts b/packages/core/src/integration.ts index 8f38d425c52a..2fc2682e1c81 100644 --- a/packages/core/src/integration.ts +++ b/packages/core/src/integration.ts @@ -1,6 +1,5 @@ -import { Integration } from '@sentry/types'; +import { Integration, Options } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; -import { Options } from './interfaces'; export const installedIntegrations: string[] = []; diff --git a/packages/core/src/integrations/dedupe.ts b/packages/core/src/integrations/dedupe.ts index 34b492c184dc..478d587640fc 100644 --- a/packages/core/src/integrations/dedupe.ts +++ b/packages/core/src/integrations/dedupe.ts @@ -1,5 +1,5 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub'; -import { Integration, SentryEvent, SentryException, StackFrame } from '@sentry/types'; +import { Event, Exception, Integration, StackFrame } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; import { getEventDescription } from '@sentry/utils/misc'; @@ -8,7 +8,7 @@ export class Dedupe implements Integration { /** * @inheritDoc */ - private previousEvent?: SentryEvent; + private previousEvent?: Event; /** * @inheritDoc @@ -24,7 +24,7 @@ export class Dedupe implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor((currentEvent: SentryEvent) => { + addGlobalEventProcessor((currentEvent: Event) => { const self = getCurrentHub().getIntegration(Dedupe); if (self) { // Juuust in case something goes wrong @@ -43,7 +43,7 @@ export class Dedupe implements Integration { } /** JSDoc */ - public shouldDropEvent(currentEvent: SentryEvent, previousEvent?: SentryEvent): boolean { + public shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean { if (!previousEvent) { return false; } @@ -70,7 +70,7 @@ export class Dedupe implements Integration { } /** JSDoc */ - private isSameMessageEvent(currentEvent: SentryEvent, previousEvent: SentryEvent): boolean { + private isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean { const currentMessage = currentEvent.message; const previousMessage = previousEvent.message; @@ -100,7 +100,7 @@ export class Dedupe implements Integration { } /** JSDoc */ - private getFramesFromEvent(event: SentryEvent): StackFrame[] | undefined { + private getFramesFromEvent(event: Event): StackFrame[] | undefined { const exception = event.exception; if (exception) { @@ -118,7 +118,7 @@ export class Dedupe implements Integration { } /** JSDoc */ - private isSameStacktrace(currentEvent: SentryEvent, previousEvent: SentryEvent): boolean { + private isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean { let currentFrames = this.getFramesFromEvent(currentEvent); let previousFrames = this.getFramesFromEvent(previousEvent); @@ -159,12 +159,12 @@ export class Dedupe implements Integration { } /** JSDoc */ - private getExceptionFromEvent(event: SentryEvent): SentryException | undefined { + private getExceptionFromEvent(event: Event): Exception | undefined { return event.exception && event.exception.values && event.exception.values[0]; } /** JSDoc */ - private isSameExceptionEvent(currentEvent: SentryEvent, previousEvent: SentryEvent): boolean { + private isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean { const previousException = this.getExceptionFromEvent(previousEvent); const currentException = this.getExceptionFromEvent(currentEvent); @@ -188,7 +188,7 @@ export class Dedupe implements Integration { } /** JSDoc */ - private isSameFingerprint(currentEvent: SentryEvent, previousEvent: SentryEvent): boolean { + private isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean { let currentFingerprint = currentEvent.fingerprint; let previousFingerprint = previousEvent.fingerprint; diff --git a/packages/core/src/integrations/extraerrordata.ts b/packages/core/src/integrations/extraerrordata.ts index 650adeffa2a2..dd57657e20a7 100644 --- a/packages/core/src/integrations/extraerrordata.ts +++ b/packages/core/src/integrations/extraerrordata.ts @@ -1,5 +1,5 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub'; -import { Integration, SentryEvent, SentryEventHint } from '@sentry/types'; +import { Event, EventHint, Integration } from '@sentry/types'; import { isError, isString } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; import { safeNormalize } from '@sentry/utils/object'; @@ -27,7 +27,7 @@ export class ExtraErrorData implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor((event: SentryEvent, hint?: SentryEventHint) => { + addGlobalEventProcessor((event: Event, hint?: EventHint) => { const self = getCurrentHub().getIntegration(ExtraErrorData); if (!self) { return event; @@ -37,9 +37,9 @@ export class ExtraErrorData implements Integration { } /** - * Attaches extracted information from the Error object to extra field in the SentryEvent + * Attaches extracted information from the Error object to extra field in the Event */ - public enhanceEventWithErrorData(event: SentryEvent, hint?: SentryEventHint): SentryEvent { + public enhanceEventWithErrorData(event: Event, hint?: EventHint): Event { if (!hint || !hint.originalException || !isError(hint.originalException)) { return event; } diff --git a/packages/core/src/integrations/functiontostring.ts b/packages/core/src/integrations/functiontostring.ts index dc22512deb20..e436fe7d0c8a 100644 --- a/packages/core/src/integrations/functiontostring.ts +++ b/packages/core/src/integrations/functiontostring.ts @@ -1,4 +1,4 @@ -import { Integration, SentryWrappedFunction } from '@sentry/types'; +import { Integration, WrappedFunction } from '@sentry/types'; let originalFunctionToString: () => void; @@ -20,7 +20,7 @@ export class FunctionToString implements Integration { public setupOnce(): void { originalFunctionToString = Function.prototype.toString; - Function.prototype.toString = function(this: SentryWrappedFunction, ...args: any[]): string { + Function.prototype.toString = function(this: WrappedFunction, ...args: any[]): string { const context = this.__sentry__ ? this.__sentry_original__ : this; // tslint:disable-next-line:no-unsafe-any return originalFunctionToString.apply(context, args); diff --git a/packages/core/src/integrations/inboundfilters.ts b/packages/core/src/integrations/inboundfilters.ts index ca62140405ca..2ce7a88f9934 100644 --- a/packages/core/src/integrations/inboundfilters.ts +++ b/packages/core/src/integrations/inboundfilters.ts @@ -1,10 +1,9 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub'; -import { Integration, SentryEvent } from '@sentry/types'; +import { Client, Event, Integration } from '@sentry/types'; import { isRegExp } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; import { getEventDescription } from '@sentry/utils/misc'; import { includes } from '@sentry/utils/string'; -import { Client } from '../interfaces'; // "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. @@ -35,7 +34,7 @@ export class InboundFilters implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor((event: SentryEvent) => { + addGlobalEventProcessor((event: Event) => { const hub = getCurrentHub(); if (!hub) { return event; @@ -54,7 +53,7 @@ export class InboundFilters implements Integration { } /** JSDoc */ - public shouldDropEvent(event: SentryEvent, options: InboundFiltersOptions): boolean { + public shouldDropEvent(event: Event, options: InboundFiltersOptions): boolean { if (this.isSentryError(event, options)) { logger.warn(`Event dropped due to being internal Sentry Error.\nEvent: ${getEventDescription(event)}`); return true; @@ -85,7 +84,7 @@ export class InboundFilters implements Integration { } /** JSDoc */ - public isSentryError(event: SentryEvent, options: InboundFiltersOptions = {}): boolean { + public isSentryError(event: Event, options: InboundFiltersOptions = {}): boolean { if (!options.ignoreInternal) { return false; } @@ -99,7 +98,7 @@ export class InboundFilters implements Integration { } /** JSDoc */ - public isIgnoredError(event: SentryEvent, options: InboundFiltersOptions = {}): boolean { + public isIgnoredError(event: Event, options: InboundFiltersOptions = {}): boolean { if (!options.ignoreErrors || !options.ignoreErrors.length) { return false; } @@ -111,7 +110,7 @@ export class InboundFilters implements Integration { } /** JSDoc */ - public isBlacklistedUrl(event: SentryEvent, options: InboundFiltersOptions = {}): boolean { + public isBlacklistedUrl(event: Event, options: InboundFiltersOptions = {}): boolean { // TODO: Use Glob instead? if (!options.blacklistUrls || !options.blacklistUrls.length) { return false; @@ -121,7 +120,7 @@ export class InboundFilters implements Integration { } /** JSDoc */ - public isWhitelistedUrl(event: SentryEvent, options: InboundFiltersOptions = {}): boolean { + public isWhitelistedUrl(event: Event, options: InboundFiltersOptions = {}): boolean { // TODO: Use Glob instead? if (!options.whitelistUrls || !options.whitelistUrls.length) { return true; @@ -156,7 +155,7 @@ export class InboundFilters implements Integration { } /** JSDoc */ - private getPossibleEventMessages(event: SentryEvent): string[] { + private getPossibleEventMessages(event: Event): string[] { if (event.message) { return [event.message]; } else if (event.exception) { @@ -174,7 +173,7 @@ export class InboundFilters implements Integration { } /** JSDoc */ - private getEventFilterUrl(event: SentryEvent): string | null { + private getEventFilterUrl(event: Event): string | null { try { if (event.stacktrace) { // tslint:disable:no-unsafe-any diff --git a/packages/core/src/integrations/pluggable/debug.ts b/packages/core/src/integrations/pluggable/debug.ts index 4b440dd16e08..4af6aa19036c 100644 --- a/packages/core/src/integrations/pluggable/debug.ts +++ b/packages/core/src/integrations/pluggable/debug.ts @@ -1,5 +1,5 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub'; -import { Integration, SentryEvent, SentryEventHint } from '@sentry/types'; +import { Event, EventHint, Integration } from '@sentry/types'; /** JSDoc */ interface DebugOptions { @@ -37,7 +37,7 @@ export class Debug implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor((event: SentryEvent, hint?: SentryEventHint) => { + addGlobalEventProcessor((event: Event, hint?: EventHint) => { const self = getCurrentHub().getIntegration(Debug); if (self) { // tslint:disable:no-console diff --git a/packages/core/src/integrations/pluggable/rewriteframes.ts b/packages/core/src/integrations/pluggable/rewriteframes.ts index c803d99ed5ea..18b965102db4 100644 --- a/packages/core/src/integrations/pluggable/rewriteframes.ts +++ b/packages/core/src/integrations/pluggable/rewriteframes.ts @@ -1,5 +1,5 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub'; -import { Integration, SentryEvent, StackFrame } from '@sentry/types'; +import { Event, Integration, StackFrame } from '@sentry/types'; import { basename, relative } from '@sentry/utils/path'; type StackFrameIteratee = (frame: StackFrame) => StackFrame; @@ -58,7 +58,7 @@ export class RewriteFrames implements Integration { } /** JSDoc */ - public process(event: SentryEvent): SentryEvent { + public process(event: Event): Event { const frames = this.getFramesFromEvent(event); if (frames) { for (const i in frames) { @@ -70,7 +70,7 @@ export class RewriteFrames implements Integration { } /** JSDoc */ - private getFramesFromEvent(event: SentryEvent): StackFrame[] | undefined { + private getFramesFromEvent(event: Event): StackFrame[] | undefined { const exception = event.exception; if (exception) { diff --git a/packages/core/src/interfaces.ts b/packages/core/src/interfaces.ts deleted file mode 100644 index d7b875a503c6..000000000000 --- a/packages/core/src/interfaces.ts +++ /dev/null @@ -1,281 +0,0 @@ -import { Scope } from '@sentry/hub'; -import { - Breadcrumb, - Integration, - IntegrationClass, - SentryBreadcrumbHint, - SentryEvent, - SentryEventHint, - Severity, - Transport, - TransportClass, - TransportOptions, -} from '@sentry/types'; -import { SyncPromise } from '@sentry/utils/syncpromise'; -import { Dsn } from './dsn'; - -/** Console logging verbosity for the SDK. */ -export enum LogLevel { - /** No logs will be generated. */ - None = 0, - /** Only SDK internal errors will be logged. */ - Error = 1, - /** Information useful for debugging the SDK will be logged. */ - Debug = 2, - /** All SDK actions will be logged. */ - Verbose = 3, -} - -/** Base configuration options for every SDK. */ -export interface Options { - /** - * Enable debug functionality in the SDK itself - */ - debug?: boolean; - - /** - * Specifies whether this SDK should activate and send events to Sentry. - * Disabling the SDK reduces all overhead from instrumentation, collecting - * breadcrumbs and capturing events. Defaults to true. - */ - enabled?: boolean; - - /** - * The Dsn used to connect to Sentry and identify the project. If omitted, the - * SDK will not send any data to Sentry. - */ - dsn?: string; - - /** - * If this is set to false, default integrations will not be added, otherwise this will internally be set to the - * recommended default integrations. - */ - defaultIntegrations?: false | Integration[]; - - /** - * List of integrations that should be installed after SDK was initialized. - * Accepts either a list of integrations or a function that receives - * default integrations and returns a new, updated list. - */ - integrations?: Integration[] | ((integrations: Integration[]) => Integration[]); - - /** - * A pattern for error messages which should not be sent to Sentry. - * By default, all errors will be sent. - */ - ignoreErrors?: Array; - - /** - * Transport object that should be used to send events to Sentry - */ - transport?: TransportClass; - - /** - * Options for the default transport that the SDK uses. - */ - transportOptions?: TransportOptions; - - /** - * The release identifier used when uploading respective source maps. Specify - * this value to allow Sentry to resolve the correct source maps when - * processing events. - */ - release?: string; - - /** The current environment of your application (e.g. "production"). */ - environment?: string; - - /** Sets the distribution for all events */ - dist?: string; - - /** The maximum number of breadcrumbs sent with events. Defaults to 100. */ - maxBreadcrumbs?: number; - - /** Console logging verbosity for the SDK Client. */ - logLevel?: LogLevel; - - /** A global sample rate to apply to all events (0 - 1). */ - sampleRate?: number; - - /** Attaches stacktraces to pure capture message / log integrations */ - attachStacktrace?: boolean; - - /** - * A callback invoked during event submission, allowing to optionally modify - * the event before it is sent to Sentry. - * - * Note that you must return a valid event from this callback. If you do not - * wish to modify the event, simply return it at the end. - * Returning null will case the event to be dropped. - * - * @param event The error or message event generated by the SDK. - * @param hint May contain additional information about the original exception. - * @returns A new event that will be sent | null. - */ - beforeSend?(event: SentryEvent, hint?: SentryEventHint): Promise | SentryEvent | null; - - /** - * A callback invoked when adding a breadcrumb, allowing to optionally modify - * it before adding it to future events. - * - * Note that you must return a valid breadcrumb from this callback. If you do - * not wish to modify the breadcrumb, simply return it at the end. - * Returning null will case the breadcrumb to be dropped. - * - * @param breadcrumb The breadcrumb as created by the SDK. - * @returns The breadcrumb that will be added | null. - */ - beforeBreadcrumb?(breadcrumb: Breadcrumb, hint?: SentryBreadcrumbHint): Breadcrumb | null; -} - -/** - * User-Facing Sentry SDK Client Client. - * - * This interface contains all methods to interface with the SDK once it has - * been installed. It allows to send events to Sentry, record breadcrumbs and - * set a context included in every event. Since the SDK mutates its environment, - * there will only be one instance during runtime. To retrieve that instance, - * use {@link Client.getInstance}. - * - * Note that the call to {@link Client.install} should occur as early as - * possible so that even errors during startup can be recorded reliably: - * - * @example - * import { captureMessage } from '@sentry/node'; - * captureMessage('Custom message'); - */ -export interface Client { - /** - * Captures an exception event and sends it to Sentry. - * - * @param exception An exception-like object. - * @param hint May contain additional information about the original exception. - * @param scope An optional scope containing event metadata. - * @returns The event id - */ - captureException(exception: any, hint?: SentryEventHint, scope?: Scope): string | undefined; - - /** - * Captures a message event and sends it to Sentry. - * - * @param message The message to send to Sentry. - * @param level Define the level of the message. - * @param hint May contain additional information about the original exception. - * @param scope An optional scope containing event metadata. - * @returns The event id - */ - captureMessage(message: string, level?: Severity, hint?: SentryEventHint, scope?: Scope): string | undefined; - - /** - * Captures a manually created event and sends it to Sentry. - * - * @param event The event to send to Sentry. - * @param hint May contain additional information about the original exception. - * @param scope An optional scope containing event metadata. - * @returns The event id - */ - captureEvent(event: SentryEvent, hint?: SentryEventHint, scope?: Scope): string | undefined; - - /** - * Records a new breadcrumb which will be attached to future events. - * - * Breadcrumbs will be added to subsequent events to provide more context on - * user's actions prior to an error or crash. To configure the maximum number - * of breadcrumbs, use {@link Options.maxBreadcrumbs}. - * - * @param breadcrumb The breadcrumb to record. - * @param hint May contain additional information about the original breadcrumb. - * @param scope An optional scope to store this breadcrumb in. - */ - addBreadcrumb(breadcrumb: Breadcrumb, hint?: SentryBreadcrumbHint, scope?: Scope): void; - - /** Returns the current Dsn. */ - getDsn(): Dsn | undefined; - - /** Returns the current options. */ - getOptions(): O; - - /** - * A promise that resolves when all current events have been sent. - * If you provide a timeout and the queue takes longer to drain the promise returns false. - * - * @param timeout Maximum time in ms the client should wait. - */ - close(timeout?: number): Promise; - - /** - * A promise that resolves when all current events have been sent. - * If you provide a timeout and the queue takes longer to drain the promise returns false. - * - * @param timeout Maximum time in ms the client should wait. - */ - flush(timeout?: number): Promise; - - /** Returns an array of installed integrations on the client. */ - getIntegration(integartion: IntegrationClass): T | null; -} - -/** - * Internal platform-dependent Sentry SDK Backend. - * - * While {@link Client} contains business logic specific to an SDK, the - * Backend offers platform specific implementations for low-level operations. - * These are persisting and loading information, sending events, and hooking - * into the environment. - * - * Backends receive a handle to the Client in their constructor. When a - * Backend automatically generates events or breadcrumbs, it must pass them to - * the Client for validation and processing first. - * - * Usually, the Client will be of corresponding type, e.g. NodeBackend - * receives NodeClient. However, higher-level SDKs can choose to instanciate - * multiple Backends and delegate tasks between them. In this case, an event - * generated by one backend might very well be sent by another one. - * - * The client also provides access to options via {@link Client.getOptions} - * and context via {@link Client.getContext}. Note that the user might update - * these any time and they should not be cached. - */ -export interface Backend { - /** Creates a {@link SentryEvent} from an exception. */ - eventFromException(exception: any, hint?: SentryEventHint): SyncPromise; - - /** Creates a {@link SentryEvent} from a plain message. */ - eventFromMessage(message: string, level?: Severity, hint?: SentryEventHint): SyncPromise; - - /** Submits the event to Sentry */ - sendEvent(event: SentryEvent): void; - - /** - * Receives a breadcrumb and stores it in a platform-dependent way. - * - * This function is invoked by the client before merging the breadcrumb into - * the scope. Return `false` to prevent this breadcrumb from being merged. - * This should be done for custom breadcrumb management in the backend. - * - * In most cases, this method does not have to perform any action and can - * simply return `true`. It can either be synchronous or asynchronous. - * - * @param breadcrumb The breadcrumb to store. - * @returns True if the breadcrumb should be merged by the client. - */ - storeBreadcrumb(breadcrumb: Breadcrumb): boolean; - - /** - * Receives the whole scope and stores it in a platform-dependent way. - * - * This function is invoked by the scope after the scope is configured. - * This should be done for custom context management in the backend. - * - * @param scope The scope to store. - */ - storeScope(scope: Scope): void; - - /** - * Returns the transport that is used by the backend. - * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent. - * - * @returns The transport. - */ - getTransport(): Transport; -} diff --git a/packages/core/src/sdk.ts b/packages/core/src/sdk.ts index f760e65d2448..d698c34fbf08 100644 --- a/packages/core/src/sdk.ts +++ b/packages/core/src/sdk.ts @@ -1,6 +1,6 @@ import { getCurrentHub } from '@sentry/hub'; +import { Client, Options } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; -import { Client, Options } from './interfaces'; /** A class object that can instanciate Client objects. */ export interface ClientClass { diff --git a/packages/core/src/transports/noop.ts b/packages/core/src/transports/noop.ts index 65ff574a65f8..4bad9131885e 100644 --- a/packages/core/src/transports/noop.ts +++ b/packages/core/src/transports/noop.ts @@ -1,11 +1,11 @@ -import { SentryResponse, Status, Transport } from '@sentry/types'; +import { Response, Status, Transport } from '@sentry/types'; /** Noop transport */ export class NoopTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: string): Promise { + public async sendEvent(_: string): Promise { return Promise.resolve({ reason: `NoopTransport: Event has been skipped because no Dsn is configured.`, status: Status.Skipped, diff --git a/packages/core/test/lib/base.test.ts b/packages/core/test/lib/base.test.ts index 01fe7443c685..111ba84c92f5 100644 --- a/packages/core/test/lib/base.test.ts +++ b/packages/core/test/lib/base.test.ts @@ -1,5 +1,5 @@ -import { Scope } from '@sentry/hub'; -import { SentryEvent } from '@sentry/types'; +import { Hub, Scope } from '@sentry/hub'; +import { Event } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import { TestBackend } from '../mocks/backend'; import { TestClient } from '../mocks/client'; @@ -76,8 +76,9 @@ describe('BaseClient', () => { expect.assertions(1); const client = new TestClient({}); const scope = new Scope(); + const hub = new Hub(client, scope); scope.addBreadcrumb({ message: 'hello' }, 100); - client.addBreadcrumb({ message: 'world' }, undefined, scope); + hub.addBreadcrumb({ message: 'world' }); expect((scope as any).breadcrumbs[1].message).toBe('world'); }); @@ -85,8 +86,9 @@ describe('BaseClient', () => { expect.assertions(1); const client = new TestClient({}); const scope = new Scope(); + const hub = new Hub(client, scope); scope.addBreadcrumb({ message: 'hello' }, 100); - client.addBreadcrumb({ message: 'world' }, undefined, scope); + hub.addBreadcrumb({ message: 'world' }); expect((scope as any).breadcrumbs[1].timestamp).toBeGreaterThan(1); }); @@ -94,8 +96,9 @@ describe('BaseClient', () => { expect.assertions(2); const client = new TestClient({ maxBreadcrumbs: 1 }); const scope = new Scope(); + const hub = new Hub(client, scope); scope.addBreadcrumb({ message: 'hello' }, 100); - client.addBreadcrumb({ message: 'world' }, undefined, scope); + hub.addBreadcrumb({ message: 'world' }); expect((scope as any).breadcrumbs.length).toBe(1); expect((scope as any).breadcrumbs[0].message).toBe('world'); }); @@ -104,8 +107,9 @@ describe('BaseClient', () => { expect.assertions(1); const client = new TestClient({}); const scope = new Scope(); - client.addBreadcrumb({ message: 'hello' }, undefined, scope); - client.addBreadcrumb({ message: 'world' }, undefined, scope); + const hub = new Hub(client, scope); + hub.addBreadcrumb({ message: 'hello' }); + hub.addBreadcrumb({ message: 'world' }); expect((scope as any).breadcrumbs).toHaveLength(2); }); @@ -114,7 +118,8 @@ describe('BaseClient', () => { const beforeBreadcrumb = jest.fn(breadcrumb => breadcrumb); const client = new TestClient({ beforeBreadcrumb }); const scope = new Scope(); - client.addBreadcrumb({ message: 'hello' }, undefined, scope); + const hub = new Hub(client, scope); + hub.addBreadcrumb({ message: 'hello' }); expect((scope as any).breadcrumbs[0].message).toBe('hello'); }); @@ -123,7 +128,8 @@ describe('BaseClient', () => { const beforeBreadcrumb = jest.fn(() => ({ message: 'changed' })); const client = new TestClient({ beforeBreadcrumb }); const scope = new Scope(); - client.addBreadcrumb({ message: 'hello' }, undefined, scope); + const hub = new Hub(client, scope); + hub.addBreadcrumb({ message: 'hello' }); expect((scope as any).breadcrumbs[0].message).toBe('changed'); }); @@ -132,7 +138,8 @@ describe('BaseClient', () => { const beforeBreadcrumb = jest.fn(() => null); const client = new TestClient({ beforeBreadcrumb }); const scope = new Scope(); - client.addBreadcrumb({ message: 'hello' }, undefined, scope); + const hub = new Hub(client, scope); + hub.addBreadcrumb({ message: 'hello' }); expect((scope as any).breadcrumbs.length).toBe(0); }); @@ -141,7 +148,8 @@ describe('BaseClient', () => { const beforeBreadcrumb = jest.fn((breadcrumb, hint) => ({ ...breadcrumb, data: hint.data })); const client = new TestClient({ beforeBreadcrumb }); const scope = new Scope(); - client.addBreadcrumb({ message: 'hello' }, { data: 'someRandomThing' }, scope); + const hub = new Hub(client, scope); + hub.addBreadcrumb({ message: 'hello' }, { data: 'someRandomThing' }); expect((scope as any).breadcrumbs[0].message).toBe('hello'); expect((scope as any).breadcrumbs[0].data).toBe('someRandomThing'); }); @@ -270,18 +278,15 @@ describe('BaseClient', () => { }); test('limits previously saved breadcrumbs', () => { - expect.assertions(1); + expect.assertions(2); const client = new TestClient({ dsn: PUBLIC_DSN, maxBreadcrumbs: 1 }); const scope = new Scope(); - scope.addBreadcrumb({ message: '1' }, 100); - scope.addBreadcrumb({ message: '2' }, 200); + const hub = new Hub(client, scope); + hub.addBreadcrumb({ message: '1' }); + hub.addBreadcrumb({ message: '2' }); client.captureEvent({ message: 'message' }, undefined, scope); - expect(TestBackend.instance!.event!).toEqual({ - breadcrumbs: [{ message: '2' }], - event_id: '42', - fingerprint: ['message'], - message: 'message', - }); + expect(TestBackend.instance!.event!.breadcrumbs).toHaveLength(1); + expect(TestBackend.instance!.event!.breadcrumbs![0].message).toEqual('2'); }); test('adds context data', () => { @@ -344,7 +349,7 @@ describe('BaseClient', () => { expect.assertions(1); const beforeSend = jest.fn( async event => - new Promise(resolve => { + new Promise(resolve => { setTimeout(() => { resolve(event); }, 1); @@ -353,7 +358,7 @@ describe('BaseClient', () => { const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); client.captureEvent({ message: 'hello' }); jest.runOnlyPendingTimers(); - TestBackend.sendEventCalled = (event: SentryEvent) => { + TestBackend.sendEventCalled = (event: Event) => { expect(event.message).toBe('hello'); }; setTimeout(() => { @@ -367,7 +372,7 @@ describe('BaseClient', () => { expect.assertions(1); const beforeSend = jest.fn( async () => - new Promise(resolve => { + new Promise(resolve => { setTimeout(() => { resolve({ message: 'changed2' }); }, 1); @@ -377,7 +382,7 @@ describe('BaseClient', () => { const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); client.captureEvent({ message: 'hello' }); jest.runOnlyPendingTimers(); - TestBackend.sendEventCalled = (event: SentryEvent) => { + TestBackend.sendEventCalled = (event: Event) => { expect(event.message).toBe('changed2'); }; setTimeout(() => { @@ -409,7 +414,7 @@ describe('BaseClient', () => { const client = new TestClient({ dsn: PUBLIC_DSN, beforeSend }); client.captureEvent({ message: 'hello' }, { data: 'someRandomThing' }); expect(TestBackend.instance!.event!.message).toBe('hello'); - expect(TestBackend.instance!.event!.data).toBe('someRandomThing'); + expect((TestBackend.instance!.event! as any).data).toBe('someRandomThing'); }); }); diff --git a/packages/core/test/mocks/backend.ts b/packages/core/test/mocks/backend.ts index b4a741ff8c77..b97ae9876df1 100644 --- a/packages/core/test/mocks/backend.ts +++ b/packages/core/test/mocks/backend.ts @@ -1,7 +1,6 @@ -import { SentryEvent } from '@sentry/types'; +import { Event, Options } from '@sentry/types'; import { SyncPromise } from '@sentry/utils/syncpromise'; import { BaseBackend } from '../../src/basebackend'; -import { Options } from '../../src/interfaces'; export interface TestOptions extends Options { test?: boolean; @@ -10,23 +9,16 @@ export interface TestOptions extends Options { export class TestBackend extends BaseBackend { public static instance?: TestBackend; - public static sendEventCalled?: (event: SentryEvent) => void; + public static sendEventCalled?: (event: Event) => void; - public installed: number; - public event?: SentryEvent; + public event?: Event; public constructor(protected readonly options: TestOptions) { super(options); TestBackend.instance = this; - this.installed = 0; } - public install(): boolean { - this.installed += 1; - return !this.options.mockInstallFailure; - } - - public eventFromException(exception: any): SyncPromise { + public eventFromException(exception: any): SyncPromise { return SyncPromise.resolve({ exception: { values: [ @@ -39,11 +31,11 @@ export class TestBackend extends BaseBackend { }); } - public eventFromMessage(message: string): SyncPromise { + public eventFromMessage(message: string): SyncPromise { return SyncPromise.resolve({ message }); } - public sendEvent(event: SentryEvent): void { + public sendEvent(event: Event): void { this.event = event; // tslint:disable-next-line TestBackend.sendEventCalled && TestBackend.sendEventCalled(event); diff --git a/packages/core/test/mocks/integration.ts b/packages/core/test/mocks/integration.ts index a12e7a107e69..7e03da10281b 100644 --- a/packages/core/test/mocks/integration.ts +++ b/packages/core/test/mocks/integration.ts @@ -1,6 +1,6 @@ import { getCurrentHub } from '@sentry/hub'; import { configureScope } from '@sentry/minimal'; -import { Integration, SentryEvent } from '@sentry/types'; +import { Event, Integration } from '@sentry/types'; export class TestIntegration implements Integration { public name: string = 'TestIntegration'; @@ -8,7 +8,7 @@ export class TestIntegration implements Integration { public setupOnce(): void { configureScope(scope => { - scope.addEventProcessor((event: SentryEvent) => { + scope.addEventProcessor((event: Event) => { if (!getCurrentHub().getIntegration(TestIntegration)) { return event; } diff --git a/packages/hub/src/hub.ts b/packages/hub/src/hub.ts index ae49978cc283..9f7c90c6404a 100644 --- a/packages/hub/src/hub.ts +++ b/packages/hub/src/hub.ts @@ -1,14 +1,15 @@ import { Breadcrumb, + BreadcrumbHint, + Client, + Event, + EventHint, Integration, IntegrationClass, - SentryBreadcrumbHint, - SentryEvent, - SentryEventHint, Severity, } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; -import { dynamicRequire, getGlobalObject, uuid4 } from '@sentry/utils/misc'; +import { consoleSandbox, dynamicRequire, getGlobalObject, uuid4 } from '@sentry/utils/misc'; import { Carrier, Layer } from './interfaces'; import { Scope } from './scope'; @@ -32,6 +33,18 @@ declare module 'domain' { */ export const API_VERSION = 3; +/** + * Default maximum number of breadcrumbs added to an event. Can be overwritten + * with {@link Options.maxBreadcrumbs}. + */ +const DEFAULT_BREADCRUMBS = 30; + +/** + * Absolute maximum number of breadcrumbs added to an event. The + * `maxBreadcrumbs` option cannot be higher than this value. + */ +const MAX_BREADCRUMBS = 100; + /** * Internal class used to make sure we always have the latest internal functions * working in case we have a version conflict. @@ -51,20 +64,20 @@ export class Hub { * @param scope bound to the hub. * @param version number, higher number means higher priority. */ - public constructor(client?: any, scope: Scope = new Scope(), private readonly version: number = API_VERSION) { + public constructor(client?: Client, scope: Scope = new Scope(), private readonly version: number = API_VERSION) { this.stack.push({ client, scope }); } /** * Internal helper function to call a method on the top client if it exists. * - * @param method The method to call on the client/client. - * @param args Arguments to pass to the client/frontend. + * @param method The method to call on the client. + * @param args Arguments to pass to the client function. */ - private invokeClient(method: string, ...args: any[]): void { + private invokeClient(method: M, ...args: any[]): void { const top = this.getStackTop(); if (top && top.client && top.client[method]) { - top.client[method](...args, top.scope); + (top.client as any)[method](...args, top.scope); } } @@ -84,20 +97,9 @@ export class Hub { * This binds the given client to the current scope. * @param client An SDK client (client) instance. */ - public bindClient(client?: any): void { + public bindClient(client?: Client): void { const top = this.getStackTop(); top.client = client; - if (top && top.scope && client) { - top.scope.addScopeListener((s: Scope) => { - if (client.getBackend) { - try { - client.getBackend().storeScope(s); - } catch { - // Do nothing - } - } - }); - } } /** @@ -182,7 +184,7 @@ export class Hub { * @param hint May contain additional information about the original exception. * @returns The generated eventId. */ - public captureException(exception: any, hint?: SentryEventHint): string { + public captureException(exception: any, hint?: EventHint): string { const eventId = (this._lastEventId = uuid4()); this.invokeClient('captureException', exception, { ...hint, @@ -199,7 +201,7 @@ export class Hub { * @param hint May contain additional information about the original exception. * @returns The generated eventId. */ - public captureMessage(message: string, level?: Severity, hint?: SentryEventHint): string { + public captureMessage(message: string, level?: Severity, hint?: EventHint): string { const eventId = (this._lastEventId = uuid4()); this.invokeClient('captureMessage', message, level, { ...hint, @@ -214,7 +216,7 @@ export class Hub { * @param event The event to send to Sentry. * @param hint May contain additional information about the original exception. */ - public captureEvent(event: SentryEvent, hint?: SentryEventHint): string { + public captureEvent(event: Event, hint?: EventHint): string { const eventId = (this._lastEventId = uuid4()); this.invokeClient('captureEvent', event, { ...hint, @@ -241,8 +243,30 @@ export class Hub { * @param breadcrumb The breadcrumb to record. * @param hint May contain additional information about the original breadcrumb. */ - public addBreadcrumb(breadcrumb: Breadcrumb, hint?: SentryBreadcrumbHint): void { - this.invokeClient('addBreadcrumb', breadcrumb, { ...hint }); + public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void { + const top = this.getStackTop(); + + if (!top.scope || !top.client) { + return; + } + + const { beforeBreadcrumb, maxBreadcrumbs = DEFAULT_BREADCRUMBS } = top.client.getOptions(); + + if (maxBreadcrumbs <= 0) { + return; + } + + const timestamp = new Date().getTime() / 1000; + const mergedBreadcrumb = { timestamp, ...breadcrumb }; + const finalBreadcrumb = beforeBreadcrumb + ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null) + : mergedBreadcrumb; + + if (finalBreadcrumb === null) { + return; + } + + top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS)); } /** diff --git a/packages/hub/src/interfaces.ts b/packages/hub/src/interfaces.ts index 963cb08240ab..a46d0e14555f 100644 --- a/packages/hub/src/interfaces.ts +++ b/packages/hub/src/interfaces.ts @@ -1,3 +1,4 @@ +import { Client } from '@sentry/types'; import { Hub } from './hub'; import { Scope } from './scope'; @@ -6,7 +7,7 @@ import { Scope } from './scope'; * @hidden */ export interface Layer { - client?: any; + client?: Client; scope?: Scope; } diff --git a/packages/hub/src/scope.ts b/packages/hub/src/scope.ts index 1286537745ae..fbceaa7440dd 100644 --- a/packages/hub/src/scope.ts +++ b/packages/hub/src/scope.ts @@ -1,25 +1,14 @@ -import { Breadcrumb, SentryEvent, SentryEventHint, Severity, User } from '@sentry/types'; +import { Breadcrumb, Event, EventHint, EventProcessor, Scope as ScopeInterface, Severity, User } from '@sentry/types'; import { isFunction, isThenable } from '@sentry/utils/is'; import { getGlobalObject } from '@sentry/utils/misc'; import { assign, safeNormalize } from '@sentry/utils/object'; import { SyncPromise } from '@sentry/utils/syncpromise'; -/** - * Event processors are used to change the event before it will be send. - * We strongly advise to make this function sync. - * Returning a Promise will work just fine, but better be sure that you know what you are doing. - * Event processing will be deferred until your Promise is resolved. - */ -export type EventProcessor = ( - event: SentryEvent, - hint?: SentryEventHint, -) => Promise | SentryEvent | null; - /** * Holds additional event information. {@link Scope.applyToEvent} will be * called by the client before an event will be sent. */ -export class Scope { +export class Scope implements ScopeInterface { /** Flag if notifiying is happening. */ protected notifyingListeners: boolean = false; @@ -52,44 +41,31 @@ export class Scope { this.scopeListeners.push(callback); } - /** Add new event processor that will be called after {@link applyToEvent}. */ + /** + * @inheritdoc + */ public addEventProcessor(callback: EventProcessor): Scope { this.eventProcessors.push(callback); return this; } - /** - * This will be called on every set call. - */ - protected notifyScopeListeners(): void { - if (!this.notifyingListeners) { - this.notifyingListeners = true; - setTimeout(() => { - this.scopeListeners.forEach(callback => { - callback(this); - }); - this.notifyingListeners = false; - }); - } - } - /** * This will be called after {@link applyToEvent} is finished. */ protected notifyEventProcessors( processors: EventProcessor[], - event: SentryEvent | null, - hint?: SentryEventHint, + event: Event | null, + hint?: EventHint, index: number = 0, - ): SyncPromise { - return new SyncPromise((resolve, reject) => { + ): SyncPromise { + return new SyncPromise((resolve, reject) => { const processor = processors[index]; if (event === null || !isFunction(processor)) { resolve(event); } else { - const result = processor({ ...event }, hint) as SentryEvent | null; + const result = processor({ ...event }, hint) as Event | null; if (isThenable(result)) { - (result as Promise) + (result as Promise) .then(final => this.notifyEventProcessors(processors, final, hint, index + 1).then(resolve)) .catch(reject); } else { @@ -102,52 +78,42 @@ export class Scope { } /** - * Updates user context information for future events. - * @param user User context object to be set in the current context. + * @inheritdoc */ public setUser(user: User): Scope { this.user = safeNormalize(user); - this.notifyScopeListeners(); return this; } /** - * Updates tags context information for future events. - * @param tags Tags context object to merge into current context. + * @inheritdoc */ public setTag(key: string, value: string): Scope { this.tags = { ...this.tags, [key]: safeNormalize(value) }; - this.notifyScopeListeners(); return this; } /** - * Updates extra context information for future events. - * @param extra context object to merge into current context. + * @inheritdoc */ public setExtra(key: string, extra: any): Scope { this.extra = { ...this.extra, [key]: safeNormalize(extra) }; - this.notifyScopeListeners(); return this; } /** - * Sets the fingerprint on the scope to send with the events. - * @param fingerprint string[] to group events in Sentry. + * @inheritdoc */ public setFingerprint(fingerprint: string[]): Scope { this.fingerprint = safeNormalize(fingerprint); - this.notifyScopeListeners(); return this; } /** - * Sets the level on the scope for future events. - * @param level string {@link Severity} + * @inheritdoc */ public setLevel(level: Severity): Scope { this.level = safeNormalize(level); - this.notifyScopeListeners(); return this; } @@ -169,7 +135,9 @@ export class Scope { return newScope; } - /** Clears the current scope and resets its properties. */ + /** + * @inheritdoc + */ public clear(): void { this.breadcrumbs = []; this.tags = {}; @@ -177,27 +145,23 @@ export class Scope { this.user = {}; this.level = undefined; this.fingerprint = undefined; - this.notifyScopeListeners(); } /** - * Sets the breadcrumbs in the scope - * @param breadcrumbs Breadcrumb - * @param maxBreadcrumbs number of max breadcrumbs to merged into event. + * @inheritdoc */ public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): void { this.breadcrumbs = maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0 ? [...this.breadcrumbs, safeNormalize(breadcrumb)].slice(-maxBreadcrumbs) : [...this.breadcrumbs, safeNormalize(breadcrumb)]; - this.notifyScopeListeners(); } /** * Applies fingerprint from the scope to the event if there's one, * uses message if there's one instead or get rid of empty fingerprint */ - private applyFingerprint(event: SentryEvent): void { + private applyFingerprint(event: Event): void { // Make sure it's an array first and we actually have something in place event.fingerprint = event.fingerprint ? Array.isArray(event.fingerprint) @@ -223,16 +187,12 @@ export class Scope { * Applies the current context and fingerprint to the event. * Note that breadcrumbs will be added by the client. * Also if the event has already breadcrumbs on it, we do not merge them. - * @param event SentryEvent + * @param event Event * @param hint May contain additional informartion about the original exception. * @param maxBreadcrumbs number of max breadcrumbs to merged into event. * @hidden */ - public applyToEvent( - event: SentryEvent, - hint?: SentryEventHint, - maxBreadcrumbs?: number, - ): SyncPromise { + public applyToEvent(event: Event, hint?: EventHint): SyncPromise { if (this.extra && Object.keys(this.extra).length) { event.extra = { ...this.extra, ...event.extra }; } @@ -250,10 +210,7 @@ export class Scope { const hasNoBreadcrumbs = !event.breadcrumbs || event.breadcrumbs.length === 0; if (hasNoBreadcrumbs && this.breadcrumbs.length > 0) { - event.breadcrumbs = - maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0 - ? this.breadcrumbs.slice(-maxBreadcrumbs) - : this.breadcrumbs; + event.breadcrumbs = this.breadcrumbs; } return this.notifyEventProcessors([...getGlobalEventProcessors(), ...this.eventProcessors], event, hint); diff --git a/packages/hub/test/hub.test.ts b/packages/hub/test/hub.test.ts index 75e455c9261b..a3ed9a3693ec 100644 --- a/packages/hub/test/hub.test.ts +++ b/packages/hub/test/hub.test.ts @@ -1,9 +1,7 @@ -import { SentryEvent } from '@sentry/types'; -import { logger } from '@sentry/utils/logger'; +import { Event } from '@sentry/types'; import { getCurrentHub, Hub, Scope } from '../src'; -const clientFn = jest.fn(); -const scope = new Scope(); +const clientFn: any = jest.fn(); describe('Hub', () => { afterEach(() => { @@ -17,30 +15,12 @@ describe('Hub', () => { }); test('pass in filled layer', () => { - const hub = new Hub({ - clientFn, - }); + const hub = new Hub(clientFn); expect(hub.getStack()).toHaveLength(1); }); - test('invoke client sync', () => { - const hub = new Hub( - { - clientFn, - }, - scope, - ); - // @ts-ignore - hub.invokeClient('clientFn', true); - expect(clientFn).toHaveBeenCalled(); - expect(clientFn.mock.calls[0][0]).toBe(true); - expect(clientFn.mock.calls[0][1]).toBe(scope); - }); - test("don't invoke client sync with wrong func", () => { - const hub = new Hub({ - clientFn, - }); + const hub = new Hub(clientFn); // @ts-ignore hub.invokeClient('funca', true); expect(clientFn).not.toHaveBeenCalled(); @@ -62,7 +42,7 @@ describe('Hub', () => { }); test('pushScope inherit client', () => { - const testClient = { bla: 'a' }; + const testClient: any = { bla: 'a' }; const hub = new Hub(testClient); hub.pushScope(); expect(hub.getStack()).toHaveLength(2); @@ -70,9 +50,9 @@ describe('Hub', () => { }); test('pushScope bindClient', () => { - const testClient = { bla: 'a' }; + const testClient: any = { bla: 'a' }; const hub = new Hub(testClient); - const ndClient = { foo: 'bar' }; + const ndClient: any = { foo: 'bar' }; hub.pushScope(); hub.bindClient(ndClient); expect(hub.getStack()).toHaveLength(2); @@ -98,71 +78,29 @@ describe('Hub', () => { test('withScope bindClient', () => { const hub = new Hub(); - const testClient = { bla: 'a' }; - hub.withScope(() => { - hub.bindClient(testClient); - expect(hub.getStack()).toHaveLength(2); - expect(hub.getStack()[1].client).toBe(testClient); - }); - expect(hub.getStack()).toHaveLength(1); - }); - - test('withScope bindClient scope changes', () => { - jest.useFakeTimers(); - const hub = new Hub(); - const storeScope = jest.fn(); - const testClient = { - bla: 'a', - getBackend: () => ({ storeScope }), - }; + const testClient: any = { bla: 'a' }; hub.withScope(() => { hub.bindClient(testClient); - hub.configureScope(localScope => { - localScope.setExtra('a', 'b'); - }); - jest.runAllTimers(); expect(hub.getStack()).toHaveLength(2); expect(hub.getStack()[1].client).toBe(testClient); - expect(storeScope.mock.calls).toHaveLength(1); - expect(storeScope.mock.calls[0][0].extra).toEqual({ a: 'b' }); - }); - expect(hub.getStack()).toHaveLength(1); - }); - - test('withScope bindClient scope changes without configureScope', () => { - jest.useFakeTimers(); - const hub = new Hub(); - const storeScope = jest.fn(); - const testClient = { - bla: 'a', - getBackend: () => ({ storeScope }), - }; - hub.withScope(localScope => { - hub.bindClient(testClient); - localScope.setExtra('a', 'b'); - jest.runAllTimers(); - expect(hub.getStack()).toHaveLength(2); - expect(hub.getStack()[1].client).toBe(testClient); - expect(storeScope.mock.calls).toHaveLength(1); - expect(storeScope.mock.calls[0][0].extra).toEqual({ a: 'b' }); }); expect(hub.getStack()).toHaveLength(1); }); test('getCurrentClient', () => { - const testClient = { bla: 'a' }; + const testClient: any = { bla: 'a' }; const hub = new Hub(testClient); expect(hub.getClient()).toBe(testClient); }); test('getStack', () => { - const client = { a: 'b' }; + const client: any = { a: 'b' }; const hub = new Hub(client); expect(hub.getStack()[0].client).toBe(client); }); test('getStackTop', () => { - const testClient = { bla: 'a' }; + const testClient: any = { bla: 'a' }; const hub = new Hub(); hub.pushScope(); hub.pushScope(); @@ -189,7 +127,7 @@ describe('Hub', () => { }); test('captureEvent', () => { - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const hub = new Hub(); @@ -200,15 +138,6 @@ describe('Hub', () => { expect(spy.mock.calls[0][1]).toBe(event); }); - test('addBreadcrumb', () => { - const hub = new Hub(); - const spy = jest.spyOn(hub as any, 'invokeClient'); - hub.addBreadcrumb({ message: 'test' }); - expect(spy).toHaveBeenCalled(); - expect(spy.mock.calls[0][0]).toBe('addBreadcrumb'); - expect(spy.mock.calls[0][1]).toEqual({ message: 'test' }); - }); - test('configureScope', () => { expect.assertions(0); const hub = new Hub(); @@ -221,7 +150,7 @@ describe('Hub', () => { expect.assertions(1); const localScope = new Scope(); localScope.setExtra('a', 'b'); - const hub = new Hub({ a: 'b' }, localScope); + const hub = new Hub({ a: 'b' } as any, localScope); hub.configureScope(confScope => { expect((confScope as any).extra).toEqual({ a: 'b' }); }); @@ -229,14 +158,14 @@ describe('Hub', () => { test('pushScope inherit processors', () => { expect.assertions(1); - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const localScope = new Scope(); localScope.setExtra('a', 'b'); - const hub = new Hub({ a: 'b' }, localScope); + const hub = new Hub({ a: 'b' } as any, localScope); - localScope.addEventProcessor(async (processedEvent: SentryEvent) => { + localScope.addEventProcessor(async (processedEvent: Event) => { processedEvent.dist = '1'; return processedEvent; }); @@ -264,7 +193,7 @@ describe('Hub', () => { }); test('captureEvent should set event_id in hint', () => { - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const hub = new Hub(); @@ -274,7 +203,7 @@ describe('Hub', () => { }); test('lastEventId should be the same as last created', () => { - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const hub = new Hub(); @@ -285,7 +214,7 @@ describe('Hub', () => { test('run', () => { const currentHub = getCurrentHub(); const myScope = new Scope(); - const myClient = { a: 'b' }; + const myClient: any = { a: 'b' }; myScope.setExtra('a', 'b'); const myHub = new Hub(myClient, myScope); myHub.run(hub => { diff --git a/packages/hub/test/scope.test.ts b/packages/hub/test/scope.test.ts index 7b4c5fc72e1a..ceb18df98695 100644 --- a/packages/hub/test/scope.test.ts +++ b/packages/hub/test/scope.test.ts @@ -1,4 +1,4 @@ -import { SentryEvent, SentryEventHint, Severity } from '@sentry/types'; +import { Event, EventHint, Severity } from '@sentry/types'; import { Scope } from '../src'; describe('Scope', () => { @@ -75,17 +75,6 @@ describe('Scope', () => { expect((scope as any).extra).toEqual({ a: 2 }); }); - test('listeners', () => { - jest.useFakeTimers(); - const scope = new Scope(); - const listener = jest.fn(); - scope.addScopeListener(listener); - scope.setExtra('a', 2); - jest.runAllTimers(); - expect(listener).toHaveBeenCalled(); - expect(listener.mock.calls[0][0].extra).toEqual({ a: 2 }); - }); - test('applyToEvent', () => { expect.assertions(6); const scope = new Scope(); @@ -95,7 +84,7 @@ describe('Scope', () => { scope.setFingerprint(['abcd']); scope.setLevel(Severity.Warning); scope.addBreadcrumb({ message: 'test' }, 100); - const event: SentryEvent = {}; + const event: Event = {}; return scope.applyToEvent(event).then(processedEvent => { expect(processedEvent!.extra).toEqual({ a: 2 }); expect(processedEvent!.tags).toEqual({ a: 'b' }); @@ -114,7 +103,7 @@ describe('Scope', () => { scope.setUser({ id: '1' }); scope.setFingerprint(['abcd']); scope.addBreadcrumb({ message: 'test' }, 100); - const event: SentryEvent = { + const event: Event = { breadcrumbs: [{ message: 'test2' }], extra: { b: 3 }, fingerprint: ['efgh'], @@ -133,7 +122,7 @@ describe('Scope', () => { test('applyToEvent message fingerprint', async () => { expect.assertions(1); const scope = new Scope(); - const event: SentryEvent = { + const event: Event = { fingerprint: ['bar'], message: 'foo', }; @@ -146,7 +135,7 @@ describe('Scope', () => { expect.assertions(1); const scope = new Scope(); scope.setLevel(Severity.Warning); - const event: SentryEvent = {}; + const event: Event = {}; event.level = Severity.Critical; return scope.applyToEvent(event).then(processedEvent => { expect(processedEvent!.level).toEqual('warning'); @@ -167,20 +156,20 @@ describe('Scope', () => { test('addEventProcessor', () => { expect.assertions(3); - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const localScope = new Scope(); localScope.setExtra('a', 'b'); - localScope.addEventProcessor((processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: Event) => { expect(processedEvent.extra).toEqual({ a: 'b', b: 3 }); return processedEvent; }); - localScope.addEventProcessor((processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: Event) => { processedEvent.dist = '1'; return processedEvent; }); - localScope.addEventProcessor((processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: Event) => { expect(processedEvent.dist).toEqual('1'); return processedEvent; }); @@ -193,20 +182,20 @@ describe('Scope', () => { test('addEventProcessor async', async () => { jest.useFakeTimers(); expect.assertions(6); - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const localScope = new Scope(); localScope.setExtra('a', 'b'); const callCounter = jest.fn(); - localScope.addEventProcessor((processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: Event) => { callCounter(1); expect(processedEvent.extra).toEqual({ a: 'b', b: 3 }); return processedEvent; }); localScope.addEventProcessor( - async (processedEvent: SentryEvent) => - new Promise(resolve => { + async (processedEvent: Event) => + new Promise(resolve => { callCounter(2); setTimeout(() => { callCounter(3); @@ -216,7 +205,7 @@ describe('Scope', () => { jest.runAllTimers(); }), ); - localScope.addEventProcessor((processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: Event) => { callCounter(4); return processedEvent; }); @@ -233,27 +222,27 @@ describe('Scope', () => { test('addEventProcessor async with reject', async () => { jest.useFakeTimers(); expect.assertions(2); - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const localScope = new Scope(); localScope.setExtra('a', 'b'); const callCounter = jest.fn(); - localScope.addEventProcessor((processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: Event) => { callCounter(1); expect(processedEvent.extra).toEqual({ a: 'b', b: 3 }); return processedEvent; }); localScope.addEventProcessor( - async (_processedEvent: SentryEvent) => - new Promise((_, reject) => { + async (_processedEvent: Event) => + new Promise((_, reject) => { setTimeout(() => { reject('bla'); }, 1); jest.runAllTimers(); }), ); - localScope.addEventProcessor((processedEvent: SentryEvent) => { + localScope.addEventProcessor((processedEvent: Event) => { callCounter(4); return processedEvent; }); @@ -265,12 +254,12 @@ describe('Scope', () => { test('addEventProcessor return null', () => { expect.assertions(1); - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const localScope = new Scope(); localScope.setExtra('a', 'b'); - localScope.addEventProcessor(async (_: SentryEvent) => null); + localScope.addEventProcessor(async (_: Event) => null); return localScope.applyToEvent(event).then(processedEvent => { expect(processedEvent).toBeNull(); }); @@ -278,12 +267,12 @@ describe('Scope', () => { test('addEventProcessor pass along hint', () => { expect.assertions(3); - const event: SentryEvent = { + const event: Event = { extra: { b: 3 }, }; const localScope = new Scope(); localScope.setExtra('a', 'b'); - localScope.addEventProcessor(async (internalEvent: SentryEvent, hint?: SentryEventHint) => { + localScope.addEventProcessor(async (internalEvent: Event, hint?: EventHint) => { expect(hint).toBeTruthy(); expect(hint!.syntheticException).toBeTruthy(); return internalEvent; diff --git a/packages/minimal/src/index.ts b/packages/minimal/src/index.ts index 2f1c89a5ba2e..53048a982701 100644 --- a/packages/minimal/src/index.ts +++ b/packages/minimal/src/index.ts @@ -1,5 +1,5 @@ import { getCurrentHub, Hub, Scope } from '@sentry/hub'; -import { Breadcrumb, SentryEvent, Severity } from '@sentry/types'; +import { Breadcrumb, Event, Severity } from '@sentry/types'; /** * This calls a function on the current hub. @@ -60,7 +60,7 @@ export function captureMessage(message: string, level?: Severity): string { * @param event The event to send to Sentry. * @returns The generated eventId. */ -export function captureEvent(event: SentryEvent): string { +export function captureEvent(event: Event): string { return callOnHub('captureEvent', event); } diff --git a/packages/minimal/test/lib/minimal.test.ts b/packages/minimal/test/lib/minimal.test.ts index e0d9b585cd0d..096366be557f 100644 --- a/packages/minimal/test/lib/minimal.test.ts +++ b/packages/minimal/test/lib/minimal.test.ts @@ -1,14 +1,6 @@ import { getCurrentHub, getHubFromCarrier, Scope } from '@sentry/hub'; import { Severity } from '@sentry/types'; -import { - _callOnClient, - addBreadcrumb, - captureEvent, - captureException, - captureMessage, - configureScope, - withScope, -} from '../../src'; +import { _callOnClient, captureEvent, captureException, captureMessage, configureScope, withScope } from '../../src'; import { init, TestClient, TestClient2 } from '../mocks/client'; declare var global: any; @@ -22,7 +14,7 @@ describe('Minimal', () => { describe('Capture', () => { test('Return an event_id', () => { - const client = { + const client: any = { captureException: jest.fn(async () => Promise.resolve()), }; getCurrentHub().withScope(() => { @@ -34,7 +26,7 @@ describe('Minimal', () => { }); test('Exception', () => { - const client = { + const client: any = { captureException: jest.fn(async () => Promise.resolve()), }; getCurrentHub().withScope(() => { @@ -46,7 +38,7 @@ describe('Minimal', () => { }); test('Message', () => { - const client = { captureMessage: jest.fn(async () => Promise.resolve()) }; + const client: any = { captureMessage: jest.fn(async () => Promise.resolve()) }; getCurrentHub().withScope(() => { getCurrentHub().bindClient(client); const message = 'yo'; @@ -56,7 +48,7 @@ describe('Minimal', () => { }); test('Event', () => { - const client = { captureEvent: jest.fn(async () => Promise.resolve()) }; + const client: any = { captureEvent: jest.fn(async () => Promise.resolve()) }; getCurrentHub().withScope(() => { getCurrentHub().bindClient(client); const e = { message: 'test' }; @@ -68,7 +60,7 @@ describe('Minimal', () => { describe('configureScope', () => { test('User Context', () => { - const client = new TestClient({}); + const client: any = new TestClient({}); getCurrentHub().pushScope(); getCurrentHub().bindClient(client); configureScope((scope: Scope) => { @@ -81,7 +73,7 @@ describe('Minimal', () => { }); test('Extra Context', () => { - const client = new TestClient({}); + const client: any = new TestClient({}); getCurrentHub().pushScope(); getCurrentHub().bindClient(client); configureScope((scope: Scope) => { @@ -104,7 +96,7 @@ describe('Minimal', () => { }); test('Fingerprint', () => { - const client = new TestClient({}); + const client: any = new TestClient({}); getCurrentHub().pushScope(); getCurrentHub().bindClient(client); configureScope((scope: Scope) => { @@ -114,7 +106,7 @@ describe('Minimal', () => { }); test('Level', () => { - const client = new TestClient({}); + const client: any = new TestClient({}); const scope = getCurrentHub().pushScope(); getCurrentHub().bindClient(client); scope.setLevel(Severity.Warning); @@ -123,7 +115,7 @@ describe('Minimal', () => { }); test('Clear Scope', () => { - const client = new TestClient({}); + const client: any = new TestClient({}); getCurrentHub().withScope(() => { getCurrentHub().bindClient(client); expect(global.__SENTRY__.hub.stack.length).toBe(2); @@ -140,19 +132,6 @@ describe('Minimal', () => { }); }); - test('Add Breadcrumb', () => { - const client = { - addBreadcrumb: jest.fn(), - }; - getCurrentHub().pushScope(); - getCurrentHub().bindClient(client); - addBreadcrumb({ message: 'world' }); - expect(client.addBreadcrumb.mock.calls[0][0]).toEqual({ - message: 'world', - }); - getCurrentHub().popScope(); - }); - test('returns undefined before binding a client', () => { expect(getCurrentHub().getClient()).toBeUndefined(); }); @@ -165,7 +144,7 @@ describe('Minimal', () => { test('Calls function on the client', done => { const s = jest.spyOn(TestClient.prototype, 'mySecretPublicMethod'); getCurrentHub().withScope(() => { - getCurrentHub().bindClient(new TestClient({})); + getCurrentHub().bindClient(new TestClient({}) as any); _callOnClient('mySecretPublicMethod', 'test'); expect(s.mock.calls[0][0]).toBe('test'); s.mockRestore(); @@ -177,7 +156,7 @@ describe('Minimal', () => { init({}); expect(() => { getCurrentHub().withScope(() => { - getCurrentHub().bindClient(new TestClient2()); + getCurrentHub().bindClient(new TestClient2() as any); }); }).not.toThrow(); }); @@ -186,7 +165,7 @@ describe('Minimal', () => { init({}); expect(() => { getCurrentHub().withScope(() => { - getCurrentHub().bindClient(new TestClient({})); + getCurrentHub().bindClient(new TestClient({}) as any); }); }).not.toThrow(); }); @@ -197,11 +176,11 @@ describe('Minimal', () => { }; const hub = getHubFromCarrier(iAmSomeGlobalVarTheUserHasToManage.state); hub.pushScope(); - hub.bindClient(new TestClient({})); + hub.bindClient(new TestClient({}) as any); hub.configureScope((scope: Scope) => { scope.setUser({ id: '1234' }); }); - expect(((iAmSomeGlobalVarTheUserHasToManage.state as any).__SENTRY__.hub.stack[1] as any).scope.user).toEqual({ + expect((iAmSomeGlobalVarTheUserHasToManage.state as any).__SENTRY__.hub.stack[1].scope.user).toEqual({ id: '1234', }); hub.popScope(); diff --git a/packages/minimal/test/mocks/client.ts b/packages/minimal/test/mocks/client.ts index bcb38fa27eae..2e04f2645bca 100644 --- a/packages/minimal/test/mocks/client.ts +++ b/packages/minimal/test/mocks/client.ts @@ -15,5 +15,5 @@ export class TestClient { export class TestClient2 {} export function init(options: object): void { - getCurrentHub().bindClient(new TestClient(options)); + getCurrentHub().bindClient(new TestClient(options) as any); } diff --git a/packages/minimal/test/tslint.json b/packages/minimal/test/tslint.json index fc0ed75cfcd7..f2c15a212b8f 100644 --- a/packages/minimal/test/tslint.json +++ b/packages/minimal/test/tslint.json @@ -5,6 +5,7 @@ "max-classes-per-file": false, "no-non-null-assertion": false, "no-implicit-dependencies": [true, "dev"], - "no-unused-expression": false + "no-unused-expression": false, + "no-unsafe-any": false } } diff --git a/packages/node/src/backend.ts b/packages/node/src/backend.ts index e42af177d50c..c6e9033f6c20 100644 --- a/packages/node/src/backend.ts +++ b/packages/node/src/backend.ts @@ -1,5 +1,5 @@ -import { BaseBackend, Dsn, getCurrentHub, Options } from '@sentry/core'; -import { SentryEvent, SentryEventHint, Severity, Transport } from '@sentry/types'; +import { BaseBackend, Dsn, getCurrentHub } from '@sentry/core'; +import { Event, EventHint, Options, Severity, Transport } from '@sentry/types'; import { isError, isPlainObject } from '@sentry/utils/is'; import { limitObjectDepthToSize, serializeKeysToEventMessage } from '@sentry/utils/object'; import { SyncPromise } from '@sentry/utils/syncpromise'; @@ -73,7 +73,7 @@ export class NodeBackend extends BaseBackend { /** * @inheritDoc */ - public eventFromException(exception: any, hint?: SentryEventHint): SyncPromise { + public eventFromException(exception: any, hint?: EventHint): SyncPromise { let ex: any = exception; if (!isError(exception)) { @@ -101,7 +101,7 @@ export class NodeBackend extends BaseBackend { } } - return new SyncPromise(resolve => + return new SyncPromise(resolve => parseError(ex as Error, this.options).then(event => { resolve({ ...event, @@ -114,18 +114,14 @@ export class NodeBackend extends BaseBackend { /** * @inheritDoc */ - public eventFromMessage( - message: string, - level: Severity = Severity.Info, - hint?: SentryEventHint, - ): SyncPromise { - const event: SentryEvent = { + public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): SyncPromise { + const event: Event = { event_id: hint && hint.event_id, level, message, }; - return new SyncPromise(resolve => { + return new SyncPromise(resolve => { if (this.options.attachStacktrace && hint && hint.syntheticException) { const stack = hint.syntheticException ? extractStackFromError(hint.syntheticException) : []; parseStack(stack, this.options).then(frames => { diff --git a/packages/node/src/client.ts b/packages/node/src/client.ts index df295e677d80..b01b6d9cf253 100644 --- a/packages/node/src/client.ts +++ b/packages/node/src/client.ts @@ -1,5 +1,5 @@ import { BaseClient, Scope } from '@sentry/core'; -import { SentryEvent, SentryEventHint } from '@sentry/types'; +import { Event, EventHint } from '@sentry/types'; import { SyncPromise } from '@sentry/utils/syncpromise'; import { NodeBackend, NodeOptions } from './backend'; import { SDK_NAME, SDK_VERSION } from './version'; @@ -22,7 +22,7 @@ export class NodeClient extends BaseClient { /** * @inheritDoc */ - protected prepareEvent(event: SentryEvent, scope?: Scope, hint?: SentryEventHint): SyncPromise { + protected prepareEvent(event: Event, scope?: Scope, hint?: EventHint): SyncPromise { event.platform = event.platform || 'node'; event.sdk = { ...event.sdk, diff --git a/packages/node/src/handlers.ts b/packages/node/src/handlers.ts index 9d0433f684fb..ecb59603b155 100644 --- a/packages/node/src/handlers.ts +++ b/packages/node/src/handlers.ts @@ -1,5 +1,5 @@ import { captureException, getCurrentHub } from '@sentry/core'; -import { SentryEvent } from '@sentry/types'; +import { Event } from '@sentry/types'; import { forget } from '@sentry/utils/async'; import { logger } from '@sentry/utils/logger'; import { serialize } from '@sentry/utils/object'; @@ -155,7 +155,7 @@ function extractUserData(req: { [key: string]: any }, keys: boolean | string[]): * @hidden */ export function parseRequest( - event: SentryEvent, + event: Event, req: { [key: string]: any; }, @@ -166,7 +166,7 @@ export function parseRequest( user?: boolean | string[]; version?: boolean; }, -): SentryEvent { +): Event { // tslint:disable-next-line:no-parameter-reassignment options = { request: true, @@ -234,7 +234,7 @@ export function requestHandler(options?: { local.on('error', next); local.run(() => { getCurrentHub().configureScope(scope => - scope.addEventProcessor((event: SentryEvent) => parseRequest(event, req, options)), + scope.addEventProcessor((event: Event) => parseRequest(event, req, options)), ); next(); }); diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 1d93d0786a14..684c10c5090e 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -2,9 +2,9 @@ export { Breadcrumb, Request, SdkInfo, - SentryEvent, - SentryException, - SentryResponse, + Event, + Exception, + Response, Severity, StackFrame, Stacktrace, diff --git a/packages/node/src/integrations/linkederrors.ts b/packages/node/src/integrations/linkederrors.ts index df7395aabb5a..b43f8609633b 100644 --- a/packages/node/src/integrations/linkederrors.ts +++ b/packages/node/src/integrations/linkederrors.ts @@ -1,5 +1,5 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; -import { Integration, SentryEvent, SentryEventHint, SentryException } from '@sentry/types'; +import { Event, EventHint, Exception, Integration } from '@sentry/types'; import { SyncPromise } from '@sentry/utils/syncpromise'; import { getExceptionFromError } from '../parsers'; @@ -46,10 +46,10 @@ export class LinkedErrors implements Integration { * @inheritDoc */ public setupOnce(): void { - addGlobalEventProcessor((event: SentryEvent, hint?: SentryEventHint) => { + 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; }); @@ -58,13 +58,13 @@ export class LinkedErrors implements Integration { /** * @inheritDoc */ - public handler(event: SentryEvent, hint?: SentryEventHint): 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 => { - this.walkErrorTree(hint.originalException as ExtendedError, this.key).then((linkedErrors: SentryException[]) => { + return new SyncPromise(resolve => { + this.walkErrorTree(hint.originalException as ExtendedError, this.key).then((linkedErrors: Exception[]) => { if (event && event.exception) { event.exception.values = [...linkedErrors, ...event.exception.values]; } @@ -76,16 +76,12 @@ export class LinkedErrors implements Integration { /** * @inheritDoc */ - public walkErrorTree( - error: ExtendedError, - key: string, - stack: SentryException[] = [], - ): SyncPromise { + public walkErrorTree(error: ExtendedError, key: string, stack: Exception[] = []): SyncPromise { if (!(error[key] instanceof Error) || stack.length + 1 >= this.limit) { return SyncPromise.resolve(stack); } - return new SyncPromise(resolve => { - getExceptionFromError(error[key]).then((exception: SentryException) => { + return new SyncPromise(resolve => { + getExceptionFromError(error[key]).then((exception: Exception) => { this.walkErrorTree(error[key], key, [exception, ...stack]).then(resolve); }); }); diff --git a/packages/node/src/integrations/pluggable/transaction.ts b/packages/node/src/integrations/pluggable/transaction.ts index 1944c5b1e12c..5a87606ae8e0 100644 --- a/packages/node/src/integrations/pluggable/transaction.ts +++ b/packages/node/src/integrations/pluggable/transaction.ts @@ -1,5 +1,5 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; -import { Integration, SentryEvent, StackFrame } from '@sentry/types'; +import { Event, Integration, StackFrame } from '@sentry/types'; /** Add node transaction to the event */ export class Transaction implements Integration { @@ -28,7 +28,7 @@ export class Transaction implements Integration { /** * @inheritDoc */ - public process(event: SentryEvent): SentryEvent { + public process(event: Event): Event { const frames = this.getFramesFromEvent(event); // use for loop so we don't have to reverse whole frames array @@ -45,7 +45,7 @@ export class Transaction implements Integration { } /** JSDoc */ - private getFramesFromEvent(event: SentryEvent): StackFrame[] { + private getFramesFromEvent(event: Event): StackFrame[] { const exception = event.exception && event.exception.values && event.exception.values[0]; return (exception && exception.stacktrace && exception.stacktrace.frames) || []; } diff --git a/packages/node/src/parsers.ts b/packages/node/src/parsers.ts index 6c715321c1e6..6e15bd890464 100644 --- a/packages/node/src/parsers.ts +++ b/packages/node/src/parsers.ts @@ -1,4 +1,4 @@ -import { SentryEvent, SentryException, StackFrame } from '@sentry/types'; +import { Event, Exception, StackFrame } from '@sentry/types'; import { basename, dirname } from '@sentry/utils/path'; import { snipLine } from '@sentry/utils/string'; import { SyncPromise } from '@sentry/utils/syncpromise'; @@ -236,10 +236,10 @@ function addPrePostContext( /** * @hidden */ -export function getExceptionFromError(error: Error, options?: NodeOptions): SyncPromise { +export function getExceptionFromError(error: Error, options?: NodeOptions): SyncPromise { const name = error.name || error.constructor.name; const stack = extractStackFromError(error); - return new SyncPromise(resolve => + return new SyncPromise(resolve => parseStack(stack, options).then(frames => { const result = { stacktrace: { @@ -256,9 +256,9 @@ export function getExceptionFromError(error: Error, options?: NodeOptions): Sync /** * @hidden */ -export function parseError(error: ExtendedError, options?: NodeOptions): SyncPromise { - return new SyncPromise(resolve => - getExceptionFromError(error, options).then((exception: SentryException) => { +export function parseError(error: ExtendedError, options?: NodeOptions): SyncPromise { + return new SyncPromise(resolve => + getExceptionFromError(error, options).then((exception: Exception) => { resolve({ exception: { values: [exception], diff --git a/packages/node/src/transports/base.ts b/packages/node/src/transports/base.ts index 4bd74729b473..4e89dedaf8be 100644 --- a/packages/node/src/transports/base.ts +++ b/packages/node/src/transports/base.ts @@ -1,5 +1,5 @@ import { API } from '@sentry/core'; -import { SentryResponse, Status, Transport, TransportOptions } from '@sentry/types'; +import { Response, Status, Transport, TransportOptions } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import { PromiseBuffer } from '@sentry/utils/promisebuffer'; import * as fs from 'fs'; @@ -31,7 +31,7 @@ export abstract class BaseTransport implements Transport { public client?: http.Agent | https.Agent; /** A simple buffer holding all requests. */ - protected readonly buffer: PromiseBuffer = new PromiseBuffer(30); + protected readonly buffer: PromiseBuffer = new PromiseBuffer(30); /** Create instance and set this.dsn */ public constructor(public options: TransportOptions) { @@ -66,9 +66,9 @@ export abstract class BaseTransport implements Transport { } /** JSDoc */ - protected async sendWithModule(httpModule: HTTPRequest, body: string): Promise { + protected async sendWithModule(httpModule: HTTPRequest, body: string): Promise { return this.buffer.add( - new Promise((resolve, reject) => { + new Promise((resolve, reject) => { const req = httpModule.request(this.getRequestOptions(), (res: http.IncomingMessage) => { res.setEncoding('utf8'); if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) { @@ -100,7 +100,7 @@ export abstract class BaseTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: string): Promise { + public async sendEvent(_: string): Promise { throw new SentryError('Transport Class has to implement `sendEvent` method.'); } diff --git a/packages/node/src/transports/http.ts b/packages/node/src/transports/http.ts index 4b1f557b6f14..dfd818b67750 100644 --- a/packages/node/src/transports/http.ts +++ b/packages/node/src/transports/http.ts @@ -1,4 +1,4 @@ -import { SentryResponse, TransportOptions } from '@sentry/types'; +import { Response, TransportOptions } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import * as http from 'http'; import * as HttpsProxyAgent from 'https-proxy-agent'; @@ -20,7 +20,7 @@ export class HTTPTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(body: string): 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 3117845b1ff1..41da385c0924 100644 --- a/packages/node/src/transports/https.ts +++ b/packages/node/src/transports/https.ts @@ -1,4 +1,4 @@ -import { SentryResponse, TransportOptions } from '@sentry/types'; +import { Response, TransportOptions } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import * as https from 'https'; import * as HttpsProxyAgent from 'https-proxy-agent'; @@ -20,7 +20,7 @@ export class HTTPSTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(body: string): Promise { if (!this.module) { throw new SentryError('No module available in HTTPSTransport'); } diff --git a/packages/node/test/helper/settimeouttransport.ts b/packages/node/test/helper/settimeouttransport.ts index 313504b2b083..2cfa2bd88465 100644 --- a/packages/node/test/helper/settimeouttransport.ts +++ b/packages/node/test/helper/settimeouttransport.ts @@ -1,10 +1,10 @@ -import { SentryResponse, Status } from '../../src'; +import { Response, Status } from '../../src'; import { BaseTransport } from '../../src/transports'; export class SetTimeoutTransport extends BaseTransport { - public async sendEvent(_: string): Promise { + public async sendEvent(_: string): Promise { return this.buffer.add( - new Promise(resolve => { + new Promise(resolve => { setTimeout(() => { resolve({ status: Status.fromHttpCode(200), diff --git a/packages/node/test/index.test.ts b/packages/node/test/index.test.ts index 71b86f38c7bf..55d4f7e6f1f9 100644 --- a/packages/node/test/index.test.ts +++ b/packages/node/test/index.test.ts @@ -1,17 +1,16 @@ import * as domain from 'domain'; - import { addBreadcrumb, captureEvent, captureException, captureMessage, configureScope, + Event, getCurrentHub, init, NodeClient, + Response, Scope, - SentryEvent, - SentryResponse, } from '../src'; import { NodeBackend } from '../src/backend'; import { SetTimeoutTransport } from './helper/settimeouttransport'; @@ -110,7 +109,7 @@ describe('SentryNode', () => { }); describe('breadcrumbs', () => { - let s: jest.Mock<(event: SentryEvent) => Promise>; + let s: jest.Mock<(event: Event) => void>; beforeEach(() => { s = jest.spyOn(NodeBackend.prototype, 'sendEvent').mockImplementation(async () => Promise.resolve({ code: 200 })); @@ -122,7 +121,7 @@ describe('SentryNode', () => { test('record auto breadcrumbs', done => { const client = new NodeClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { // TODO: It should be 3, but we don't capture a breadcrumb // for our own captureMessage/captureException calls yet expect(event.breadcrumbs!).toHaveLength(2); @@ -139,7 +138,7 @@ describe('SentryNode', () => { }); describe('capture', () => { - let s: jest.Mock<(event: SentryEvent) => Promise>; + let s: jest.Mock<(event: Event) => void>; beforeEach(() => { s = jest.spyOn(NodeBackend.prototype, 'sendEvent').mockImplementation(async () => Promise.resolve({ code: 200 })); @@ -153,7 +152,7 @@ describe('SentryNode', () => { expect.assertions(5); getCurrentHub().bindClient( new NodeClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { expect(event.tags).toEqual({ test: '1' }); expect(event.exception).not.toBeUndefined(); expect(event.exception!.values![0]).not.toBeUndefined(); @@ -179,7 +178,7 @@ describe('SentryNode', () => { expect.assertions(10); getCurrentHub().bindClient( new NodeClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { expect(event.tags).toEqual({ test: '1' }); expect(event.exception).not.toBeUndefined(); expect(event.exception!.values![0]).not.toBeUndefined(); @@ -211,7 +210,7 @@ describe('SentryNode', () => { expect.assertions(2); getCurrentHub().bindClient( new NodeClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { expect(event.message).toBe('test'); expect(event.exception).toBeUndefined(); done(); @@ -227,7 +226,7 @@ describe('SentryNode', () => { expect.assertions(2); getCurrentHub().bindClient( new NodeClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { expect(event.message).toBe('test event'); expect(event.exception).toBeUndefined(); done(); @@ -243,7 +242,7 @@ describe('SentryNode', () => { const d = domain.create(); const client = new NodeClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { expect(event.message).toBe('test domain'); expect(event.exception).toBeUndefined(); done(); @@ -263,7 +262,7 @@ describe('SentryNode', () => { expect.assertions(1); getCurrentHub().bindClient( new NodeClient({ - beforeSend: (event: SentryEvent) => { + beforeSend: (event: Event) => { expect( event.exception!.values![0].stacktrace!.frames![ event.exception!.values![0].stacktrace!.frames!.length - 1 diff --git a/packages/node/test/integrations/linkederrors.test.ts b/packages/node/test/integrations/linkederrors.test.ts index 2ab688deeae0..97c1c28db899 100644 --- a/packages/node/test/integrations/linkederrors.test.ts +++ b/packages/node/test/integrations/linkederrors.test.ts @@ -1,4 +1,4 @@ -import { SentryEvent } from '../../src'; +import { Event } from '../../src'; import { NodeBackend } from '../../src/backend'; import { LinkedErrors } from '../../src/integrations/linkederrors'; @@ -31,7 +31,7 @@ describe('LinkedErrors', () => { const spy = jest.spyOn(linkedErrors, 'walkErrorTree'); const one = new Error('originalException'); const backend = new NodeBackend({}); - let event: SentryEvent | undefined; + let event: Event | undefined; return backend .eventFromException(one) .then(eventFromException => { @@ -146,7 +146,7 @@ describe('LinkedErrors', () => { originalException: one, }) .then(result => { - expect(result!.exception!.values.length).toEqual(2); + 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'); diff --git a/packages/node/test/parsers.test.ts b/packages/node/test/parsers.test.ts index 01be51e7ea88..90372812f0d2 100644 --- a/packages/node/test/parsers.test.ts +++ b/packages/node/test/parsers.test.ts @@ -1,4 +1,3 @@ -// import { StackFrame } from '@sentry/types'; import * as fs from 'fs'; import * as stacktrace from 'stack-trace'; import * as Parsers from '../src/parsers'; diff --git a/packages/types/src/breadcrumb.ts b/packages/types/src/breadcrumb.ts new file mode 100644 index 000000000000..2f186ac7771c --- /dev/null +++ b/packages/types/src/breadcrumb.ts @@ -0,0 +1,17 @@ +import { Severity } from './severity'; + +/** JSDoc */ +export interface Breadcrumb { + type?: string; + level?: Severity; + event_id?: string; + category?: string; + message?: string; + data?: any; + timestamp?: number; +} + +/** JSDoc */ +export interface BreadcrumbHint { + [key: string]: any; +} diff --git a/packages/types/src/client.ts b/packages/types/src/client.ts new file mode 100644 index 000000000000..c01f091c4e89 --- /dev/null +++ b/packages/types/src/client.ts @@ -0,0 +1,73 @@ +import { Dsn } from './dsn'; +import { Event, EventHint } from './event'; +import { Integration, IntegrationClass } from './integration'; +import { Options } from './options'; +import { Scope } from './scope'; +import { Severity } from './severity'; + +/** + * User-Facing Sentry SDK Client. + * + * This interface contains all methods to interface with the SDK once it has + * been installed. It allows to send events to Sentry, record breadcrumbs and + * set a context included in every event. Since the SDK mutates its environment, + * there will only be one instance during runtime. + * + */ +export interface Client { + /** + * Captures an exception event and sends it to Sentry. + * + * @param exception An exception-like object. + * @param hint May contain additional information about the original exception. + * @param scope An optional scope containing event metadata. + * @returns The event id + */ + captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined; + + /** + * Captures a message event and sends it to Sentry. + * + * @param message The message to send to Sentry. + * @param level Define the level of the message. + * @param hint May contain additional information about the original exception. + * @param scope An optional scope containing event metadata. + * @returns The event id + */ + captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined; + + /** + * Captures a manually created event and sends it to Sentry. + * + * @param event The event to send to Sentry. + * @param hint May contain additional information about the original exception. + * @param scope An optional scope containing event metadata. + * @returns The event id + */ + captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined; + + /** Returns the current Dsn. */ + getDsn(): Dsn | undefined; + + /** Returns the current options. */ + getOptions(): O; + + /** + * A promise that resolves when all current events have been sent. + * If you provide a timeout and the queue takes longer to drain the promise returns false. + * + * @param timeout Maximum time in ms the client should wait. + */ + close(timeout?: number): Promise; + + /** + * A promise that resolves when all current events have been sent. + * If you provide a timeout and the queue takes longer to drain the promise returns false. + * + * @param timeout Maximum time in ms the client should wait. + */ + flush(timeout?: number): Promise; + + /** Returns an array of installed integrations on the client. */ + getIntegration(integartion: IntegrationClass): T | null; +} diff --git a/packages/types/src/dsn.ts b/packages/types/src/dsn.ts new file mode 100644 index 000000000000..117b900064b2 --- /dev/null +++ b/packages/types/src/dsn.ts @@ -0,0 +1,37 @@ +/** Supported Sentry transport protocols in a Dsn. */ +export type DsnProtocol = 'http' | 'https'; + +/** Primitive components of a Dsn. */ +export interface DsnComponents { + /** Protocol used to connect to Sentry. */ + protocol: DsnProtocol; + /** Public authorization key. */ + user: string; + /** Private authorization key (deprecated, optional). */ + pass?: string; + /** Hostname of the Sentry instance. */ + host: string; + /** Port of the Sentry instance. */ + port?: string; + /** Sub path/ */ + path?: string; + /** Project ID */ + projectId: string; +} + +/** Anything that can be parsed into a Dsn. */ +export type DsnLike = string | DsnComponents; + +/** The Sentry Dsn, identifying a Sentry instance and project. */ +export interface Dsn { + /** + * Renders the string representation of this Dsn. + * + * By default, this will render the public representation without the password + * component. To get the deprecated private representation, set `withPassword` + * to true. + * + * @param withPassword When set to true, the password will be included. + */ + toString(withPassword: boolean): string; +} diff --git a/packages/types/src/event.ts b/packages/types/src/event.ts new file mode 100644 index 000000000000..c8d4beed51a1 --- /dev/null +++ b/packages/types/src/event.ts @@ -0,0 +1,45 @@ +import { Breadcrumb } from './breadcrumb'; +import { Exception } from './exception'; +import { Mechanism } from './mechanism'; +import { Request } from './request'; +import { SdkInfo } from './sdkinfo'; +import { Severity } from './severity'; +import { Stacktrace } from './stacktrace'; +import { User } from './user'; + +/** JSDoc */ +export interface Event { + event_id?: string; + message?: string; + timestamp?: number; + level?: Severity; + platform?: string; + logger?: string; + server_name?: string; + release?: string; + dist?: string; + environment?: string; + sdk?: SdkInfo; + request?: Request; + transaction?: string; + modules?: { [key: string]: string }; + fingerprint?: string[]; + exception?: { + values?: Exception[]; + mechanism?: Mechanism; + }; + stacktrace?: Stacktrace; + breadcrumbs?: Breadcrumb[]; + contexts?: { [key: string]: object }; + tags?: { [key: string]: string }; + extra?: { [key: string]: any }; + user?: User; +} + +/** JSDoc */ +export interface EventHint { + event_id?: string; + syntheticException?: Error | null; + originalException?: Error | null; + data?: any; +} diff --git a/packages/types/src/eventprocessor.ts b/packages/types/src/eventprocessor.ts new file mode 100644 index 000000000000..07789fc40d76 --- /dev/null +++ b/packages/types/src/eventprocessor.ts @@ -0,0 +1,9 @@ +import { Event, EventHint } from './event'; + +/** + * Event processors are used to change the event before it will be send. + * We strongly advise to make this function sync. + * Returning a Promise will work just fine, but better be sure that you know what you are doing. + * Event processing will be deferred until your Promise is resolved. + */ +export type EventProcessor = (event: Event, hint?: EventHint) => Promise | Event | null; diff --git a/packages/types/src/exception.ts b/packages/types/src/exception.ts new file mode 100644 index 000000000000..8698da418557 --- /dev/null +++ b/packages/types/src/exception.ts @@ -0,0 +1,10 @@ +import { Stacktrace } from './stacktrace'; + +/** JSDoc */ +export interface Exception { + type?: string; + value?: string; + module?: string; + thread_id?: number; + stacktrace?: Stacktrace; +} diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 33655e528980..99d49400fa0e 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,324 +1,23 @@ -/** Supported Sentry transport protocols in a Dsn. */ -export type DsnProtocol = 'http' | 'https'; - -/** Primitive components of a Dsn. */ -export interface DsnComponents { - /** Protocol used to connect to Sentry. */ - protocol: DsnProtocol; - /** Public authorization key. */ - user: string; - /** Private authorization key (deprecated, optional). */ - pass?: string; - /** Hostname of the Sentry instance. */ - host: string; - /** Port of the Sentry instance. */ - port?: string; - /** Sub path/ */ - path?: string; - /** Project ID */ - projectId: string; -} - -/** Anything that can be parsed into a Dsn. */ -export type DsnLike = string | DsnComponents; - -/** JSDoc */ -export enum Severity { - /** JSDoc */ - Fatal = 'fatal', - /** JSDoc */ - Error = 'error', - /** JSDoc */ - Warning = 'warning', - /** JSDoc */ - Log = 'log', - /** JSDoc */ - Info = 'info', - /** JSDoc */ - Debug = 'debug', - /** JSDoc */ - Critical = 'critical', -} - -// tslint:disable:no-unnecessary-qualifier no-namespace -export namespace Severity { - /** - * Converts a string-based level into a {@link Severity}. - * - * @param level string representation of Severity - * @returns Severity - */ - export function fromString(level: string): Severity { - switch (level) { - case 'debug': - return Severity.Debug; - case 'info': - return Severity.Info; - case 'warn': - case 'warning': - return Severity.Warning; - case 'error': - return Severity.Error; - case 'fatal': - return Severity.Fatal; - case 'critical': - return Severity.Critical; - case 'log': - default: - return Severity.Log; - } - } -} - -/** JSDoc */ -export interface Breadcrumb { - type?: string; - level?: Severity; - event_id?: string; - category?: string; - message?: string; - data?: any; - timestamp?: number; -} - -/** JSDoc */ -export interface User { - [key: string]: any; - id?: string; - ip_address?: string; - email?: string; - username?: string; -} - -/** JSDoc */ -export interface SdkInfo { - name: string; - version: string; - integrations?: string[]; - packages?: Package[]; -} - -/** JSDoc */ -export interface Package { - name: string; - version: string; -} - -/** JSDoc */ -export interface StackFrame { - filename?: string; - function?: string; - module?: string; - platform?: string; - lineno?: number; - colno?: number; - abs_path?: string; - context_line?: string; - pre_context?: string[]; - post_context?: string[]; - in_app?: boolean; - vars?: { [key: string]: any }; -} - -/** JSDoc */ -export interface Stacktrace { - frames?: StackFrame[]; - frames_omitted?: [number, number]; -} - -/** JSDoc */ -export interface Thread { - id?: number; - name?: string; - stacktrace?: Stacktrace; - crashed?: boolean; - current?: boolean; -} - -/** JSDoc */ -export interface SentryException { - type?: string; - value?: string; - module?: string; - thread_id?: number; - stacktrace?: Stacktrace; -} - -/** JSDoc */ -export interface Request { - url?: string; - method?: string; - data?: any; - query_string?: string; - cookies?: { [key: string]: string }; - env?: { [key: string]: string }; - headers?: { [key: string]: string }; -} - -/** JSDoc */ -export interface SentryEvent { - event_id?: string; - message?: string; - timestamp?: number; - level?: Severity; - platform?: string; - logger?: string; - server_name?: string; - release?: string; - dist?: string; - environment?: string; - sdk?: SdkInfo; - request?: Request; - transaction?: string; - modules?: { [key: string]: string }; - fingerprint?: string[]; - exception?: { - values?: SentryException[]; - mechanism?: Mechanism; - }; - stacktrace?: Stacktrace; - breadcrumbs?: Breadcrumb[]; - contexts?: { [key: string]: object }; - tags?: { [key: string]: string }; - extra?: { [key: string]: any }; - user?: User; -} - -/** JSDoc */ -export interface Mechanism { - type: string; - handled: boolean; - data?: { - [key: string]: string; - }; -} - -/** Integration interface */ -export interface Integration { - /** - * Returns {@link IntegrationClass.id} - */ - name: string; - - // This takes no options on purpose, options should be passed in the constructor - setupOnce(): void; -} - -/** Integration Class Interface */ -export interface IntegrationClass { - new (): T; - /** - * Property that holds the integration name - */ - id: string; -} - -/** JSDoc */ -export interface SentryResponse { - status: Status; - event?: SentryEvent; - reason?: string; -} - -/** JSDoc */ -export interface TransportOptions { - [key: string]: any; - /** Sentry DSN */ - dsn: DsnLike; - /** Define custom headers */ - headers?: object; - /** Set a HTTP proxy that should be used for outbound requests. */ - httpProxy?: string; - /** Set a HTTPS proxy that should be used for outbound requests. */ - httpsProxy?: string; - /** HTTPS proxy certificates path */ - caCerts?: string; -} - -/** Transport used sending data to Sentry */ -export interface Transport { - /** - * Sends the body to the Store endpoint in Sentry. - * - * @param body String body that should be sent to Sentry. - */ - sendEvent(body: string): Promise; - - /** - * Call this function to wait until all pending requests have been sent. - * - * @param timeout Number time in ms to wait until the buffer is drained. - */ - close(timeout?: number): Promise; -} - -/** JSDoc */ -export interface TransportClass { - new (options: TransportOptions): T; -} - -/** The status of an event. */ -export enum Status { - /** The status could not be determined. */ - Unknown = 'unknown', - /** The event was skipped due to configuration or callbacks. */ - Skipped = 'skipped', - /** The event was sent to Sentry successfully. */ - Success = 'success', - /** The client is currently rate limited and will try again later. */ - RateLimit = 'rate_limit', - /** The event could not be processed. */ - Invalid = 'invalid', - /** A server-side error ocurred during submission. */ - Failed = 'failed', -} - -// tslint:disable:no-unnecessary-qualifier no-namespace -export namespace Status { - /** - * Converts a HTTP status code into a {@link Status}. - * - * @param code The HTTP response status code. - * @returns The send status or {@link Status.Unknown}. - */ - export function fromHttpCode(code: number): Status { - if (code >= 200 && code < 300) { - return Status.Success; - } - - if (code === 429) { - return Status.RateLimit; - } - - if (code >= 400 && code < 500) { - return Status.Invalid; - } - - if (code >= 500) { - return Status.Failed; - } - - return Status.Unknown; - } -} - -/** JSDoc */ -export interface SentryWrappedFunction extends Function { - [key: string]: any; - __sentry__?: boolean; - __sentry_wrapped__?: SentryWrappedFunction; - __sentry_original__?: SentryWrappedFunction; -} - -/** JSDoc */ -export interface SentryEventHint { - event_id?: string; - syntheticException?: Error | null; - originalException?: Error | null; - data?: any; -} - -/** JSDoc */ -export interface SentryBreadcrumbHint { - [key: string]: any; -} +export { Breadcrumb, BreadcrumbHint } from './breadcrumb'; +export { Client } from './client'; +export { Dsn, DsnComponents, DsnLike, DsnProtocol } from './dsn'; +export { Event, EventHint } from './event'; +export { EventProcessor } from './eventprocessor'; +export { Exception } from './exception'; +export { Integration, IntegrationClass } from './integration'; +export { LogLevel } from './loglevel'; +export { Mechanism } from './mechanism'; +export { Options } from './options'; +export { Package } from './package'; +export { Request } from './request'; +export { Response } from './response'; +export { Scope } from './scope'; +export { SdkInfo } from './sdkinfo'; +export { Severity } from './severity'; +export { StackFrame } from './stackframe'; +export { Stacktrace } from './stacktrace'; +export { Status } from './status'; +export { Thread } from './thread'; +export { Transport, TransportOptions, TransportClass } from './transport'; +export { User } from './user'; +export { WrappedFunction } from './wrappedfunction'; diff --git a/packages/types/src/integration.ts b/packages/types/src/integration.ts new file mode 100644 index 000000000000..953bc4aefa3b --- /dev/null +++ b/packages/types/src/integration.ts @@ -0,0 +1,19 @@ +/** Integration Class Interface */ +export interface IntegrationClass { + new (): T; + /** + * Property that holds the integration name + */ + id: string; +} + +/** Integration interface */ +export interface Integration { + /** + * Returns {@link IntegrationClass.id} + */ + name: string; + + // This takes no options on purpose, options should be passed in the constructor + setupOnce(): void; +} diff --git a/packages/types/src/loglevel.ts b/packages/types/src/loglevel.ts new file mode 100644 index 000000000000..7a75d69312dc --- /dev/null +++ b/packages/types/src/loglevel.ts @@ -0,0 +1,11 @@ +/** Console logging verbosity for the SDK. */ +export enum LogLevel { + /** No logs will be generated. */ + None = 0, + /** Only SDK internal errors will be logged. */ + Error = 1, + /** Information useful for debugging the SDK will be logged. */ + Debug = 2, + /** All SDK actions will be logged. */ + Verbose = 3, +} diff --git a/packages/types/src/mechanism.ts b/packages/types/src/mechanism.ts new file mode 100644 index 000000000000..34db72f46d65 --- /dev/null +++ b/packages/types/src/mechanism.ts @@ -0,0 +1,8 @@ +/** JSDoc */ +export interface Mechanism { + type: string; + handled: boolean; + data?: { + [key: string]: string; + }; +} diff --git a/packages/types/src/options.ts b/packages/types/src/options.ts new file mode 100644 index 000000000000..56af609c37a6 --- /dev/null +++ b/packages/types/src/options.ts @@ -0,0 +1,107 @@ +import { Breadcrumb, BreadcrumbHint } from './breadcrumb'; +import { Event, EventHint } from './event'; +import { Integration } from './integration'; +import { LogLevel } from './loglevel'; +import { Transport, TransportClass, TransportOptions } from './transport'; + +/** Base configuration options for every SDK. */ +export interface Options { + /** + * Enable debug functionality in the SDK itself + */ + debug?: boolean; + + /** + * Specifies whether this SDK should activate and send events to Sentry. + * Disabling the SDK reduces all overhead from instrumentation, collecting + * breadcrumbs and capturing events. Defaults to true. + */ + enabled?: boolean; + + /** + * The Dsn used to connect to Sentry and identify the project. If omitted, the + * SDK will not send any data to Sentry. + */ + dsn?: string; + + /** + * If this is set to false, default integrations will not be added, otherwise this will internally be set to the + * recommended default integrations. + */ + defaultIntegrations?: false | Integration[]; + + /** + * List of integrations that should be installed after SDK was initialized. + * Accepts either a list of integrations or a function that receives + * default integrations and returns a new, updated list. + */ + integrations?: Integration[] | ((integrations: Integration[]) => Integration[]); + + /** + * A pattern for error messages which should not be sent to Sentry. + * By default, all errors will be sent. + */ + ignoreErrors?: Array; + + /** + * Transport object that should be used to send events to Sentry + */ + transport?: TransportClass; + + /** + * Options for the default transport that the SDK uses. + */ + transportOptions?: TransportOptions; + + /** + * The release identifier used when uploading respective source maps. Specify + * this value to allow Sentry to resolve the correct source maps when + * processing events. + */ + release?: string; + + /** The current environment of your application (e.g. "production"). */ + environment?: string; + + /** Sets the distribution for all events */ + dist?: string; + + /** The maximum number of breadcrumbs sent with events. Defaults to 100. */ + maxBreadcrumbs?: number; + + /** Console logging verbosity for the SDK Client. */ + logLevel?: LogLevel; + + /** A global sample rate to apply to all events (0 - 1). */ + sampleRate?: number; + + /** Attaches stacktraces to pure capture message / log integrations */ + attachStacktrace?: boolean; + + /** + * A callback invoked during event submission, allowing to optionally modify + * the event before it is sent to Sentry. + * + * Note that you must return a valid event from this callback. If you do not + * wish to modify the event, simply return it at the end. + * Returning null will case the event to be dropped. + * + * @param event The error or message event generated by the SDK. + * @param hint May contain additional information about the original exception. + * @returns A new event that will be sent | null. + */ + beforeSend?(event: Event, hint?: EventHint): Promise | Event | null; + + /** + * A callback invoked when adding a breadcrumb, allowing to optionally modify + * it before adding it to future events. + * + * Note that you must return a valid breadcrumb from this callback. If you do + * not wish to modify the breadcrumb, simply return it at the end. + * Returning null will case the breadcrumb to be dropped. + * + * @param breadcrumb The breadcrumb as created by the SDK. + * @returns The breadcrumb that will be added | null. + */ + beforeBreadcrumb?(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): Breadcrumb | null; +} diff --git a/packages/types/src/package.ts b/packages/types/src/package.ts new file mode 100644 index 000000000000..c44d66e62950 --- /dev/null +++ b/packages/types/src/package.ts @@ -0,0 +1,5 @@ +/** JSDoc */ +export interface Package { + name: string; + version: string; +} diff --git a/packages/types/src/request.ts b/packages/types/src/request.ts new file mode 100644 index 000000000000..980dd498aa73 --- /dev/null +++ b/packages/types/src/request.ts @@ -0,0 +1,10 @@ +/** JSDoc */ +export interface Request { + url?: string; + method?: string; + data?: any; + query_string?: string; + cookies?: { [key: string]: string }; + env?: { [key: string]: string }; + headers?: { [key: string]: string }; +} diff --git a/packages/types/src/response.ts b/packages/types/src/response.ts new file mode 100644 index 000000000000..44efc7f48c10 --- /dev/null +++ b/packages/types/src/response.ts @@ -0,0 +1,9 @@ +import { Event } from './event'; +import { Status } from './status'; + +/** JSDoc */ +export interface Response { + status: Status; + event?: Event; + reason?: string; +} diff --git a/packages/types/src/scope.ts b/packages/types/src/scope.ts new file mode 100644 index 000000000000..a1aeadb7e7cb --- /dev/null +++ b/packages/types/src/scope.ts @@ -0,0 +1,53 @@ +import { Breadcrumb } from './breadcrumb'; +import { EventProcessor } from './eventprocessor'; +import { Severity } from './severity'; +import { User } from './user'; + +/** + * Holds additional event information. {@link Scope.applyToEvent} will be + * called by the client before an event will be sent. + */ +export interface Scope { + /** Add new event processor that will be called after {@link applyToEvent}. */ + addEventProcessor(callback: EventProcessor): Scope; + + /** + * Updates user context information for future events. + * @param user User context object to be set in the current context. + */ + setUser(user: User): Scope; + + /** + * Updates tags context information for future events. + * @param tags Tags context object to merge into current context. + */ + setTag(key: string, value: string): Scope; + + /** + * Updates extra context information for future events. + * @param extra context object to merge into current context. + */ + setExtra(key: string, extra: any): Scope; + + /** + * Sets the fingerprint on the scope to send with the events. + * @param fingerprint string[] to group events in Sentry. + */ + setFingerprint(fingerprint: string[]): Scope; + + /** + * Sets the level on the scope for future events. + * @param level string {@link Severity} + */ + setLevel(level: Severity): Scope; + + /** Clears the current scope and resets its properties. */ + clear(): void; + + /** + * Sets the breadcrumbs in the scope + * @param breadcrumbs Breadcrumb + * @param maxBreadcrumbs number of max breadcrumbs to merged into event. + */ + addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): void; +} diff --git a/packages/types/src/sdkinfo.ts b/packages/types/src/sdkinfo.ts new file mode 100644 index 000000000000..45500cad5482 --- /dev/null +++ b/packages/types/src/sdkinfo.ts @@ -0,0 +1,9 @@ +import { Package } from './package'; + +/** JSDoc */ +export interface SdkInfo { + name: string; + version: string; + integrations?: string[]; + packages?: Package[]; +} diff --git a/packages/types/src/severity.ts b/packages/types/src/severity.ts new file mode 100644 index 000000000000..51fcf1b32edb --- /dev/null +++ b/packages/types/src/severity.ts @@ -0,0 +1,47 @@ +/** JSDoc */ +export enum Severity { + /** JSDoc */ + Fatal = 'fatal', + /** JSDoc */ + Error = 'error', + /** JSDoc */ + Warning = 'warning', + /** JSDoc */ + Log = 'log', + /** JSDoc */ + Info = 'info', + /** JSDoc */ + Debug = 'debug', + /** JSDoc */ + Critical = 'critical', +} + +// tslint:disable:no-unnecessary-qualifier no-namespace +export namespace Severity { + /** + * Converts a string-based level into a {@link Severity}. + * + * @param level string representation of Severity + * @returns Severity + */ + export function fromString(level: string): Severity { + switch (level) { + case 'debug': + return Severity.Debug; + case 'info': + return Severity.Info; + case 'warn': + case 'warning': + return Severity.Warning; + case 'error': + return Severity.Error; + case 'fatal': + return Severity.Fatal; + case 'critical': + return Severity.Critical; + case 'log': + default: + return Severity.Log; + } + } +} diff --git a/packages/types/src/stackframe.ts b/packages/types/src/stackframe.ts new file mode 100644 index 000000000000..d228547c6c92 --- /dev/null +++ b/packages/types/src/stackframe.ts @@ -0,0 +1,15 @@ +/** JSDoc */ +export interface StackFrame { + filename?: string; + function?: string; + module?: string; + platform?: string; + lineno?: number; + colno?: number; + abs_path?: string; + context_line?: string; + pre_context?: string[]; + post_context?: string[]; + in_app?: boolean; + vars?: { [key: string]: any }; +} diff --git a/packages/types/src/stacktrace.ts b/packages/types/src/stacktrace.ts new file mode 100644 index 000000000000..120a1b471af6 --- /dev/null +++ b/packages/types/src/stacktrace.ts @@ -0,0 +1,7 @@ +import { StackFrame } from './stackframe'; + +/** JSDoc */ +export interface Stacktrace { + frames?: StackFrame[]; + frames_omitted?: [number, number]; +} diff --git a/packages/types/src/status.ts b/packages/types/src/status.ts new file mode 100644 index 000000000000..182efcacd20c --- /dev/null +++ b/packages/types/src/status.ts @@ -0,0 +1,44 @@ +/** The status of an event. */ +export enum Status { + /** The status could not be determined. */ + Unknown = 'unknown', + /** The event was skipped due to configuration or callbacks. */ + Skipped = 'skipped', + /** The event was sent to Sentry successfully. */ + Success = 'success', + /** The client is currently rate limited and will try again later. */ + RateLimit = 'rate_limit', + /** The event could not be processed. */ + Invalid = 'invalid', + /** A server-side error ocurred during submission. */ + Failed = 'failed', +} + +// tslint:disable:no-unnecessary-qualifier no-namespace +export namespace Status { + /** + * Converts a HTTP status code into a {@link Status}. + * + * @param code The HTTP response status code. + * @returns The send status or {@link Status.Unknown}. + */ + export function fromHttpCode(code: number): Status { + if (code >= 200 && code < 300) { + return Status.Success; + } + + if (code === 429) { + return Status.RateLimit; + } + + if (code >= 400 && code < 500) { + return Status.Invalid; + } + + if (code >= 500) { + return Status.Failed; + } + + return Status.Unknown; + } +} diff --git a/packages/types/src/thread.ts b/packages/types/src/thread.ts new file mode 100644 index 000000000000..5cc1a2b63891 --- /dev/null +++ b/packages/types/src/thread.ts @@ -0,0 +1,10 @@ +import { Stacktrace } from './stacktrace'; + +/** JSDoc */ +export interface Thread { + id?: number; + name?: string; + stacktrace?: Stacktrace; + crashed?: boolean; + current?: boolean; +} diff --git a/packages/types/src/transport.ts b/packages/types/src/transport.ts new file mode 100644 index 000000000000..bbf1c480aa19 --- /dev/null +++ b/packages/types/src/transport.ts @@ -0,0 +1,39 @@ +import { DsnLike } from './dsn'; +import { Response } from './response'; + +/** Transport used sending data to Sentry */ +export interface Transport { + /** + * Sends the body to the Store endpoint in Sentry. + * + * @param body String body that should be sent to Sentry. + */ + sendEvent(body: string): Promise; + + /** + * Call this function to wait until all pending requests have been sent. + * + * @param timeout Number time in ms to wait until the buffer is drained. + */ + close(timeout?: number): Promise; +} + +/** JSDoc */ +export interface TransportClass { + new (options: TransportOptions): T; +} + +/** JSDoc */ +export interface TransportOptions { + [key: string]: any; + /** Sentry DSN */ + dsn: DsnLike; + /** Define custom headers */ + headers?: object; + /** Set a HTTP proxy that should be used for outbound requests. */ + httpProxy?: string; + /** Set a HTTPS proxy that should be used for outbound requests. */ + httpsProxy?: string; + /** HTTPS proxy certificates path */ + caCerts?: string; +} diff --git a/packages/types/src/user.ts b/packages/types/src/user.ts new file mode 100644 index 000000000000..eae46b008b3e --- /dev/null +++ b/packages/types/src/user.ts @@ -0,0 +1,8 @@ +/** JSDoc */ +export interface User { + [key: string]: any; + id?: string; + ip_address?: string; + email?: string; + username?: string; +} diff --git a/packages/types/src/wrappedfunction.ts b/packages/types/src/wrappedfunction.ts new file mode 100644 index 000000000000..db48773efcca --- /dev/null +++ b/packages/types/src/wrappedfunction.ts @@ -0,0 +1,7 @@ +/** JSDoc */ +export interface WrappedFunction extends Function { + [key: string]: any; + __sentry__?: boolean; + __sentry_wrapped__?: WrappedFunction; + __sentry_original__?: WrappedFunction; +} diff --git a/packages/utils/src/misc.ts b/packages/utils/src/misc.ts index 75c986a4f48e..b334ffe4633b 100644 --- a/packages/utils/src/misc.ts +++ b/packages/utils/src/misc.ts @@ -1,4 +1,4 @@ -import { SentryEvent, SentryWrappedFunction } from '@sentry/types'; +import { Event, WrappedFunction } from '@sentry/types'; import { isString } from './is'; /** @@ -206,7 +206,7 @@ export function parseUrl( * Extracts either message or type+value from an event that can be used for user-facing logs * @returns event's description */ -export function getEventDescription(event: SentryEvent): string { +export function getEventDescription(event: Event): string { if (event.message) { return event.message; } else if (event.exception && event.exception.values && event.exception.values[0]) { @@ -241,9 +241,9 @@ export function consoleSandbox(callback: () => any): any { // Restore all wrapped console methods levels.forEach(level => { - if (level in global.console && (originalConsole[level] as SentryWrappedFunction).__sentry__) { - wrappedLevels[level] = (originalConsole[level] as SentryWrappedFunction).__sentry_wrapped__; - originalConsole[level] = (originalConsole[level] as SentryWrappedFunction).__sentry_original__; + if (level in global.console && (originalConsole[level] as WrappedFunction).__sentry__) { + wrappedLevels[level] = (originalConsole[level] as WrappedFunction).__sentry_wrapped__; + originalConsole[level] = (originalConsole[level] as WrappedFunction).__sentry_original__; } }); diff --git a/packages/utils/src/object.ts b/packages/utils/src/object.ts index a0fb37af78bc..b8a5e836d446 100644 --- a/packages/utils/src/object.ts +++ b/packages/utils/src/object.ts @@ -1,4 +1,4 @@ -import { SentryWrappedFunction } from '@sentry/types'; +import { WrappedFunction } from '@sentry/types'; import { isArray, isNaN, isPlainObject, isPrimitive, isSyntheticEvent, isUndefined } from './is'; import { Memo } from './memo'; import { truncate } from './string'; @@ -57,11 +57,11 @@ export function clone(object: T): T { */ export function fill(source: { [key: string]: any }, name: string, replacement: (...args: any[]) => any): void { - if (!(name in source) || (source[name] as SentryWrappedFunction).__sentry__) { + if (!(name in source) || (source[name] as WrappedFunction).__sentry__) { return; } const original = source[name] as () => any; - const wrapped = replacement(original) as SentryWrappedFunction; + const wrapped = replacement(original) as WrappedFunction; // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work // otherwise it'll throw "TypeError: Object.defineProperties called on non-object" From d921e6031d9b677709b4f4998eee26d64c81a659 Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Mon, 18 Feb 2019 11:19:58 +0100 Subject: [PATCH 6/9] feat: Update all dependencies + Fix lint issues --- .gitignore | 1 + packages/browser/package.json | 50 +- packages/browser/rollup.config.js | 4 +- packages/core/package.json | 11 +- packages/core/src/basebackend.ts | 4 +- packages/core/src/sdk.ts | 4 +- packages/hub/package.json | 11 +- packages/hub/src/hub.ts | 4 +- packages/minimal/package.json | 11 +- packages/minimal/src/index.ts | 2 +- packages/node/package.json | 15 +- .../src/integrations/onuncaughtexception.ts | 5 + packages/node/src/transports/base.ts | 5 + packages/types/package.json | 6 +- packages/types/src/integration.ts | 5 +- packages/types/src/transport.ts | 4 +- packages/typescript/package.json | 2 +- packages/typescript/tslint.json | 4 +- packages/utils/package.json | 11 +- packages/utils/src/syncpromise.ts | 1 + yarn.lock | 4215 +++++++++++------ 21 files changed, 2886 insertions(+), 1489 deletions(-) diff --git a/.gitignore b/.gitignore index 42985f0d4419..3b38bbdbc622 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ lint-results.json # legacy !/packages/raven-js/dist +tmp.js diff --git a/packages/browser/package.json b/packages/browser/package.json index b27a6f805311..69eed3257a77 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -21,35 +21,49 @@ "tslib": "^1.9.3" }, "devDependencies": { - "@types/md5": "2.1.32", + "@google-cloud/storage": "^2.4.2", + "@types/jest": "^24.0.6", + "@types/md5": "2.1.33", + "@types/mocha": "^5.2.6", + "@types/node": "^11.9.4", + "@types/raven": "^2.5.3", + "@types/sinon": "^7.0.6", "chai": "^4.1.2", - "jsdom": "^11.12.0", - "karma": "^2.0.2", + "codecov": "^3.2.0", + "danger": "^7.0.12", + "jest": "^24.1.0", + "jsdom": "^13.2.0", + "karma": "^4.0.0", "karma-chai": "^0.1.0", "karma-chrome-launcher": "^2.2.0", "karma-failed-reporter": "0.0.3", "karma-firefox-launcher": "^1.1.0", "karma-mocha": "^1.3.0", "karma-mocha-reporter": "^2.2.5", - "karma-rollup-preprocessor": "^6.0.0", - "karma-sauce-launcher": "^1.2.0", - "karma-typescript": "^3.0.12", - "karma-typescript-es6-transform": "^1.0.4", + "karma-rollup-preprocessor": "^7.0.0", + "karma-sauce-launcher": "^2.0.2", + "karma-typescript": "^4.0.0", + "karma-typescript-es6-transform": "^4.0.0", + "lerna": "3.13.0", + "mocha": "^5.2.0", "npm-run-all": "^4.1.2", - "prettier": "^1.14.0", + "prettier": "^1.16.4", "prettier-check": "^2.0.0", - "rimraf": "^2.6.2", - "rollup": "^0.58.2", + "replace-in-file": "^3.4.3", + "rimraf": "^2.6.3", + "rollup": "^1.2.1", "rollup-plugin-commonjs": "^9.1.3", - "rollup-plugin-license": "^0.6.0", - "rollup-plugin-node-resolve": "^3.3.0", + "rollup-plugin-license": "^0.8.1", + "rollup-plugin-node-resolve": "^4.0.0", "rollup-plugin-npm": "^2.0.0", - "rollup-plugin-typescript2": "^0.13.0", - "rollup-plugin-uglify": "^3.0.0", - "sinon": "^5.0.3", - "tslint": "^5.11.0", - "typescript": "^3.2.0", - "webpack": "^4.26.0" + "rollup-plugin-typescript2": "^0.19.2", + "rollup-plugin-uglify": "^6.0.2", + "sinon": "^7.2.3", + "tslint": "^5.12.1", + "typedoc": "^0.14.2", + "typescript": "^3.3.3", + "typescript-tslint-plugin": "^0.3.1", + "webpack": "^4.29.4" }, "scripts": { "build": "run-p build:esm build:es5", diff --git a/packages/browser/rollup.config.js b/packages/browser/rollup.config.js index 57d039b440dd..5a3c37a578f1 100644 --- a/packages/browser/rollup.config.js +++ b/packages/browser/rollup.config.js @@ -1,5 +1,5 @@ import commonjs from 'rollup-plugin-commonjs'; -import uglify from 'rollup-plugin-uglify'; +import { uglify } from 'rollup-plugin-uglify'; import resolve from 'rollup-plugin-node-resolve'; import typescript from 'rollup-plugin-typescript2'; import license from 'rollup-plugin-license'; @@ -32,6 +32,7 @@ const bundleConfig = { tsconfigOverride: { compilerOptions: { declaration: false, + module: 'ES2015', paths: { '@sentry/utils/*': ['../utils/src/*'], '@sentry/core': ['../core/src'], @@ -72,6 +73,7 @@ export default [ tsconfig: 'tsconfig.build.json', tsconfigOverride: { compilerOptions: { + module: 'ES2015', rootDir: 'src', }, }, diff --git a/packages/core/package.json b/packages/core/package.json index 3700117204e9..363bff95f5b8 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -22,13 +22,14 @@ "tslib": "^1.9.3" }, "devDependencies": { - "jest": "^22.4.3", + "jest": "^24.1.0", "npm-run-all": "^4.1.2", - "prettier": "^1.14.0", + "prettier": "^1.16.4", "prettier-check": "^2.0.0", - "rimraf": "^2.6.2", - "tslint": "^5.11.0", - "typescript": "^3.2.0" + "rimraf": "^2.6.3", + "ts-jest": "^23.10.5", + "tslint": "^5.12.1", + "typescript": "^3.3.3" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/core/src/basebackend.ts b/packages/core/src/basebackend.ts index cc0d7892262a..5b20a843bfc7 100644 --- a/packages/core/src/basebackend.ts +++ b/packages/core/src/basebackend.ts @@ -48,9 +48,7 @@ export interface Backend { * A class object that can instanciate Backend objects. * @hidden */ -export interface BackendClass { - new (options: O): B; -} +export type BackendClass = new (options: O) => B; /** * This is the base implemention of a Backend. diff --git a/packages/core/src/sdk.ts b/packages/core/src/sdk.ts index d698c34fbf08..de30c17004b3 100644 --- a/packages/core/src/sdk.ts +++ b/packages/core/src/sdk.ts @@ -3,9 +3,7 @@ import { Client, Options } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; /** A class object that can instanciate Client objects. */ -export interface ClientClass { - new (options: O): F; -} +export type ClientClass = new (options: O) => F; /** * Internal function to create a new SDK client instance. The client is diff --git a/packages/hub/package.json b/packages/hub/package.json index f797d72e4f31..0489d35da5e5 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -20,13 +20,14 @@ "tslib": "^1.9.3" }, "devDependencies": { - "jest": "^22.4.3", + "jest": "^24.1.0", "npm-run-all": "^4.1.2", - "prettier": "^1.14.0", + "prettier": "^1.16.4", "prettier-check": "^2.0.0", - "rimraf": "^2.6.2", - "tslint": "^5.11.0", - "typescript": "^3.2.0" + "rimraf": "^2.6.3", + "ts-jest": "^23.10.5", + "tslint": "^5.12.1", + "typescript": "^3.3.3" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/hub/src/hub.ts b/packages/hub/src/hub.ts index 9f7c90c6404a..8cc225356c28 100644 --- a/packages/hub/src/hub.ts +++ b/packages/hub/src/hub.ts @@ -148,7 +148,7 @@ export class Hub { * * @param callback that will be enclosed into push/popScope. */ - public withScope(callback: ((scope: Scope) => void)): void { + public withScope(callback: (scope: Scope) => void): void { const scope = this.pushScope(); try { callback(scope); @@ -287,7 +287,7 @@ export class Hub { * This function is useful if you want to run your own client and hook into an already initialized one * e.g.: Reporting issues to your own sentry when running in your component while still using the users configuration. */ - public run(callback: ((hub: Hub) => void)): void { + public run(callback: (hub: Hub) => void): void { const oldHub = makeMain(this); try { callback(this); diff --git a/packages/minimal/package.json b/packages/minimal/package.json index 8691cbf419d7..02ecd759b40b 100644 --- a/packages/minimal/package.json +++ b/packages/minimal/package.json @@ -20,13 +20,14 @@ "tslib": "^1.9.3" }, "devDependencies": { - "jest": "^22.4.3", + "jest": "^24.1.0", "npm-run-all": "^4.1.2", - "prettier": "^1.14.0", + "prettier": "^1.16.4", "prettier-check": "^2.0.0", - "rimraf": "^2.6.2", - "tslint": "^5.11.0", - "typescript": "^3.2.0" + "rimraf": "^2.6.3", + "ts-jest": "^23.10.5", + "tslint": "^5.12.1", + "typescript": "^3.3.3" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/minimal/src/index.ts b/packages/minimal/src/index.ts index 53048a982701..f14fb169c08c 100644 --- a/packages/minimal/src/index.ts +++ b/packages/minimal/src/index.ts @@ -97,7 +97,7 @@ export function configureScope(callback: (scope: Scope) => void): void { * * @param callback that will be enclosed into push/popScope. */ -export function withScope(callback: ((scope: Scope) => void)): void { +export function withScope(callback: (scope: Scope) => void): void { callOnHub('withScope', callback); } diff --git a/packages/node/package.json b/packages/node/package.json index 85c2dff7780d..cd11ae74af63 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -28,17 +28,18 @@ "tslib": "^1.9.3" }, "devDependencies": { - "@types/cookie": "0.3.1", + "@types/cookie": "0.3.2", "@types/lru-cache": "^4.1.1", - "@types/node": "^10.12.10", + "@types/node": "^11.9.4", "express": "^4.16.4", - "jest": "^22.4.3", + "jest": "^24.1.0", "npm-run-all": "^4.1.2", - "prettier": "^1.14.0", + "prettier": "^1.16.4", "prettier-check": "^2.0.0", - "rimraf": "^2.6.2", - "tslint": "^5.11.0", - "typescript": "^3.2.0" + "rimraf": "^2.6.3", + "ts-jest": "^23.10.5", + "tslint": "^5.12.1", + "typescript": "^3.3.3" }, "scripts": { "build": "tsc -p tsconfig.build.json", diff --git a/packages/node/src/integrations/onuncaughtexception.ts b/packages/node/src/integrations/onuncaughtexception.ts index 928bc3d40d1d..642df5ed3e4f 100644 --- a/packages/node/src/integrations/onuncaughtexception.ts +++ b/packages/node/src/integrations/onuncaughtexception.ts @@ -26,6 +26,11 @@ export class OnUncaughtException implements Integration { */ public constructor( private readonly options: { + /** + * Default onFatalError handler + * @param firstError Error that has been thrown + * @param secondError If this was called multiple times this will be set + */ onFatalError?(firstError: Error, secondError?: Error): void; } = {}, ) {} diff --git a/packages/node/src/transports/base.ts b/packages/node/src/transports/base.ts index 4e89dedaf8be..08c5ce5c41de 100644 --- a/packages/node/src/transports/base.ts +++ b/packages/node/src/transports/base.ts @@ -13,6 +13,11 @@ import { SDK_NAME, SDK_VERSION } from '../version'; * @hidden */ export interface HTTPRequest { + /** + * Request wrapper + * @param options These are {@see TransportOptions} + * @param callback Callback when request is finished + */ request( options: http.RequestOptions | https.RequestOptions | string | url.URL, callback?: (res: http.IncomingMessage) => void, diff --git a/packages/types/package.json b/packages/types/package.json index 73df8b6744ab..7f86636e7e64 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -16,10 +16,10 @@ }, "devDependencies": { "npm-run-all": "^4.1.2", - "prettier": "^1.14.0", + "prettier": "^1.16.4", "prettier-check": "^2.0.0", - "tslint": "^5.11.0", - "typescript": "^3.2.0" + "tslint": "^5.12.1", + "typescript": "^3.3.3" }, "scripts": { "build": "run-p build:es5 build:esm", diff --git a/packages/types/src/integration.ts b/packages/types/src/integration.ts index 953bc4aefa3b..72a30c71066b 100644 --- a/packages/types/src/integration.ts +++ b/packages/types/src/integration.ts @@ -14,6 +14,9 @@ export interface Integration { */ name: string; - // This takes no options on purpose, options should be passed in the constructor + /** + * Sets the integration up only once. + * This takes no options on purpose, options should be passed in the constructor + */ setupOnce(): void; } diff --git a/packages/types/src/transport.ts b/packages/types/src/transport.ts index bbf1c480aa19..2b45da45d419 100644 --- a/packages/types/src/transport.ts +++ b/packages/types/src/transport.ts @@ -19,9 +19,7 @@ export interface Transport { } /** JSDoc */ -export interface TransportClass { - new (options: TransportOptions): T; -} +export type TransportClass = new (options: TransportOptions) => T; /** JSDoc */ export interface TransportOptions { diff --git a/packages/typescript/package.json b/packages/typescript/package.json index dda7bd854e58..e77992fbec28 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -11,7 +11,7 @@ "access": "public" }, "dependencies": { - "tslint-config-prettier": "^1.12.0" + "tslint-config-prettier": "^1.18.0" }, "peerDependencies": { "tslint": "^5.11.0", diff --git a/packages/typescript/tslint.json b/packages/typescript/tslint.json index ceec3be0b288..e797c40a8b8e 100644 --- a/packages/typescript/tslint.json +++ b/packages/typescript/tslint.json @@ -15,6 +15,8 @@ "prefer-function-over-method": [false], "strict-boolean-expressions": false, "no-inferrable-types": false, + "ban-ts-ignore": false, + "increment-decrement": false, // These are too strict in tslint:all "comment-format": [true, "check-space"], "completed-docs": [ @@ -26,7 +28,7 @@ "functions": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, "interfaces": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, "methods": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } }, - "properties": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] } } + "properties": { "tags": { "content": {}, "existence": ["inheritDoc", "hidden"] }, "locations": "instance" } } ], "interface-name": [true, "never-prefix"], diff --git a/packages/utils/package.json b/packages/utils/package.json index d6d838501420..f2af57479d1b 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -18,13 +18,14 @@ }, "devDependencies": { "chai": "^4.1.2", - "jest": "^22.4.3", + "jest": "^24.1.0", "npm-run-all": "^4.1.2", - "prettier": "^1.14.0", + "prettier": "^1.16.4", "prettier-check": "^2.0.0", - "rimraf": "^2.6.2", - "tslint": "^5.11.0", - "typescript": "^3.2.0" + "rimraf": "^2.6.3", + "ts-jest": "^23.10.5", + "tslint": "^5.12.1", + "typescript": "^3.3.3" }, "scripts": { "build": "run-s clean && run-p build:es5 build:esm", diff --git a/packages/utils/src/syncpromise.ts b/packages/utils/src/syncpromise.ts index e60018c2c99a..0caf10686d0b 100644 --- a/packages/utils/src/syncpromise.ts +++ b/packages/utils/src/syncpromise.ts @@ -21,6 +21,7 @@ type HandlerOnFail = (reason: any) => U | Thenable; /** JSDoc */ interface Thenable { + /** JSDoc */ then(onSuccess?: HandlerOnSuccess, onFail?: HandlerOnFail | ((reason: any) => void)): Thenable; } diff --git a/yarn.lock b/yarn.lock index 9f0daa121ea1..f48234af5703 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,80 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0-beta.35": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" dependencies: "@babel/highlight" "^7.0.0" +"@babel/core@^7.1.0": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.3.3.tgz#d090d157b7c5060d05a05acaebc048bd2b037947" + integrity sha512-w445QGI2qd0E0GlSnq6huRZWPMmQGCp5gd5ZWS4hagn0EiwzxD5QMFkpchyusAyVC1n27OKXzQ0/88aVU9n4xQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.3.3" + "@babel/helpers" "^7.2.0" + "@babel/parser" "^7.3.3" + "@babel/template" "^7.2.2" + "@babel/traverse" "^7.2.2" + "@babel/types" "^7.3.3" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.11" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.0.0", "@babel/generator@^7.2.2", "@babel/generator@^7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.3.tgz#185962ade59a52e00ca2bdfcfd1d58e528d4e39e" + integrity sha512-aEADYwRRZjJyMnKN7llGIlircxTCofm3dtV5pmY6ob18MSIuipHpA2yZWkPlycwu5HJcx/pADS3zssd8eY7/6A== + dependencies: + "@babel/types" "^7.3.3" + jsesc "^2.5.1" + lodash "^4.17.11" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + +"@babel/helper-split-export-declaration@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813" + integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helpers@^7.2.0": + version "7.3.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.3.1.tgz#949eec9ea4b45d3210feb7dc1c22db664c9e44b9" + integrity sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA== + dependencies: + "@babel/template" "^7.1.2" + "@babel/traverse" "^7.1.5" + "@babel/types" "^7.3.0" + "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" @@ -16,6 +84,18 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/parser@^7.0.0", "@babel/parser@^7.2.2", "@babel/parser@^7.2.3", "@babel/parser@^7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.3.tgz#092d450db02bdb6ccb1ca8ffd47d8774a91aef87" + integrity sha512-xsH1CJoln2r74hR+y7cg2B5JCPaTh+Hd+EbBRk9nWGSNspuo6krjhX0Om6RnRQuIvFq8wVXCLKH3kwKDYhanSg== + +"@babel/plugin-syntax-object-rest-spread@^7.0.0": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/polyfill@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.0.0.tgz#c8ff65c9ec3be6a1ba10113ebd40e8750fb90bff" @@ -23,6 +103,47 @@ core-js "^2.5.7" regenerator-runtime "^0.11.1" +"@babel/polyfill@^7.2.5": + version "7.2.5" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d" + integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug== + dependencies: + core-js "^2.5.7" + regenerator-runtime "^0.12.0" + +"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2": + version "7.2.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907" + integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.2.2" + "@babel/types" "^7.2.2" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8" + integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/generator" "^7.2.2" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.0.0" + "@babel/parser" "^7.2.3" + "@babel/types" "^7.2.2" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.10" + +"@babel/types@^7.0.0", "@babel/types@^7.2.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.3.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.3.3.tgz#6c44d1cdac2a7625b624216657d5bc6c107ab436" + integrity sha512-2tACZ80Wg09UnPg5uGAOUvvInaqLk3l/IAhQzlxLQOIXacr6bMsra5SH6AWw/hIDRCSbCdHP2KzSOD+cT7TzMQ== + dependencies: + esutils "^2.0.2" + lodash "^4.17.11" + to-fast-properties "^2.0.0" + "@google-cloud/common@^0.26.0": version "0.26.2" resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.26.2.tgz#9c54e2471a84aa031e95a24824976e080f255645" @@ -40,6 +161,23 @@ retry-request "^4.0.0" through2 "^3.0.0" +"@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" + duplexify "^3.6.0" + ent "^2.2.0" + extend "^3.0.1" + google-auth-library "^3.0.0" + pify "^4.0.0" + retry-request "^4.0.0" + "@google-cloud/paginator@^0.1.0": version "0.1.2" resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-0.1.2.tgz#a7e6579e43f153055b4c65035a6729490a611a60" @@ -83,6 +221,48 @@ through2 "^3.0.0" xdg-basedir "^3.0.0" +"@google-cloud/storage@^2.4.2": + 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== + dependencies: + "@google-cloud/common" "^0.31.0" + "@google-cloud/paginator" "^0.1.0" + "@google-cloud/promisify" "^0.3.0" + arrify "^1.0.0" + async "^2.0.1" + compressible "^2.0.12" + concat-stream "^2.0.0" + duplexify "^3.5.0" + extend "^3.0.0" + gcs-resumable-upload "^0.14.1" + hash-stream-validation "^0.2.1" + mime "^2.2.0" + mime-types "^2.0.8" + once "^1.3.1" + pumpify "^1.5.1" + snakeize "^0.1.0" + stream-events "^1.0.1" + teeny-request "^3.11.3" + through2 "^3.0.0" + xdg-basedir "^3.0.0" + +"@lerna/add@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.13.0.tgz#e971a17c1f85cba40f22c816a2bb9d855b62d07d" + integrity sha512-5srUGfZHjqa5BW3JODHpzbH1ayweGqqrxH8qOzf/E/giNfzigdfyCSkbGh/iiLTXGu7BBE+3/OFfycoqYbalgg== + dependencies: + "@lerna/bootstrap" "3.13.0" + "@lerna/command" "3.13.0" + "@lerna/filter-options" "3.13.0" + "@lerna/npm-conf" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + npm-package-arg "^6.1.0" + p-map "^1.2.0" + pacote "^9.4.1" + semver "^5.5.0" + "@lerna/add@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.5.0.tgz#3518b3d4afc3743b7227b1ee3534114eb9575888" @@ -98,6 +278,15 @@ pacote "^9.1.0" semver "^5.5.0" +"@lerna/batch-packages@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/batch-packages/-/batch-packages-3.13.0.tgz#697fde5be28822af9d9dca2f750250b90a89a000" + integrity sha512-TgLBTZ7ZlqilGnzJ3xh1KdAHcySfHytgNRTdG9YomfriTU6kVfp1HrXxKJYVGs7ClPUNt2CTFEOkw0tMBronjw== + dependencies: + "@lerna/package-graph" "3.13.0" + "@lerna/validation-error" "3.13.0" + npmlog "^4.1.2" + "@lerna/batch-packages@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@lerna/batch-packages/-/batch-packages-3.1.2.tgz#74b5312a01a8916204cbc71237ffbe93144b99df" @@ -106,6 +295,36 @@ "@lerna/validation-error" "^3.0.0" npmlog "^4.1.2" +"@lerna/bootstrap@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.13.0.tgz#04f5d5b7720b020c0c73e11b2db146103c272cd7" + integrity sha512-wdwBzvwEdzGERwpiY6Zu/T+tntCfXeXrL9cQIxP+K2M07jL5M00ZRdDoFcP90sGn568AjhvRhD2ExA5wPECSgA== + dependencies: + "@lerna/batch-packages" "3.13.0" + "@lerna/command" "3.13.0" + "@lerna/filter-options" "3.13.0" + "@lerna/has-npm-version" "3.13.0" + "@lerna/npm-install" "3.13.0" + "@lerna/package-graph" "3.13.0" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.13.0" + "@lerna/run-lifecycle" "3.13.0" + "@lerna/run-parallel-batches" "3.13.0" + "@lerna/symlink-binary" "3.13.0" + "@lerna/symlink-dependencies" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + get-port "^3.2.0" + multimatch "^2.1.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^1.2.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + read-package-tree "^5.1.6" + semver "^5.5.0" + "@lerna/bootstrap@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.5.0.tgz#4d21ef0d1e648c8121432443a7d80c9442756347" @@ -134,6 +353,17 @@ read-package-tree "^5.1.6" semver "^5.5.0" +"@lerna/changed@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.13.0.tgz#d0249585ce5def15580b5a719231594dae449d10" + integrity sha512-BNUVfEzhrY+XEQJI0fFxEAN7JrguXMGNX5rqQ2KWyGQB4fZ1mv4FStJRjK0K/gcCvdHnuR65uexc/acxBnBi9w== + dependencies: + "@lerna/collect-updates" "3.13.0" + "@lerna/command" "3.13.0" + "@lerna/listable" "3.13.0" + "@lerna/output" "3.13.0" + "@lerna/version" "3.13.0" + "@lerna/changed@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.5.0.tgz#c96c4bde6d78f4b2a7b3b3e2511bf78cb6aabe17" @@ -144,6 +374,14 @@ "@lerna/output" "^3.0.0" "@lerna/version" "^3.5.0" +"@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== + dependencies: + "@lerna/describe-ref" "3.13.0" + "@lerna/validation-error" "3.13.0" + "@lerna/check-working-tree@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.5.0.tgz#015f90247fa0b44a940eab0dd6a9da2ae5b8f455" @@ -151,6 +389,15 @@ "@lerna/describe-ref" "^3.5.0" "@lerna/validation-error" "^3.0.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== + dependencies: + chalk "^2.3.1" + execa "^1.0.0" + strong-log-transformer "^2.0.0" + "@lerna/child-process@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.3.0.tgz#71184a763105b6c8ece27f43f166498d90fe680f" @@ -159,6 +406,20 @@ execa "^1.0.0" strong-log-transformer "^2.0.0" +"@lerna/clean@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.13.0.tgz#0a7536564eaec3445f4397cf9ab3e66fc268b6fe" + integrity sha512-eFkqVsOmybUIjak2NyGfk78Mo8rNyNiSDFh2+HGpias3PBdEbkGYtFi/JMBi9FvqCsBSiVnHCTUcnZdLzMz69w== + dependencies: + "@lerna/command" "3.13.0" + "@lerna/filter-options" "3.13.0" + "@lerna/prompt" "3.13.0" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/rimraf-dir" "3.13.0" + p-map "^1.2.0" + p-map-series "^1.0.0" + p-waterfall "^1.0.0" + "@lerna/clean@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.5.0.tgz#38e0e58443fa43c19b3eeffcafa46cf254a328ee" @@ -171,6 +432,16 @@ p-map-series "^1.0.0" p-waterfall "^1.0.0" +"@lerna/cli@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.13.0.tgz#3d7b357fdd7818423e9681a7b7f2abd106c8a266" + integrity sha512-HgFGlyCZbYaYrjOr3w/EsY18PdvtsTmDfpUQe8HwDjXlPeCCUgliZjXLOVBxSjiOvPeOSwvopwIHKWQmYbwywg== + dependencies: + "@lerna/global-options" "3.13.0" + dedent "^0.7.0" + npmlog "^4.1.2" + yargs "^12.0.1" + "@lerna/cli@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.2.0.tgz#3ed25bcbc0b8f0878bc6a102ee0296f01476cfdf" @@ -180,6 +451,17 @@ 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== + dependencies: + "@lerna/child-process" "3.13.0" + "@lerna/describe-ref" "3.13.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + slash "^1.0.0" + "@lerna/collect-updates@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.5.0.tgz#e81c17f89367e71ff59e0f244a523a1dc13891c5" @@ -190,6 +472,22 @@ npmlog "^4.1.2" slash "^1.0.0" +"@lerna/command@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.13.0.tgz#8e7ff2255bccb8737616a899cf7a0c076dd4411c" + integrity sha512-34Igk99KKeDt1ilzHooVUamMegArFz8AH9BuJivIKBps1E2A5xkwRd0mJFdPENzLxOqBJlt+cnL7LyvaIM6tRQ== + dependencies: + "@lerna/child-process" "3.13.0" + "@lerna/package-graph" "3.13.0" + "@lerna/project" "3.13.0" + "@lerna/validation-error" "3.13.0" + "@lerna/write-log-file" "3.13.0" + dedent "^0.7.0" + execa "^1.0.0" + is-ci "^1.0.10" + lodash "^4.17.5" + npmlog "^4.1.2" + "@lerna/command@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.5.0.tgz#6b5cc530653aaa631061c1c234f3bc4408cb9613" @@ -205,6 +503,22 @@ lodash "^4.17.5" npmlog "^4.1.2" +"@lerna/conventional-commits@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.13.0.tgz#877aa225ca34cca61c31ea02a5a6296af74e1144" + integrity sha512-BeAgcNXuocmLhPxnmKU2Vy8YkPd/Uo+vu2i/p3JGsUldzrPC8iF3IDxH7fuXpEFN2Nfogu7KHachd4tchtOppA== + dependencies: + "@lerna/validation-error" "3.13.0" + conventional-changelog-angular "^5.0.3" + conventional-changelog-core "^3.1.6" + conventional-recommended-bump "^4.0.4" + fs-extra "^7.0.0" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + pify "^3.0.0" + semver "^5.5.0" + "@lerna/conventional-commits@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.5.0.tgz#1c08013c48acdbdbf6400ccfbe1200a18e1f11ce" @@ -219,6 +533,15 @@ npmlog "^4.1.2" semver "^5.5.0" +"@lerna/create-symlink@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.13.0.tgz#e01133082fe040779712c960683cb3a272b67809" + integrity sha512-PTvg3jAAJSAtLFoZDsuTMv1wTOC3XYIdtg54k7uxIHsP8Ztpt+vlilY/Cni0THAqEMHvfiToel76Xdta4TU21Q== + dependencies: + cmd-shim "^2.0.2" + fs-extra "^7.0.0" + npmlog "^4.1.2" + "@lerna/create-symlink@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.3.0.tgz#91de00fd576018ba4251f0c6a5b4b7f768f22a82" @@ -227,6 +550,30 @@ fs-extra "^7.0.0" npmlog "^4.1.2" +"@lerna/create@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.13.0.tgz#033ea1bbb028cd18252a8595ef32edf28e99048d" + integrity sha512-0Vrl6Z1NEQFKd1uzWBFWii59OmMNKSNXxgKYoh3Ulu/ekMh90BgnLJ0a8tE34KK4lG5mVTQDlowKFEF+jZfYOA== + dependencies: + "@lerna/child-process" "3.13.0" + "@lerna/command" "3.13.0" + "@lerna/npm-conf" "3.13.0" + "@lerna/validation-error" "3.13.0" + camelcase "^5.0.0" + dedent "^0.7.0" + fs-extra "^7.0.0" + globby "^8.0.1" + init-package-json "^1.10.3" + npm-package-arg "^6.1.0" + p-reduce "^1.0.0" + pacote "^9.4.1" + pify "^3.0.0" + semver "^5.5.0" + slash "^1.0.0" + validate-npm-package-license "^3.0.3" + validate-npm-package-name "^3.0.0" + whatwg-url "^7.0.0" + "@lerna/create@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.5.0.tgz#22f64a7af7a08cfbed4af2a01ff82307ee9e0b2b" @@ -248,6 +595,14 @@ 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== + dependencies: + "@lerna/child-process" "3.13.0" + npmlog "^4.1.2" + "@lerna/describe-ref@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.5.0.tgz#d59090d201a0e587798496417373c7fbc1151fc4" @@ -255,6 +610,16 @@ "@lerna/child-process" "^3.3.0" npmlog "^4.1.2" +"@lerna/diff@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.13.0.tgz#9a39bfb1c4d6af1ea05b3d3df2ba0022ea24b81d" + integrity sha512-fyHRzRBiqXj03YbGY5/ume1N0v0wrWVB7XPHPaQs/e/eCgMpcmoQGQoW5r97R+xaEoy3boByr/ham4XHZv02ZQ== + dependencies: + "@lerna/child-process" "3.13.0" + "@lerna/command" "3.13.0" + "@lerna/validation-error" "3.13.0" + npmlog "^4.1.2" + "@lerna/diff@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.5.0.tgz#4d131a1045321bcea20d743f5cc7f0d0095cf027" @@ -264,6 +629,18 @@ "@lerna/validation-error" "^3.0.0" npmlog "^4.1.2" +"@lerna/exec@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.13.0.tgz#76f0a7f48f3feb36d266f4ac1f084c8f34afb152" + integrity sha512-Dc8jr1jL6YrfbI1sUZ3+px00HwcZLKykl7AC8A+vvCzYLa4MeK3UJ7CPg4kvBN1mX7yhGrSDSfxG0bJriHU5nA== + dependencies: + "@lerna/batch-packages" "3.13.0" + "@lerna/child-process" "3.13.0" + "@lerna/command" "3.13.0" + "@lerna/filter-options" "3.13.0" + "@lerna/run-parallel-batches" "3.13.0" + "@lerna/validation-error" "3.13.0" + "@lerna/exec@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.5.0.tgz#98f4e8719681c07a739241fadb4cbdbd9d518982" @@ -275,6 +652,15 @@ "@lerna/run-parallel-batches" "^3.0.0" "@lerna/validation-error" "^3.0.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== + dependencies: + "@lerna/collect-updates" "3.13.0" + "@lerna/filter-packages" "3.13.0" + dedent "^0.7.0" + "@lerna/filter-options@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.5.0.tgz#34d1719908edbb52d4963c796df565a716282165" @@ -283,6 +669,15 @@ "@lerna/filter-packages" "^3.0.0" dedent "^0.7.0" +"@lerna/filter-packages@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.13.0.tgz#f5371249e7e1a15928e5e88c544a242e0162c21c" + integrity sha512-RWiZWyGy3Mp7GRVBn//CacSnE3Kw82PxE4+H6bQ3pDUw/9atXn7NRX+gkBVQIYeKamh7HyumJtyOKq3Pp9BADQ== + dependencies: + "@lerna/validation-error" "3.13.0" + multimatch "^2.1.0" + npmlog "^4.1.2" + "@lerna/filter-packages@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.0.0.tgz#5eb25ad1610f3e2ab845133d1f8d7d40314e838f" @@ -291,16 +686,56 @@ multimatch "^2.1.0" npmlog "^4.1.2" +"@lerna/get-npm-exec-opts@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" + integrity sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw== + dependencies: + npmlog "^4.1.2" + "@lerna/get-npm-exec-opts@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.0.0.tgz#8fc7866e8d8e9a2f2dc385287ba32eb44de8bdeb" dependencies: npmlog "^4.1.2" +"@lerna/get-packed@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.13.0.tgz#335e40d77f3c1855aa248587d3e0b2d8f4b06e16" + integrity sha512-EgSim24sjIjqQDC57bgXD9l22/HCS93uQBbGpkzEOzxAVzEgpZVm7Fm1t8BVlRcT2P2zwGnRadIvxTbpQuDPTg== + dependencies: + fs-extra "^7.0.0" + ssri "^6.0.1" + tar "^4.4.8" + +"@lerna/github-client@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-3.13.0.tgz#960c75e4159905ea31c171e27ca468c1a809ed77" + integrity sha512-4/003z1g7shg21nl06ku5/yqYbQfNsQkeWuWEd+mjiTtGH6OhzJ8XcmBOq6mhZrfDAlA4OLeXypd1QIK1Y7arA== + dependencies: + "@lerna/child-process" "3.13.0" + "@octokit/plugin-enterprise-rest" "^2.1.0" + "@octokit/rest" "^16.15.0" + git-url-parse "^11.1.2" + npmlog "^4.1.2" + +"@lerna/global-options@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" + integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== + "@lerna/global-options@^3.1.3": version "3.1.3" resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.1.3.tgz#cf85e24655a91d04d4efc9a80c1f83fc768d08ae" +"@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== + dependencies: + "@lerna/child-process" "3.13.0" + semver "^5.5.0" + "@lerna/has-npm-version@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.3.0.tgz#8a73c2c437a0e1e68a19ccbd0dd3c014d4d39135" @@ -308,6 +743,20 @@ "@lerna/child-process" "^3.3.0" semver "^5.5.0" +"@lerna/import@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.13.0.tgz#0c521b020edf291c89d591dc6eda0d1efa754452" + integrity sha512-uQ+hoYEC6/B8VqQ9tecA1PVCFiqwN+DCrdIBY/KX3Z5vip94Pc8H/u+Q2dfBymkT6iXnvmPR/6hsMkpMOjBQDg== + dependencies: + "@lerna/child-process" "3.13.0" + "@lerna/command" "3.13.0" + "@lerna/prompt" "3.13.0" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/validation-error" "3.13.0" + dedent "^0.7.0" + fs-extra "^7.0.0" + p-map-series "^1.0.0" + "@lerna/import@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.5.0.tgz#b42d368378d53c664a3324c1e2fc656a23819f12" @@ -320,6 +769,17 @@ fs-extra "^7.0.0" p-map-series "^1.0.0" +"@lerna/init@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.13.0.tgz#7b92151572aaa1d9b89002e0b8c332db0ff1b692" + integrity sha512-4MBaNaitr9rfzwHK4d0Y19WIzqL5RTk719tIlVtw+IRE2qF9/ioovNIZuoeISyi84mTKehsFtPsHoxFIulZUhQ== + dependencies: + "@lerna/child-process" "3.13.0" + "@lerna/command" "3.13.0" + fs-extra "^7.0.0" + p-map "^1.2.0" + write-json-file "^2.3.0" + "@lerna/init@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.5.0.tgz#40796d70dc261907e4149df62db8acbda8dc56fc" @@ -330,6 +790,17 @@ p-map "^1.2.0" write-json-file "^2.3.0" +"@lerna/link@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.13.0.tgz#9965e2fcacfa1b1414db8902d800464d56cf170e" + integrity sha512-0PAZM1kVCmtJfiQUzy6TT1aemIg9pxejGxFBYMB+IAxR5rcgLlZago1R52/8HyNGa07bLv0B6CkRgrdQ/9bzCg== + dependencies: + "@lerna/command" "3.13.0" + "@lerna/package-graph" "3.13.0" + "@lerna/symlink-dependencies" "3.13.0" + p-map "^1.2.0" + slash "^1.0.0" + "@lerna/link@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.5.0.tgz#ae7fe19df1bb0555dfa5aafcaf45c7fad537d81a" @@ -340,6 +811,16 @@ p-map "^1.2.0" slash "^1.0.0" +"@lerna/list@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.13.0.tgz#4cb34828507d2c02ccd3305ff8b9f546cab7727e" + integrity sha512-nKSqGs4ZJe7zB6SJmBEb7AfGLzqDOwJwbucC3XVgkjrXlrX4AW4+qnPiGpEdz8OFmzstkghQrWUUJvsEpNVTjw== + dependencies: + "@lerna/command" "3.13.0" + "@lerna/filter-options" "3.13.0" + "@lerna/listable" "3.13.0" + "@lerna/output" "3.13.0" + "@lerna/list@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.5.0.tgz#ae38724f1cdc588fde8495385e3b1a9aeac0c80f" @@ -349,6 +830,15 @@ "@lerna/listable" "^3.0.0" "@lerna/output" "^3.0.0" +"@lerna/listable@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.13.0.tgz#babc18442c590b549cf0966d20d75fea066598d4" + integrity sha512-liYJ/WBUYP4N4MnSVZuLUgfa/jy3BZ02/1Om7xUY09xGVSuNVNEeB8uZUMSC+nHqFHIsMPZ8QK9HnmZb1E/eTA== + dependencies: + "@lerna/batch-packages" "3.13.0" + chalk "^2.3.1" + columnify "^1.5.4" + "@lerna/listable@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.0.0.tgz#27209b1382c87abdbc964220e75c247d803d4199" @@ -356,6 +846,16 @@ chalk "^2.3.1" columnify "^1.5.4" +"@lerna/log-packed@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.13.0.tgz#497b5f692a8d0e3f669125da97b0dadfd9e480f3" + integrity sha512-Rmjrcz+6aM6AEcEVWmurbo8+AnHOvYtDpoeMMJh9IZ9SmZr2ClXzmD7wSvjTQc8BwOaiWjjC/ukcT0UYA2m7wg== + dependencies: + byte-size "^4.0.3" + columnify "^1.5.4" + has-unicode "^2.0.1" + npmlog "^4.1.2" + "@lerna/log-packed@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.0.4.tgz#6d1f6ce5ca68b9971f2a27f0ecf3c50684be174a" @@ -365,6 +865,14 @@ has-unicode "^2.0.1" npmlog "^4.1.2" +"@lerna/npm-conf@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.13.0.tgz#6b434ed75ff757e8c14381b9bbfe5d5ddec134a7" + integrity sha512-Jg2kANsGnhg+fbPEzE0X9nX5oviEAvWj0nYyOkcE+cgWuT7W0zpnPXC4hA4C5IPQGhwhhh0IxhWNNHtjTuw53g== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + "@lerna/npm-conf@^3.4.1": version "3.4.1" resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.4.1.tgz#859e931b0bc9a5eed86309cc09508810c1e7d121" @@ -372,6 +880,16 @@ config-chain "^1.1.11" pify "^3.0.0" +"@lerna/npm-dist-tag@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.13.0.tgz#49ecbe0e82cbe4ad4a8ea6de112982bf6c4e6cd4" + integrity sha512-mcuhw34JhSRFrbPn0vedbvgBTvveG52bR2lVE3M3tfE8gmR/cKS/EJFO4AUhfRKGCTFn9rjaSEzlFGYV87pemQ== + dependencies: + figgy-pudding "^3.5.1" + npm-package-arg "^6.1.0" + npm-registry-fetch "^3.9.0" + npmlog "^4.1.2" + "@lerna/npm-dist-tag@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.3.0.tgz#e1c5ab67674216d901266a16846b21cc81ff6afd" @@ -380,6 +898,19 @@ "@lerna/get-npm-exec-opts" "^3.0.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== + dependencies: + "@lerna/child-process" "3.13.0" + "@lerna/get-npm-exec-opts" "3.13.0" + fs-extra "^7.0.0" + npm-package-arg "^6.1.0" + npmlog "^4.1.2" + signal-exit "^3.0.2" + write-pkg "^3.1.0" + "@lerna/npm-install@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.3.0.tgz#16d00ffd668d11b2386b3ac68bdac2cf8320e533" @@ -392,6 +923,19 @@ 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== + dependencies: + "@lerna/run-lifecycle" "3.13.0" + figgy-pudding "^3.5.1" + fs-extra "^7.0.0" + libnpmpublish "^1.1.1" + npmlog "^4.1.2" + pify "^3.0.0" + read-package-json "^2.0.13" + "@lerna/npm-publish@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.3.1.tgz#30384665d7ee387343332ece62ca231207bbabea" @@ -404,6 +948,15 @@ npmlog "^4.1.2" p-map "^1.2.0" +"@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== + dependencies: + "@lerna/child-process" "3.13.0" + "@lerna/get-npm-exec-opts" "3.13.0" + npmlog "^4.1.2" + "@lerna/npm-run-script@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.3.0.tgz#3c79601c27c67121155b20e039be53130217db72" @@ -412,12 +965,42 @@ "@lerna/get-npm-exec-opts" "^3.0.0" npmlog "^4.1.2" +"@lerna/output@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" + integrity sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg== + dependencies: + npmlog "^4.1.2" + "@lerna/output@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.0.0.tgz#4ed4a30ed2f311046b714b3840a090990ba3ce35" dependencies: npmlog "^4.1.2" +"@lerna/pack-directory@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.13.0.tgz#e5df1647f7d3c417753aba666c17bdb8743eb346" + integrity sha512-p5lhLPvpRptms08uSTlDpz8R2/s8Z2Vi0Hc8+yIAP74YD8gh/U9Diku9EGkkgkLfV+P0WhnEO8/Gq/qzNVbntA== + dependencies: + "@lerna/get-packed" "3.13.0" + "@lerna/package" "3.13.0" + "@lerna/run-lifecycle" "3.13.0" + figgy-pudding "^3.5.1" + npm-packlist "^1.1.12" + npmlog "^4.1.2" + tar "^4.4.8" + temp-write "^3.4.0" + +"@lerna/package-graph@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.13.0.tgz#607062f8d2ce22b15f8d4a0623f384736e67f760" + integrity sha512-3mRF1zuqFE1HEFmMMAIggXy+f+9cvHhW/jzaPEVyrPNLKsyfJQtpTNzeI04nfRvbAh+Gd2aNksvaW/w3xGJnnw== + dependencies: + "@lerna/validation-error" "3.13.0" + npm-package-arg "^6.1.0" + semver "^5.5.0" + "@lerna/package-graph@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.1.2.tgz#b70298a3a8c82e12090da33233bf242223a38f20" @@ -426,6 +1009,15 @@ npm-package-arg "^6.0.0" semver "^5.5.0" +"@lerna/package@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.13.0.tgz#4baeebc49a57fc9b31062cc59f5ee38384429fc8" + integrity sha512-kSKO0RJQy093BufCQnkhf1jB4kZnBvL7kK5Ewolhk5gwejN+Jofjd8DGRVUDUJfQ0CkW1o6GbUeZvs8w8VIZDg== + dependencies: + load-json-file "^4.0.0" + npm-package-arg "^6.1.0" + write-pkg "^3.1.0" + "@lerna/package@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.0.0.tgz#14afc9a6cb1f7f7b23c1d7c7aa81bdac7d44c0e5" @@ -433,6 +1025,24 @@ npm-package-arg "^6.0.0" write-pkg "^3.1.0" +"@lerna/project@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.13.0.tgz#e7d3ae16309988443eb47470c9dbf6aa8386a2ed" + integrity sha512-hxRvln8Dks3T4PBALC9H3Kw6kTne70XShfqSs4oJkMqFyDj4mb5VCUN6taCDXyF8fu75d02ETdTFZhhBgm1x6w== + dependencies: + "@lerna/package" "3.13.0" + "@lerna/validation-error" "3.13.0" + cosmiconfig "^5.0.2" + dedent "^0.7.0" + dot-prop "^4.2.0" + glob-parent "^3.1.0" + globby "^8.0.1" + load-json-file "^4.0.0" + npmlog "^4.1.2" + p-map "^1.2.0" + resolve-from "^4.0.0" + write-json-file "^2.3.0" + "@lerna/project@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.5.0.tgz#ac5c7b3c49318552b29ccb7a471a657fd57d3091" @@ -450,6 +1060,14 @@ resolve-from "^4.0.0" write-json-file "^2.3.0" +"@lerna/prompt@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.13.0.tgz#53571462bb3f5399cc1ca6d335a411fe093426a5" + integrity sha512-P+lWSFokdyvYpkwC3it9cE0IF2U5yy2mOUbGvvE4iDb9K7TyXGE+7lwtx2thtPvBAfIb7O13POMkv7df03HJeA== + dependencies: + inquirer "^6.2.0" + npmlog "^4.1.2" + "@lerna/prompt@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.3.1.tgz#ec53f9034a7a02a671627241682947f65078ab88" @@ -457,6 +1075,42 @@ inquirer "^6.2.0" npmlog "^4.1.2" +"@lerna/publish@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.13.0.tgz#9acd2ab79b278e0131f677c339755cfecc30b1b5" + integrity sha512-WuO7LWWQ+8F+ig48RtUxWrVdOfpqDBOv6fXz0/2heQf/rJQoJDTzJZ0rk5ymaGCFz1Av2CbP0zoP7PAQQ2BeKg== + 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.0" + "@lerna/describe-ref" "3.13.0" + "@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/output" "3.13.0" + "@lerna/pack-directory" "3.13.0" + "@lerna/prompt" "3.13.0" + "@lerna/pulse-till-done" "3.13.0" + "@lerna/run-lifecycle" "3.13.0" + "@lerna/run-parallel-batches" "3.13.0" + "@lerna/validation-error" "3.13.0" + "@lerna/version" "3.13.0" + figgy-pudding "^3.5.1" + fs-extra "^7.0.0" + libnpmaccess "^3.0.1" + npm-package-arg "^6.1.0" + npm-registry-fetch "^3.9.0" + npmlog "^4.1.2" + p-finally "^1.0.0" + p-map "^1.2.0" + p-pipe "^1.2.0" + p-reduce "^1.0.0" + pacote "^9.4.1" + semver "^5.5.0" + "@lerna/publish@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.5.0.tgz#e6543375457846557f3cb803f7795a577333a941" @@ -488,6 +1142,22 @@ p-reduce "^1.0.0" semver "^5.5.0" +"@lerna/pulse-till-done@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" + integrity sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA== + dependencies: + npmlog "^4.1.2" + +"@lerna/resolve-symlink@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.13.0.tgz#3e6809ef53b63fe914814bfa071cd68012e22fbb" + integrity sha512-Lc0USSFxwDxUs5JvIisS8JegjA6SHSAWJCMvi2osZx6wVRkEDlWG2B1JAfXUzCMNfHoZX0/XX9iYZ+4JIpjAtg== + dependencies: + fs-extra "^7.0.0" + npmlog "^4.1.2" + read-cmd-shim "^1.0.1" + "@lerna/resolve-symlink@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.3.0.tgz#c5d99a60cb17e2ea90b3521a0ba445478d194a44" @@ -496,6 +1166,16 @@ 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== + dependencies: + "@lerna/child-process" "3.13.0" + npmlog "^4.1.2" + path-exists "^3.0.0" + rimraf "^2.6.2" + "@lerna/rimraf-dir@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.3.0.tgz#687e9bb3668a9e540e281302a52d9a573860f5db" @@ -505,6 +1185,16 @@ path-exists "^3.0.0" rimraf "^2.6.2" +"@lerna/run-lifecycle@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.13.0.tgz#d8835ee83425edee40f687a55f81b502354d3261" + integrity sha512-oyiaL1biZdjpmjh6X/5C4w07wNFyiwXSSHH5GQB4Ay4BPwgq9oNhCcxRoi0UVZlZ1YwzSW8sTwLgj8emkIo3Yg== + dependencies: + "@lerna/npm-conf" "3.13.0" + figgy-pudding "^3.5.1" + npm-lifecycle "^2.1.0" + npmlog "^4.1.2" + "@lerna/run-lifecycle@^3.4.1": version "3.4.1" resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.4.1.tgz#6d7e44eada31cb4ec78b18ef050da0d86f6c892b" @@ -513,6 +1203,14 @@ npm-lifecycle "^2.0.0" npmlog "^4.1.2" +"@lerna/run-parallel-batches@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/run-parallel-batches/-/run-parallel-batches-3.13.0.tgz#0276bb4e7cd0995297db82d134ca2bd08d63e311" + integrity sha512-bICFBR+cYVF1FFW+Tlm0EhWDioTUTM6dOiVziDEGE1UZha1dFkMYqzqdSf4bQzfLS31UW/KBd/2z8jy2OIjEjg== + dependencies: + p-map "^1.2.0" + p-map-series "^1.0.0" + "@lerna/run-parallel-batches@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/run-parallel-batches/-/run-parallel-batches-3.0.0.tgz#468704934084c74991d3124d80607857d4dfa840" @@ -520,6 +1218,21 @@ p-map "^1.2.0" p-map-series "^1.0.0" +"@lerna/run@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.13.0.tgz#4a73af6133843cf9d5767f006e2b988a2aa3461a" + integrity sha512-KSpEStp5SVzNB7+3V5WnyY4So8aEyDhBYvhm7cJr5M7xesKf/IE5KFywcI+JPYzyqnIOGXghfzBf9nBZRHlEUQ== + dependencies: + "@lerna/batch-packages" "3.13.0" + "@lerna/command" "3.13.0" + "@lerna/filter-options" "3.13.0" + "@lerna/npm-run-script" "3.13.0" + "@lerna/output" "3.13.0" + "@lerna/run-parallel-batches" "3.13.0" + "@lerna/timer" "3.13.0" + "@lerna/validation-error" "3.13.0" + p-map "^1.2.0" + "@lerna/run@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.5.0.tgz#f2bf479d8ef12e6a11be5a6404bb1a83eb56146c" @@ -534,6 +1247,16 @@ "@lerna/validation-error" "^3.0.0" p-map "^1.2.0" +"@lerna/symlink-binary@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.13.0.tgz#36a9415d468afcb8105750296902f6f000a9680d" + integrity sha512-obc4Y6jxywkdaCe+DB0uTxYqP0IQ8mFWvN+k/YMbwH4G2h7M7lCBWgPy8e7xw/50+1II9tT2sxgx+jMus1sTJg== + dependencies: + "@lerna/create-symlink" "3.13.0" + "@lerna/package" "3.13.0" + fs-extra "^7.0.0" + p-map "^1.2.0" + "@lerna/symlink-binary@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.3.0.tgz#99ea570b21baabd61ecab27582eeb1d7b2c5f9cf" @@ -544,6 +1267,19 @@ p-map "^1.2.0" read-pkg "^3.0.0" +"@lerna/symlink-dependencies@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.13.0.tgz#76c23ecabda7824db98a0561364f122b457509cf" + integrity sha512-7CyN5WYEPkbPLbqHBIQg/YiimBzb5cIGQB0E9IkLs3+racq2vmUNQZn38LOaazQacAA83seB+zWSxlI6H+eXSg== + dependencies: + "@lerna/create-symlink" "3.13.0" + "@lerna/resolve-symlink" "3.13.0" + "@lerna/symlink-binary" "3.13.0" + fs-extra "^7.0.0" + p-finally "^1.0.0" + p-map "^1.2.0" + p-map-series "^1.0.0" + "@lerna/symlink-dependencies@^3.3.0": version "3.3.0" resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.3.0.tgz#13bcaed3e37986ab01b13498a459c7f609397dc3" @@ -556,16 +1292,56 @@ p-map "^1.2.0" p-map-series "^1.0.0" +"@lerna/timer@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" + integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== + "@lerna/timer@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.5.0.tgz#8dee6acf002c55de64678c66ef37ca52143f1b9b" +"@lerna/validation-error@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" + integrity sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA== + dependencies: + npmlog "^4.1.2" + "@lerna/validation-error@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.0.0.tgz#a27e90051c3ba71995e2a800a43d94ad04b3e3f4" dependencies: npmlog "^4.1.2" +"@lerna/version@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.13.0.tgz#d2eb17561b6a9b08947a88b5dc463a4a72e01198" + integrity sha512-YdLC208tExVpV77pdXpokGt9MAtTE7Kt93a2jcfjqiMoAI1VmXgGA+7drgBSTVtzfjXExPgi2//hJjI5ObckXA== + 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.0" + "@lerna/conventional-commits" "3.13.0" + "@lerna/github-client" "3.13.0" + "@lerna/output" "3.13.0" + "@lerna/prompt" "3.13.0" + "@lerna/run-lifecycle" "3.13.0" + "@lerna/validation-error" "3.13.0" + chalk "^2.3.1" + dedent "^0.7.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + p-map "^1.2.0" + p-pipe "^1.2.0" + p-reduce "^1.0.0" + p-waterfall "^1.0.0" + semver "^5.5.0" + slash "^1.0.0" + temp-write "^3.4.0" + "@lerna/version@^3.5.0": version "3.5.0" resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.5.0.tgz#df6d4d8ef077b51962126c0f52c800d98c53cc26" @@ -592,6 +1368,14 @@ slash "^1.0.0" temp-write "^3.4.0" +"@lerna/write-log-file@3.13.0": + version "3.13.0" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" + integrity sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A== + dependencies: + npmlog "^4.1.2" + write-file-atomic "^2.3.0" + "@lerna/write-log-file@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.0.0.tgz#2f95fee80c6821fe1ee6ccf8173d2b4079debbd2" @@ -610,6 +1394,31 @@ version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" +"@octokit/endpoint@^3.1.1": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-3.1.3.tgz#f6e9c2521b83b74367600e474b24efec2b0471c4" + integrity sha512-vAWzeoj9Lzpl3V3YkWKhGzmDUoMfKpyxJhpq74/ohMvmLXDoEuAGnApy/7TRi3OmnjyX2Lr+e9UGGAD0919ohA== + dependencies: + deepmerge "3.2.0" + is-plain-object "^2.0.4" + universal-user-agent "^2.0.1" + url-template "^2.0.8" + +"@octokit/plugin-enterprise-rest@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-2.1.1.tgz#ee7b245aada06d3ffdd409205ad1b891107fee0b" + integrity sha512-DJNXHH0LptKCLpJ8y3vCA/O+s+3/sDU4JNN2V0M04tsMN0hVGLPzoGgejPJgaxGP8Il5aw+jA5Nl5mTfdt9NrQ== + +"@octokit/request@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-2.3.0.tgz#da2672308bcf0b9376ef66f51bddbe5eb87cc00a" + integrity sha512-5YRqYNZOAaL7+nt7w3Scp6Sz4P2g7wKFP9npx1xdExMomk8/M/ICXVLYVam2wzxeY0cIc6wcKpjC5KI4jiNbGw== + dependencies: + "@octokit/endpoint" "^3.1.1" + is-plain-object "^2.0.4" + node-fetch "^2.3.0" + universal-user-agent "^2.0.1" + "@octokit/rest@^15.12.1": version "15.18.0" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.0.tgz#e6de702b57dec94c71e806f1cff0ecb9725b3054" @@ -624,7 +1433,22 @@ universal-user-agent "^2.0.0" url-template "^2.0.8" -"@sinonjs/commons@^1.2.0": +"@octokit/rest@^16.14.1", "@octokit/rest@^16.15.0": + version "16.15.0" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.15.0.tgz#648a88d5de055bcf38976709c5b2bdf1227b926f" + integrity sha512-Un+e7rgh38RtPOTe453pT/KPM/p2KZICimBmuZCd2wEo8PacDa4h6RqTPZs+f2DPazTTqdM7QU4LKlUjgiBwWw== + dependencies: + "@octokit/request" "2.3.0" + before-after-hook "^1.2.0" + btoa-lite "^1.0.0" + lodash.get "^4.4.2" + lodash.set "^4.3.2" + lodash.uniq "^4.5.0" + octokit-pagination-methods "^1.1.0" + universal-user-agent "^2.0.0" + url-template "^2.0.8" + +"@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.2.0", "@sinonjs/commons@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.3.0.tgz#50a2754016b6f30a994ceda6d9a0a8c36adda849" dependencies: @@ -636,11 +1460,12 @@ dependencies: "@sinonjs/samsam" "2.1.0" -"@sinonjs/formatio@^2.0.0": - version "2.0.0" - resolved "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz#84db7e9eb5531df18a8c5e0bfb6e449e55e654b2" +"@sinonjs/formatio@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.1.0.tgz#6ac9d1eb1821984d84c4996726e45d1646d8cce5" + integrity sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg== dependencies: - samsam "1.3.0" + "@sinonjs/samsam" "^2 || ^3" "@sinonjs/samsam@2.1.0": version "2.1.0" @@ -648,6 +1473,15 @@ dependencies: array-from "^2.1.1" +"@sinonjs/samsam@^2 || ^3", "@sinonjs/samsam@^3.0.2": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.1.1.tgz#8e2eceb2353f6626e2867352e3def951d3366240" + integrity sha512-ILlwvQUwAiaVBzr3qz8oT1moM7AIUHqUc2UmEjQcH9lLe+E+BZPwUMuc9FFojMswRK4r96x5zDTTrowMLw/vuA== + dependencies: + "@sinonjs/commons" "^1.0.2" + array-from "^2.1.1" + lodash "^4.17.11" + "@sinonjs/samsam@^2.1.2": version "2.1.2" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-2.1.2.tgz#16947fce5f57258d01f1688fdc32723093c55d3f" @@ -660,9 +1494,10 @@ version "4.1.7" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" -"@types/cookie@0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.3.1.tgz#720a756ea8e760a258708b52441bd341f1ef4296" +"@types/cookie@0.3.2": + version "0.3.2" + 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" @@ -670,9 +1505,10 @@ dependencies: "@types/node" "*" -"@types/estree@0.0.38": - version "0.0.38" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.38.tgz#c1be40aa933723c608820a99a373a16d215a1ca2" +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/events@*": version "1.2.0" @@ -706,10 +1542,22 @@ version "9.12.3" resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.3.tgz#b672cfaac25cbbc634a0fd92c515f66faa18dbca" +"@types/jest-diff@*": + version "20.0.1" + resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" + integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA== + "@types/jest@^23.3.9": version "23.3.9" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.9.tgz#c16b55186ee73ae65e001fbee69d392c51337ad1" +"@types/jest@^24.0.6": + version "24.0.6" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.6.tgz#ba4c8c7900ce098a82ca99293cbe4192bde4f355" + integrity sha512-NE7FBG/F4cMDKdCBqgyd+Sa6JZ5GiMOyA5QwJdeS4Ii/Z9a18WgGbFrHbcr48/7I9HdnkaAYP+S2MmQ27qoqJA== + dependencies: + "@types/jest-diff" "*" + "@types/lodash@^4.14.110": version "4.14.118" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.118.tgz#247bab39bfcc6d910d4927c6e06cbc70ec376f27" @@ -722,9 +1570,10 @@ version "0.4.2" resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.4.2.tgz#64a89e53ea37f61cc0f3ee1732c555c2dbf6452f" -"@types/md5@2.1.32": - version "2.1.32" - resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.1.32.tgz#93e23437fcd17a7b9ca98d02aa6002e835842fe8" +"@types/md5@2.1.33": + version "2.1.33" + resolved "https://registry.yarnpkg.com/@types/md5/-/md5-2.1.33.tgz#8c8dba30df4ad0e92296424f08c4898dd808e8df" + integrity sha512-8+X960EtKLoSblhauxLKy3zzotagjoj3Jt1Tx9oaxUdZEPIBl+mkrUz6PNKpzJgkrKSN9YgkWTA29c0KnLshmA== dependencies: "@types/node" "*" @@ -736,10 +1585,20 @@ version "5.2.5" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.5.tgz#8a4accfc403c124a0bafe8a9fc61a05ec1032073" -"@types/node@*", "@types/node@^10.0.2", "@types/node@^10.12.10": +"@types/mocha@^5.2.6": + version "5.2.6" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.6.tgz#b8622d50557dd155e9f2f634b7d68fd38de5e94b" + integrity sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw== + +"@types/node@*", "@types/node@^10.0.2": version "10.12.10" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.10.tgz#4fa76e6598b7de3f0cb6ec3abacc4f59e5b3a2ce" +"@types/node@^11.9.4": + version "11.9.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.4.tgz#ceb0048a546db453f6248f2d1d95e937a6f00a14" + integrity sha512-Zl8dGvAcEmadgs1tmSPcvwzO1YRsz38bVJQvH1RvRqSR9/5n61Q1ktcDL0ht3FXWR+ZpVmXVwN1LuH4Ax23NsA== + "@types/raven@^2.5.1": version "2.5.1" resolved "https://registry.yarnpkg.com/@types/raven/-/raven-2.5.1.tgz#62ef0a59e29691945e1f295b62ed199619cbd9b6" @@ -747,6 +1606,13 @@ "@types/events" "*" "@types/node" "*" +"@types/raven@^2.5.3": + version "2.5.3" + resolved "https://registry.yarnpkg.com/@types/raven/-/raven-2.5.3.tgz#bd4bed667dd9cfda39452f8ed64a87f45233bc3a" + integrity sha512-k6vxiX5I6/GEqJS9mMYPVIgMJf/X26n09NfzuqBpdcEp684RIwpdrwCgSyJGuy8EaSG1wc2rFP7xVEAixPzw7Q== + dependencies: + "@types/node" "*" + "@types/request@^2.47.0": version "2.48.1" resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.1.tgz#e402d691aa6670fbbff1957b15f1270230ab42fa" @@ -767,6 +1633,11 @@ version "5.0.7" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-5.0.7.tgz#0d9f89dd0c9988c4f1505a92a3a324ee7bdb18a6" +"@types/sinon@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.0.6.tgz#dbe6c059dd4e2fd2b8e8fc3ed051d4706c84c63e" + integrity sha512-ldQl2p7kyCXHhr//5sQCu9jWgSiDbYuCD5dUp53r/z8T8jmgKpANpy4vqjbdho9P2ldFaQC/gpW31hch+oQ0IQ== + "@types/stack-trace@0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/stack-trace/-/stack-trace-0.0.29.tgz#eb7a7c60098edb35630ed900742a5ecb20cfcb4d" @@ -775,139 +1646,153 @@ version "2.3.4" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.4.tgz#821878b81bfab971b93a265a561d54ea61f9059f" -"@webassemblyjs/ast@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" +"@webassemblyjs/ast@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.2.tgz#89297cd602cf8148e08d5fe1efbbba0cdb913ca7" + integrity sha512-5LLqqVsXZAhAJN0S7fTi11jwMJOjfR8290V0V7BWKgmZ36VVE6ZGuH4BN3eLt7LvNMIgyuYwyrPwiz6f3SGlBQ== dependencies: - "@webassemblyjs/helper-module-context" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/wast-parser" "1.7.11" + "@webassemblyjs/helper-module-context" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/wast-parser" "1.8.2" -"@webassemblyjs/floating-point-hex-parser@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz#a69f0af6502eb9a3c045555b1a6129d3d3f2e313" +"@webassemblyjs/floating-point-hex-parser@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.2.tgz#c304fac0e5c2dd69a6d0f29000f4d6c4bf583203" + integrity sha512-5WIj+pSzbs8ao7NM31xFcGeOSnXgpCikmCFRYkXygVDqVaXTq/Hr9roqarUVMNfAegNc61oKEhe3pi+HUCXJEw== -"@webassemblyjs/helper-api-error@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz#c7b6bb8105f84039511a2b39ce494f193818a32a" +"@webassemblyjs/helper-api-error@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.2.tgz#e4c5325b264f08513bcf0e48cf3c0a3ea690b508" + integrity sha512-TJBDJPXO9DSC4qf5FZT0VFlTdJSm4DKxzcoyWwVike1aQQQEbCk167MJxYLi0SuHeOtULLtDDSZL7yDL3XXMKA== -"@webassemblyjs/helper-buffer@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz#3122d48dcc6c9456ed982debe16c8f37101df39b" +"@webassemblyjs/helper-buffer@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.2.tgz#c133435f8482240fab1994151c09d7bdd7b8f5a8" + integrity sha512-6fTynU6b0bC+yBH7+M6/BBRZId4F1fIuX00G1ZX45EAQOrB8p4TK5bccAEPG2vuyvnd4tgB1/4cYXq5GpszMGA== -"@webassemblyjs/helper-code-frame@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz#cf8f106e746662a0da29bdef635fcd3d1248364b" +"@webassemblyjs/helper-code-frame@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.2.tgz#def3d079fe6ce38d997e939af3ed6cc3a37ff0f8" + integrity sha512-5beYTZS4Wsscu8ys2cLZ0SiToEe1wNitzrV/jCr02wGPOcpPHf0ERImR6iBGe/LX0O2cV9Pgi78hFp5WfNKeAg== dependencies: - "@webassemblyjs/wast-printer" "1.7.11" + "@webassemblyjs/wast-printer" "1.8.2" -"@webassemblyjs/helper-fsm@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz#df38882a624080d03f7503f93e3f17ac5ac01181" +"@webassemblyjs/helper-fsm@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.2.tgz#7d1a8186c51df38d39e8a742aafdd002965d397c" + integrity sha512-7xRO1lFNj1fGm+ik73n8TuWXKeAqTuqeApqnxWnW+nI2lPyj4awrt+n1XkQr8OwmVK7mFJSRuTZc568qtgOyzQ== -"@webassemblyjs/helper-module-context@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz#d874d722e51e62ac202476935d649c802fa0e209" +"@webassemblyjs/helper-module-context@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.2.tgz#3bfb0e7b889876bb8a7d1ccadca47e013721163e" + integrity sha512-EBr+n9M2F7PQ02s0f87KnSPva0KlT2S4IGDP+7aYqt2FCaMZzCtXcVahGSGg3ESZBSD0gzFU4486zD7SUsSD0Q== -"@webassemblyjs/helper-wasm-bytecode@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz#dd9a1e817f1c2eb105b4cf1013093cb9f3c9cb06" +"@webassemblyjs/helper-wasm-bytecode@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.2.tgz#72a7fc29949af10d2960338fc84192df23ef030e" + integrity sha512-gS0trUUPYevbs5Rsv9E+VbzDuZ9KB4Tu/QymTfHtnSDpX4wxhs9u9/y/KiH84r0Z4xvm8/pqWnGvM77oxSPHYw== -"@webassemblyjs/helper-wasm-section@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz#9c9ac41ecf9fbcfffc96f6d2675e2de33811e68a" +"@webassemblyjs/helper-wasm-section@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.2.tgz#4b36c105bfcc3dbabea9e8d04617127b3178f92f" + integrity sha512-HLHOR6/Vc+f5UziOUNQ3f5YedCMCuU46BdMEhjQBQwlOWqVAxgwqUn/KJkuhMvvjQ2FkASaDup8ohZrjyCKDKg== dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-buffer" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/wasm-gen" "1.7.11" + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-buffer" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/wasm-gen" "1.8.2" -"@webassemblyjs/ieee754@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz#c95839eb63757a31880aaec7b6512d4191ac640b" +"@webassemblyjs/ieee754@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.2.tgz#43f8969f90e08b70101f35c93df07afaca5c9d5a" + integrity sha512-v9RtqGJ+z8UweiRh47DheXVtV0d/o9sQfXzAX1/1n/nw5G85yEQJdHcmwiRdu+SXmqlZQeymsnmve2oianzW4g== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.7.11.tgz#d7267a1ee9c4594fd3f7e37298818ec65687db63" - dependencies: - "@xtuc/long" "4.2.1" - -"@webassemblyjs/utf8@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.7.11.tgz#06d7218ea9fdc94a6793aa92208160db3d26ee82" - -"@webassemblyjs/wasm-edit@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz#8c74ca474d4f951d01dbae9bd70814ee22a82005" - dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-buffer" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/helper-wasm-section" "1.7.11" - "@webassemblyjs/wasm-gen" "1.7.11" - "@webassemblyjs/wasm-opt" "1.7.11" - "@webassemblyjs/wasm-parser" "1.7.11" - "@webassemblyjs/wast-printer" "1.7.11" - -"@webassemblyjs/wasm-gen@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz#9bbba942f22375686a6fb759afcd7ac9c45da1a8" - dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/ieee754" "1.7.11" - "@webassemblyjs/leb128" "1.7.11" - "@webassemblyjs/utf8" "1.7.11" - -"@webassemblyjs/wasm-opt@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz#b331e8e7cef8f8e2f007d42c3a36a0580a7d6ca7" - dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-buffer" "1.7.11" - "@webassemblyjs/wasm-gen" "1.7.11" - "@webassemblyjs/wasm-parser" "1.7.11" - -"@webassemblyjs/wasm-parser@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz#6e3d20fa6a3519f6b084ef9391ad58211efb0a1a" - dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-api-error" "1.7.11" - "@webassemblyjs/helper-wasm-bytecode" "1.7.11" - "@webassemblyjs/ieee754" "1.7.11" - "@webassemblyjs/leb128" "1.7.11" - "@webassemblyjs/utf8" "1.7.11" - -"@webassemblyjs/wast-parser@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz#25bd117562ca8c002720ff8116ef9072d9ca869c" - dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/floating-point-hex-parser" "1.7.11" - "@webassemblyjs/helper-api-error" "1.7.11" - "@webassemblyjs/helper-code-frame" "1.7.11" - "@webassemblyjs/helper-fsm" "1.7.11" - "@xtuc/long" "4.2.1" - -"@webassemblyjs/wast-printer@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz#c4245b6de242cb50a2cc950174fdbf65c78d7813" - dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/wast-parser" "1.7.11" - "@xtuc/long" "4.2.1" +"@webassemblyjs/leb128@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.2.tgz#d32c149f196d4fbb639dfec9557e5e950f8e5ae4" + integrity sha512-41zX+6xpo6G2bkq3mdr+K5nXx5OOL6V979ucbLyq1ra5dFI3ReLiw6+HOCF5ih0t5HMQVIQBhInZIdxqcpc/Qg== + dependencies: + long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" + +"@webassemblyjs/utf8@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.2.tgz#6b262c1cba9052a8fd01a63eea50265ccd7f3b16" + integrity sha512-fP2Q4igo9/R82xeVra+zIQOjnmknSiAhykg//fz7c1UjghzoutQtldcbKOaL0+0j31RRFMDHgrUL+12RQExOYg== + +"@webassemblyjs/wasm-edit@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.2.tgz#3d3bbf10c46084e6525a1d9e2476bd072f0edd5b" + integrity sha512-rM1sgdLQrXQs4ZapglK86mW8QMml0FJ+jwZ5961sEmHISTkJRvheILuzA9jcKy5vwhWgkPf/nIhO2I6A9rkGww== + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-buffer" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/helper-wasm-section" "1.8.2" + "@webassemblyjs/wasm-gen" "1.8.2" + "@webassemblyjs/wasm-opt" "1.8.2" + "@webassemblyjs/wasm-parser" "1.8.2" + "@webassemblyjs/wast-printer" "1.8.2" + +"@webassemblyjs/wasm-gen@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.2.tgz#389670ade8398275cbf7c7c92e38f6f5eadc4c1a" + integrity sha512-WTBesrMydDwJbbB48OZGcMq6zDsT6CJd1UalvGuXtHJLargazOron+JBdmt8Nnd+Z2s3TPfCPP54EpQBsDVR7Q== + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/ieee754" "1.8.2" + "@webassemblyjs/leb128" "1.8.2" + "@webassemblyjs/utf8" "1.8.2" + +"@webassemblyjs/wasm-opt@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.2.tgz#967019ac1b6d577177d241b912f61f01122d6b49" + integrity sha512-tzXn0xNQNyoUBr1+O1rwYXZd2bcUdXSOUTu0fLAIPl01dcTY6hjIi2B2DXYqk9OVQRnjPyX2Ew6rkeCTxfaYaQ== + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-buffer" "1.8.2" + "@webassemblyjs/wasm-gen" "1.8.2" + "@webassemblyjs/wasm-parser" "1.8.2" + +"@webassemblyjs/wasm-parser@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.2.tgz#7a9d587a3edab32fc800dc9498bdbdf90896bb79" + integrity sha512-uc6nVjvUjZzHa8fSl0ko684puuw0ujfCYn19v5tTu0DQ7tXx9jlZXzYw0aW7fmROxyez7BcbJloYLmXg723vVQ== + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-api-error" "1.8.2" + "@webassemblyjs/helper-wasm-bytecode" "1.8.2" + "@webassemblyjs/ieee754" "1.8.2" + "@webassemblyjs/leb128" "1.8.2" + "@webassemblyjs/utf8" "1.8.2" + +"@webassemblyjs/wast-parser@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.2.tgz#c3ded4de843756ab5f435c422a36fdd48aa518ad" + integrity sha512-idk8cCqM+T6/iIxoQCOz85vKvWhyHghJbICob/H1AN8byN1O6a2Jxk+g1ZJA7sZDc6/q8pYV6dVkHKgm8y1oUA== + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/floating-point-hex-parser" "1.8.2" + "@webassemblyjs/helper-api-error" "1.8.2" + "@webassemblyjs/helper-code-frame" "1.8.2" + "@webassemblyjs/helper-fsm" "1.8.2" + long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" + +"@webassemblyjs/wast-printer@1.8.2": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.2.tgz#a7dbb0e6eba3721fd06a949ac1917fd289b3db4d" + integrity sha512-TENFBgf5bKKfs2LbW8fd/0xvamccbEHoR83lQlEP7Qi0nkpXAP77VpvIITy0J+UZAa/Y3j6K6MPw1tNMbdjf4A== + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/wast-parser" "1.8.2" + long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" -"@xtuc/long@4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.1.tgz#5c85d662f76fa1d34575766c5dcd6615abcd30d8" - JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" @@ -927,6 +1812,13 @@ abbrev@1.0.x: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" +abort-controller@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-2.0.2.tgz#f0c059173ac7fdc4dba73e3833102def407a6a29" + integrity sha512-JXEYGxxMwiNl9EUdLysK0K0DwB7ENw6KeeaLHgofijTfJYPB/vOer3Mb+IcP913dCfWiQsd05MmVNl0H5PanrQ== + 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" @@ -934,28 +1826,23 @@ accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -acorn-dynamic-import@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278" - dependencies: - acorn "^5.0.0" +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== -acorn-globals@^4.1.0: +acorn-globals@^4.1.0, acorn-globals@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103" dependencies: acorn "^6.0.1" acorn-walk "^6.0.1" -acorn-walk@^6.0.1: +acorn-walk@^6.0.1, acorn-walk@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" -acorn@^4.0.4: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -acorn@^5.0.0, acorn@^5.4.1, acorn@^5.5.3, acorn@^5.6.2: +acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" @@ -963,14 +1850,15 @@ acorn@^6.0.1: version "6.0.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754" +acorn@^6.0.4, acorn@^6.0.5, acorn@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" + integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw== + address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" -addressparser@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/addressparser/-/addressparser-1.0.1.tgz#47afbe1a2a9262191db6838e4fd1d39b40821746" - adm-zip@~0.4.3: version "0.4.13" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" @@ -979,7 +1867,7 @@ after@0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" -agent-base@4, agent-base@^4.1.0, agent-base@^4.2.0, agent-base@~4.2.0: +agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" dependencies: @@ -1016,42 +1904,27 @@ align-text@^0.1.1, align-text@^0.1.3: longest "^1.0.1" repeat-string "^1.5.2" -amdefine@>=0.0.4, amdefine@^1.0.0: +amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -amqplib@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/amqplib/-/amqplib-0.5.2.tgz#d2d7313c7ffaa4d10bcf1e6252de4591b6cc7b63" - dependencies: - bitsyntax "~0.0.4" - bluebird "^3.4.6" - buffer-more-ints "0.0.2" - readable-stream "1.x >=1.1.9" - safe-buffer "^5.0.1" - ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" dependencies: string-width "^2.0.0" -ansi-cyan@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== dependencies: - ansi-wrap "0.1.0" + ansi-wrap "^0.1.0" ansi-escapes@^3.0.0: version "3.1.0" resolved "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" -ansi-red@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" - dependencies: - ansi-wrap "0.1.0" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1060,6 +1933,11 @@ ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" +ansi-regex@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.0.0.tgz#70de791edf021404c3fd615aa89118ae0432e5a9" + integrity sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1070,9 +1948,10 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-wrap@0.1.0: +ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= anymatch@^2.0.0: version "2.0.0" @@ -1087,6 +1966,13 @@ append-transform@^0.4.0: dependencies: default-require-extensions "^1.0.0" +append-transform@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" + integrity sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw== + dependencies: + default-require-extensions "^2.0.0" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -1095,30 +1981,6 @@ aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" -archiver-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-1.3.0.tgz#e50b4c09c70bf3d680e32ff1b7994e9f9d895174" - dependencies: - glob "^7.0.0" - graceful-fs "^4.1.0" - lazystream "^1.0.0" - lodash "^4.8.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - -archiver@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-2.1.1.tgz#ff662b4a78201494a3ee544d3a33fe7496509ebc" - dependencies: - archiver-utils "^1.3.0" - async "^2.0.0" - buffer-crc32 "^0.2.1" - glob "^7.0.0" - lodash "^4.8.0" - readable-stream "^2.0.0" - tar-stream "^1.5.0" - zip-stream "^1.2.0" - are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" @@ -1156,13 +2018,6 @@ argv@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab" -arr-diff@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" - dependencies: - arr-flatten "^1.0.1" - array-slice "^0.2.3" - arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -1177,10 +2032,6 @@ arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" -arr-union@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" - arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" @@ -1273,10 +2124,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - assert@^1.1.1, assert@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" @@ -1291,15 +2138,11 @@ assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" -ast-types@0.x.x: - version "0.11.7" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.7.tgz#f318bf44e339db6a320be0009ded64ec1471f46c" - astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" -async-each@^1.0.0: +async-each@^1.0.0, async-each@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -1318,18 +2161,19 @@ async@1.x, async@^1.4.0: version "1.5.2" resolved "http://registry.npmjs.org/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@2.0.1: - version "2.0.1" - resolved "http://registry.npmjs.org/async/-/async-2.0.1.tgz#b709cc0280a9c36f09f4536be823c838a9049e25" - dependencies: - lodash "^4.8.0" - -async@^2.0.0, async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.5.0, async@~2.6.0: +async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.5.0: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: lodash "^4.17.10" +async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" + integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== + dependencies: + lodash "^4.17.11" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1338,24 +2182,14 @@ atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.2.1, aws4@^1.8.0: +aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" -axios@^0.15.3: - version "0.15.3" - resolved "http://registry.npmjs.org/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" - dependencies: - follow-redirects "1.0.0" - axios@^0.18.0: version "0.18.0" resolved "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" @@ -1371,7 +2205,7 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.0.0, babel-core@^6.23.1, babel-core@^6.26.0: +babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" dependencies: @@ -1509,13 +2343,6 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.4.tgz#977259240420e227444ebe49e226a61e49ea659d" - dependencies: - babel-plugin-istanbul "^4.1.5" - babel-preset-jest "^22.4.4" - babel-jest@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" @@ -1523,6 +2350,16 @@ babel-jest@^23.6.0: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" +babel-jest@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190" + integrity sha512-MLcagnVrO9ybQGLEfZUqnOzv36iQzU7Bj4elm39vCukumLVSfoX+tRy3/jW7lUKc7XdpRmB/jech6L/UCsSZjw== + dependencies: + babel-plugin-istanbul "^5.1.0" + babel-preset-jest "^24.1.0" + chalk "^2.4.2" + slash "^2.0.0" + babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" @@ -1535,7 +2372,7 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-istanbul@^4.1.5, babel-plugin-istanbul@^4.1.6: +babel-plugin-istanbul@^4.1.6: version "4.1.6" resolved "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" dependencies: @@ -1544,14 +2381,24 @@ babel-plugin-istanbul@^4.1.5, babel-plugin-istanbul@^4.1.6: istanbul-lib-instrument "^1.10.1" test-exclude "^4.2.1" -babel-plugin-jest-hoist@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.4.tgz#b9851906eab34c7bf6f8c895a2b08bea1a844c0b" +babel-plugin-istanbul@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz#7981590f1956d75d67630ba46f0c22493588c893" + integrity sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ== + dependencies: + find-up "^3.0.0" + istanbul-lib-instrument "^3.0.0" + test-exclude "^5.0.0" babel-plugin-jest-hoist@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" +babel-plugin-jest-hoist@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz#dfecc491fb15e2668abbd690a697a8fd1411a7f8" + integrity sha512-gljYrZz8w1b6fJzKcsfKsipSru2DU2DmQ39aB6nV3xQ0DDv3zpIzKGortA5gknrhNnPN8DweaEgrnZdmbGmhnw== + babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" @@ -1765,9 +2612,10 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-preset-env@^1.6.1: +babel-preset-env@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-syntax-trailing-function-commas "^6.22.0" @@ -1800,13 +2648,6 @@ babel-preset-env@^1.6.1: invariant "^2.2.2" semver "^5.3.0" -babel-preset-jest@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.4.tgz#ec9fbd8bcd7dfd24b8b5320e0e688013235b7c39" - dependencies: - babel-plugin-jest-hoist "^22.4.4" - babel-plugin-syntax-object-rest-spread "^6.13.0" - babel-preset-jest@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" @@ -1814,6 +2655,14 @@ babel-preset-jest@^23.2.0: babel-plugin-jest-hoist "^23.2.0" babel-plugin-syntax-object-rest-spread "^6.13.0" +babel-preset-jest@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz#83bc564fdcd4903641af65ec63f2f5de6b04132e" + integrity sha512-FfNLDxFWsNX9lUmtwY7NheGlANnagvxq8LZdl5PKnVG3umP+S/g0XbVBfwtA4Ai3Ri/IMkWabBz3Tyk9wdspcw== + dependencies: + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + babel-plugin-jest-hoist "^24.1.0" + babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" @@ -1882,7 +2731,7 @@ base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" -base64-js@^1.0.2: +base64-js@^1.0.2, base64-js@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" @@ -1916,6 +2765,11 @@ before-after-hook@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.2.0.tgz#1079c10312cd4d4ad0d1676d37951ef8bfc3a563" +before-after-hook@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.3.2.tgz#7bfbf844ad670aa7a96b5a4e4e15bd74b08ed66b" + integrity sha512-zyPgY5dgbf99c0uGUjhY4w+mxqEGxPKg9RQDl34VvrVh2bM31lFN+mwR1ZHepq/KA3VCPk1gwJZL6IIJqjLy2w== + better-assert@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" @@ -1926,29 +2780,15 @@ big.js@^3.1.3: version "3.2.0" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" +bignumber.js@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-7.2.1.tgz#80c048759d826800807c4bfd521e50edbba57a5f" + integrity sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ== + binary-extensions@^1.0.0: version "1.12.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14" -bitsyntax@~0.0.4: - version "0.0.4" - resolved "http://registry.npmjs.org/bitsyntax/-/bitsyntax-0.0.4.tgz#eb10cc6f82b8c490e3e85698f07e83d46e0cba82" - dependencies: - buffer-more-ints "0.0.2" - -bl@^1.0.0: - version "1.2.2" - resolved "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bl@~1.1.2: - version "1.1.2" - resolved "http://registry.npmjs.org/bl/-/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398" - dependencies: - readable-stream "~2.0.5" - blob@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" @@ -1963,7 +2803,7 @@ bluebird@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" -bluebird@^3.3.0, bluebird@^3.4.6, bluebird@^3.5.1, bluebird@^3.5.2: +bluebird@^3.3.0, bluebird@^3.5.1, bluebird@^3.5.2, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" @@ -1986,12 +2826,6 @@ body-parser@1.18.3, body-parser@^1.16.1: raw-body "2.3.3" type-is "~1.6.16" -boom@2.x.x: - version "2.10.1" - resolved "http://registry.npmjs.org/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - boxen@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.1.0.tgz#b1b69dd522305e807a99deee777dbd6e5167b102" @@ -2037,7 +2871,7 @@ braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.3.0, braces@^2.3.1: +braces@^2.3.0, braces@^2.3.1, braces@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" dependencies: @@ -2060,7 +2894,7 @@ browser-process-hrtime@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" -browser-resolve@^1.11.0, browser-resolve@^1.11.2, browser-resolve@^1.11.3: +browser-resolve@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" dependencies: @@ -2070,6 +2904,11 @@ browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + browserify-aes@^1.0.0, browserify-aes@^1.0.4: version "1.2.0" resolved "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -2157,10 +2996,6 @@ buffer-alloc@^1.2.0: buffer-alloc-unsafe "^1.1.0" buffer-fill "^1.0.0" -buffer-crc32@^0.2.1: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" @@ -2173,10 +3008,6 @@ buffer-from@1.x, buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" -buffer-more-ints@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/buffer-more-ints/-/buffer-more-ints-0.0.2.tgz#26b3885d10fa13db7fc01aae3aab870199e0124c" - buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -2189,32 +3020,22 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.0.6, buffer@^5.1.0: +buffer@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" + integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== dependencies: base64-js "^1.0.2" ieee754 "^1.1.4" -buildmail@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/buildmail/-/buildmail-4.0.1.tgz#877f7738b78729871c9a105e3b837d2be11a7a72" - dependencies: - addressparser "1.0.1" - libbase64 "0.1.0" - libmime "3.0.0" - libqp "1.1.0" - nodemailer-fetch "1.6.0" - nodemailer-shared "1.1.0" - punycode "1.4.1" - builtin-modules@^1.0.0, builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -builtin-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" +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-status-codes@^3.0.0: version "3.0.0" @@ -2259,6 +3080,26 @@ cacache@^11.0.1, cacache@^11.0.2, cacache@^11.2.0: unique-filename "^1.1.0" y18n "^4.0.0" +cacache@^11.3.2: + version "11.3.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" + integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== + dependencies: + bluebird "^3.5.3" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.3" + graceful-fs "^4.1.15" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2297,6 +3138,11 @@ callsites@^2.0.0: version "2.0.0" resolved "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" +callsites@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.0.0.tgz#fb7eb569b72ad7a45812f93fd9430a3e410b3dd3" + integrity sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw== + camelcase-keys@^2.0.0: version "2.1.0" resolved "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -2342,10 +3188,6 @@ capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2386,6 +3228,15 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4 escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2394,7 +3245,7 @@ check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" -chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: +chokidar@^2.0.2, chokidar@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26" dependencies: @@ -2413,6 +3264,25 @@ chokidar@^2.0.0, chokidar@^2.0.2, chokidar@^2.0.3: optionalDependencies: fsevents "^1.2.2" +chokidar@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.1.tgz#adc39ad55a2adf26548bd2afa048f611091f9184" + integrity sha512-gfw3p2oQV2wEt+8VuMlNsPjCxDxvvgnm/kz+uATu805mWVF8IJN7uz9DN7iBz+RMJISmiVbCOBFs9qBGMjtPfQ== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.0" + optionalDependencies: + fsevents "^1.2.7" + chownr@^1.0.1, chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" @@ -2427,6 +3297,11 @@ ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -2434,9 +3309,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -circular-json@^0.5.4: +circular-json@^0.5.5: version "0.5.9" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.5.9.tgz#932763ae88f4f7dead7a0d09c8a51a4743a53b1d" + integrity sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ== class-utils@^0.3.5: version "0.3.6" @@ -2515,7 +3391,18 @@ codecov@^3.0.2: argv "^0.0.2" ignore-walk "^3.0.1" js-yaml "^3.12.0" - request "^2.87.0" + request "^2.87.0" + urlgrey "^0.4.4" + +codecov@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.2.0.tgz#4465ee19884528092d8c313e1f9e4bdc7d3065cd" + integrity sha512-3NJvNARXxilqnqVfgzDHyVrF4oeVgaYW1c1O6Oi5mn93exE7HTSSFNiYdwojWW6IwrCZABJ8crpNbKoo9aUHQw== + dependencies: + argv "^0.0.2" + ignore-walk "^3.0.1" + js-yaml "^3.12.0" + teeny-request "^3.7.0" urlgrey "^0.4.4" collection-visit@^1.0.0: @@ -2565,7 +3452,7 @@ combine-source-map@^0.8.0: lodash.memoize "~3.0.3" source-map "~0.5.3" -combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" dependencies: @@ -2575,14 +3462,15 @@ commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" -commander@^2.12.1, commander@^2.18.0, commander@^2.9.0: +commander@2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + +commander@^2.12.1, commander@^2.18.0: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" - commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" @@ -2606,6 +3494,11 @@ compare-func@^1.3.1: array-ify "^1.0.0" dot-prop "^3.0.0" +compare-versions@^3.2.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.4.0.tgz#e0747df5c9cb7f054d6d3dc3e1dbc444f9e92b26" + integrity sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg== + component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -2618,15 +3511,6 @@ component-inherit@0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" -compress-commons@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-1.2.2.tgz#524a9f10903f3a813389b0225d27c48bb751890f" - dependencies: - buffer-crc32 "^0.2.1" - crc32-stream "^2.0.0" - normalize-path "^2.0.0" - readable-stream "^2.0.0" - compressible@^2.0.12, compressible@~2.0.14: version "2.0.15" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212" @@ -2658,6 +3542,16 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + config-chain@^1.1.11: version "1.1.12" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" @@ -2725,6 +3619,14 @@ conventional-changelog-angular@^5.0.2: compare-func "^1.3.1" q "^1.5.1" +conventional-changelog-angular@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0" + integrity sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA== + dependencies: + compare-func "^1.3.1" + q "^1.5.1" + conventional-changelog-core@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.1.5.tgz#c2edf928539308b54fe1b90a2fc731abc021852c" @@ -2743,6 +3645,25 @@ conventional-changelog-core@^3.1.5: read-pkg-up "^3.0.0" through2 "^2.0.0" +conventional-changelog-core@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.1.6.tgz#ac1731a461c50d150d29c1ad4f33143293bcd32f" + integrity sha512-5teTAZOtJ4HLR6384h50nPAaKdDr+IaU0rnD2Gg2C3MS7hKsEPH8pZxrDNqam9eOSPQg9tET6uZY79zzgSz+ig== + dependencies: + conventional-changelog-writer "^4.0.3" + conventional-commits-parser "^3.0.1" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "2.0.0" + git-remote-origin-url "^2.0.0" + git-semver-tags "^2.0.2" + lodash "^4.2.1" + normalize-package-data "^2.3.5" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^2.0.0" + conventional-changelog-preset-loader@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz#81d1a07523913f3d17da3a49f0091f967ad345b0" @@ -2762,6 +3683,22 @@ conventional-changelog-writer@^4.0.2: split "^1.0.0" through2 "^2.0.0" +conventional-changelog-writer@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.3.tgz#916a2b302d0bb5ef18efd236a034c13fb273cde1" + integrity sha512-bIlpSiQtQZ1+nDVHEEh798Erj2jhN/wEjyw9sfxY9es6h7pREE5BNJjfv0hXGH/FTrAsEpHUq4xzK99eePpwuA== + dependencies: + compare-func "^1.3.1" + conventional-commits-filter "^2.0.1" + dateformat "^3.0.0" + handlebars "^4.1.0" + json-stringify-safe "^5.0.1" + lodash "^4.2.1" + meow "^4.0.0" + semver "^5.5.0" + split "^1.0.0" + through2 "^2.0.0" + conventional-commits-filter@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz#55a135de1802f6510b6758e0a6aa9e0b28618db3" @@ -2794,7 +3731,7 @@ conventional-recommended-bump@^4.0.4: meow "^4.0.0" q "^1.5.1" -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" dependencies: @@ -2831,6 +3768,11 @@ core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" +core-js@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" + integrity sha1-+rg/uwstjchfpjbEudNMdUIMbWU= + core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -2844,19 +3786,6 @@ cosmiconfig@^5.0.2: js-yaml "^3.9.0" parse-json "^4.0.0" -crc32-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-2.0.0.tgz#e3cdd3b4df3168dd74e3de3fbbcb7b297fe908f4" - dependencies: - crc "^3.4.4" - readable-stream "^2.0.0" - -crc@^3.4.4: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - dependencies: - buffer "^5.1.0" - create-ecdh@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" @@ -2916,13 +3845,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cryptiles@2.x.x: - version "2.0.5" - resolved "http://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -crypto-browserify@^3.11.0, crypto-browserify@^3.11.1: +crypto-browserify@^3.11.0, crypto-browserify@^3.12.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" dependencies: @@ -2946,12 +3869,24 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": version "0.3.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" +cssom@^0.3.4: + version "0.3.6" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" + integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== + cssstyle@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" dependencies: cssom "0.3.x" +cssstyle@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.1.tgz#3aceb2759eaf514ac1a21628d723d6043a819495" + integrity sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A== + dependencies: + cssom "0.3.x" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -3011,6 +3946,43 @@ danger@^6.1.5: vm2 "^3.6.3" voca "^1.4.0" +danger@^7.0.12: + version "7.0.12" + resolved "https://registry.yarnpkg.com/danger/-/danger-7.0.12.tgz#bba12a496adcc7a1e30619404bc13a3c6d9ba915" + integrity sha512-pew8vsBs2bitXt5upLuvfEAqvVuvzLoo/BjX7ysGI3yXQ8X7vrESo1/gGRvkA4uaDEoDq7LaBR4xhxfqxk9fog== + dependencies: + "@babel/polyfill" "^7.2.5" + "@octokit/rest" "^16.14.1" + chalk "^2.3.0" + commander "^2.18.0" + debug "^4.1.1" + get-stdin "^6.0.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.1" + hyperlinker "^1.0.0" + jsome "^2.3.25" + json5 "^2.1.0" + jsonpointer "^4.0.1" + jsonwebtoken "^8.4.0" + lodash.find "^4.6.0" + lodash.includes "^4.3.0" + lodash.isobject "^3.0.2" + lodash.keys "^4.0.8" + memfs-or-file-map-to-github-branch "^1.1.0" + node-cleanup "^2.1.2" + node-fetch "^2.3.0" + override-require "^1.1.1" + p-limit "^2.1.0" + parse-diff "^0.5.1" + parse-git-config "^2.0.3" + parse-github-url "^1.0.2" + parse-link-header "^1.0.1" + pinpoint "^1.1.0" + readline-sync "^1.4.9" + require-from-string "^2.0.2" + rfc6902 "^3.0.1" + supports-hyperlinks "^1.0.1" + dargs@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" @@ -3027,11 +3999,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-uri-to-buffer@1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz#77163ea9c20d8641b4707e8f18abdf9a78f34835" - -data-urls@^1.0.0: +data-urls@^1.0.0, data-urls@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" dependencies: @@ -3039,14 +4007,15 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" -date-format@^0.0.0: - version "0.0.0" - resolved "http://registry.npmjs.org/date-format/-/date-format-0.0.0.tgz#09206863ab070eb459acea5542cbd856b11966b3" - date-format@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/date-format/-/date-format-1.2.0.tgz#615e828e233dd1ab9bb9ae0950e0ceccfa6ecad8" +date-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.0.0.tgz#7cf7b172f1ec564f0003b39ea302c5498fb98c8f" + integrity sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA== + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" @@ -3062,11 +4031,10 @@ dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" -debug@2, debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9, debug@~2.6.4, debug@~2.6.6: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - dependencies: - ms "2.0.0" +debounce@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== debug@2.6.7: version "2.6.7" @@ -3074,16 +4042,18 @@ debug@2.6.7: dependencies: ms "2.0.0" +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + debug@3.1.0, debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" -debug@^0.7.2: - version "0.7.4" - resolved "http://registry.npmjs.org/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" - debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -3096,6 +4066,13 @@ debug@^4.0.1: dependencies: ms "^2.1.1" +debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -3133,12 +4110,24 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +deepmerge@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.2.0.tgz#58ef463a57c08d376547f8869fdc5bcee957f44e" + integrity sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow== + default-require-extensions@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" dependencies: strip-bom "^2.0.0" +default-require-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" + integrity sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc= + dependencies: + strip-bom "^3.0.0" + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" @@ -3170,14 +4159,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -degenerator@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095" - dependencies: - ast-types "0.x.x" - escodegen "1.x.x" - esprima "3.x.x" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -3237,14 +4218,24 @@ di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" +diff-sequences@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.0.0.tgz#cdf8e27ed20d8b8d3caccb4e0c0d8fe31a173013" + integrity sha512-46OkIuVGBBnrC0soO/4LHu5LHGHx0uhP65OVz8XOrAJpqiCB2aVIuESvjI1F9oqebuvY8lekS1pt6TN7vt7qsw== + diff@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" -diff@^3.2.0, diff@^3.5.0: +diff@3.5.0, diff@^3.2.0, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" +diff@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff" + integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q== + diffie-hellman@^5.0.0: version "5.0.3" resolved "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -3269,7 +4260,7 @@ dom-serialize@^2.2.0: extend "^3.0.0" void-elements "^2.0.0" -domain-browser@^1.1.1, domain-browser@^1.1.7: +domain-browser@^1.1.1, domain-browser@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -3291,10 +4282,6 @@ dot-prop@^4.1.0, dot-prop@^4.2.0: dependencies: is-obj "^1.0.0" -double-ended-queue@^2.1.0-0: - version "2.1.0-0" - resolved "https://registry.yarnpkg.com/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz#103d3527fd31528f40188130c841efdd78264e5c" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -3365,9 +4352,10 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -engine.io-client@~3.1.0: - version "3.1.6" - resolved "http://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz#5bdeb130f8b94a50ac5cbeb72583e7a4a063ddfd" +engine.io-client@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.2.1.tgz#6f54c0475de487158a1a7c77d10178708b6add36" + integrity sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw== dependencies: component-emitter "1.2.1" component-inherit "0.0.3" @@ -3391,9 +4379,10 @@ engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: blob "0.0.5" has-binary2 "~1.0.2" -engine.io@~3.1.0: - version "3.1.5" - resolved "http://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz#0e7ef9d690eb0b35597f1d4ad02a26ca2dba3845" +engine.io@~3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.2.1.tgz#b60281c35484a70ee0351ea0ebff83ec8c9522a2" + integrity sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w== dependencies: accepts "~1.3.4" base64id "1.0.0" @@ -3401,8 +4390,6 @@ engine.io@~3.1.0: debug "~3.1.0" engine.io-parser "~2.1.0" ws "~3.3.1" - optionalDependencies: - uws "~9.14.0" enhanced-resolve@^4.1.0: version "4.1.0" @@ -3454,6 +4441,11 @@ es6-promise@^4.0.3: version "4.2.5" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" +es6-promise@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.0.2.tgz#010d5858423a5f118979665f46486a95c6ee2bb6" + integrity sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y= + es6-promisify@^5.0.0: version "5.0.0" resolved "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" @@ -3479,7 +4471,7 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -escodegen@1.x.x, escodegen@^1.9.1: +escodegen@^1.11.0, escodegen@^1.9.1: version "1.11.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" dependencies: @@ -3501,7 +4493,7 @@ esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" -esprima@3.x.x, esprima@^3.1.3: +esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -3535,14 +4527,24 @@ etag@~1.8.0, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" +event-target-shim@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.0.tgz#8fabe06975219af64c36ceed4771cf1ad1c3455c" + integrity sha512-vu4tlY5xqMEGj/rzuDHxfvm9Kk2562O5h58i8xwnkMkv/yqmBqBcDJt/vGBrOBbCKuVc5eV3ghYxAX9YUhyi0w== + eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" -events@^1.0.0, events@^1.1.1: +events@^1.0.0: version "1.1.1" resolved "http://registry.npmjs.org/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" +events@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -3664,17 +4666,6 @@ expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^22.4.0: - version "22.4.3" - resolved "http://registry.npmjs.org/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" - dependencies: - ansi-styles "^3.2.0" - jest-diff "^22.4.3" - jest-get-type "^22.4.3" - jest-matcher-utils "^22.4.3" - jest-message-util "^22.4.3" - jest-regex-util "^22.4.3" - expect@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" @@ -3686,6 +4677,17 @@ expect@^23.6.0: jest-message-util "^23.4.0" jest-regex-util "^23.3.0" +expect@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-24.1.0.tgz#88e73301c4c785cde5f16da130ab407bdaf8c0f2" + integrity sha512-lVcAPhaYkQcIyMS+F8RVwzbm1jro20IG8OkvxQ6f1JfqhVZyyudCwYogQ7wnktlf14iF3ii7ArIUO/mqvrW9Gw== + dependencies: + ansi-styles "^3.2.0" + jest-get-type "^24.0.0" + jest-matcher-utils "^24.0.0" + jest-message-util "^24.0.0" + jest-regex-util "^24.0.0" + express@^4.16.4: version "4.16.4" resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" @@ -3721,12 +4723,6 @@ express@^4.16.4: utils-merge "1.0.1" vary "~1.1.2" -extend-shallow@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" - dependencies: - kind-of "^1.1.0" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -3740,7 +4736,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@3, extend@^3.0.0, extend@^3.0.1, extend@~3.0.0, extend@~3.0.2: +extend@^3.0.0, extend@^3.0.1, extend@^3.0.2, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" @@ -3802,6 +4798,11 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +fast-text-encoding@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz#3e5ce8293409cfaa7177a71b9ca84e1b1e6f25ef" + integrity sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ== + fb-watchman@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" @@ -3818,15 +4819,11 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-uri-to-path@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" -fileset@^2.0.2: +fileset@^2.0.2, fileset@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" dependencies: @@ -3907,6 +4904,11 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + flush-write-stream@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" @@ -3914,12 +4916,6 @@ flush-write-stream@^1.0.0: inherits "^2.0.1" readable-stream "^2.0.4" -follow-redirects@1.0.0: - version "1.0.0" - resolved "http://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" - dependencies: - debug "^2.2.0" - follow-redirects@^1.0.0, follow-redirects@^1.3.0: version "1.5.10" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" @@ -3940,15 +4936,7 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@~2.0.0: - version "2.0.0" - resolved "http://registry.npmjs.org/form-data/-/form-data-2.0.0.tgz#6f0aebadcc5da16c13e1ecc11137d85f9b883b25" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.11" - -form-data@~2.3.0, form-data@~2.3.2: +form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" dependencies: @@ -3987,10 +4975,6 @@ fs-access@^1.0.0: dependencies: null-check "^1.0.0" -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - fs-exists-sync@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" @@ -4003,15 +4987,7 @@ fs-extra@3.0.1: jsonfile "^3.0.0" universalify "^0.1.0" -fs-extra@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0: +fs-extra@7.0.1, fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" dependencies: @@ -4045,6 +5021,14 @@ fsevents@^1.2.2, fsevents@^1.2.3: nan "^2.9.2" node-pre-gyp "^0.10.0" +fsevents@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" + integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" @@ -4054,13 +5038,6 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -ftp@~0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -4078,6 +5055,16 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gaxios@^1.0.2, gaxios@^1.0.4, gaxios@^1.2.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-1.7.0.tgz#cf1638426411cb362403038e0787105f5bf08d22" + integrity sha512-2SaZTtaEgnSMgRrBVnPA5O9Tc8xWfnL48fuxFL7zOHZwnam3HiNOkoosnRgnkNBZoEZrH1Aja3wMCrrDtOEqUw== + dependencies: + abort-controller "^2.0.2" + extend "^3.0.2" + https-proxy-agent "^2.2.1" + node-fetch "^2.2.0" + gcp-metadata@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.7.0.tgz#6c35dbb52bda32a427bb9c98f54237ddd1b5406f" @@ -4086,6 +5073,14 @@ gcp-metadata@^0.7.0: extend "^3.0.1" retry-axios "0.3.2" +gcp-metadata@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.9.3.tgz#1f9d7495f7460a14526481f29e11596dd563dd26" + integrity sha512-caV4S84xAjENtpezLCT/GILEAF5h/bC4cNqZFmt/tjTn8t+JBtTkQrgBrJu3857YdsnlM8rxX/PMcKGtE8hUlw== + dependencies: + gaxios "^1.0.2" + json-bigint "^0.3.0" + gcs-resumable-upload@^0.13.0: version "0.13.0" resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-0.13.0.tgz#706e5c835e4c53cd5527b86013c9f4dda4bfcb14" @@ -4097,17 +5092,16 @@ gcs-resumable-upload@^0.13.0: request "^2.87.0" stream-events "^1.0.4" -generate-function@^2.0.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.3.1.tgz#f069617690c10c868e73b8465746764f97c3479f" - dependencies: - is-property "^1.0.2" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" +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== dependencies: - is-property "^1.0.0" + configstore "^4.0.0" + google-auth-library "^3.0.0" + pumpify "^1.5.1" + request "^2.87.0" + stream-events "^1.0.4" genfun@^5.0.0: version "5.0.0" @@ -4157,17 +5151,6 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-uri@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-2.0.2.tgz#5c795e71326f6ca1286f2fc82575cd2bab2af578" - dependencies: - data-uri-to-buffer "1" - debug "2" - extend "3" - file-uri-to-path "1" - ftp "~0.3.10" - readable-stream "2" - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -4210,6 +5193,21 @@ git-semver-tags@^2.0.2: meow "^4.0.0" semver "^5.5.0" +git-up@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.1.tgz#cb2ef086653640e721d2042fe3104857d89007c0" + integrity sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw== + dependencies: + is-ssh "^1.3.0" + parse-url "^5.0.0" + +git-url-parse@^11.1.2: + version "11.1.2" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.1.2.tgz#aff1a897c36cc93699270587bea3dbcbbb95de67" + integrity sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ== + dependencies: + git-up "^4.0.0" + gitconfiglocal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" @@ -4272,6 +5270,11 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +globals@^11.1.0: + version "11.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" + integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -4301,6 +5304,21 @@ google-auth-library@^2.0.0: lru-cache "^4.1.3" semver "^5.5.0" +google-auth-library@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-3.1.0.tgz#6378ea3e56067312209eee58223e5a00adaec639" + integrity sha512-EntjrOgSffw5EhZGoV8+ROPwEK/aQpoMZaULw3bKailEGdjaUI25PmmFc4AN6vG/Q24YEUiuLxtTXa1Usar5Eg== + dependencies: + base64-js "^1.3.0" + fast-text-encoding "^1.0.0" + gaxios "^1.2.1" + gcp-metadata "^0.9.3" + 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" @@ -4324,7 +5342,7 @@ got@^6.7.1: unzip-response "^2.0.1" url-parse-lax "^1.0.0" -graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" @@ -4332,6 +5350,11 @@ growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -4346,6 +5369,17 @@ gtoken@^2.3.0: mime "^2.2.0" pify "^3.0.0" +gtoken@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-2.3.2.tgz#49890a866c1f44e173099be95515db5872a92151" + integrity sha512-F8EObUGyC8Qd3WXTloNULZBwfUsOABoHElihB1F6zGhT/cy38iPL09wGLRY712I+hQnOyA+sYlgPFX2cOKz0qg== + dependencies: + gaxios "^1.0.4" + google-p12-pem "^1.0.0" + jws "^3.1.5" + mime "^2.2.0" + pify "^4.0.0" + handlebars@4.0.10: version "4.0.10" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" @@ -4366,19 +5400,21 @@ handlebars@^4.0.1, handlebars@^4.0.2, handlebars@^4.0.3, handlebars@^4.0.6: optionalDependencies: uglify-js "^3.1.4" +handlebars@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" + integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== + dependencies: + async "^2.5.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" -har-validator@~2.0.6: - version "2.0.6" - resolved "http://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" - dependencies: - chalk "^1.1.1" - commander "^2.9.0" - is-my-json-valid "^2.12.4" - pinkie-promise "^2.0.0" - har-validator@~5.1.0: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" @@ -4475,15 +5511,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hawk@~3.1.3: - version "3.1.3" - resolved "http://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -4492,12 +5519,10 @@ highlight.js@^9.0.0, highlight.js@^9.12.0: version "9.13.1" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" -hipchat-notifier@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz#b6d249755437c191082367799d3ba9a0f23b231e" - dependencies: - lodash "^4.0.0" - request "^2.0.0" +highlight.js@^9.13.1: + version "9.14.2" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.14.2.tgz#efbfb22dc701406e4da406056ef8c2b70ebe5b26" + integrity sha512-Nc6YNECYpxyJABGYJAyw7dBAYbXEuIzwzkqoJnwbc1nIpCiN+3ioYf0XrBnLiyyG0JLuJhpPtt2iTSbXiKLoyA== hmac-drbg@^1.0.0: version "1.0.1" @@ -4507,10 +5532,6 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@2.x.x: - version "2.16.3" - resolved "http://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -4562,14 +5583,6 @@ http-proxy@^1.13.0: follow-redirects "^1.0.0" requires-port "^1.0.0" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4578,17 +5591,6 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -httpntlm@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/httpntlm/-/httpntlm-1.6.1.tgz#ad01527143a2e8773cfae6a96f58656bb52a34b2" - dependencies: - httpreq ">=0.4.22" - underscore "~1.7.0" - -httpreq@>=0.4.22: - version "0.4.24" - resolved "https://registry.yarnpkg.com/httpreq/-/httpreq-0.4.24.tgz#4335ffd82cd969668a39465c929ac61d6393627f" - https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" @@ -4644,6 +5646,11 @@ ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -4662,6 +5669,14 @@ import-local@^1.0.0: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -4680,14 +5695,6 @@ indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" -inflection@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" - -inflection@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.3.8.tgz#cbd160da9f75b14c3cc63578d4f396784bf3014e" - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4762,7 +5769,7 @@ invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" -ip@1.1.5, ip@^1.1.2, ip@^1.1.5: +ip@1.1.5, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" @@ -4814,7 +5821,14 @@ is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" dependencies: - ci-info "^1.5.0" + ci-info "^1.5.0" + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" is-data-descriptor@^0.1.4: version "0.1.4" @@ -4900,6 +5914,11 @@ is-generator-fn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" +is-generator-fn@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e" + integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g== + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -4922,20 +5941,6 @@ is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" -is-my-ip-valid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz#7b351b8e8edd4d3995d4d066680e664d94696824" - -is-my-json-valid@^2.12.4: - version "2.19.0" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz#8fd6e40363cd06b963fa877d444bfb5eddc62175" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - is-my-ip-valid "^1.0.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -4986,10 +5991,6 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" -is-property@^1.0.0, is-property@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -5004,6 +6005,13 @@ is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" +is-ssh@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.1.tgz#f349a8cadd24e65298037a522cf7520f2e81a0f3" + integrity sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg== + dependencies: + protocols "^1.1.0" + is-stream-ended@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-stream-ended/-/is-stream-ended-0.1.4.tgz#f50224e95e06bce0e356d440a4827cd35b267eda" @@ -5084,7 +6092,7 @@ isstream@0.1.2, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-api@^1.1.14, istanbul-api@^1.3.1: +istanbul-api@^1.3.1: version "1.3.7" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" dependencies: @@ -5100,17 +6108,48 @@ istanbul-api@^1.1.14, istanbul-api@^1.3.1: mkdirp "^0.5.1" once "^1.4.0" -istanbul-lib-coverage@^1.1.1, istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: +istanbul-api@^2.0.8: + version "2.1.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.1.tgz#194b773f6d9cbc99a9258446848b0f988951c4d0" + integrity sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw== + dependencies: + async "^2.6.1" + compare-versions "^3.2.1" + fileset "^2.0.3" + istanbul-lib-coverage "^2.0.3" + istanbul-lib-hook "^2.0.3" + istanbul-lib-instrument "^3.1.0" + istanbul-lib-report "^2.0.4" + istanbul-lib-source-maps "^3.0.2" + istanbul-reports "^2.1.1" + js-yaml "^3.12.0" + make-dir "^1.3.0" + minimatch "^3.0.4" + once "^1.4.0" + +istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" +istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" + integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw== + istanbul-lib-hook@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2, istanbul-lib-instrument@^1.8.0: +istanbul-lib-hook@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz#e0e581e461c611be5d0e5ef31c5f0109759916fb" + integrity sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA== + dependencies: + append-transform "^1.0.0" + +istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" dependencies: @@ -5122,6 +6161,19 @@ istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2, istanbul-lib-i istanbul-lib-coverage "^1.2.1" semver "^5.3.0" +istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" + integrity sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA== + dependencies: + "@babel/generator" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/template" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + istanbul-lib-coverage "^2.0.3" + semver "^5.5.0" + istanbul-lib-report@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" @@ -5131,7 +6183,16 @@ istanbul-lib-report@^1.1.5: path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: +istanbul-lib-report@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz#bfd324ee0c04f59119cb4f07dab157d09f24d7e4" + integrity sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA== + dependencies: + istanbul-lib-coverage "^2.0.3" + make-dir "^1.3.0" + supports-color "^6.0.0" + +istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" dependencies: @@ -5141,12 +6202,30 @@ istanbul-lib-source-maps@^1.2.1, istanbul-lib-source-maps@^1.2.4, istanbul-lib-s rimraf "^2.6.1" source-map "^0.5.3" +istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156" + integrity sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.3" + make-dir "^1.3.0" + rimraf "^2.6.2" + source-map "^0.6.1" + istanbul-reports@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" dependencies: handlebars "^4.0.3" +istanbul-reports@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz#72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9" + integrity sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw== + dependencies: + handlebars "^4.1.0" + istanbul@0.4.5, istanbul@^0.4.0: version "0.4.5" resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" @@ -5166,56 +6245,19 @@ istanbul@0.4.5, istanbul@^0.4.0: which "^1.1.1" wordwrap "^1.0.0" -jest-changed-files@^22.2.0: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2" - dependencies: - throat "^4.0.0" - jest-changed-files@^23.4.2: version "23.4.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" dependencies: throat "^4.0.0" -jest-cli@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.4.tgz#68cd2a2aae983adb1e6638248ca21082fd6d9e90" +jest-changed-files@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.0.0.tgz#c02c09a8cc9ca93f513166bc773741bd39898ff7" + integrity sha512-nnuU510R9U+UX0WNb5XFEcsrMqriSiRLeO9KWDFgPrpToaQm60prfQYpxsXigdClpvNot5bekDY440x9dNGnsQ== dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.1.14" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-instrument "^1.8.0" - istanbul-lib-source-maps "^1.2.1" - jest-changed-files "^22.2.0" - jest-config "^22.4.4" - jest-environment-jsdom "^22.4.1" - jest-get-type "^22.1.0" - jest-haste-map "^22.4.2" - jest-message-util "^22.4.0" - jest-regex-util "^22.1.0" - jest-resolve-dependencies "^22.1.0" - jest-runner "^22.4.4" - jest-runtime "^22.4.4" - jest-snapshot "^22.4.0" - jest-util "^22.4.1" - jest-validate "^22.4.4" - jest-worker "^22.2.2" - micromatch "^2.3.11" - node-notifier "^5.2.1" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^10.0.3" + execa "^1.0.0" + throat "^4.0.0" jest-cli@^23.6.0: version "23.6.0" @@ -5258,21 +6300,49 @@ jest-cli@^23.6.0: which "^1.2.12" yargs "^11.0.0" -jest-config@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.4.tgz#72a521188720597169cd8b4ff86934ef5752d86a" +jest-cli@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.1.0.tgz#f7cc98995f36e7210cce3cbb12974cbf60940843" + integrity sha512-U/iyWPwOI0T1CIxVLtk/2uviOTJ/OiSWJSe8qt6X1VkbbgP+nrtLJlmT9lPBe4lK78VNFJtrJ7pttcNv/s7yCw== dependencies: + ansi-escapes "^3.0.0" chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^22.4.1" - jest-environment-node "^22.4.1" - jest-get-type "^22.1.0" - jest-jasmine2 "^22.4.4" - jest-regex-util "^22.1.0" - jest-resolve "^22.4.2" - jest-util "^22.4.1" - jest-validate "^22.4.4" - pretty-format "^22.4.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.1.15" + import-local "^2.0.0" + is-ci "^2.0.0" + istanbul-api "^2.0.8" + istanbul-lib-coverage "^2.0.2" + istanbul-lib-instrument "^3.0.1" + istanbul-lib-source-maps "^3.0.1" + jest-changed-files "^24.0.0" + jest-config "^24.1.0" + jest-environment-jsdom "^24.0.0" + jest-get-type "^24.0.0" + jest-haste-map "^24.0.0" + jest-message-util "^24.0.0" + jest-regex-util "^24.0.0" + jest-resolve-dependencies "^24.1.0" + jest-runner "^24.1.0" + jest-runtime "^24.1.0" + jest-snapshot "^24.1.0" + jest-util "^24.0.0" + jest-validate "^24.0.0" + jest-watcher "^24.0.0" + jest-worker "^24.0.0" + micromatch "^3.1.10" + node-notifier "^5.2.1" + p-each-series "^1.0.0" + pirates "^4.0.0" + prompts "^2.0.1" + realpath-native "^1.0.0" + rimraf "^2.5.4" + slash "^2.0.0" + string-length "^2.0.0" + strip-ansi "^5.0.0" + which "^1.2.12" + yargs "^12.0.2" jest-config@^23.6.0: version "23.6.0" @@ -5293,14 +6363,26 @@ jest-config@^23.6.0: micromatch "^2.3.11" pretty-format "^23.6.0" -jest-diff@^22.4.0, jest-diff@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" +jest-config@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.1.0.tgz#6ea6881cfdd299bc86cc144ee36d937c97c3850c" + integrity sha512-FbbRzRqtFC6eGjG5VwsbW4E5dW3zqJKLWYiZWhB0/4E5fgsMw8GODLbGSrY5t17kKOtCWb/Z7nsIThRoDpuVyg== dependencies: + "@babel/core" "^7.1.0" + babel-jest "^24.1.0" chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.4.3" - pretty-format "^22.4.3" + glob "^7.1.1" + jest-environment-jsdom "^24.0.0" + jest-environment-node "^24.0.0" + jest-get-type "^24.0.0" + jest-jasmine2 "^24.1.0" + jest-regex-util "^24.0.0" + jest-resolve "^24.1.0" + jest-util "^24.0.0" + jest-validate "^24.0.0" + micromatch "^3.1.10" + pretty-format "^24.0.0" + realpath-native "^1.0.2" jest-diff@^23.6.0: version "23.6.0" @@ -5311,11 +6393,15 @@ jest-diff@^23.6.0: jest-get-type "^22.1.0" pretty-format "^23.6.0" -jest-docblock@^22.4.0, jest-docblock@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19" +jest-diff@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.0.0.tgz#a3e5f573dbac482f7d9513ac9cfa21644d3d6b34" + integrity sha512-XY5wMpRaTsuMoU+1/B2zQSKQ9RdE9gsLkGydx3nvApeyPijLA8GtEvIcPwISRCer+VDf9W1mStTYYq6fPt8ryA== dependencies: - detect-newline "^2.1.0" + chalk "^2.0.1" + diff-sequences "^24.0.0" + jest-get-type "^24.0.0" + pretty-format "^24.0.0" jest-docblock@^23.2.0: version "23.2.0" @@ -5323,6 +6409,13 @@ jest-docblock@^23.2.0: dependencies: detect-newline "^2.1.0" +jest-docblock@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.0.0.tgz#54d77a188743e37f62181a91a01eb9222289f94e" + integrity sha512-KfAKZ4SN7CFOZpWg4i7g7MSlY0M+mq7K0aMqENaG2vHuhC9fc3vkpU/iNN9sOus7v3h3Y48uEjqz3+Gdn2iptA== + dependencies: + detect-newline "^2.1.0" + jest-each@^23.6.0: version "23.6.0" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" @@ -5330,13 +6423,15 @@ jest-each@^23.6.0: chalk "^2.0.1" pretty-format "^23.6.0" -jest-environment-jsdom@^22.4.1: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" +jest-each@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.0.0.tgz#10987a06b21c7ffbfb7706c89d24c52ed864be55" + integrity sha512-gFcbY4Cu55yxExXMkjrnLXov3bWO3dbPAW7HXb31h/DNWdNc/6X8MtxGff8nh3/MjkF9DpVqnj0KsPKuPK0cpA== dependencies: - jest-mock "^22.4.3" - jest-util "^22.4.3" - jsdom "^11.5.1" + chalk "^2.0.1" + jest-get-type "^24.0.0" + jest-util "^24.0.0" + pretty-format "^24.0.0" jest-environment-jsdom@^23.4.0: version "23.4.0" @@ -5346,12 +6441,14 @@ jest-environment-jsdom@^23.4.0: jest-util "^23.4.0" jsdom "^11.5.1" -jest-environment-node@^22.4.1: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" +jest-environment-jsdom@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.0.0.tgz#5affa0654d6e44cd798003daa1a8701dbd6e4d11" + integrity sha512-1YNp7xtxajTRaxbylDc2pWvFnfDTH5BJJGyVzyGAKNt/lEULohwEV9zFqTgG4bXRcq7xzdd+sGFws+LxThXXOw== dependencies: - jest-mock "^22.4.3" - jest-util "^22.4.3" + jest-mock "^24.0.0" + jest-util "^24.0.0" + jsdom "^11.5.1" jest-environment-node@^23.4.0: version "23.4.0" @@ -5360,21 +6457,22 @@ jest-environment-node@^23.4.0: jest-mock "^23.2.0" jest-util "^23.4.0" -jest-get-type@^22.1.0, jest-get-type@^22.4.3: +jest-environment-node@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.0.0.tgz#330948980656ed8773ce2e04eb597ed91e3c7190" + integrity sha512-62fOFcaEdU0VLaq8JL90TqwI7hLn0cOKOl8vY2n477vRkCJRojiRRtJVRzzCcgFvs6gqU97DNqX5R0BrBP6Rxg== + dependencies: + jest-mock "^24.0.0" + jest-util "^24.0.0" + +jest-get-type@^22.1.0: version "22.4.3" resolved "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" -jest-haste-map@^22.4.2: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.4.3.tgz#25842fa2ba350200767ac27f658d58b9d5c2e20b" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "^22.4.3" - jest-serializer "^22.4.3" - jest-worker "^22.4.3" - micromatch "^2.3.11" - sane "^2.0.0" +jest-get-type@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b" + integrity sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w== jest-haste-map@^23.6.0: version "23.6.0" @@ -5389,21 +6487,19 @@ jest-haste-map@^23.6.0: micromatch "^2.3.11" sane "^2.0.0" -jest-jasmine2@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.4.tgz#c55f92c961a141f693f869f5f081a79a10d24e23" +jest-haste-map@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.0.0.tgz#e9ef51b2c9257384b4d6beb83bd48c65b37b5e6e" + integrity sha512-CcViJyUo41IQqttLxXVdI41YErkzBKbE6cS6dRAploCeutePYfUimWd3C9rQEWhX0YBOQzvNsC0O9nYxK2nnxQ== dependencies: - chalk "^2.0.1" - co "^4.6.0" - expect "^22.4.0" - graceful-fs "^4.1.11" - is-generator-fn "^1.0.0" - jest-diff "^22.4.0" - jest-matcher-utils "^22.4.0" - jest-message-util "^22.4.0" - jest-snapshot "^22.4.0" - jest-util "^22.4.1" - source-map-support "^0.5.0" + fb-watchman "^2.0.0" + graceful-fs "^4.1.15" + invariant "^2.2.4" + jest-serializer "^24.0.0" + jest-util "^24.0.0" + jest-worker "^24.0.0" + micromatch "^3.1.10" + sane "^3.0.0" jest-jasmine2@^23.6.0: version "23.6.0" @@ -5422,11 +6518,23 @@ jest-jasmine2@^23.6.0: jest-util "^23.4.0" pretty-format "^23.6.0" -jest-leak-detector@^22.4.0: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz#2b7b263103afae8c52b6b91241a2de40117e5b35" +jest-jasmine2@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.1.0.tgz#8377324b967037c440f0a549ee0bbd9912055db6" + integrity sha512-H+o76SdSNyCh9fM5K8upK45YTo/DiFx5w2YAzblQebSQmukDcoVBVeXynyr7DDnxh+0NTHYRCLwJVf3tC518wg== dependencies: - pretty-format "^22.4.3" + "@babel/traverse" "^7.1.0" + chalk "^2.0.1" + co "^4.6.0" + expect "^24.1.0" + is-generator-fn "^2.0.0" + jest-each "^24.0.0" + jest-matcher-utils "^24.0.0" + jest-message-util "^24.0.0" + jest-snapshot "^24.1.0" + jest-util "^24.0.0" + pretty-format "^24.0.0" + throat "^4.0.0" jest-leak-detector@^23.6.0: version "23.6.0" @@ -5434,13 +6542,12 @@ jest-leak-detector@^23.6.0: dependencies: pretty-format "^23.6.0" -jest-matcher-utils@^22.4.0, jest-matcher-utils@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" +jest-leak-detector@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.0.0.tgz#78280119fd05ee98317daee62cddb3aa537a31c6" + integrity sha512-ZYHJYFeibxfsDSKowjDP332pStuiFT2xfc5R67Rjm/l+HFJWJgNIOCOlQGeXLCtyUn3A23+VVDdiCcnB6dTTrg== dependencies: - chalk "^2.0.1" - jest-get-type "^22.4.3" - pretty-format "^22.4.3" + pretty-format "^24.0.0" jest-matcher-utils@^23.6.0: version "23.6.0" @@ -5450,15 +6557,15 @@ jest-matcher-utils@^23.6.0: jest-get-type "^22.1.0" pretty-format "^23.6.0" -jest-message-util@^22.4.0, jest-message-util@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" +jest-matcher-utils@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.0.0.tgz#fc9c41cfc49b2c3ec14e576f53d519c37729d579" + integrity sha512-LQTDmO+aWRz1Tf9HJg+HlPHhDh1E1c65kVwRFo5mwCVp5aQDzlkz4+vCvXhOKFjitV2f0kMdHxnODrXVoi+rlA== dependencies: - "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - stack-utils "^1.0.1" + jest-diff "^24.0.0" + jest-get-type "^24.0.0" + pretty-format "^24.0.0" jest-message-util@^23.4.0: version "23.4.0" @@ -5470,27 +6577,34 @@ jest-message-util@^23.4.0: slash "^1.0.0" stack-utils "^1.0.1" -jest-mock@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" +jest-message-util@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.0.0.tgz#a07a141433b2c992dbaec68d4cbfe470ba289619" + integrity sha512-J9ROJIwz/IeC+eV1XSwnRK4oAwPuhmxEyYx1+K5UI+pIYwFZDSrfZaiWTdq0d2xYFw4Xiu+0KQWsdsQpgJMf3Q== + dependencies: + "@babel/code-frame" "^7.0.0" + chalk "^2.0.1" + micromatch "^3.1.10" + slash "^2.0.0" + stack-utils "^1.0.1" jest-mock@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" -jest-regex-util@^22.1.0, jest-regex-util@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" +jest-mock@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.0.0.tgz#9a4b53e01d66a0e780f7d857462d063e024c617d" + integrity sha512-sQp0Hu5fcf5NZEh1U9eIW2qD0BwJZjb63Yqd98PQJFvf/zzUTBoUAwv/Dc/HFeNHIw1f3hl/48vNn+j3STaI7A== jest-regex-util@^23.3.0: version "23.3.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" -jest-resolve-dependencies@^22.1.0: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz#e2256a5a846732dc3969cb72f3c9ad7725a8195e" - dependencies: - jest-regex-util "^22.4.3" +jest-regex-util@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.0.0.tgz#4feee8ec4a358f5bee0a654e94eb26163cb9089a" + integrity sha512-Jv/uOTCuC+PY7WpJl2mpoI+WbY2ut73qwwO9ByJJNwOCwr1qWhEW2Lyi2S9ZewUdJqeVpEBisdEVZSI+Zxo58Q== jest-resolve-dependencies@^23.6.0: version "23.6.0" @@ -5499,12 +6613,13 @@ jest-resolve-dependencies@^23.6.0: jest-regex-util "^23.3.0" jest-snapshot "^23.6.0" -jest-resolve@^22.4.2: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" +jest-resolve-dependencies@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.1.0.tgz#78f738a2ec59ff4d00751d9da56f176e3f589f6c" + integrity sha512-2VwPsjd3kRPu7qe2cpytAgowCObk5AKeizfXuuiwgm1a9sijJDZe8Kh1sFj6FKvSaNEfCPlBVkZEJa2482m/Uw== dependencies: - browser-resolve "^1.11.2" - chalk "^2.0.1" + jest-regex-util "^24.0.0" + jest-snapshot "^24.1.0" jest-resolve@^23.6.0: version "23.6.0" @@ -5514,21 +6629,14 @@ jest-resolve@^23.6.0: chalk "^2.0.1" realpath-native "^1.0.0" -jest-runner@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.4.tgz#dfca7b7553e0fa617e7b1291aeb7ce83e540a907" +jest-resolve@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.1.0.tgz#42ff0169b0ea47bfdbd0c52a0067ca7d022c7688" + integrity sha512-TPiAIVp3TG6zAxH28u/6eogbwrvZjBMWroSLBDkwkHKrqxB/RIdwkWDye4uqPlZIXWIaHtifY3L0/eO5Z0f2wg== dependencies: - exit "^0.1.2" - jest-config "^22.4.4" - jest-docblock "^22.4.0" - jest-haste-map "^22.4.2" - jest-jasmine2 "^22.4.4" - jest-leak-detector "^22.4.0" - jest-message-util "^22.4.0" - jest-runtime "^22.4.4" - jest-util "^22.4.1" - jest-worker "^22.2.2" - throat "^4.0.0" + browser-resolve "^1.11.3" + chalk "^2.0.1" + realpath-native "^1.0.0" jest-runner@^23.6.0: version "23.6.0" @@ -5548,30 +6656,25 @@ jest-runner@^23.6.0: source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.4.tgz#9ba7792fc75582a5be0f79af6f8fe8adea314048" +jest-runner@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.1.0.tgz#3686a2bb89ce62800da23d7fdc3da2c32792943b" + integrity sha512-CDGOkT3AIFl16BLL/OdbtYgYvbAprwJ+ExKuLZmGSCSldwsuU2dEGauqkpvd9nphVdAnJUcP12e/EIlnTX0QXg== dependencies: - babel-core "^6.0.0" - babel-jest "^22.4.4" - babel-plugin-istanbul "^4.1.5" - chalk "^2.0.1" - convert-source-map "^1.4.0" + chalk "^2.4.2" exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^22.4.4" - jest-haste-map "^22.4.2" - jest-regex-util "^22.1.0" - jest-resolve "^22.4.2" - jest-util "^22.4.1" - jest-validate "^22.4.4" - json-stable-stringify "^1.0.1" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^10.0.3" + graceful-fs "^4.1.15" + jest-config "^24.1.0" + jest-docblock "^24.0.0" + jest-haste-map "^24.0.0" + jest-jasmine2 "^24.1.0" + jest-leak-detector "^24.0.0" + jest-message-util "^24.0.0" + jest-runtime "^24.1.0" + jest-util "^24.0.0" + jest-worker "^24.0.0" + source-map-support "^0.5.6" + throat "^4.0.0" jest-runtime@^23.6.0: version "23.6.0" @@ -5599,24 +6702,42 @@ jest-runtime@^23.6.0: write-file-atomic "^2.1.0" yargs "^11.0.0" -jest-serializer@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-serializer/-/jest-serializer-22.4.3.tgz#a679b81a7f111e4766235f4f0c46d230ee0f7436" +jest-runtime@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.1.0.tgz#7c157a2e776609e8cf552f956a5a19ec9c985214" + integrity sha512-59/BY6OCuTXxGeDhEMU7+N33dpMQyXq7MLK07cNSIY/QYt2QZgJ7Tjx+rykBI0skAoigFl0A5tmT8UdwX92YuQ== + dependencies: + "@babel/core" "^7.1.0" + babel-plugin-istanbul "^5.1.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + exit "^0.1.2" + fast-json-stable-stringify "^2.0.0" + glob "^7.1.3" + graceful-fs "^4.1.15" + jest-config "^24.1.0" + jest-haste-map "^24.0.0" + jest-message-util "^24.0.0" + jest-regex-util "^24.0.0" + jest-resolve "^24.1.0" + jest-snapshot "^24.1.0" + jest-util "^24.0.0" + jest-validate "^24.0.0" + micromatch "^3.1.10" + realpath-native "^1.0.0" + slash "^2.0.0" + strip-bom "^3.0.0" + write-file-atomic "2.4.1" + yargs "^12.0.2" jest-serializer@^23.0.1: version "23.0.1" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" -jest-snapshot@^22.4.0: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" - dependencies: - chalk "^2.0.1" - jest-diff "^22.4.3" - jest-matcher-utils "^22.4.3" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^22.4.3" +jest-serializer@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.0.0.tgz#522c44a332cdd194d8c0531eb06a1ee5afb4256b" + integrity sha512-9FKxQyrFgHtx3ozU+1a8v938ILBE7S8Ko3uiAVjT8Yfi2o91j/fj81jacCQZ/Ihjiff/VsUCXVgQ+iF1XdImOw== jest-snapshot@^23.6.0: version "23.6.0" @@ -5633,17 +6754,21 @@ jest-snapshot@^23.6.0: pretty-format "^23.6.0" semver "^5.5.0" -jest-util@^22.4.1, jest-util@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" +jest-snapshot@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.1.0.tgz#85e22f810357aa5994ab61f236617dc2205f2f5b" + integrity sha512-th6TDfFqEmXvuViacU1ikD7xFb7lQsPn2rJl7OEmnfIVpnrx3QNY2t3PE88meeg0u/mQ0nkyvmC05PBqO4USFA== dependencies: - callsites "^2.0.0" + "@babel/types" "^7.0.0" chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^22.4.3" + jest-diff "^24.0.0" + jest-matcher-utils "^24.0.0" + jest-message-util "^24.0.0" + jest-resolve "^24.1.0" mkdirp "^0.5.1" - source-map "^0.6.0" + natural-compare "^1.4.0" + pretty-format "^24.0.0" + semver "^5.5.0" jest-util@^23.4.0: version "23.4.0" @@ -5658,15 +6783,19 @@ jest-util@^23.4.0: slash "^1.0.0" source-map "^0.6.0" -jest-validate@^22.4.4: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.4.tgz#1dd0b616ef46c995de61810d85f57119dbbcec4d" +jest-util@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.0.0.tgz#fd38fcafd6dedbd0af2944d7a227c0d91b68f7d6" + integrity sha512-QxsALc4wguYS7cfjdQSOr5HTkmjzkHgmZvIDkcmPfl1ib8PNV8QUWLwbKefCudWS0PRKioV+VbQ0oCUPC691fQ== dependencies: + callsites "^3.0.0" chalk "^2.0.1" - jest-config "^22.4.4" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^22.4.0" + graceful-fs "^4.1.15" + is-ci "^2.0.0" + jest-message-util "^24.0.0" + mkdirp "^0.5.1" + slash "^2.0.0" + source-map "^0.6.0" jest-validate@^23.6.0: version "23.6.0" @@ -5677,6 +6806,17 @@ jest-validate@^23.6.0: leven "^2.1.0" pretty-format "^23.6.0" +jest-validate@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020" + integrity sha512-vMrKrTOP4BBFIeOWsjpsDgVXATxCspC9S1gqvbJ3Tnn/b9ACsJmteYeVx9830UMV28Cob1RX55x96Qq3Tfad4g== + dependencies: + camelcase "^5.0.0" + chalk "^2.0.1" + jest-get-type "^24.0.0" + leven "^2.1.0" + pretty-format "^24.0.0" + jest-watcher@^23.4.0: version "23.4.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" @@ -5685,11 +6825,15 @@ jest-watcher@^23.4.0: chalk "^2.0.1" string-length "^2.0.0" -jest-worker@^22.2.2, jest-worker@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-worker/-/jest-worker-22.4.3.tgz#5c421417cba1c0abf64bf56bd5fb7968d79dd40b" +jest-watcher@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.0.0.tgz#20d44244d10b0b7312410aefd256c1c1eef68890" + integrity sha512-GxkW2QrZ4YxmW1GUWER05McjVDunBlKMFfExu+VsGmXJmpej1saTEKvONdx5RJBlVdpPI5x6E3+EDQSIGgl53g== dependencies: - merge-stream "^1.0.1" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + jest-util "^24.0.0" + string-length "^2.0.0" jest-worker@^23.2.0: version "23.2.0" @@ -5697,12 +6841,13 @@ jest-worker@^23.2.0: dependencies: merge-stream "^1.0.1" -jest@^22.4.3: - version "22.4.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.4.tgz#ffb36c9654b339a13e10b3d4b338eb3e9d49f6eb" +jest-worker@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0.tgz#3d3483b077bf04f412f47654a27bba7e947f8b6d" + integrity sha512-s64/OThpfQvoCeHG963MiEZOAAxu8kHsaL/rCMF7lpdzo7vgF0CtPml9hfguOMgykgH/eOm4jFP4ibfHLruytg== dependencies: - import-local "^1.0.0" - jest-cli "^22.4.4" + merge-stream "^1.0.1" + supports-color "^6.1.0" jest@^23.6.0: version "23.6.0" @@ -5711,6 +6856,14 @@ jest@^23.6.0: import-local "^1.0.0" jest-cli "^23.6.0" +jest@^24.1.0: + version "24.1.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-24.1.0.tgz#b1e1135caefcf2397950ecf7f90e395fde866fd2" + integrity sha512-+q91L65kypqklvlRFfXfdzUKyngQLOcwGhXQaLmVHv+d09LkNXuBuGxlofTFW42XMzu3giIcChchTsCNUjQ78A== + dependencies: + import-local "^2.0.0" + jest-cli "^24.1.0" + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5730,7 +6883,7 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdom@^11.12.0, jsdom@^11.5.1: +jsdom@^11.5.1: version "11.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" dependencies: @@ -5761,10 +6914,47 @@ jsdom@^11.12.0, jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" +jsdom@^13.2.0: + version "13.2.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.2.0.tgz#b1a0dbdadc255435262be8ea3723d2dba0d7eb3a" + integrity sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.0.9" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.5" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + jsesc@^1.3.0: version "1.3.0" resolved "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + jsesc@~0.5.0: version "0.5.0" resolved "http://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -5777,6 +6967,13 @@ jsome@^2.3.25: json-stringify-safe "^5.0.1" yargs "^11.0.0" +json-bigint@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-0.3.0.tgz#0ccd912c4b8270d05f056fbd13814b53d3825b1e" + integrity sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4= + dependencies: + bignumber.js "^7.0.0" + json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" @@ -5789,13 +6986,7 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@5.0.x, json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -5829,11 +7020,11 @@ jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" -jsonpointer@^4.0.0, jsonpointer@^4.0.1: +jsonpointer@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" -jsonwebtoken@^8.2.1: +jsonwebtoken@^8.2.1, jsonwebtoken@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.4.0.tgz#8757f7b4cb7440d86d5e2f3becefa70536c8e46a" dependencies: @@ -5856,10 +7047,26 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jszip@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.1.5.tgz#e3c2a6c6d706ac6e603314036d43cd40beefdf37" + integrity sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ== + dependencies: + core-js "~2.3.0" + es6-promise "~3.0.2" + lie "~3.1.0" + pako "~1.0.2" + readable-stream "~2.0.6" + just-extend@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-3.0.0.tgz#cee004031eaabf6406da03a7b84e4fe9d78ef288" +just-extend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc" + integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw== + jwa@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" @@ -5920,83 +7127,90 @@ karma-mocha@^1.3.0: dependencies: minimist "1.2.0" -karma-rollup-preprocessor@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/karma-rollup-preprocessor/-/karma-rollup-preprocessor-6.1.0.tgz#0dc43c691540325bd07cafe406c3d7604c9ca5a9" +karma-rollup-preprocessor@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/karma-rollup-preprocessor/-/karma-rollup-preprocessor-7.0.0.tgz#cb8e0f74a6b32e7a9fd74d2e5eaa799a1e8b6095" + integrity sha512-/a7bBtinT4+fdbnatCh5ZWvbqIqPzse7O3tvT4x9tadXsxPqybo1Lilpe7AKEmvhAcUwGRlcLOWeV66lIPFrXQ== dependencies: - chokidar "^2.0.0" + chokidar "^2.1.0" + debounce "^1.2.0" -karma-sauce-launcher@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-1.2.0.tgz#6f2558ddef3cf56879fa27540c8ae9f8bfd16bca" +karma-sauce-launcher@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/karma-sauce-launcher/-/karma-sauce-launcher-2.0.2.tgz#dbf98e70d86bf287b03a537cf637eb7aefa975c3" + integrity sha512-jLUFaJhHMcKpxFWUesyWYihzM5FvQiJsDwGcCtKeOy2lsWhkVw0V0Byqb1d+wU6myU1mribBtsIcub23HS4kWA== dependencies: - q "^1.5.0" - sauce-connect-launcher "^1.2.2" - saucelabs "^1.4.0" - wd "^1.4.0" + sauce-connect-launcher "^1.2.4" + saucelabs "^1.5.0" + selenium-webdriver "^4.0.0-alpha.1" karma-sinon@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/karma-sinon/-/karma-sinon-1.0.5.tgz#4e3443f2830fdecff624d3747163f1217daa2a9a" -karma-typescript-es6-transform@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/karma-typescript-es6-transform/-/karma-typescript-es6-transform-1.0.4.tgz#0ab2fd2fbd5f16e734a71f44a4cbf91b257be408" - dependencies: - acorn "^5.4.1" - babel-core "^6.23.1" - babel-preset-env "^1.6.1" - log4js "^1.1.1" - magic-string "^0.22.4" +karma-typescript-es6-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma-typescript-es6-transform/-/karma-typescript-es6-transform-4.0.0.tgz#677e47712c0b6c0ff5d2512b3559fbeb700cfc2a" + integrity sha512-NSeMfC4w+gFb3Q1+o32HFWGb4pLSvs9dHNy83jHi2f+bMoeVRNrfKQkz5Pg4e/PRyXHKLOEX1FPnBGZK3vJing== + dependencies: + acorn "^6.0.5" + acorn-walk "^6.1.1" + babel-core "^6.26.3" + babel-preset-env "^1.7.0" + log4js "^4.0.1" + magic-string "^0.25.1" -karma-typescript@^3.0.12: - version "3.0.13" - resolved "https://registry.yarnpkg.com/karma-typescript/-/karma-typescript-3.0.13.tgz#8948afbd103ac1987a5961a0f43a1ba2871067cd" +karma-typescript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma-typescript/-/karma-typescript-4.0.0.tgz#e75ab28770e1be840e68012857f9e4fd979039b6" + integrity sha512-D5mrwspHW8GtvbjYCz29DbxXYqoCOFhbnhZRkmSytWMCTFAwjSHMKxozOM5HeZomS2lqWV+S0WPk4DH9nxkGgA== dependencies: - acorn "^4.0.4" + acorn "^6.0.5" + acorn-walk "^6.1.1" assert "^1.4.1" - async "^2.1.4" - browser-resolve "^1.11.0" + async "^2.6.1" + browser-resolve "^1.11.3" browserify-zlib "^0.2.0" - buffer "^5.0.6" + buffer "^5.2.1" combine-source-map "^0.8.0" console-browserify "^1.1.0" constants-browserify "^1.0.0" - convert-source-map "^1.5.0" - crypto-browserify "^3.11.1" - diff "^3.2.0" - domain-browser "^1.1.7" - events "^1.1.1" - glob "^7.1.1" + convert-source-map "^1.6.0" + crypto-browserify "^3.12.0" + diff "^4.0.1" + domain-browser "^1.2.0" + events "^3.0.0" + glob "^7.1.3" https-browserify "^1.0.0" istanbul "0.4.5" json-stringify-safe "^5.0.1" karma-coverage "^1.1.1" - lodash "^4.17.4" - log4js "^1.1.1" - minimatch "^3.0.3" + lodash "^4.17.11" + log4js "^4.0.1" + minimatch "^3.0.4" os-browserify "^0.3.0" - pad "^2.0.0" - path-browserify "0.0.0" + pad "^2.2.2" + path-browserify "^1.0.0" process "^0.11.10" - punycode "^1.4.1" + punycode "^2.1.1" querystring-es3 "^0.2.1" - readable-stream "^2.3.3" - remap-istanbul "^0.10.1" - source-map "0.6.1" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.3" - timers-browserify "^2.0.2" - tmp "0.0.29" - tty-browserify "0.0.0" + readable-stream "^3.1.1" + remap-istanbul "^0.13.0" + source-map "^0.7.3" + stream-browserify "^2.0.2" + stream-http "^3.0.0" + string_decoder "^1.2.0" + timers-browserify "^2.0.10" + tmp "^0.0.33" + tty-browserify "^0.0.1" url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" + util "^0.11.1" + vm-browserify "1.1.0" -karma@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/karma/-/karma-2.0.5.tgz#3710c7a2e71b1c439313f283846d88e04e4f918c" +karma@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/karma/-/karma-4.0.0.tgz#f28e38a2b66243fde3f98e12a8dcaa2c6ff8ca9c" + integrity sha512-EFoFs3F6G0BcUGPNOn/YloGOb3h09hzTguyXlg6loHlKY76qbJikkcyPk43m2kfRF65TUGda/mig29QQtyhm1g== dependencies: bluebird "^3.3.0" body-parser "^1.16.1" @@ -6008,27 +7222,24 @@ karma@^2.0.2: di "^0.0.1" dom-serialize "^2.2.0" expand-braces "^0.1.1" + flatted "^2.0.0" glob "^7.1.1" graceful-fs "^4.1.2" http-proxy "^1.13.0" isbinaryfile "^3.0.0" - lodash "^4.17.4" - log4js "^2.5.3" - mime "^1.3.4" + lodash "^4.17.5" + log4js "^3.0.0" + mime "^2.3.1" minimatch "^3.0.2" optimist "^0.6.1" qjobs "^1.1.4" range-parser "^1.2.0" rimraf "^2.6.0" safe-buffer "^5.0.1" - socket.io "2.0.4" + socket.io "2.1.1" source-map "^0.6.1" tmp "0.0.33" - useragent "2.2.1" - -kind-of@^1.1.0: - version "1.1.0" - resolved "http://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + useragent "2.3.0" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -6054,6 +7265,11 @@ kleur@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" +kleur@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.2.tgz#83c7ec858a41098b613d5998a7b653962b504f68" + integrity sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q== + latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" @@ -6068,12 +7284,6 @@ lazy-req@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4" -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - dependencies: - readable-stream "^2.0.5" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -6090,6 +7300,29 @@ left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" +lerna@3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.13.0.tgz#3a9fe155d763a9814939a631ff958957322f2f31" + integrity sha512-MHaqqwfAdYIo0rAE0oOZRQ8eKbKyW035akLf0pz3YlWbdXKH91lxXRLj0BpbEytUz7hDbsv0FNNtXz9u5eTNFg== + dependencies: + "@lerna/add" "3.13.0" + "@lerna/bootstrap" "3.13.0" + "@lerna/changed" "3.13.0" + "@lerna/clean" "3.13.0" + "@lerna/cli" "3.13.0" + "@lerna/create" "3.13.0" + "@lerna/diff" "3.13.0" + "@lerna/exec" "3.13.0" + "@lerna/import" "3.13.0" + "@lerna/init" "3.13.0" + "@lerna/link" "3.13.0" + "@lerna/list" "3.13.0" + "@lerna/publish" "3.13.0" + "@lerna/run" "3.13.0" + "@lerna/version" "3.13.0" + import-local "^1.0.0" + npmlog "^4.1.2" + lerna@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.5.0.tgz#fd989b8992701e90e10aa5b3970d6f7a3512ba64" @@ -6123,30 +7356,36 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -libbase64@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/libbase64/-/libbase64-0.1.0.tgz#62351a839563ac5ff5bd26f12f60e9830bb751e6" - -libmime@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/libmime/-/libmime-3.0.0.tgz#51a1a9e7448ecbd32cda54421675bb21bc093da6" +libnpmaccess@^3.0.0, libnpmaccess@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.1.tgz#5b3a9de621f293d425191aa2e779102f84167fa8" dependencies: - iconv-lite "0.4.15" - libbase64 "0.1.0" - libqp "1.1.0" + aproba "^2.0.0" + get-stream "^4.0.0" + npm-package-arg "^6.1.0" + npm-registry-fetch "^3.8.0" -libnpmaccess@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.1.tgz#5b3a9de621f293d425191aa2e779102f84167fa8" +libnpmpublish@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-1.1.1.tgz#ff0c6bb0b4ad2bda2ad1f5fba6760a4af37125f0" + integrity sha512-nefbvJd/wY38zdt+b9SHL6171vqBrMtZ56Gsgfd0duEKb/pB8rDT4/ObUQLrHz1tOfht1flt2zM+UGaemzAG5g== dependencies: aproba "^2.0.0" + figgy-pudding "^3.5.1" get-stream "^4.0.0" + lodash.clonedeep "^4.5.0" + normalize-package-data "^2.4.0" npm-package-arg "^6.1.0" npm-registry-fetch "^3.8.0" + semver "^5.5.1" + ssri "^6.0.1" -libqp@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/libqp/-/libqp-1.1.0.tgz#f5e6e06ad74b794fb5b5b66988bf728ef1dedbe8" +lie@~3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" + integrity sha1-mkNrLMd0bKWd56QfpGmz77dr2H4= + dependencies: + immediate "~3.0.5" load-json-file@^1.0.0: version "1.1.0" @@ -6197,6 +7436,11 @@ lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -6249,6 +7493,11 @@ lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" +lodash.set@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" + integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -6266,56 +7515,44 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "~3.0.0" -lodash@4.17.11, lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.16.6, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.5.0, lodash@^4.8.0: +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@4.17.11, lodash@^4.13.1, lodash@^4.16.6, lodash@^4.17.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.5.0: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" -lodash@4.17.5: - version "4.17.5" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" - log-symbols@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" dependencies: chalk "^2.0.1" -log4js@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-1.1.1.tgz#c21d29c7604089e4f255833e7f94b3461de1ff43" - dependencies: - debug "^2.2.0" - semver "^5.3.0" - streamroller "^0.4.0" - -log4js@^2.5.3: - version "2.11.0" - resolved "https://registry.yarnpkg.com/log4js/-/log4js-2.11.0.tgz#bf3902eff65c6923d9ce9cfbd2db54160e34005a" +log4js@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-3.0.6.tgz#e6caced94967eeeb9ce399f9f8682a4b2b28c8ff" + integrity sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ== dependencies: - circular-json "^0.5.4" + circular-json "^0.5.5" date-format "^1.2.0" debug "^3.1.0" - semver "^5.5.0" + rfdc "^1.1.2" streamroller "0.7.0" - optionalDependencies: - amqplib "^0.5.2" - axios "^0.15.3" - hipchat-notifier "^1.1.0" - loggly "^1.1.0" - mailgun-js "^0.18.0" - nodemailer "^2.5.0" - redis "^2.7.1" - slack-node "~0.2.0" - -loggly@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/loggly/-/loggly-1.1.1.tgz#0a0fc1d3fa3a5ec44fdc7b897beba2a4695cebee" + +log4js@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-4.0.2.tgz#0c73e623ca4448669653eb0e9f629beacc7fbbe3" + integrity sha512-KE7HjiieVDPPdveA3bJZSuu0n8chMkFl8mIoisBFxwEJ9FmXe4YzNuiqSwYUiR1K8q8/5/8Yd6AClENY1RA9ww== dependencies: - json-stringify-safe "5.0.x" - request "2.75.x" - timespan "2.3.x" + date-format "^2.0.0" + debug "^3.1.0" + flatted "^2.0.0" + rfdc "^1.1.2" + streamroller "^1.0.1" -lolex@^2.3.2, lolex@^2.4.2: +lolex@^2.3.2: version "2.7.5" resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733" @@ -6323,6 +7560,10 @@ lolex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lolex/-/lolex-3.0.0.tgz#f04ee1a8aa13f60f1abd7b0e8f4213ec72ec193e" +"long@git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69": + version "4.0.1" + resolved "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -6344,9 +7585,13 @@ lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" -lru-cache@2.2.x: - version "2.2.4" - resolved "http://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" +lru-cache@4.1.x: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.3: version "4.1.4" @@ -6355,6 +7600,13 @@ lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.3: pseudomap "^1.0.2" yallist "^3.0.2" +lru-cache@^5.0.0, lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru_map@0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -6367,11 +7619,11 @@ macos-release@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.0.0.tgz#7dddf4caf79001a851eb4fba7fb6034f251276ab" -magic-string@0.22.4: - version "0.22.4" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.4.tgz#31039b4e40366395618c1d6cf8193c53917475ff" +magic-string@0.25.1, magic-string@^0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e" dependencies: - vlq "^0.2.1" + sourcemap-codec "^1.4.1" magic-string@^0.19.0: version "0.19.1" @@ -6379,40 +7631,7 @@ magic-string@^0.19.0: dependencies: vlq "^0.2.1" -magic-string@^0.22.4: - version "0.22.5" - resolved "http://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" - dependencies: - vlq "^0.2.2" - -magic-string@^0.25.1: - version "0.25.1" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e" - dependencies: - sourcemap-codec "^1.4.1" - -mailcomposer@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/mailcomposer/-/mailcomposer-4.0.1.tgz#0e1c44b2a07cf740ee17dc149ba009f19cadfeb4" - dependencies: - buildmail "4.0.1" - libmime "3.0.0" - -mailgun-js@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.18.1.tgz#ee39aa18d7bb598a5ce9ede84afb681defc8a6b0" - dependencies: - async "~2.6.0" - debug "~3.1.0" - form-data "~2.3.0" - inflection "~1.12.0" - is-stream "^1.1.0" - path-proxy "~1.0.0" - promisify-call "^2.0.2" - proxy-agent "~3.0.0" - tsscmp "~1.0.0" - -make-dir@^1.0.0: +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" dependencies: @@ -6654,7 +7873,7 @@ mime-types@2.1.15: dependencies: mime-db "~1.27.0" -mime-types@^2.0.8, mime-types@^2.1.11, mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19, mime-types@~2.1.7: +mime-types@^2.0.8, mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19: version "2.1.21" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" dependencies: @@ -6668,11 +7887,7 @@ mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" -mime@^1.3.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - -mime@^2.2.0: +mime@^2.2.0, mime@^2.3.1: version "2.4.0" resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6" @@ -6688,7 +7903,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -6769,6 +7984,23 @@ mocha@^4.1.0: mkdirp "0.5.1" supports-color "4.4.0" +mocha@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + mock-require@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/mock-require/-/mock-require-3.0.2.tgz#7ce759b559e3b194be5f20a5b1cece0eb363f53d" @@ -6780,9 +8012,10 @@ modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" -moment@2.21.0: - version "2.21.0" - resolved "http://registry.npmjs.org/moment/-/moment-2.21.0.tgz#2a114b51d2a6ec9e6d83cf803f838a878d8a023a" +moment@2.23.0: + version "2.23.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.23.0.tgz#759ea491ac97d54bac5ad776996e2a58cc1bc225" + integrity sha512-3IE39bHVqFbWWaPOMHZF98Q9c3LDKGTmypMiTM2QygGXXElkFWIH7GxfmlwmY2vwa+wmNsoYZmG2iusf1ZjJoA== move-concurrently@^1.0.1: version "1.0.1" @@ -6856,15 +8089,11 @@ neo-async@^2.5.0: version "2.6.0" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" -netmask@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" -nise@^1.3.3, nise@^1.4.6: +nise@^1.4.6: version "1.4.6" resolved "https://registry.yarnpkg.com/nise/-/nise-1.4.6.tgz#76cc3915925056ae6c405dd8ad5d12bde570c19f" dependencies: @@ -6874,6 +8103,17 @@ nise@^1.3.3, nise@^1.4.6: path-to-regexp "^1.7.0" text-encoding "^0.6.4" +nise@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/nise/-/nise-1.4.8.tgz#ce91c31e86cf9b2c4cac49d7fcd7f56779bfd6b0" + integrity sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw== + dependencies: + "@sinonjs/formatio" "^3.1.0" + just-extend "^4.0.2" + lolex "^2.3.2" + path-to-regexp "^1.7.0" + text-encoding "^0.6.4" + node-cleanup@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" @@ -6886,7 +8126,7 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@^2.1.1, node-fetch@^2.2.0: +node-fetch@^2.1.1, node-fetch@^2.2.0, node-fetch@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" @@ -6943,6 +8183,11 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + node-notifier@^5.2.1: version "5.3.0" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01" @@ -6967,63 +8212,10 @@ node-pre-gyp@^0.10.0: semver "^5.3.0" tar "^4" -node-uuid@~1.4.7: - version "1.4.8" - resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" - node-version@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.0.0.tgz#1b9b9584a9a7f7a6123f215cd14a652bf21ab19e" -nodemailer-direct-transport@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz#e96fafb90358560947e569017d97e60738a50a86" - dependencies: - nodemailer-shared "1.1.0" - smtp-connection "2.12.0" - -nodemailer-fetch@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz#79c4908a1c0f5f375b73fe888da9828f6dc963a4" - -nodemailer-shared@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz#cf5994e2fd268d00f5cf0fa767a08169edb07ec0" - dependencies: - nodemailer-fetch "1.6.0" - -nodemailer-smtp-pool@2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz#2eb94d6cf85780b1b4725ce853b9cbd5e8da8c72" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-smtp-transport@2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz#03d71c76314f14ac7dbc7bf033a6a6d16d67fb77" - dependencies: - nodemailer-shared "1.1.0" - nodemailer-wellknown "0.1.10" - smtp-connection "2.12.0" - -nodemailer-wellknown@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz#586db8101db30cb4438eb546737a41aad0cf13d5" - -nodemailer@^2.5.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-2.7.2.tgz#f242e649aeeae39b6c7ed740ef7b061c404d30f9" - dependencies: - libmime "3.0.0" - mailcomposer "4.0.1" - nodemailer-direct-transport "3.3.2" - nodemailer-shared "1.1.0" - nodemailer-smtp-pool "2.8.2" - nodemailer-smtp-transport "2.7.2" - socks "1.1.9" - "nopt@2 || 3", nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -7046,17 +8238,27 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: +normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" -npm-lifecycle@^2.0.0: +npm-lifecycle@^2.0.0, npm-lifecycle@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz#1eda2eedb82db929e3a0c50341ab0aad140ed569" dependencies: @@ -7104,6 +8306,18 @@ npm-registry-fetch@^3.8.0: make-fetch-happen "^4.0.1" npm-package-arg "^6.1.0" +npm-registry-fetch@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz#44d841780e2833f06accb34488f8c7450d1a6856" + integrity sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw== + dependencies: + JSONStream "^1.3.4" + bluebird "^3.5.1" + figgy-pudding "^3.4.1" + lru-cache "^4.1.3" + make-fetch-happen "^4.0.1" + npm-package-arg "^6.1.0" + npm-run-all@^4.1.2: version "4.1.5" resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" @@ -7151,9 +8365,10 @@ nwsapi@^2.0.7: version "2.0.9" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +nwsapi@^2.0.9: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.0.tgz#781065940aed90d9bb01ca5d0ce0fcf81c32712f" + integrity sha512-ZG3bLAvdHmhIjaQ/Db1qvBxsGvFMLIRpQszyqbg31VJ53UP++uZX1/gf3Ut96pdwN9AuDwlMqIYLm0UPCdUeHg== oauth-sign@~0.9.0: version "0.9.0" @@ -7205,6 +8420,11 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +octokit-pagination-methods@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" + integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -7301,6 +8521,13 @@ p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -7321,6 +8548,13 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" +p-limit@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" + integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -7365,29 +8599,6 @@ p-waterfall@^1.0.0: dependencies: p-reduce "^1.0.0" -pac-proxy-agent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz#11d578b72a164ad74bf9d5bac9ff462a38282432" - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - get-uri "^2.0.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - pac-resolver "^3.0.0" - raw-body "^2.2.0" - socks-proxy-agent "^4.0.1" - -pac-resolver@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-3.0.0.tgz#6aea30787db0a891704deb7800a722a7615a6f26" - dependencies: - co "^4.6.0" - degenerator "^1.0.4" - ip "^1.1.5" - netmask "^1.0.6" - thunkify "^2.1.2" - package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" @@ -7429,12 +8640,51 @@ pacote@^9.1.0: unique-filename "^1.1.1" which "^1.3.1" -pad@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/pad/-/pad-2.2.1.tgz#e53e5de1304bc4c6c38004cad803f7641cff3220" +pacote@^9.4.1: + version "9.4.1" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.4.1.tgz#f0af2a52d241bce523d39280ac810c671db62279" + integrity sha512-YKSRsQqmeHxgra0KCdWA2FtVxDPUlBiCdmew+mSe44pzlx5t1ViRMWiQg18T+DREA+vSqYfKzynaToFR4hcKHw== + dependencies: + bluebird "^3.5.3" + cacache "^11.3.2" + figgy-pudding "^3.5.1" + get-stream "^4.1.0" + glob "^7.1.3" + lru-cache "^5.1.1" + make-fetch-happen "^4.0.1" + minimatch "^3.0.4" + minipass "^2.3.5" + mississippi "^3.0.0" + mkdirp "^0.5.1" + normalize-package-data "^2.4.0" + npm-package-arg "^6.1.0" + npm-packlist "^1.1.12" + npm-pick-manifest "^2.2.3" + npm-registry-fetch "^3.8.0" + osenv "^0.1.5" + promise-inflight "^1.0.1" + promise-retry "^1.1.1" + protoduck "^5.0.1" + rimraf "^2.6.2" + safe-buffer "^5.1.2" + semver "^5.6.0" + ssri "^6.0.1" + tar "^4.4.8" + unique-filename "^1.1.1" + which "^1.3.1" + +pad@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/pad/-/pad-2.2.2.tgz#121a3055be234f27f35a002ee21ccc1364a1f00d" + integrity sha512-w5m0/ISM+Jc/xsxNwKzHhOX+KHKYP3tT+UMmZfCgMSLdCccbjMNYx6LtafOql60qI4NYv13ZGAkSiehJj9ttcQ== dependencies: wcwidth "^1.0.1" +pako@~1.0.2: + version "1.0.8" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.8.tgz#6844890aab9c635af868ad5fecc62e8acbba3ea4" + integrity sha512-6i0HVbUfcKaTv+EG8ZTr75az7GFXcLYk9UyLEg7Notv/Ma+z/UG3TCoz6GiNeOrn1E/e63I0X/Hpw18jHOTUnA== + pako@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" @@ -7509,10 +8759,33 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parse-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.1.tgz#0ec769704949778cb3b8eda5e994c32073a1adff" + integrity sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + +parse-url@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.1.tgz#99c4084fc11be14141efa41b3d117a96fcb9527f" + integrity sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg== + dependencies: + is-ssh "^1.3.0" + normalize-url "^3.3.0" + parse-path "^4.0.0" + protocols "^1.4.0" + parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + parseqs@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" @@ -7537,6 +8810,11 @@ path-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" +path-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.0.tgz#40702a97af46ae00b0ea6fa8998c0b03c0af160d" + integrity sha512-Hkavx/nY4/plImrZPHRk2CL9vpOymZLgEbMNX1U0bjcBL7QN9wODxyx0yaMZURSQaUtSEvDrfAvxa9oPb0at9g== + path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" @@ -7567,12 +8845,6 @@ path-parse@^1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" -path-proxy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/path-proxy/-/path-proxy-1.0.0.tgz#18e8a36859fc9d2f1a53b48dee138543c020de5e" - dependencies: - inflection "~1.3.0" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -7651,6 +8923,13 @@ pinpoint@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pinpoint/-/pinpoint-1.1.0.tgz#0cf7757a6977f1bf7f6a32207b709e377388e874" +pirates@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" @@ -7667,15 +8946,15 @@ pkginfo@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.0.tgz#349dbb7ffd38081fcadc0853df687f0c7744cd65" -plugin-error@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== dependencies: - ansi-cyan "^0.1.1" - ansi-red "^0.1.1" - arr-diff "^1.0.1" - arr-union "^2.0.1" - extend-shallow "^1.1.2" + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" pn@^1.1.0: version "1.1.0" @@ -7707,12 +8986,10 @@ prettier@^1.14.0: version "1.15.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.2.tgz#d31abe22afa4351efa14c7f8b94b58bb7452205e" -pretty-format@^22.4.0, pretty-format@^22.4.3: - version "22.4.3" - resolved "http://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.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== pretty-format@^23.6.0: version "23.6.0" @@ -7721,6 +8998,14 @@ pretty-format@^23.6.0: ansi-regex "^3.0.0" ansi-styles "^3.2.0" +pretty-format@^24.0.0: + version "24.0.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591" + integrity sha512-LszZaKG665djUcqg5ZQq+XzezHLKrxsA86ZABTozp+oNhkdqa+tG2dX4qa6ERl5c/sRDrAa3lHmwnvKoP+OG/g== + dependencies: + ansi-regex "^4.0.0" + ansi-styles "^3.2.0" + private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -7752,12 +9037,6 @@ promise-retry@^1.1.1: err-code "^1.0.0" retry "^0.10.0" -promisify-call@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/promisify-call/-/promisify-call-2.0.4.tgz#d48c2d45652ccccd52801ddecbd533a6d4bd5fba" - dependencies: - with-callback "^1.0.2" - prompts@^0.1.9: version "0.1.14" resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" @@ -7765,6 +9044,14 @@ prompts@^0.1.9: kleur "^2.0.1" sisteransi "^0.1.1" +prompts@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.3.tgz#c5ccb324010b2e8f74752aadceeb57134c1d2522" + integrity sha512-H8oWEoRZpybm6NV4to9/1limhttEo13xK62pNvn2JzY0MA03p7s0OjtmhXyon3uJmxiJJVSuUwEJFFssI3eBiQ== + dependencies: + kleur "^3.0.2" + sisteransi "^1.0.0" + promzard@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" @@ -7775,6 +9062,11 @@ proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.7" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" + integrity sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg== + protoduck@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" @@ -7788,23 +9080,6 @@ proxy-addr@~2.0.4: forwarded "~0.1.2" ipaddr.js "1.8.0" -proxy-agent@~3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-3.0.3.tgz#1c1a33db60ef5f2e9e35b876fd63c2bc681c611d" - dependencies: - agent-base "^4.2.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.1" - lru-cache "^4.1.2" - pac-proxy-agent "^3.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^4.0.1" - -proxy-from-env@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" - prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -7854,7 +9129,7 @@ punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" -punycode@1.4.1, punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -7862,11 +9137,7 @@ punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" -q@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" - -q@^1.5.0, q@^1.5.1: +q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -7878,10 +9149,6 @@ qs@6.5.2, qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" -qs@~6.2.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.3.tgz#1cfcb25c10a9b2b483053ff39f5dfc9233908cfe" - querystring-es3@^0.2.0, querystring-es3@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -7927,7 +9194,7 @@ raw-body@2.2.0: iconv-lite "0.4.15" unpipe "1.0.0" -raw-body@2.3.3, raw-body@^2.2.0: +raw-body@2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" dependencies: @@ -7951,7 +9218,7 @@ read-cmd-shim@^1.0.1: dependencies: graceful-fs "^4.1.2" -"read-package-json@1 || 2", read-package-json@^2.0.0: +"read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" dependencies: @@ -7986,6 +9253,14 @@ read-pkg-up@^3.0.0: find-up "^2.0.0" read-pkg "^3.0.0" +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -8008,7 +9283,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -8020,15 +9295,6 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@1.1.x, "readable-stream@1.x >=1.1.9", readable-stream@^1.1.7: - version "1.1.14" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - "readable-stream@2 || 3": version "3.0.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.6.tgz#351302e4c68b5abd6a2ed55376a7f9a25be3057a" @@ -8037,9 +9303,19 @@ readable-stream@1.1.x, "readable-stream@1.x >=1.1.9", readable-stream@^1.1.7: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@~2.0.0, readable-stream@~2.0.5: +readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06" + integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~2.0.6: version "2.0.6" - resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e" + integrity sha1-j5A0HmilPMySh4jaz80Rs265t44= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -8057,7 +9333,7 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@^2.0.0: +readdirp@^2.0.0, readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" dependencies: @@ -8075,6 +9351,13 @@ realpath-native@^1.0.0: dependencies: util.promisify "^1.0.0" +realpath-native@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" + integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== + dependencies: + util.promisify "^1.0.0" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -8095,22 +9378,6 @@ redent@^2.0.0: indent-string "^3.0.0" strip-indent "^2.0.0" -redis-commands@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.4.0.tgz#52f9cf99153efcce56a8f86af986bd04e988602f" - -redis-parser@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-2.6.0.tgz#52ed09dacac108f1a631c07e9b69941e7a19504b" - -redis@^2.7.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/redis/-/redis-2.8.0.tgz#202288e3f58c49f6079d97af7a10e1303ae14b02" - dependencies: - double-ended-queue "^2.1.0-0" - redis-commands "^1.2.0" - redis-parser "^2.6.0" - regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -8119,6 +9386,11 @@ regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" +regenerator-runtime@^0.12.0: + version "0.12.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" + integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -8171,16 +9443,16 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -remap-istanbul@^0.10.1: - version "0.10.1" - resolved "https://registry.yarnpkg.com/remap-istanbul/-/remap-istanbul-0.10.1.tgz#3aa58dd5021d499f336d3ba5bf3bbb91c1b88e37" +remap-istanbul@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/remap-istanbul/-/remap-istanbul-0.13.0.tgz#a529dfd080bb760f5274e3671c9c065f29923ed1" + integrity sha512-rS5ZpVAx3fGtKZkiBe1esXg5mKYbgW9iz8kkADFt3p6lo3NsBBUX1q6SwdhwUtYCGnr7nK6gRlbYK3i8R0jbRA== dependencies: - amdefine "^1.0.0" istanbul "0.4.5" - minimatch "^3.0.3" - plugin-error "^0.1.2" - source-map "^0.6.1" - through2 "2.0.1" + minimatch "^3.0.4" + plugin-error "^1.0.1" + source-map "0.6.1" + through2 "3.0.0" remove-trailing-separator@^1.0.1: version "1.1.0" @@ -8213,6 +9485,15 @@ replace-in-file@^3.4.2: glob "^7.1.2" yargs "^12.0.1" +replace-in-file@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-3.4.3.tgz#491a41c4353ca8d0342a4a0b9fb3eda3c2d0c7e3" + integrity sha512-m62vEDCIL1B8uzymh+YKMLb4N4LdX5A5ObxOjap4wyCHzWqblAUYO5vhjWwk7zfR8PkTRIdPZVo/u4h33clnew== + dependencies: + chalk "^2.4.1" + glob "^7.1.2" + yargs "^12.0.5" + request-promise-core@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" @@ -8227,33 +9508,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@2.75.x: - version "2.75.0" - resolved "http://registry.npmjs.org/request/-/request-2.75.0.tgz#d2b8268a286da13eaa5d01adf5d18cc90f657d93" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - bl "~1.1.2" - caseless "~0.11.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.0.0" - har-validator "~2.0.6" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - node-uuid "~1.4.7" - oauth-sign "~0.8.1" - qs "~6.2.0" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "~0.4.1" - -request@2.88.0, request@^2.0.0, request@^2.74.0, request@^2.87.0: +request@^2.87.0, request@^2.88.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" dependencies: @@ -8278,15 +9533,6 @@ request@2.88.0, request@^2.0.0, request@^2.74.0, request@^2.87.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -requestretry@^1.2.2: - version "1.13.0" - resolved "https://registry.yarnpkg.com/requestretry/-/requestretry-1.13.0.tgz#213ec1006eeb750e8b8ce54176283d15a8d55d94" - dependencies: - extend "^3.0.0" - lodash "^4.15.0" - request "^2.74.0" - when "^3.7.7" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -8325,7 +9571,7 @@ resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@1.x, resolve@^1.1.6, resolve@^1.3.2, resolve@^1.7.1, resolve@^1.8.1: +resolve@1.8.1, resolve@1.x, resolve@^1.1.6, resolve@^1.3.2, resolve@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" dependencies: @@ -8360,6 +9606,11 @@ rfc6902@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/rfc6902/-/rfc6902-3.0.1.tgz#03a3d38329dbc266fbc92aa7fc14546d7839e89f" +rfdc@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.2.tgz#e6e72d74f5dc39de8f538f65e00c36c18018e349" + integrity sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA== + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -8372,6 +9623,13 @@ rimraf@2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: dependencies: glob "^7.0.5" +rimraf@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -8388,56 +9646,65 @@ rollup-plugin-commonjs@^9.1.3: resolve "^1.8.1" rollup-pluginutils "^2.3.3" -rollup-plugin-license@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-license/-/rollup-plugin-license-0.6.0.tgz#d8e5e75ac0fcb5a7af7c5d89a644ef42f05f48a4" +rollup-plugin-license@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-license/-/rollup-plugin-license-0.8.1.tgz#cdcfee2a32f27790e5019a2a7abd9234476ac589" + integrity sha512-UeDVawklIv/rb4/M8AqHHtt03L+gDNfCVjQJqgUaQKiNTmUk+peAzkaLYeC6kfQm7i77kGYEzkbPZ0Dd9NEbCQ== dependencies: commenting "1.0.5" - lodash "4.17.5" - magic-string "0.22.4" + lodash "4.17.11" + magic-string "0.25.1" mkdirp "0.5.1" - moment "2.21.0" + moment "2.23.0" -rollup-plugin-node-resolve@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz#908585eda12e393caac7498715a01e08606abc89" +rollup-plugin-node-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.0.0.tgz#9bc6b8205e9936cc0e26bba2415f1ecf1e64d9b2" + integrity sha512-7Ni+/M5RPSUBfUaP9alwYQiIKnKeXCOHiqBpKUl9kwp3jX5ZJtgXAait1cne6pGEVUUztPD6skIKH9Kq9sNtfw== dependencies: - builtin-modules "^2.0.0" + builtin-modules "^3.0.0" is-module "^1.0.0" - resolve "^1.1.6" + resolve "^1.8.1" rollup-plugin-npm@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/rollup-plugin-npm/-/rollup-plugin-npm-2.0.0.tgz#8a28ffdb5160bc8e1e371de39ed71faf009d655c" -rollup-plugin-typescript2@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.13.0.tgz#5fc838657d05af82e04554832cadf06cdb32f657" +rollup-plugin-typescript2@^0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.19.2.tgz#87d9c799cd6e02efbedbba25af12753a1e92b6c2" + integrity sha512-DRG7SaYX0QzBIz6rII5nm1UkiceS95r8mJjujugybyIueNF3auvzGTHMK62O7As/0q5RHjXsOguWOUv+KJKLFA== dependencies: - fs-extra "^5.0.0" - resolve "^1.7.1" - rollup-pluginutils "^2.0.1" - tslib "^1.9.0" + fs-extra "7.0.1" + resolve "1.8.1" + rollup-pluginutils "2.3.3" + tslib "1.9.3" -rollup-plugin-uglify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-3.0.0.tgz#a34eca24617709c6bf1778e9653baafa06099b86" +rollup-plugin-uglify@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-6.0.2.tgz#681042cfdf7ea4e514971946344e1a95bc2772fe" + integrity sha512-qwz2Tryspn5QGtPUowq5oumKSxANKdrnfz7C0jm4lKxvRDsNe/hSGsB9FntUul7UeC4TsZEWKErVgE1qWSO0gw== dependencies: - uglify-es "^3.3.7" + "@babel/code-frame" "^7.0.0" + jest-worker "^24.0.0" + serialize-javascript "^1.6.1" + uglify-js "^3.4.9" -rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.3: +rollup-pluginutils@2.3.3, rollup-pluginutils@^2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" dependencies: estree-walker "^0.5.2" micromatch "^2.3.11" -rollup@^0.58.2: - version "0.58.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.58.2.tgz#2feddea8c0c022f3e74b35c48e3c21b3433803ce" +rollup@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.2.1.tgz#996a8c63920ab056b39507d93195222e59d2807f" + integrity sha512-rFf7m2MHwjSYjSCFdA7ckGluMcQRcC3dKn6uAWYrk/6wnUrdQhJJruumkk5IV/3KMdmuc9qORmTu1VPBa2Ii8w== dependencies: - "@types/estree" "0.0.38" + "@types/estree" "0.0.39" "@types/node" "*" + acorn "^6.1.0" rsvp@^3.3.3: version "3.6.2" @@ -8475,10 +9742,6 @@ safe-regex@^1.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" -samsam@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50" - sane@^2.0.0: version "2.5.2" resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" @@ -8494,9 +9757,27 @@ sane@^2.0.0: optionalDependencies: fsevents "^1.2.3" -sauce-connect-launcher@^1.2.2: +sane@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-3.1.0.tgz#995193b7dc1445ef1fe41ddfca2faf9f111854c6" + integrity sha512-G5GClRRxT1cELXfdAq7UKtUsv8q/ZC5k8lQGmjEm4HcAl3HzBy68iglyNCmw4+0tiXPCBZntslHlRhbnsSws+Q== + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.2.0" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.2.3" + +sauce-connect-launcher@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sauce-connect-launcher/-/sauce-connect-launcher-1.2.4.tgz#8d38f85242a9fbede1b2303b559f7e20c5609a1c" + integrity sha512-X2vfwulR6brUGiicXKxPm1GJ7dBEeP1II450Uv4bHGrcGOapZNgzJvn9aioea5IC5BPp/7qjKdE3xbbTBIVXMA== dependencies: adm-zip "~0.4.3" async "^2.1.2" @@ -8504,22 +9785,23 @@ sauce-connect-launcher@^1.2.2: lodash "^4.16.6" rimraf "^2.5.4" -saucelabs@^1.4.0: +saucelabs@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== dependencies: https-proxy-agent "^2.2.1" -sax@^1.2.4: +sax@>=0.6.0, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" -schema-utils@^0.4.4: - version "0.4.7" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" +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== dependencies: - ajv "^6.1.0" - ajv-keywords "^3.1.0" + xmlchars "^1.3.1" schema-utils@^1.0.0: version "1.0.0" @@ -8529,13 +9811,23 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" +selenium-webdriver@^4.0.0-alpha.1: + version "4.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.1.tgz#cc93415e21d2dc1dfd85dfc5f6b55f3ac53933b1" + integrity sha512-z88rdjHAv3jmTZ7KSGUkTvo4rGzcDGMq0oXWHNIDK96Gs31JKVdu9+FMtT4KBrVoibg8dUicJDok6GnqqttO5Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" @@ -8583,6 +9875,11 @@ serialize-javascript@^1.4.0: version "1.5.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" +serialize-javascript@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879" + integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw== + serve-static@1.13.2: version "1.13.2" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" @@ -8689,18 +9986,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" -sinon@^5.0.3: - version "5.1.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-5.1.1.tgz#19c59810ffb733ea6e76a28b94a71fc4c2f523b8" - dependencies: - "@sinonjs/formatio" "^2.0.0" - diff "^3.5.0" - lodash.get "^4.4.2" - lolex "^2.4.2" - nise "^1.3.3" - supports-color "^5.4.0" - type-detect "^4.0.8" - sinon@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.1.1.tgz#1202f317aa14d93cb9b69ff50b6bd49c0e05ffc9" @@ -8715,39 +10000,45 @@ sinon@^7.1.1: supports-color "^5.5.0" type-detect "^4.0.8" +sinon@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.2.3.tgz#f8bfd956df32ddf592f8c102fd46982366412d8e" + integrity sha512-i6j7sqcLEqTYqUcMV327waI745VASvYuSuQMCjbAwlpAeuCgKZ3LtrjDxAbu+GjNQR0FEDpywtwGCIh8GicNyg== + dependencies: + "@sinonjs/commons" "^1.3.0" + "@sinonjs/formatio" "^3.1.0" + "@sinonjs/samsam" "^3.0.2" + diff "^3.5.0" + lolex "^3.0.0" + nise "^1.4.8" + supports-color "^5.5.0" + sisteransi@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" -slack-node@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/slack-node/-/slack-node-0.2.0.tgz#de4b8dddaa8b793f61dbd2938104fdabf37dfa30" - dependencies: - requestretry "^1.2.2" +sisteransi@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" + integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ== slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" -smart-buffer@^1.0.4: - version "1.1.15" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" - smart-buffer@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" -smtp-connection@2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/smtp-connection/-/smtp-connection-2.12.0.tgz#d76ef9127cb23c2259edb1e8349c2e8d5e2d74c1" - dependencies: - httpntlm "1.6.1" - nodemailer-shared "1.1.0" - snakeize@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/snakeize/-/snakeize-0.1.0.tgz#10c088d8b58eb076b3229bb5a04e232ce126422d" @@ -8779,67 +10070,58 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sntp@1.x.x: - version "1.0.9" - resolved "http://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - socket.io-adapter@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" -socket.io-client@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" +socket.io-client@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.1.1.tgz#dcb38103436ab4578ddb026638ae2f21b623671f" + integrity sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ== dependencies: backo2 "1.0.2" base64-arraybuffer "0.1.5" component-bind "1.0.0" component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" + debug "~3.1.0" + engine.io-client "~3.2.0" + has-binary2 "~1.0.2" has-cors "1.1.0" indexof "0.0.1" object-component "0.0.3" parseqs "0.0.5" parseuri "0.0.5" - socket.io-parser "~3.1.1" + socket.io-parser "~3.2.0" to-array "0.1.4" -socket.io-parser@~3.1.1: - version "3.1.3" - resolved "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz#ed2da5ee79f10955036e3da413bfd7f1e4d86c8e" +socket.io-parser@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.2.0.tgz#e7c6228b6aa1f814e6148aea325b51aa9499e077" + integrity sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA== dependencies: component-emitter "1.2.1" debug "~3.1.0" - has-binary2 "~1.0.2" isarray "2.0.1" -socket.io@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" +socket.io@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.1.1.tgz#a069c5feabee3e6b214a75b40ce0652e1cfb9980" + integrity sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA== dependencies: - debug "~2.6.6" - engine.io "~3.1.0" + debug "~3.1.0" + engine.io "~3.2.0" + has-binary2 "~1.0.2" socket.io-adapter "~1.1.0" - socket.io-client "2.0.4" - socket.io-parser "~3.1.1" + socket.io-client "2.1.1" + socket.io-parser "~3.2.0" -socks-proxy-agent@^4.0.0, socks-proxy-agent@^4.0.1: +socks-proxy-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" dependencies: agent-base "~4.2.0" socks "~2.2.0" -socks@1.1.9: - version "1.1.9" - resolved "http://registry.npmjs.org/socks/-/socks-1.1.9.tgz#628d7e4d04912435445ac0b6e459376cb3e6d691" - dependencies: - ip "^1.1.2" - smart-buffer "^1.0.4" - socks@~2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.2.tgz#f061219fc2d4d332afb4af93e865c84d3fa26e2b" @@ -8873,7 +10155,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.0, source-map-support@^0.5.6, source-map-support@~0.5.6: +source-map-support@^0.5.6, source-map-support@~0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" dependencies: @@ -8894,10 +10176,15 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + source-map@~0.2.0: version "0.2.0" resolved "http://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" @@ -9016,6 +10303,14 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-browserify@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" @@ -9039,6 +10334,16 @@ stream-http@^2.7.2: to-arraybuffer "^1.0.0" xtend "^4.0.0" +stream-http@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.0.0.tgz#bd6d3c52610098699e25eb2dfcd188e30e0d12e4" + integrity sha512-JELJfd+btL9GHtxU3+XXhg9NLYrKFnhybfvRuDghtyVkOFydz3PKNT1df07AMr88qW03WHF+FSV0PySpXignCA== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^3.0.6" + xtend "^4.0.0" + stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" @@ -9052,14 +10357,16 @@ streamroller@0.7.0: mkdirp "^0.5.1" readable-stream "^2.3.0" -streamroller@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-0.4.1.tgz#d435bd5974373abd9bd9068359513085106cc05f" +streamroller@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-1.0.1.tgz#6771c9c750638e3ad9de93781d431a05514eeb2f" + integrity sha512-FKL2mEB0A+XTIWSOlBHm2DvdsER5cGraqrUufO0lFMfsVY+Gpb3TC29Z+6/l0Urbb7vtm6m9zJOQBVl6fEkZBA== dependencies: - date-format "^0.0.0" - debug "^0.7.2" - mkdirp "^0.5.1" - readable-stream "^1.1.7" + async "^2.6.1" + date-format "^2.0.0" + debug "^3.1.0" + fs-extra "^7.0.0" + lodash "^4.17.10" string-length@^2.0.0: version "2.0.0" @@ -9097,7 +10404,7 @@ string.prototype.padend@^3.0.0: es-abstract "^1.4.3" function-bind "^1.0.2" -string_decoder@^1.0.0, string_decoder@^1.0.3, string_decoder@^1.1.1: +string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" dependencies: @@ -9113,10 +10420,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringstream@~0.0.4: - version "0.0.6" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" - strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -9129,6 +10432,13 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.0.0.tgz#f78f68b5d0866c20b2c9b8c61b5298508dc8756f" + integrity sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow== + dependencies: + ansi-regex "^4.0.0" + strip-bom@3.0.0, strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -9176,6 +10486,13 @@ supports-color@4.4.0: dependencies: has-flag "^2.0.0" +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== + dependencies: + has-flag "^3.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -9186,12 +10503,19 @@ supports-color@^3.1.0, supports-color@^3.1.2: dependencies: has-flag "^1.0.0" -supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: +supports-color@^5.0.0, supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" dependencies: has-flag "^3.0.0" +supports-color@^6.0.0, supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + supports-hyperlinks@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" @@ -9207,18 +10531,6 @@ tapable@^1.0.0, tapable@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e" -tar-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - tar@^2.0.0: version "2.2.1" resolved "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" @@ -9227,7 +10539,7 @@ tar@^2.0.0: fstream "^1.0.2" inherits "2" -tar@^4, tar@^4.4.6: +tar@^4, tar@^4.4.6, tar@^4.4.8: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" dependencies: @@ -9247,6 +10559,15 @@ teeny-request@^3.11.0: node-fetch "^2.2.0" uuid "^3.3.2" +teeny-request@^3.11.3, teeny-request@^3.7.0: + version "3.11.3" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.3.tgz#335c629f7645e5d6599362df2f3230c4cbc23a55" + integrity sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw== + dependencies: + https-proxy-agent "^2.2.1" + node-fetch "^2.2.0" + uuid "^3.3.2" + temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" @@ -9305,6 +10626,16 @@ test-exclude@^4.2.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" +test-exclude@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1" + integrity sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA== + dependencies: + arrify "^1.0.1" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^1.0.1" + text-encoding@^0.6.4: version "0.6.4" resolved "http://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" @@ -9317,12 +10648,12 @@ throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" -through2@2.0.1: - version "2.0.1" - resolved "http://registry.npmjs.org/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9" +through2@3.0.0, through2@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.0.tgz#468b461df9cd9fcc170f22ebf6852e467e578ff2" dependencies: - readable-stream "~2.0.0" - xtend "~4.0.0" + readable-stream "2 || 3" + xtend "~4.0.1" through2@^2.0.0, through2@^2.0.2: version "2.0.5" @@ -9331,38 +10662,24 @@ through2@^2.0.0, through2@^2.0.2: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.0.tgz#468b461df9cd9fcc170f22ebf6852e467e578ff2" - dependencies: - readable-stream "2 || 3" - xtend "~4.0.1" - through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: version "2.3.8" resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -thunkify@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/thunkify/-/thunkify-2.1.2.tgz#faa0e9d230c51acc95ca13a361ac05ca7e04553d" - timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" -timers-browserify@^2.0.2, timers-browserify@^2.0.4: +timers-browserify@^2.0.10, timers-browserify@^2.0.4: version "2.0.10" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" dependencies: setimmediate "^1.0.4" -timespan@2.3.x: - version "2.3.0" - resolved "https://registry.yarnpkg.com/timespan/-/timespan-2.3.0.tgz#4902ce040bd13d845c8f59b27e9d59bad6f39929" - -tmp@0.0.29: - version "0.0.29" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha1-ckGdSovn1s51FI/YsyTlk6cRwu0= dependencies: os-tmpdir "~1.0.1" @@ -9384,14 +10701,15 @@ to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -9414,19 +10732,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@>=2.3.3, tough-cookie@^2.3.4: +tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" dependencies: psl "^1.1.28" punycode "^2.1.1" -tough-cookie@~2.3.0: - version "2.3.4" - resolved "http://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" - dependencies: - punycode "^1.4.1" - tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" @@ -9459,6 +10771,7 @@ trim-right@^1.0.1: ts-jest@^23.10.5: version "23.10.5" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-23.10.5.tgz#cdb550df4466a30489bf70ba867615799f388dd5" + integrity sha512-MRCs9qnGoyKgFc8adDEntAOP64fWK1vZKnOYU1o2HxaqjdJvGqmkLCPCnVq1/If4zkUmEjKPnCiUisTrlX2p2A== dependencies: bs-logger "0.x" buffer-from "1.x" @@ -9470,13 +10783,14 @@ ts-jest@^23.10.5: semver "^5.5" yargs-parser "10.x" -tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@1.9.3, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" -tslint-config-prettier@^1.12.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.17.0.tgz#946ed6117f98f3659a65848279156d87628c33dc" +tslint-config-prettier@^1.18.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" + integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== tslint@^5.11.0: version "5.11.0" @@ -9495,9 +10809,23 @@ tslint@^5.11.0: tslib "^1.8.0" tsutils "^2.27.2" -tsscmp@~1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" +tslint@^5.12.1: + version "5.12.1" + resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.12.1.tgz#8cec9d454cf8a1de9b0a26d7bdbad6de362e52c1" + integrity sha512-sfodBHOucFg6egff8d1BvuofoOQ/nOeYNfbp7LDlKBcLNrL3lmS5zoiDGyOMdT7YsEXAwWpTdAHwOGOc8eRZAw== + dependencies: + babel-code-frame "^6.22.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" + minimatch "^3.0.4" + resolve "^1.3.2" + semver "^5.3.0" + tslib "^1.8.0" + tsutils "^2.27.2" tsutils@^2.27.2: version "2.29.0" @@ -9509,16 +10837,17 @@ tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" +tty-browserify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" dependencies: safe-buffer "^5.0.1" -tunnel-agent@~0.4.1: - version "0.4.3" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" - tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" @@ -9577,6 +10906,29 @@ typedoc@^0.13.0: typedoc-default-themes "^0.5.0" typescript "3.1.x" +typedoc@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.14.2.tgz#769f457f4f9e4bdb8b5f3b177c86b6a31d8c3dc3" + integrity sha512-aEbgJXV8/KqaVhcedT7xG6d2r+mOvB5ep3eIz1KuB5sc4fDYXcepEEMdU7XSqLFO5hVPu0nllHi1QxX2h/QlpQ== + dependencies: + "@types/fs-extra" "^5.0.3" + "@types/handlebars" "^4.0.38" + "@types/highlight.js" "^9.12.3" + "@types/lodash" "^4.14.110" + "@types/marked" "^0.4.0" + "@types/minimatch" "3.0.3" + "@types/shelljs" "^0.8.0" + fs-extra "^7.0.0" + handlebars "^4.0.6" + highlight.js "^9.13.1" + lodash "^4.17.10" + marked "^0.4.0" + minimatch "^3.0.0" + progress "^2.0.0" + shelljs "^0.8.2" + typedoc-default-themes "^0.5.0" + typescript "3.2.x" + typescript-tslint-plugin@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/typescript-tslint-plugin/-/typescript-tslint-plugin-0.2.1.tgz#6a0361cd311bdc9dcec2e70c8a54cab16829e47f" @@ -9585,20 +10937,32 @@ typescript-tslint-plugin@^0.2.1: mock-require "^3.0.2" vscode-languageserver "^5.1.0" +typescript-tslint-plugin@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/typescript-tslint-plugin/-/typescript-tslint-plugin-0.3.1.tgz#d86ae0342c9e8f9ecfcbcc47f7a7c2b5ab0e86f9" + integrity sha512-h8HEPBm36UEs901ld1x6m5eY/UFb4mF+A0nvERr4BWMww5wnV5nfcm9ZFt18foYL0GQ5NVMt1Tb3466WUU8dRQ== + dependencies: + minimatch "^3.0.4" + mock-require "^3.0.2" + vscode-languageserver "^5.1.0" + typescript@3.1.x: version "3.1.6" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" +typescript@3.2.x: + version "3.2.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" + integrity sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg== + typescript@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" -uglify-es@^3.3.7: - version "3.3.9" - resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" - dependencies: - commander "~2.13.0" - source-map "~0.6.1" +typescript@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3.tgz#f1657fc7daa27e1a8930758ace9ae8da31403221" + integrity sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A== uglify-js@^2.6: version "2.8.29" @@ -9609,7 +10973,7 @@ uglify-js@^2.6: optionalDependencies: uglify-to-browserify "~1.0.0" -uglify-js@^3.1.4: +uglify-js@^3.1.4, uglify-js@^3.4.9: version "3.4.9" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" dependencies: @@ -9632,10 +10996,6 @@ umask@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" -underscore@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -9669,6 +11029,13 @@ universal-user-agent@^2.0.0: dependencies: os-name "^3.0.0" +universal-user-agent@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.3.tgz#9f6f09f9cc33de867bb720d84c08069b14937c6c" + integrity sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g== + dependencies: + os-name "^3.0.0" + universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -9688,7 +11055,7 @@ unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" -upath@^1.0.5: +upath@^1.0.5, upath@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" @@ -9753,11 +11120,12 @@ use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" -useragent@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.2.1.tgz#cf593ef4f2d175875e8bb658ea92e18a4fd06d8e" +useragent@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.3.0.tgz#217f943ad540cb2128658ab23fc960f6a88c9972" + integrity sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw== dependencies: - lru-cache "2.2.x" + lru-cache "4.1.x" tmp "0.0.x" util-deprecate@^1.0.1, util-deprecate@~1.0.1: @@ -9783,6 +11151,13 @@ util@^0.10.3: dependencies: inherits "2.0.3" +util@^0.11.1: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -9791,10 +11166,6 @@ uuid@^3.0.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" -uws@~9.14.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/uws/-/uws-9.14.0.tgz#fac8386befc33a7a3705cbd58dc47b430ca4dd95" - validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -9808,10 +11179,6 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" -vargs@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/vargs/-/vargs-0.1.0.tgz#6b6184da6520cc3204ce1b407cac26d92609ebff" - vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -9824,7 +11191,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vlq@^0.2.1, vlq@^0.2.2: +vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" @@ -9834,6 +11201,11 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" +vm-browserify@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + vm2@^3.6.3: version "3.6.4" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.6.4.tgz#88b27a9f328a0630671841363692a57d24dead33" @@ -9878,6 +11250,15 @@ 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== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" @@ -9905,18 +11286,6 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -wd@^1.4.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/wd/-/wd-1.11.1.tgz#21a33e21977ad20522bb189f6529c3b55ac3862c" - dependencies: - archiver "2.1.1" - async "2.0.1" - lodash "4.17.11" - mkdirp "^0.5.1" - q "1.4.1" - request "2.88.0" - vargs "0.1.0" - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -9928,16 +11297,17 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.26.0: - version "4.26.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.26.1.tgz#ff3a9283d363c07b3494dfa702d08f4f2ef6cb39" - dependencies: - "@webassemblyjs/ast" "1.7.11" - "@webassemblyjs/helper-module-context" "1.7.11" - "@webassemblyjs/wasm-edit" "1.7.11" - "@webassemblyjs/wasm-parser" "1.7.11" - acorn "^5.6.2" - acorn-dynamic-import "^3.0.0" +webpack@^4.29.4: + version "4.29.4" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.4.tgz#c0a2a12635142015f931b92efee7de6559f264dd" + integrity sha512-Uu/QgPFZG+w+5wjWIFBgIy+g9vOF3QiLmT2Bl783MQSLjRF/K+GMv2TH3TVNFyPQVEHY8rVnPoQtcqrnqK2H7Q== + dependencies: + "@webassemblyjs/ast" "1.8.2" + "@webassemblyjs/helper-module-context" "1.8.2" + "@webassemblyjs/wasm-edit" "1.8.2" + "@webassemblyjs/wasm-parser" "1.8.2" + acorn "^6.0.5" + acorn-dynamic-import "^4.0.0" ajv "^6.1.0" ajv-keywords "^3.1.0" chrome-trace-event "^1.0.0" @@ -9951,19 +11321,19 @@ webpack@^4.26.0: mkdirp "~0.5.0" neo-async "^2.5.0" node-libs-browser "^2.0.0" - schema-utils "^0.4.4" + schema-utils "^1.0.0" tapable "^1.1.0" terser-webpack-plugin "^1.1.0" watchpack "^1.5.0" webpack-sources "^1.3.0" -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3, whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0: +whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -9983,10 +11353,6 @@ whatwg-url@^7.0.0: tr46 "^1.0.1" webidl-conversions "^4.0.2" -when@^3.7.7: - version "3.7.8" - resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -10025,10 +11391,6 @@ windows-release@^3.1.0: dependencies: execa "^0.10.0" -with-callback@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/with-callback/-/with-callback-1.0.2.tgz#a09629b9a920028d721404fb435bdcff5c91bc21" - wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" @@ -10058,6 +11420,15 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +write-file-atomic@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.1.tgz#d0b05463c188ae804396fd5ab2a370062af87529" + integrity sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" @@ -10090,6 +11461,13 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +ws@^6.1.2: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== + dependencies: + async-limiter "~1.0.0" + ws@~3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -10106,15 +11484,29 @@ xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" +xml2js@^0.4.17: + version "0.4.19" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" + integrity sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q== + dependencies: + sax ">=0.6.0" + xmlbuilder "~9.0.1" + +xmlbuilder@~9.0.1: + version "9.0.7" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" + integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmlchars@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf" + integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw== + xmlhttprequest-ssl@~1.5.4: version "1.5.5" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - -xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -10126,6 +11518,11 @@ y18n@^3.2.1: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" @@ -10143,35 +11540,12 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" - dependencies: - camelcase "^4.1.0" - yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" dependencies: camelcase "^4.1.0" -yargs@^10.0.3: - version "10.1.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" - dependencies: - cliui "^4.0.0" - decamelize "^1.1.1" - find-up "^2.1.0" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^8.1.0" - yargs@^11.0.0: version "11.1.0" resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" @@ -10189,7 +11563,7 @@ yargs@^11.0.0: y18n "^3.2.1" yargs-parser "^9.0.2" -yargs@^12.0.1: +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: @@ -10218,12 +11592,3 @@ yargs@~3.10.0: yeast@0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" - -zip-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-1.2.0.tgz#a8bc45f4c1b49699c6b90198baacaacdbcd4ba04" - dependencies: - archiver-utils "^1.3.0" - compress-commons "^1.2.0" - lodash "^4.8.0" - readable-stream "^2.0.0" From e91b85ab373629ad13eff50786e7626b07d9c5ac Mon Sep 17 00:00:00 2001 From: Daniel Griesser Date: Mon, 18 Feb 2019 12:39:37 +0100 Subject: [PATCH 7/9] fix: License file to be the same as in package.json --- package.json | 20 +- packages/browser/LICENSE | 26 +- packages/browser/package.json | 15 +- packages/core/LICENSE | 26 +- packages/core/package.json | 1 - packages/hub/LICENSE | 26 +- packages/hub/package.json | 1 - packages/minimal/LICENSE | 26 +- packages/minimal/package.json | 1 - packages/node/LICENSE | 26 +- packages/node/package.json | 1 - packages/raven-js/LICENSE | 24 +- packages/raven-node/LICENSE | 24 +- packages/types/LICENSE | 26 +- packages/typescript/LICENSE | 26 +- packages/utils/LICENSE | 26 +- packages/utils/package.json | 1 - yarn.lock | 3066 +++++++++++++-------------------- 18 files changed, 1326 insertions(+), 2036 deletions(-) diff --git a/package.json b/package.json index 51bcfe3a8fdb..c546ba86e918 100644 --- a/package.json +++ b/package.json @@ -25,30 +25,30 @@ "devDependencies": { "@google-cloud/storage": "^2.3.1", "@types/chai": "^4.1.3", - "@types/jest": "^23.3.9", + "@types/jest": "^24.0.6", "@types/mocha": "^5.2.0", - "@types/node": "^10.0.2", + "@types/node": "^11.9.4", "@types/raven": "^2.5.1", - "@types/sinon": "^5.0.7", + "@types/sinon": "^7.0.6", "chai": "^4.1.2", "codecov": "^3.0.2", - "danger": "^6.1.5", + "danger": "^7.0.12", "danger-plugin-tslint": "^2.0.0", - "jest": "^23.6.0", + "jest": "^24.1.0", "karma-sinon": "^1.0.5", - "lerna": "3.5.0", - "mocha": "^4.1.0", + "lerna": "3.13.0", + "mocha": "^5.2.0", "npm-run-all": "^4.1.2", "prettier": "^1.14.0", "prettier-check": "^2.0.0", "replace-in-file": "^3.4.2", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "sinon": "^7.1.1", "ts-jest": "^23.10.5", "tslint": "^5.11.0", - "typedoc": "^0.13.0", + "typedoc": "^0.14.2", "typedoc-plugin-monorepo": "^0.1.0", "typescript": "^3.2.0", - "typescript-tslint-plugin": "^0.2.1" + "typescript-tslint-plugin": "^0.3.1" } } diff --git a/packages/browser/LICENSE b/packages/browser/LICENSE index 862c9698194b..8b42db873c95 100644 --- a/packages/browser/LICENSE +++ b/packages/browser/LICENSE @@ -1,23 +1,25 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +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: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* 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 +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 diff --git a/packages/browser/package.json b/packages/browser/package.json index 69eed3257a77..28ac28773879 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -21,16 +21,8 @@ "tslib": "^1.9.3" }, "devDependencies": { - "@google-cloud/storage": "^2.4.2", - "@types/jest": "^24.0.6", "@types/md5": "2.1.33", - "@types/mocha": "^5.2.6", - "@types/node": "^11.9.4", - "@types/raven": "^2.5.3", - "@types/sinon": "^7.0.6", "chai": "^4.1.2", - "codecov": "^3.2.0", - "danger": "^7.0.12", "jest": "^24.1.0", "jsdom": "^13.2.0", "karma": "^4.0.0", @@ -44,12 +36,9 @@ "karma-sauce-launcher": "^2.0.2", "karma-typescript": "^4.0.0", "karma-typescript-es6-transform": "^4.0.0", - "lerna": "3.13.0", - "mocha": "^5.2.0", "npm-run-all": "^4.1.2", "prettier": "^1.16.4", "prettier-check": "^2.0.0", - "replace-in-file": "^3.4.3", "rimraf": "^2.6.3", "rollup": "^1.2.1", "rollup-plugin-commonjs": "^9.1.3", @@ -60,10 +49,8 @@ "rollup-plugin-uglify": "^6.0.2", "sinon": "^7.2.3", "tslint": "^5.12.1", - "typedoc": "^0.14.2", "typescript": "^3.3.3", - "typescript-tslint-plugin": "^0.3.1", - "webpack": "^4.29.4" + "webpack": "^4.29.5" }, "scripts": { "build": "run-p build:esm build:es5", diff --git a/packages/core/LICENSE b/packages/core/LICENSE index 862c9698194b..8b42db873c95 100644 --- a/packages/core/LICENSE +++ b/packages/core/LICENSE @@ -1,23 +1,25 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +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: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* 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 +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 diff --git a/packages/core/package.json b/packages/core/package.json index 363bff95f5b8..8a5cfeecd428 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,7 +27,6 @@ "prettier": "^1.16.4", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "ts-jest": "^23.10.5", "tslint": "^5.12.1", "typescript": "^3.3.3" }, diff --git a/packages/hub/LICENSE b/packages/hub/LICENSE index 862c9698194b..8b42db873c95 100644 --- a/packages/hub/LICENSE +++ b/packages/hub/LICENSE @@ -1,23 +1,25 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +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: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* 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 +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 diff --git a/packages/hub/package.json b/packages/hub/package.json index 0489d35da5e5..6dc7b1416fc4 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -25,7 +25,6 @@ "prettier": "^1.16.4", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "ts-jest": "^23.10.5", "tslint": "^5.12.1", "typescript": "^3.3.3" }, diff --git a/packages/minimal/LICENSE b/packages/minimal/LICENSE index 862c9698194b..8b42db873c95 100644 --- a/packages/minimal/LICENSE +++ b/packages/minimal/LICENSE @@ -1,23 +1,25 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +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: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* 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 +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 diff --git a/packages/minimal/package.json b/packages/minimal/package.json index 02ecd759b40b..287ff9db542f 100644 --- a/packages/minimal/package.json +++ b/packages/minimal/package.json @@ -25,7 +25,6 @@ "prettier": "^1.16.4", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "ts-jest": "^23.10.5", "tslint": "^5.12.1", "typescript": "^3.3.3" }, diff --git a/packages/node/LICENSE b/packages/node/LICENSE index 862c9698194b..8b42db873c95 100644 --- a/packages/node/LICENSE +++ b/packages/node/LICENSE @@ -1,23 +1,25 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +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: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* 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 +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 diff --git a/packages/node/package.json b/packages/node/package.json index cd11ae74af63..a309cff094a6 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -37,7 +37,6 @@ "prettier": "^1.16.4", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "ts-jest": "^23.10.5", "tslint": "^5.12.1", "typescript": "^3.3.3" }, diff --git a/packages/raven-js/LICENSE b/packages/raven-js/LICENSE index 862c9698194b..a8f99efd5460 100644 --- a/packages/raven-js/LICENSE +++ b/packages/raven-js/LICENSE @@ -1,23 +1,21 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +BSD 2-Clause License + +Copyright (c) 2019, Sentry (https://sentry.io) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -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 +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 diff --git a/packages/raven-node/LICENSE b/packages/raven-node/LICENSE index 862c9698194b..a8f99efd5460 100644 --- a/packages/raven-node/LICENSE +++ b/packages/raven-node/LICENSE @@ -1,23 +1,21 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +BSD 2-Clause License + +Copyright (c) 2019, Sentry (https://sentry.io) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. -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 +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 diff --git a/packages/types/LICENSE b/packages/types/LICENSE index 862c9698194b..8b42db873c95 100644 --- a/packages/types/LICENSE +++ b/packages/types/LICENSE @@ -1,23 +1,25 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +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: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* 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 +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 diff --git a/packages/typescript/LICENSE b/packages/typescript/LICENSE index 862c9698194b..8b42db873c95 100644 --- a/packages/typescript/LICENSE +++ b/packages/typescript/LICENSE @@ -1,23 +1,25 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +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: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* 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 +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 diff --git a/packages/utils/LICENSE b/packages/utils/LICENSE index 862c9698194b..8b42db873c95 100644 --- a/packages/utils/LICENSE +++ b/packages/utils/LICENSE @@ -1,23 +1,25 @@ -Copyright (c) 2018 Sentry (https://sentry.io) and individual contributors. +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: - 1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. - 3. Neither the name of the Sentry nor the names of its contributors may be -used to endorse or promote products derived from this software without specific -prior written permission. +* 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 +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 diff --git a/packages/utils/package.json b/packages/utils/package.json index f2af57479d1b..f0def28b6cba 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -23,7 +23,6 @@ "prettier": "^1.16.4", "prettier-check": "^2.0.0", "rimraf": "^2.6.3", - "ts-jest": "^23.10.5", "tslint": "^5.12.1", "typescript": "^3.3.3" }, diff --git a/yarn.lock b/yarn.lock index f48234af5703..3835d4118d42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,9 +2,10 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35": +"@babel/code-frame@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== dependencies: "@babel/highlight" "^7.0.0" @@ -79,6 +80,7 @@ "@babel/highlight@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" + integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== dependencies: chalk "^2.0.0" esutils "^2.0.2" @@ -96,13 +98,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/polyfill@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.0.0.tgz#c8ff65c9ec3be6a1ba10113ebd40e8750fb90bff" - dependencies: - core-js "^2.5.7" - regenerator-runtime "^0.11.1" - "@babel/polyfill@^7.2.5": version "7.2.5" resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d" @@ -144,23 +139,6 @@ lodash "^4.17.11" to-fast-properties "^2.0.0" -"@google-cloud/common@^0.26.0": - version "0.26.2" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.26.2.tgz#9c54e2471a84aa031e95a24824976e080f255645" - 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" - duplexify "^3.6.0" - ent "^2.2.0" - extend "^3.0.1" - google-auth-library "^2.0.0" - pify "^4.0.0" - retry-request "^4.0.0" - through2 "^3.0.0" - "@google-cloud/common@^0.31.0": version "0.31.0" resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-0.31.0.tgz#51a82d681043e2718bd32708586d3131b019d7a8" @@ -197,31 +175,6 @@ resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-0.3.1.tgz#f641e6d944a8e0a05ee0cb1091dfa60089becdba" "@google-cloud/storage@^2.3.1": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-2.3.1.tgz#89db0e051a3d30cd2f0c627d0f13633f646ee392" - dependencies: - "@google-cloud/common" "^0.26.0" - "@google-cloud/paginator" "^0.1.0" - "@google-cloud/promisify" "^0.3.0" - arrify "^1.0.0" - async "^2.0.1" - compressible "^2.0.12" - concat-stream "^1.5.0" - duplexify "^3.5.0" - extend "^3.0.0" - gcs-resumable-upload "^0.13.0" - hash-stream-validation "^0.2.1" - mime "^2.2.0" - mime-types "^2.0.8" - once "^1.3.1" - pumpify "^1.5.1" - snakeize "^0.1.0" - stream-events "^1.0.1" - teeny-request "^3.11.0" - through2 "^3.0.0" - xdg-basedir "^3.0.0" - -"@google-cloud/storage@^2.4.2": 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== @@ -263,21 +216,6 @@ pacote "^9.4.1" semver "^5.5.0" -"@lerna/add@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.5.0.tgz#3518b3d4afc3743b7227b1ee3534114eb9575888" - dependencies: - "@lerna/bootstrap" "^3.5.0" - "@lerna/command" "^3.5.0" - "@lerna/filter-options" "^3.5.0" - "@lerna/npm-conf" "^3.4.1" - "@lerna/validation-error" "^3.0.0" - dedent "^0.7.0" - npm-package-arg "^6.0.0" - p-map "^1.2.0" - pacote "^9.1.0" - semver "^5.5.0" - "@lerna/batch-packages@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/batch-packages/-/batch-packages-3.13.0.tgz#697fde5be28822af9d9dca2f750250b90a89a000" @@ -287,14 +225,6 @@ "@lerna/validation-error" "3.13.0" npmlog "^4.1.2" -"@lerna/batch-packages@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@lerna/batch-packages/-/batch-packages-3.1.2.tgz#74b5312a01a8916204cbc71237ffbe93144b99df" - dependencies: - "@lerna/package-graph" "^3.1.2" - "@lerna/validation-error" "^3.0.0" - npmlog "^4.1.2" - "@lerna/bootstrap@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.13.0.tgz#04f5d5b7720b020c0c73e11b2db146103c272cd7" @@ -325,34 +255,6 @@ read-package-tree "^5.1.6" semver "^5.5.0" -"@lerna/bootstrap@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-3.5.0.tgz#4d21ef0d1e648c8121432443a7d80c9442756347" - dependencies: - "@lerna/batch-packages" "^3.1.2" - "@lerna/command" "^3.5.0" - "@lerna/filter-options" "^3.5.0" - "@lerna/has-npm-version" "^3.3.0" - "@lerna/npm-conf" "^3.4.1" - "@lerna/npm-install" "^3.3.0" - "@lerna/rimraf-dir" "^3.3.0" - "@lerna/run-lifecycle" "^3.4.1" - "@lerna/run-parallel-batches" "^3.0.0" - "@lerna/symlink-binary" "^3.3.0" - "@lerna/symlink-dependencies" "^3.3.0" - "@lerna/validation-error" "^3.0.0" - dedent "^0.7.0" - get-port "^3.2.0" - multimatch "^2.1.0" - npm-package-arg "^6.0.0" - npmlog "^4.1.2" - p-finally "^1.0.0" - p-map "^1.2.0" - p-map-series "^1.0.0" - p-waterfall "^1.0.0" - read-package-tree "^5.1.6" - semver "^5.5.0" - "@lerna/changed@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.13.0.tgz#d0249585ce5def15580b5a719231594dae449d10" @@ -364,16 +266,6 @@ "@lerna/output" "3.13.0" "@lerna/version" "3.13.0" -"@lerna/changed@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-3.5.0.tgz#c96c4bde6d78f4b2a7b3b3e2511bf78cb6aabe17" - dependencies: - "@lerna/collect-updates" "^3.5.0" - "@lerna/command" "^3.5.0" - "@lerna/listable" "^3.0.0" - "@lerna/output" "^3.0.0" - "@lerna/version" "^3.5.0" - "@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" @@ -382,13 +274,6 @@ "@lerna/describe-ref" "3.13.0" "@lerna/validation-error" "3.13.0" -"@lerna/check-working-tree@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-3.5.0.tgz#015f90247fa0b44a940eab0dd6a9da2ae5b8f455" - dependencies: - "@lerna/describe-ref" "^3.5.0" - "@lerna/validation-error" "^3.0.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" @@ -398,14 +283,6 @@ execa "^1.0.0" strong-log-transformer "^2.0.0" -"@lerna/child-process@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-3.3.0.tgz#71184a763105b6c8ece27f43f166498d90fe680f" - dependencies: - chalk "^2.3.1" - execa "^1.0.0" - strong-log-transformer "^2.0.0" - "@lerna/clean@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.13.0.tgz#0a7536564eaec3445f4397cf9ab3e66fc268b6fe" @@ -420,18 +297,6 @@ p-map-series "^1.0.0" p-waterfall "^1.0.0" -"@lerna/clean@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-3.5.0.tgz#38e0e58443fa43c19b3eeffcafa46cf254a328ee" - dependencies: - "@lerna/command" "^3.5.0" - "@lerna/filter-options" "^3.5.0" - "@lerna/prompt" "^3.3.1" - "@lerna/rimraf-dir" "^3.3.0" - p-map "^1.2.0" - p-map-series "^1.0.0" - p-waterfall "^1.0.0" - "@lerna/cli@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.13.0.tgz#3d7b357fdd7818423e9681a7b7f2abd106c8a266" @@ -442,15 +307,6 @@ npmlog "^4.1.2" yargs "^12.0.1" -"@lerna/cli@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-3.2.0.tgz#3ed25bcbc0b8f0878bc6a102ee0296f01476cfdf" - dependencies: - "@lerna/global-options" "^3.1.3" - dedent "^0.7.0" - 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" @@ -462,16 +318,6 @@ npmlog "^4.1.2" slash "^1.0.0" -"@lerna/collect-updates@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-3.5.0.tgz#e81c17f89367e71ff59e0f244a523a1dc13891c5" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/describe-ref" "^3.5.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - slash "^1.0.0" - "@lerna/command@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.13.0.tgz#8e7ff2255bccb8737616a899cf7a0c076dd4411c" @@ -488,21 +334,6 @@ lodash "^4.17.5" npmlog "^4.1.2" -"@lerna/command@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-3.5.0.tgz#6b5cc530653aaa631061c1c234f3bc4408cb9613" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/package-graph" "^3.1.2" - "@lerna/project" "^3.5.0" - "@lerna/validation-error" "^3.0.0" - "@lerna/write-log-file" "^3.0.0" - dedent "^0.7.0" - execa "^1.0.0" - is-ci "^1.0.10" - lodash "^4.17.5" - npmlog "^4.1.2" - "@lerna/conventional-commits@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.13.0.tgz#877aa225ca34cca61c31ea02a5a6296af74e1144" @@ -519,20 +350,6 @@ pify "^3.0.0" semver "^5.5.0" -"@lerna/conventional-commits@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-3.5.0.tgz#1c08013c48acdbdbf6400ccfbe1200a18e1f11ce" - dependencies: - "@lerna/validation-error" "^3.0.0" - conventional-changelog-angular "^5.0.2" - conventional-changelog-core "^3.1.5" - conventional-recommended-bump "^4.0.4" - fs-extra "^7.0.0" - get-stream "^4.0.0" - npm-package-arg "^6.0.0" - npmlog "^4.1.2" - semver "^5.5.0" - "@lerna/create-symlink@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.13.0.tgz#e01133082fe040779712c960683cb3a272b67809" @@ -542,14 +359,6 @@ fs-extra "^7.0.0" npmlog "^4.1.2" -"@lerna/create-symlink@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-3.3.0.tgz#91de00fd576018ba4251f0c6a5b4b7f768f22a82" - dependencies: - cmd-shim "^2.0.2" - fs-extra "^7.0.0" - npmlog "^4.1.2" - "@lerna/create@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.13.0.tgz#033ea1bbb028cd18252a8595ef32edf28e99048d" @@ -574,27 +383,6 @@ validate-npm-package-name "^3.0.0" whatwg-url "^7.0.0" -"@lerna/create@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-3.5.0.tgz#22f64a7af7a08cfbed4af2a01ff82307ee9e0b2b" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/command" "^3.5.0" - "@lerna/npm-conf" "^3.4.1" - "@lerna/validation-error" "^3.0.0" - camelcase "^4.1.0" - dedent "^0.7.0" - fs-extra "^7.0.0" - globby "^8.0.1" - init-package-json "^1.10.3" - npm-package-arg "^6.0.0" - pify "^3.0.0" - semver "^5.5.0" - slash "^1.0.0" - validate-npm-package-license "^3.0.3" - 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" @@ -603,13 +391,6 @@ "@lerna/child-process" "3.13.0" npmlog "^4.1.2" -"@lerna/describe-ref@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-3.5.0.tgz#d59090d201a0e587798496417373c7fbc1151fc4" - dependencies: - "@lerna/child-process" "^3.3.0" - npmlog "^4.1.2" - "@lerna/diff@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.13.0.tgz#9a39bfb1c4d6af1ea05b3d3df2ba0022ea24b81d" @@ -620,15 +401,6 @@ "@lerna/validation-error" "3.13.0" npmlog "^4.1.2" -"@lerna/diff@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-3.5.0.tgz#4d131a1045321bcea20d743f5cc7f0d0095cf027" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/command" "^3.5.0" - "@lerna/validation-error" "^3.0.0" - npmlog "^4.1.2" - "@lerna/exec@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.13.0.tgz#76f0a7f48f3feb36d266f4ac1f084c8f34afb152" @@ -641,17 +413,6 @@ "@lerna/run-parallel-batches" "3.13.0" "@lerna/validation-error" "3.13.0" -"@lerna/exec@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-3.5.0.tgz#98f4e8719681c07a739241fadb4cbdbd9d518982" - dependencies: - "@lerna/batch-packages" "^3.1.2" - "@lerna/child-process" "^3.3.0" - "@lerna/command" "^3.5.0" - "@lerna/filter-options" "^3.5.0" - "@lerna/run-parallel-batches" "^3.0.0" - "@lerna/validation-error" "^3.0.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" @@ -661,14 +422,6 @@ "@lerna/filter-packages" "3.13.0" dedent "^0.7.0" -"@lerna/filter-options@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-3.5.0.tgz#34d1719908edbb52d4963c796df565a716282165" - dependencies: - "@lerna/collect-updates" "^3.5.0" - "@lerna/filter-packages" "^3.0.0" - dedent "^0.7.0" - "@lerna/filter-packages@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.13.0.tgz#f5371249e7e1a15928e5e88c544a242e0162c21c" @@ -678,14 +431,6 @@ multimatch "^2.1.0" npmlog "^4.1.2" -"@lerna/filter-packages@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-3.0.0.tgz#5eb25ad1610f3e2ab845133d1f8d7d40314e838f" - dependencies: - "@lerna/validation-error" "^3.0.0" - multimatch "^2.1.0" - npmlog "^4.1.2" - "@lerna/get-npm-exec-opts@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz#d1b552cb0088199fc3e7e126f914e39a08df9ea5" @@ -693,12 +438,6 @@ dependencies: npmlog "^4.1.2" -"@lerna/get-npm-exec-opts@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.0.0.tgz#8fc7866e8d8e9a2f2dc385287ba32eb44de8bdeb" - dependencies: - npmlog "^4.1.2" - "@lerna/get-packed@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-3.13.0.tgz#335e40d77f3c1855aa248587d3e0b2d8f4b06e16" @@ -724,10 +463,6 @@ resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.13.0.tgz#217662290db06ad9cf2c49d8e3100ee28eaebae1" integrity sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ== -"@lerna/global-options@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-3.1.3.tgz#cf85e24655a91d04d4efc9a80c1f83fc768d08ae" - "@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" @@ -736,13 +471,6 @@ "@lerna/child-process" "3.13.0" semver "^5.5.0" -"@lerna/has-npm-version@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-3.3.0.tgz#8a73c2c437a0e1e68a19ccbd0dd3c014d4d39135" - dependencies: - "@lerna/child-process" "^3.3.0" - semver "^5.5.0" - "@lerna/import@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.13.0.tgz#0c521b020edf291c89d591dc6eda0d1efa754452" @@ -757,18 +485,6 @@ fs-extra "^7.0.0" p-map-series "^1.0.0" -"@lerna/import@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-3.5.0.tgz#b42d368378d53c664a3324c1e2fc656a23819f12" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/command" "^3.5.0" - "@lerna/prompt" "^3.3.1" - "@lerna/validation-error" "^3.0.0" - dedent "^0.7.0" - fs-extra "^7.0.0" - p-map-series "^1.0.0" - "@lerna/init@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.13.0.tgz#7b92151572aaa1d9b89002e0b8c332db0ff1b692" @@ -780,16 +496,6 @@ p-map "^1.2.0" write-json-file "^2.3.0" -"@lerna/init@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-3.5.0.tgz#40796d70dc261907e4149df62db8acbda8dc56fc" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/command" "^3.5.0" - fs-extra "^7.0.0" - p-map "^1.2.0" - write-json-file "^2.3.0" - "@lerna/link@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.13.0.tgz#9965e2fcacfa1b1414db8902d800464d56cf170e" @@ -801,16 +507,6 @@ p-map "^1.2.0" slash "^1.0.0" -"@lerna/link@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-3.5.0.tgz#ae7fe19df1bb0555dfa5aafcaf45c7fad537d81a" - dependencies: - "@lerna/command" "^3.5.0" - "@lerna/package-graph" "^3.1.2" - "@lerna/symlink-dependencies" "^3.3.0" - p-map "^1.2.0" - slash "^1.0.0" - "@lerna/list@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.13.0.tgz#4cb34828507d2c02ccd3305ff8b9f546cab7727e" @@ -821,15 +517,6 @@ "@lerna/listable" "3.13.0" "@lerna/output" "3.13.0" -"@lerna/list@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-3.5.0.tgz#ae38724f1cdc588fde8495385e3b1a9aeac0c80f" - dependencies: - "@lerna/command" "^3.5.0" - "@lerna/filter-options" "^3.5.0" - "@lerna/listable" "^3.0.0" - "@lerna/output" "^3.0.0" - "@lerna/listable@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.13.0.tgz#babc18442c590b549cf0966d20d75fea066598d4" @@ -839,13 +526,6 @@ chalk "^2.3.1" columnify "^1.5.4" -"@lerna/listable@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-3.0.0.tgz#27209b1382c87abdbc964220e75c247d803d4199" - dependencies: - chalk "^2.3.1" - columnify "^1.5.4" - "@lerna/log-packed@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.13.0.tgz#497b5f692a8d0e3f669125da97b0dadfd9e480f3" @@ -856,15 +536,6 @@ has-unicode "^2.0.1" npmlog "^4.1.2" -"@lerna/log-packed@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-3.0.4.tgz#6d1f6ce5ca68b9971f2a27f0ecf3c50684be174a" - dependencies: - byte-size "^4.0.3" - columnify "^1.5.4" - has-unicode "^2.0.1" - npmlog "^4.1.2" - "@lerna/npm-conf@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.13.0.tgz#6b434ed75ff757e8c14381b9bbfe5d5ddec134a7" @@ -873,13 +544,6 @@ config-chain "^1.1.11" pify "^3.0.0" -"@lerna/npm-conf@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-3.4.1.tgz#859e931b0bc9a5eed86309cc09508810c1e7d121" - dependencies: - config-chain "^1.1.11" - pify "^3.0.0" - "@lerna/npm-dist-tag@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.13.0.tgz#49ecbe0e82cbe4ad4a8ea6de112982bf6c4e6cd4" @@ -890,14 +554,6 @@ npm-registry-fetch "^3.9.0" npmlog "^4.1.2" -"@lerna/npm-dist-tag@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-3.3.0.tgz#e1c5ab67674216d901266a16846b21cc81ff6afd" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/get-npm-exec-opts" "^3.0.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" @@ -911,18 +567,6 @@ signal-exit "^3.0.2" write-pkg "^3.1.0" -"@lerna/npm-install@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-3.3.0.tgz#16d00ffd668d11b2386b3ac68bdac2cf8320e533" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/get-npm-exec-opts" "^3.0.0" - fs-extra "^7.0.0" - npm-package-arg "^6.0.0" - npmlog "^4.1.2" - 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" @@ -936,18 +580,6 @@ pify "^3.0.0" read-package-json "^2.0.13" -"@lerna/npm-publish@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-3.3.1.tgz#30384665d7ee387343332ece62ca231207bbabea" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/get-npm-exec-opts" "^3.0.0" - "@lerna/has-npm-version" "^3.3.0" - "@lerna/log-packed" "^3.0.4" - fs-extra "^7.0.0" - npmlog "^4.1.2" - p-map "^1.2.0" - "@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" @@ -957,14 +589,6 @@ "@lerna/get-npm-exec-opts" "3.13.0" npmlog "^4.1.2" -"@lerna/npm-run-script@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-3.3.0.tgz#3c79601c27c67121155b20e039be53130217db72" - dependencies: - "@lerna/child-process" "^3.3.0" - "@lerna/get-npm-exec-opts" "^3.0.0" - npmlog "^4.1.2" - "@lerna/output@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.13.0.tgz#3ded7cc908b27a9872228a630d950aedae7a4989" @@ -972,12 +596,6 @@ dependencies: npmlog "^4.1.2" -"@lerna/output@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-3.0.0.tgz#4ed4a30ed2f311046b714b3840a090990ba3ce35" - dependencies: - npmlog "^4.1.2" - "@lerna/pack-directory@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-3.13.0.tgz#e5df1647f7d3c417753aba666c17bdb8743eb346" @@ -1001,14 +619,6 @@ npm-package-arg "^6.1.0" semver "^5.5.0" -"@lerna/package-graph@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-3.1.2.tgz#b70298a3a8c82e12090da33233bf242223a38f20" - dependencies: - "@lerna/validation-error" "^3.0.0" - npm-package-arg "^6.0.0" - semver "^5.5.0" - "@lerna/package@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.13.0.tgz#4baeebc49a57fc9b31062cc59f5ee38384429fc8" @@ -1018,13 +628,6 @@ npm-package-arg "^6.1.0" write-pkg "^3.1.0" -"@lerna/package@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-3.0.0.tgz#14afc9a6cb1f7f7b23c1d7c7aa81bdac7d44c0e5" - dependencies: - npm-package-arg "^6.0.0" - write-pkg "^3.1.0" - "@lerna/project@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.13.0.tgz#e7d3ae16309988443eb47470c9dbf6aa8386a2ed" @@ -1043,23 +646,6 @@ resolve-from "^4.0.0" write-json-file "^2.3.0" -"@lerna/project@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-3.5.0.tgz#ac5c7b3c49318552b29ccb7a471a657fd57d3091" - dependencies: - "@lerna/package" "^3.0.0" - "@lerna/validation-error" "^3.0.0" - cosmiconfig "^5.0.2" - dedent "^0.7.0" - dot-prop "^4.2.0" - glob-parent "^3.1.0" - globby "^8.0.1" - load-json-file "^4.0.0" - npmlog "^4.1.2" - p-map "^1.2.0" - resolve-from "^4.0.0" - write-json-file "^2.3.0" - "@lerna/prompt@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.13.0.tgz#53571462bb3f5399cc1ca6d335a411fe093426a5" @@ -1068,13 +654,6 @@ inquirer "^6.2.0" npmlog "^4.1.2" -"@lerna/prompt@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-3.3.1.tgz#ec53f9034a7a02a671627241682947f65078ab88" - dependencies: - inquirer "^6.2.0" - npmlog "^4.1.2" - "@lerna/publish@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.13.0.tgz#9acd2ab79b278e0131f677c339755cfecc30b1b5" @@ -1111,37 +690,6 @@ pacote "^9.4.1" semver "^5.5.0" -"@lerna/publish@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-3.5.0.tgz#e6543375457846557f3cb803f7795a577333a941" - dependencies: - "@lerna/batch-packages" "^3.1.2" - "@lerna/check-working-tree" "^3.5.0" - "@lerna/child-process" "^3.3.0" - "@lerna/collect-updates" "^3.5.0" - "@lerna/command" "^3.5.0" - "@lerna/describe-ref" "^3.5.0" - "@lerna/get-npm-exec-opts" "^3.0.0" - "@lerna/npm-conf" "^3.4.1" - "@lerna/npm-dist-tag" "^3.3.0" - "@lerna/npm-publish" "^3.3.1" - "@lerna/output" "^3.0.0" - "@lerna/prompt" "^3.3.1" - "@lerna/run-lifecycle" "^3.4.1" - "@lerna/run-parallel-batches" "^3.0.0" - "@lerna/validation-error" "^3.0.0" - "@lerna/version" "^3.5.0" - fs-extra "^7.0.0" - libnpmaccess "^3.0.0" - npm-package-arg "^6.0.0" - npm-registry-fetch "^3.8.0" - npmlog "^4.1.2" - p-finally "^1.0.0" - p-map "^1.2.0" - p-pipe "^1.2.0" - p-reduce "^1.0.0" - semver "^5.5.0" - "@lerna/pulse-till-done@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz#c8e9ce5bafaf10d930a67d7ed0ccb5d958fe0110" @@ -1158,14 +706,6 @@ npmlog "^4.1.2" read-cmd-shim "^1.0.1" -"@lerna/resolve-symlink@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-3.3.0.tgz#c5d99a60cb17e2ea90b3521a0ba445478d194a44" - dependencies: - fs-extra "^7.0.0" - 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" @@ -1176,15 +716,6 @@ path-exists "^3.0.0" rimraf "^2.6.2" -"@lerna/rimraf-dir@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-3.3.0.tgz#687e9bb3668a9e540e281302a52d9a573860f5db" - dependencies: - "@lerna/child-process" "^3.3.0" - npmlog "^4.1.2" - path-exists "^3.0.0" - rimraf "^2.6.2" - "@lerna/run-lifecycle@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.13.0.tgz#d8835ee83425edee40f687a55f81b502354d3261" @@ -1195,14 +726,6 @@ npm-lifecycle "^2.1.0" npmlog "^4.1.2" -"@lerna/run-lifecycle@^3.4.1": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-3.4.1.tgz#6d7e44eada31cb4ec78b18ef050da0d86f6c892b" - dependencies: - "@lerna/npm-conf" "^3.4.1" - npm-lifecycle "^2.0.0" - npmlog "^4.1.2" - "@lerna/run-parallel-batches@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/run-parallel-batches/-/run-parallel-batches-3.13.0.tgz#0276bb4e7cd0995297db82d134ca2bd08d63e311" @@ -1211,13 +734,6 @@ p-map "^1.2.0" p-map-series "^1.0.0" -"@lerna/run-parallel-batches@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-parallel-batches/-/run-parallel-batches-3.0.0.tgz#468704934084c74991d3124d80607857d4dfa840" - dependencies: - p-map "^1.2.0" - p-map-series "^1.0.0" - "@lerna/run@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.13.0.tgz#4a73af6133843cf9d5767f006e2b988a2aa3461a" @@ -1233,20 +749,6 @@ "@lerna/validation-error" "3.13.0" p-map "^1.2.0" -"@lerna/run@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-3.5.0.tgz#f2bf479d8ef12e6a11be5a6404bb1a83eb56146c" - dependencies: - "@lerna/batch-packages" "^3.1.2" - "@lerna/command" "^3.5.0" - "@lerna/filter-options" "^3.5.0" - "@lerna/npm-run-script" "^3.3.0" - "@lerna/output" "^3.0.0" - "@lerna/run-parallel-batches" "^3.0.0" - "@lerna/timer" "^3.5.0" - "@lerna/validation-error" "^3.0.0" - p-map "^1.2.0" - "@lerna/symlink-binary@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.13.0.tgz#36a9415d468afcb8105750296902f6f000a9680d" @@ -1257,16 +759,6 @@ fs-extra "^7.0.0" p-map "^1.2.0" -"@lerna/symlink-binary@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-3.3.0.tgz#99ea570b21baabd61ecab27582eeb1d7b2c5f9cf" - dependencies: - "@lerna/create-symlink" "^3.3.0" - "@lerna/package" "^3.0.0" - fs-extra "^7.0.0" - p-map "^1.2.0" - read-pkg "^3.0.0" - "@lerna/symlink-dependencies@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.13.0.tgz#76c23ecabda7824db98a0561364f122b457509cf" @@ -1280,27 +772,11 @@ p-map "^1.2.0" p-map-series "^1.0.0" -"@lerna/symlink-dependencies@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-3.3.0.tgz#13bcaed3e37986ab01b13498a459c7f609397dc3" - dependencies: - "@lerna/create-symlink" "^3.3.0" - "@lerna/resolve-symlink" "^3.3.0" - "@lerna/symlink-binary" "^3.3.0" - fs-extra "^7.0.0" - p-finally "^1.0.0" - p-map "^1.2.0" - p-map-series "^1.0.0" - "@lerna/timer@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.13.0.tgz#bcd0904551db16e08364d6c18e5e2160fc870781" integrity sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw== -"@lerna/timer@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-3.5.0.tgz#8dee6acf002c55de64678c66ef37ca52143f1b9b" - "@lerna/validation-error@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.13.0.tgz#c86b8f07c5ab9539f775bd8a54976e926f3759c3" @@ -1308,12 +784,6 @@ dependencies: npmlog "^4.1.2" -"@lerna/validation-error@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-3.0.0.tgz#a27e90051c3ba71995e2a800a43d94ad04b3e3f4" - dependencies: - npmlog "^4.1.2" - "@lerna/version@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.13.0.tgz#d2eb17561b6a9b08947a88b5dc463a4a72e01198" @@ -1342,32 +812,6 @@ slash "^1.0.0" temp-write "^3.4.0" -"@lerna/version@^3.5.0": - version "3.5.0" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-3.5.0.tgz#df6d4d8ef077b51962126c0f52c800d98c53cc26" - dependencies: - "@lerna/batch-packages" "^3.1.2" - "@lerna/check-working-tree" "^3.5.0" - "@lerna/child-process" "^3.3.0" - "@lerna/collect-updates" "^3.5.0" - "@lerna/command" "^3.5.0" - "@lerna/conventional-commits" "^3.5.0" - "@lerna/output" "^3.0.0" - "@lerna/prompt" "^3.3.1" - "@lerna/run-lifecycle" "^3.4.1" - "@lerna/validation-error" "^3.0.0" - chalk "^2.3.1" - dedent "^0.7.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - p-map "^1.2.0" - p-pipe "^1.2.0" - p-reduce "^1.0.0" - p-waterfall "^1.0.0" - semver "^5.5.0" - slash "^1.0.0" - temp-write "^3.4.0" - "@lerna/write-log-file@3.13.0": version "3.13.0" resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.13.0.tgz#b78d9e4cfc1349a8be64d91324c4c8199e822a26" @@ -1376,16 +820,10 @@ npmlog "^4.1.2" write-file-atomic "^2.3.0" -"@lerna/write-log-file@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-3.0.0.tgz#2f95fee80c6821fe1ee6ccf8173d2b4079debbd2" - dependencies: - npmlog "^4.1.2" - write-file-atomic "^2.3.0" - "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== dependencies: call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" @@ -1393,6 +831,7 @@ "@nodelib/fs.stat@^1.1.2": version "1.1.3" resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@octokit/endpoint@^3.1.1": version "3.1.3" @@ -1419,20 +858,6 @@ node-fetch "^2.3.0" universal-user-agent "^2.0.1" -"@octokit/rest@^15.12.1": - version "15.18.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-15.18.0.tgz#e6de702b57dec94c71e806f1cff0ecb9725b3054" - dependencies: - before-after-hook "^1.1.0" - btoa-lite "^1.0.0" - debug "^3.1.0" - http-proxy-agent "^2.1.0" - https-proxy-agent "^2.2.0" - lodash "^4.17.4" - node-fetch "^2.1.1" - universal-user-agent "^2.0.0" - url-template "^2.0.8" - "@octokit/rest@^16.14.1", "@octokit/rest@^16.15.0": version "16.15.0" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.15.0.tgz#648a88d5de055bcf38976709c5b2bdf1227b926f" @@ -1448,18 +873,12 @@ universal-user-agent "^2.0.0" url-template "^2.0.8" -"@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.2.0", "@sinonjs/commons@^1.3.0": +"@sinonjs/commons@^1.0.2", "@sinonjs/commons@^1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.3.0.tgz#50a2754016b6f30a994ceda6d9a0a8c36adda849" dependencies: type-detect "4.0.8" -"@sinonjs/formatio@3.0.0", "@sinonjs/formatio@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.0.0.tgz#9d282d81030a03a03fa0c5ce31fd8786a4da311a" - dependencies: - "@sinonjs/samsam" "2.1.0" - "@sinonjs/formatio@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.1.0.tgz#6ac9d1eb1821984d84c4996726e45d1646d8cce5" @@ -1467,12 +886,6 @@ dependencies: "@sinonjs/samsam" "^2 || ^3" -"@sinonjs/samsam@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-2.1.0.tgz#b8b8f5b819605bd63601a6ede459156880f38ea3" - dependencies: - array-from "^2.1.1" - "@sinonjs/samsam@^2 || ^3", "@sinonjs/samsam@^3.0.2": version "3.1.1" resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.1.1.tgz#8e2eceb2353f6626e2867352e3def951d3366240" @@ -1482,10 +895,6 @@ array-from "^2.1.1" lodash "^4.17.11" -"@sinonjs/samsam@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-2.1.2.tgz#16947fce5f57258d01f1688fdc32723093c55d3f" - "@types/caseless@*": version "0.12.1" resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.1.tgz#9794c69c8385d0192acc471a540d1f8e0d16218a" @@ -1493,6 +902,7 @@ "@types/chai@^4.1.3": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" + integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== "@types/cookie@0.3.2": version "0.3.2" @@ -1511,8 +921,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/events@*": - version "1.2.0" - resolved "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== "@types/form-data@*": version "2.2.1" @@ -1521,36 +932,36 @@ "@types/node" "*" "@types/fs-extra@^5.0.3": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.4.tgz#b971134d162cc0497d221adde3dbb67502225599" + version "5.0.5" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.5.tgz#080d90a792f3fa2c5559eb44bd8ef840aae9104b" + integrity sha512-w7iqhDH9mN8eLClQOYTkhdYUOSpp25eXxfc6VbFOGtzxW34JcvctH2bKjj4jD4++z4R5iO5D+pg48W2e03I65A== dependencies: "@types/node" "*" "@types/glob@*": version "7.1.1" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== dependencies: "@types/events" "*" "@types/minimatch" "*" "@types/node" "*" "@types/handlebars@^4.0.38": - version "4.0.39" - resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.39.tgz#961fb54db68030890942e6aeffe9f93a957807bd" + version "4.0.40" + resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.40.tgz#b714e13d296a75bff3f199316d1311933ca79ffd" + integrity sha512-sGWNtsjNrLOdKha2RV1UeF8+UbQnPSG7qbe5wwbni0mw4h2gHXyPFUMOC+xwGirIiiydM/HSqjDO4rk6NFB18w== "@types/highlight.js@^9.12.3": version "9.12.3" resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.3.tgz#b672cfaac25cbbc634a0fd92c515f66faa18dbca" + integrity sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ== "@types/jest-diff@*": version "20.0.1" resolved "https://registry.yarnpkg.com/@types/jest-diff/-/jest-diff-20.0.1.tgz#35cc15b9c4f30a18ef21852e255fdb02f6d59b89" integrity sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA== -"@types/jest@^23.3.9": - version "23.3.9" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.9.tgz#c16b55186ee73ae65e001fbee69d392c51337ad1" - "@types/jest@^24.0.6": version "24.0.6" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-24.0.6.tgz#ba4c8c7900ce098a82ca99293cbe4192bde4f355" @@ -1559,8 +970,9 @@ "@types/jest-diff" "*" "@types/lodash@^4.14.110": - version "4.14.118" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.118.tgz#247bab39bfcc6d910d4927c6e06cbc70ec376f27" + version "4.14.121" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.121.tgz#9327e20d49b95fc2bf983fc2f045b2c6effc80b9" + integrity sha512-ORj7IBWj13iYufXt/VXrCNMbUuCTJfhzme5kx9U/UtcIPdJYuvPDUAlHlbNhz/8lKCLy9XGIZnGrqXOtQbPGoQ== "@types/lru-cache@^4.1.1": version "4.1.1" @@ -1569,6 +981,7 @@ "@types/marked@^0.4.0": version "0.4.2" resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.4.2.tgz#64a89e53ea37f61cc0f3ee1732c555c2dbf6452f" + integrity sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg== "@types/md5@2.1.33": version "2.1.33" @@ -1580,33 +993,19 @@ "@types/minimatch@*", "@types/minimatch@3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/mocha@^5.2.0": - version "5.2.5" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.5.tgz#8a4accfc403c124a0bafe8a9fc61a05ec1032073" - -"@types/mocha@^5.2.6": version "5.2.6" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.6.tgz#b8622d50557dd155e9f2f634b7d68fd38de5e94b" integrity sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw== -"@types/node@*", "@types/node@^10.0.2": - version "10.12.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.10.tgz#4fa76e6598b7de3f0cb6ec3abacc4f59e5b3a2ce" - -"@types/node@^11.9.4": +"@types/node@*", "@types/node@^11.9.4": version "11.9.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-11.9.4.tgz#ceb0048a546db453f6248f2d1d95e937a6f00a14" integrity sha512-Zl8dGvAcEmadgs1tmSPcvwzO1YRsz38bVJQvH1RvRqSR9/5n61Q1ktcDL0ht3FXWR+ZpVmXVwN1LuH4Ax23NsA== "@types/raven@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@types/raven/-/raven-2.5.1.tgz#62ef0a59e29691945e1f295b62ed199619cbd9b6" - dependencies: - "@types/events" "*" - "@types/node" "*" - -"@types/raven@^2.5.3": version "2.5.3" resolved "https://registry.yarnpkg.com/@types/raven/-/raven-2.5.3.tgz#bd4bed667dd9cfda39452f8ed64a87f45233bc3a" integrity sha512-k6vxiX5I6/GEqJS9mMYPVIgMJf/X26n09NfzuqBpdcEp684RIwpdrwCgSyJGuy8EaSG1wc2rFP7xVEAixPzw7Q== @@ -1623,16 +1022,13 @@ "@types/tough-cookie" "*" "@types/shelljs@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.0.tgz#0caa56b68baae4f68f44e0dd666ab30b098e3632" + version "0.8.3" + resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.3.tgz#f713f312dbae49ab5025290007e71ea32998e9a9" + integrity sha512-miY41hqc5SkRlsZDod3heDa4OS9xv8G77EMBQuSpqq86HBn66l7F+f8y9YKm+1PIuwC8QEZVwN8YxOOG7Y67fA== dependencies: "@types/glob" "*" "@types/node" "*" -"@types/sinon@^5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-5.0.7.tgz#0d9f89dd0c9988c4f1505a92a3a324ee7bdb18a6" - "@types/sinon@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.0.6.tgz#dbe6c059dd4e2fd2b8e8fc3ed051d4706c84c63e" @@ -1646,156 +1042,165 @@ version "2.3.4" resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.4.tgz#821878b81bfab971b93a265a561d54ea61f9059f" -"@webassemblyjs/ast@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.2.tgz#89297cd602cf8148e08d5fe1efbbba0cdb913ca7" - integrity sha512-5LLqqVsXZAhAJN0S7fTi11jwMJOjfR8290V0V7BWKgmZ36VVE6ZGuH4BN3eLt7LvNMIgyuYwyrPwiz6f3SGlBQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.2" - "@webassemblyjs/helper-wasm-bytecode" "1.8.2" - "@webassemblyjs/wast-parser" "1.8.2" - -"@webassemblyjs/floating-point-hex-parser@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.2.tgz#c304fac0e5c2dd69a6d0f29000f4d6c4bf583203" - integrity sha512-5WIj+pSzbs8ao7NM31xFcGeOSnXgpCikmCFRYkXygVDqVaXTq/Hr9roqarUVMNfAegNc61oKEhe3pi+HUCXJEw== - -"@webassemblyjs/helper-api-error@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.2.tgz#e4c5325b264f08513bcf0e48cf3c0a3ea690b508" - integrity sha512-TJBDJPXO9DSC4qf5FZT0VFlTdJSm4DKxzcoyWwVike1aQQQEbCk167MJxYLi0SuHeOtULLtDDSZL7yDL3XXMKA== - -"@webassemblyjs/helper-buffer@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.2.tgz#c133435f8482240fab1994151c09d7bdd7b8f5a8" - integrity sha512-6fTynU6b0bC+yBH7+M6/BBRZId4F1fIuX00G1ZX45EAQOrB8p4TK5bccAEPG2vuyvnd4tgB1/4cYXq5GpszMGA== - -"@webassemblyjs/helper-code-frame@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.2.tgz#def3d079fe6ce38d997e939af3ed6cc3a37ff0f8" - integrity sha512-5beYTZS4Wsscu8ys2cLZ0SiToEe1wNitzrV/jCr02wGPOcpPHf0ERImR6iBGe/LX0O2cV9Pgi78hFp5WfNKeAg== - dependencies: - "@webassemblyjs/wast-printer" "1.8.2" - -"@webassemblyjs/helper-fsm@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.2.tgz#7d1a8186c51df38d39e8a742aafdd002965d397c" - integrity sha512-7xRO1lFNj1fGm+ik73n8TuWXKeAqTuqeApqnxWnW+nI2lPyj4awrt+n1XkQr8OwmVK7mFJSRuTZc568qtgOyzQ== - -"@webassemblyjs/helper-module-context@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.2.tgz#3bfb0e7b889876bb8a7d1ccadca47e013721163e" - integrity sha512-EBr+n9M2F7PQ02s0f87KnSPva0KlT2S4IGDP+7aYqt2FCaMZzCtXcVahGSGg3ESZBSD0gzFU4486zD7SUsSD0Q== - -"@webassemblyjs/helper-wasm-bytecode@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.2.tgz#72a7fc29949af10d2960338fc84192df23ef030e" - integrity sha512-gS0trUUPYevbs5Rsv9E+VbzDuZ9KB4Tu/QymTfHtnSDpX4wxhs9u9/y/KiH84r0Z4xvm8/pqWnGvM77oxSPHYw== - -"@webassemblyjs/helper-wasm-section@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.2.tgz#4b36c105bfcc3dbabea9e8d04617127b3178f92f" - integrity sha512-HLHOR6/Vc+f5UziOUNQ3f5YedCMCuU46BdMEhjQBQwlOWqVAxgwqUn/KJkuhMvvjQ2FkASaDup8ohZrjyCKDKg== - dependencies: - "@webassemblyjs/ast" "1.8.2" - "@webassemblyjs/helper-buffer" "1.8.2" - "@webassemblyjs/helper-wasm-bytecode" "1.8.2" - "@webassemblyjs/wasm-gen" "1.8.2" - -"@webassemblyjs/ieee754@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.2.tgz#43f8969f90e08b70101f35c93df07afaca5c9d5a" - integrity sha512-v9RtqGJ+z8UweiRh47DheXVtV0d/o9sQfXzAX1/1n/nw5G85yEQJdHcmwiRdu+SXmqlZQeymsnmve2oianzW4g== +"@webassemblyjs/ast@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.3.tgz#63a741bd715a6b6783f2ea5c6ab707516aa215eb" + integrity sha512-xy3m06+Iu4D32+6soz6zLnwznigXJRuFNTovBX2M4GqVqLb0dnyWLbPnpcXvUSdEN+9DVyDeaq2jyH1eIL2LZQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.3" + "@webassemblyjs/helper-wasm-bytecode" "1.8.3" + "@webassemblyjs/wast-parser" "1.8.3" + +"@webassemblyjs/floating-point-hex-parser@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.3.tgz#f198a2d203b3c50846a064f5addd6a133ef9bc0e" + integrity sha512-vq1TISG4sts4f0lDwMUM0f3kpe0on+G3YyV5P0IySHFeaLKRYZ++n2fCFfG4TcCMYkqFeTUYFxm75L3ddlk2xA== + +"@webassemblyjs/helper-api-error@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.3.tgz#3b708f6926accd64dcbaa7ba5b63db5660ff4f66" + integrity sha512-BmWEynI4FnZbjk8CaYZXwcv9a6gIiu+rllRRouQUo73hglanXD3AGFJE7Q4JZCoVE0p5/jeX6kf5eKa3D4JxwQ== + +"@webassemblyjs/helper-buffer@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.3.tgz#f3150a23ffaba68621e1f094c8a14bebfd53dd48" + integrity sha512-iVIMhWnNHoFB94+/2l7LpswfCsXeMRnWfExKtqsZ/E2NxZyUx9nTeKK/MEMKTQNEpyfznIUX06OchBHQ+VKi/Q== + +"@webassemblyjs/helper-code-frame@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.3.tgz#f43ac605789b519d95784ef350fd2968aebdd3ef" + integrity sha512-K1UxoJML7GKr1QXR+BG7eXqQkvu+eEeTjlSl5wUFQ6W6vaOc5OwSxTcb3oE9x/3+w4NHhrIKD4JXXCZmLdL2cg== + dependencies: + "@webassemblyjs/wast-printer" "1.8.3" + +"@webassemblyjs/helper-fsm@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.3.tgz#46aaa03f41082a916850ebcb97e9fc198ef36a9c" + integrity sha512-387zipfrGyO77/qm7/SDUiZBjQ5KGk4qkrVIyuoubmRNIiqn3g+6ijY8BhnlGqsCCQX5bYKOnttJobT5xoyviA== + +"@webassemblyjs/helper-module-context@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.3.tgz#150da405d90c8ea81ae0b0e1965b7b64e585634f" + integrity sha512-lPLFdQfaRssfnGEJit5Sk785kbBPPPK4ZS6rR5W/8hlUO/5v3F+rN8XuUcMj/Ny9iZiyKhhuinWGTUuYL4VKeQ== + dependencies: + "@webassemblyjs/ast" "1.8.3" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.3.tgz#12f55bbafbbc7ddf9d8059a072cb7b0c17987901" + integrity sha512-R1nJW7bjyJLjsJQR5t3K/9LJ0QWuZezl8fGa49DZq4IVaejgvkbNlKEQxLYTC579zgT4IIIVHb5JA59uBPHXyw== + +"@webassemblyjs/helper-wasm-section@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.3.tgz#9e79456d9719e116f4f8998ee62ab54ba69a6cf3" + integrity sha512-P6F7D61SJY73Yz+fs49Q3+OzlYAZP86OfSpaSY448KzUy65NdfzDmo2NPVte+Rw4562MxEAacvq/mnDuvRWOcg== + dependencies: + "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/helper-buffer" "1.8.3" + "@webassemblyjs/helper-wasm-bytecode" "1.8.3" + "@webassemblyjs/wasm-gen" "1.8.3" + +"@webassemblyjs/ieee754@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.3.tgz#0a89355b1f6c9d08d0605c2acbc2a6fe3141f5b4" + integrity sha512-UD4HuLU99hjIvWz1pD68b52qsepWQlYCxDYVFJQfHh3BHyeAyAlBJ+QzLR1nnS5J6hAzjki3I3AoJeobNNSZlg== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.2.tgz#d32c149f196d4fbb639dfec9557e5e950f8e5ae4" - integrity sha512-41zX+6xpo6G2bkq3mdr+K5nXx5OOL6V979ucbLyq1ra5dFI3ReLiw6+HOCF5ih0t5HMQVIQBhInZIdxqcpc/Qg== - dependencies: - long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" - -"@webassemblyjs/utf8@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.2.tgz#6b262c1cba9052a8fd01a63eea50265ccd7f3b16" - integrity sha512-fP2Q4igo9/R82xeVra+zIQOjnmknSiAhykg//fz7c1UjghzoutQtldcbKOaL0+0j31RRFMDHgrUL+12RQExOYg== - -"@webassemblyjs/wasm-edit@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.2.tgz#3d3bbf10c46084e6525a1d9e2476bd072f0edd5b" - integrity sha512-rM1sgdLQrXQs4ZapglK86mW8QMml0FJ+jwZ5961sEmHISTkJRvheILuzA9jcKy5vwhWgkPf/nIhO2I6A9rkGww== - dependencies: - "@webassemblyjs/ast" "1.8.2" - "@webassemblyjs/helper-buffer" "1.8.2" - "@webassemblyjs/helper-wasm-bytecode" "1.8.2" - "@webassemblyjs/helper-wasm-section" "1.8.2" - "@webassemblyjs/wasm-gen" "1.8.2" - "@webassemblyjs/wasm-opt" "1.8.2" - "@webassemblyjs/wasm-parser" "1.8.2" - "@webassemblyjs/wast-printer" "1.8.2" - -"@webassemblyjs/wasm-gen@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.2.tgz#389670ade8398275cbf7c7c92e38f6f5eadc4c1a" - integrity sha512-WTBesrMydDwJbbB48OZGcMq6zDsT6CJd1UalvGuXtHJLargazOron+JBdmt8Nnd+Z2s3TPfCPP54EpQBsDVR7Q== - dependencies: - "@webassemblyjs/ast" "1.8.2" - "@webassemblyjs/helper-wasm-bytecode" "1.8.2" - "@webassemblyjs/ieee754" "1.8.2" - "@webassemblyjs/leb128" "1.8.2" - "@webassemblyjs/utf8" "1.8.2" - -"@webassemblyjs/wasm-opt@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.2.tgz#967019ac1b6d577177d241b912f61f01122d6b49" - integrity sha512-tzXn0xNQNyoUBr1+O1rwYXZd2bcUdXSOUTu0fLAIPl01dcTY6hjIi2B2DXYqk9OVQRnjPyX2Ew6rkeCTxfaYaQ== - dependencies: - "@webassemblyjs/ast" "1.8.2" - "@webassemblyjs/helper-buffer" "1.8.2" - "@webassemblyjs/wasm-gen" "1.8.2" - "@webassemblyjs/wasm-parser" "1.8.2" - -"@webassemblyjs/wasm-parser@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.2.tgz#7a9d587a3edab32fc800dc9498bdbdf90896bb79" - integrity sha512-uc6nVjvUjZzHa8fSl0ko684puuw0ujfCYn19v5tTu0DQ7tXx9jlZXzYw0aW7fmROxyez7BcbJloYLmXg723vVQ== - dependencies: - "@webassemblyjs/ast" "1.8.2" - "@webassemblyjs/helper-api-error" "1.8.2" - "@webassemblyjs/helper-wasm-bytecode" "1.8.2" - "@webassemblyjs/ieee754" "1.8.2" - "@webassemblyjs/leb128" "1.8.2" - "@webassemblyjs/utf8" "1.8.2" - -"@webassemblyjs/wast-parser@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.2.tgz#c3ded4de843756ab5f435c422a36fdd48aa518ad" - integrity sha512-idk8cCqM+T6/iIxoQCOz85vKvWhyHghJbICob/H1AN8byN1O6a2Jxk+g1ZJA7sZDc6/q8pYV6dVkHKgm8y1oUA== - dependencies: - "@webassemblyjs/ast" "1.8.2" - "@webassemblyjs/floating-point-hex-parser" "1.8.2" - "@webassemblyjs/helper-api-error" "1.8.2" - "@webassemblyjs/helper-code-frame" "1.8.2" - "@webassemblyjs/helper-fsm" "1.8.2" - long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" - -"@webassemblyjs/wast-printer@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.2.tgz#a7dbb0e6eba3721fd06a949ac1917fd289b3db4d" - integrity sha512-TENFBgf5bKKfs2LbW8fd/0xvamccbEHoR83lQlEP7Qi0nkpXAP77VpvIITy0J+UZAa/Y3j6K6MPw1tNMbdjf4A== - dependencies: - "@webassemblyjs/ast" "1.8.2" - "@webassemblyjs/wast-parser" "1.8.2" - long "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" +"@webassemblyjs/leb128@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.3.tgz#b7fd9d7c039e34e375c4473bd4dc89ce8228b920" + integrity sha512-XXd3s1BmkC1gpGABuCRLqCGOD6D2L+Ma2BpwpjrQEHeQATKWAQtxAyU9Z14/z8Ryx6IG+L4/NDkIGHrccEhRUg== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.3.tgz#75712db52cfdda868731569ddfe11046f1f1e7a2" + integrity sha512-Wv/WH9Zo5h5ZMyfCNpUrjFsLZ3X1amdfEuwdb7MLdG3cPAjRS6yc6ElULlpjLiiBTuzvmLhr3ENsuGyJ3wyCgg== + +"@webassemblyjs/wasm-edit@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.3.tgz#23c3c6206b096f9f6aa49623a5310a102ef0fb87" + integrity sha512-nB19eUx3Yhi1Vvv3yev5r+bqQixZprMtaoCs1brg9Efyl8Hto3tGaUoZ0Yb4Umn/gQCyoEGFfUxPLp1/8+Jvnw== + dependencies: + "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/helper-buffer" "1.8.3" + "@webassemblyjs/helper-wasm-bytecode" "1.8.3" + "@webassemblyjs/helper-wasm-section" "1.8.3" + "@webassemblyjs/wasm-gen" "1.8.3" + "@webassemblyjs/wasm-opt" "1.8.3" + "@webassemblyjs/wasm-parser" "1.8.3" + "@webassemblyjs/wast-printer" "1.8.3" + +"@webassemblyjs/wasm-gen@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.3.tgz#1a433b8ab97e074e6ac2e25fcbc8cb6125400813" + integrity sha512-sDNmu2nLBJZ/huSzlJvd9IK8B1EjCsOl7VeMV9VJPmxKYgTJ47lbkSP+KAXMgZWGcArxmcrznqm7FrAPQ7vVGg== + dependencies: + "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/helper-wasm-bytecode" "1.8.3" + "@webassemblyjs/ieee754" "1.8.3" + "@webassemblyjs/leb128" "1.8.3" + "@webassemblyjs/utf8" "1.8.3" + +"@webassemblyjs/wasm-opt@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.3.tgz#54754bcf88f88e92b909416a91125301cc81419c" + integrity sha512-j8lmQVFR+FR4/645VNgV4R/Jz8i50eaPAj93GZyd3EIJondVshE/D9pivpSDIXyaZt+IkCodlzOoZUE4LnQbeA== + dependencies: + "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/helper-buffer" "1.8.3" + "@webassemblyjs/wasm-gen" "1.8.3" + "@webassemblyjs/wasm-parser" "1.8.3" + +"@webassemblyjs/wasm-parser@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.3.tgz#d12ed19d1b8e8667a7bee040d2245aaaf215340b" + integrity sha512-NBI3SNNtRoy4T/KBsRZCAWUzE9lI94RH2nneLwa1KKIrt/2zzcTavWg6oY05ArCbb/PZDk3OUi63CD1RYtN65w== + dependencies: + "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/helper-api-error" "1.8.3" + "@webassemblyjs/helper-wasm-bytecode" "1.8.3" + "@webassemblyjs/ieee754" "1.8.3" + "@webassemblyjs/leb128" "1.8.3" + "@webassemblyjs/utf8" "1.8.3" + +"@webassemblyjs/wast-parser@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.3.tgz#44aa123e145503e995045dc3e5e2770069da117b" + integrity sha512-gZPst4CNcmGtKC1eYQmgCx6gwQvxk4h/nPjfPBbRoD+Raw3Hs+BS3yhrfgyRKtlYP+BJ8LcY9iFODEQofl2qbg== + dependencies: + "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/floating-point-hex-parser" "1.8.3" + "@webassemblyjs/helper-api-error" "1.8.3" + "@webassemblyjs/helper-code-frame" "1.8.3" + "@webassemblyjs/helper-fsm" "1.8.3" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.3.tgz#b1177780b266b1305f2eeba87c4d6aa732352060" + integrity sha512-DTA6kpXuHK4PHu16yAD9QVuT1WZQRT7079oIFFmFSjqjLWGXS909I/7kiLTn931mcj7wGsaUNungjwNQ2lGQ3Q== + dependencies: + "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/wast-parser" "1.8.3" + "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + JSONStream@^1.0.4, JSONStream@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== dependencies: jsonparse "^1.2.0" through ">=2.2.7 <3" @@ -1803,10 +1208,12 @@ JSONStream@^1.0.4, JSONStream@^1.3.4: abab@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f" + integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w== abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== abbrev@1.0.x: version "1.0.9" @@ -1845,12 +1252,9 @@ acorn-walk@^6.0.1, acorn-walk@^6.1.1: acorn@^5.5.3: version "5.7.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== -acorn@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754" - -acorn@^6.0.4, acorn@^6.0.5, acorn@^6.1.0: +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.5, acorn@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw== @@ -1858,6 +1262,7 @@ acorn@^6.0.4, acorn@^6.0.5, acorn@^6.1.0: address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" + integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== adm-zip@~0.4.3: version "0.4.13" @@ -1870,12 +1275,14 @@ after@0.8.2: agent-base@4, agent-base@^4.1.0, agent-base@~4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.1.tgz#d89e5999f797875674c07d87f260fc41e83e8ca9" + integrity sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg== dependencies: es6-promisify "^5.0.0" agentkeepalive@^3.4.1: version "3.5.2" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz#a113924dd3fa24a0bc3b78108c450c2abee00f67" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== dependencies: humanize-ms "^1.2.1" @@ -1887,7 +1294,7 @@ ajv-keywords@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a" -ajv@^6.1.0, ajv@^6.5.5: +ajv@^6.1.0: version "6.5.5" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.5.tgz#cf97cdade71c6399a92c6d6c4177381291b781a1" dependencies: @@ -1896,9 +1303,20 @@ ajv@^6.1.0, ajv@^6.5.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^6.5.5: + version "6.9.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" + integrity sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA== + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= dependencies: kind-of "^3.0.2" longest "^1.0.1" @@ -1911,6 +1329,7 @@ amdefine@>=0.0.4: ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" + integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= dependencies: string-width "^2.0.0" @@ -1921,17 +1340,20 @@ ansi-colors@^1.0.1: dependencies: ansi-wrap "^0.1.0" -ansi-escapes@^3.0.0: - version "3.1.0" - resolved "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= ansi-regex@^4.0.0: version "4.0.0" @@ -1945,6 +1367,7 @@ ansi-styles@^2.2.1: ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" @@ -1956,16 +1379,11 @@ ansi-wrap@^0.1.0: anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== dependencies: micromatch "^3.1.4" normalize-path "^2.1.1" -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - append-transform@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" @@ -1976,14 +1394,17 @@ append-transform@^1.0.0: aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== aproba@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== dependencies: delegates "^1.0.0" readable-stream "^2.0.6" @@ -1991,12 +1412,14 @@ are-we-there-yet@~1.1.2: argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" args@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/args/-/args-2.6.1.tgz#b2590ed4168cd31b62444199bdc5166bb1920c2f" + integrity sha1-slkO1BaM0xtiREGZvcUWa7GSDC8= dependencies: camelcase "4.1.0" chalk "1.1.3" @@ -2007,6 +1430,7 @@ args@2.6.1: args@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/args/-/args-3.0.2.tgz#850bb8e881f3139203a5e4cb176431092b562c2d" + integrity sha1-hQu46IHzE5IDpeTLF2QxCStWLC0= dependencies: camelcase "4.1.0" chalk "1.1.3" @@ -2027,6 +1451,7 @@ arr-diff@^2.0.0: arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" @@ -2035,14 +1460,17 @@ arr-flatten@^1.0.1, arr-flatten@^1.1.0: arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= array-differ@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= array-equal@^1.0.0: version "1.0.0" - resolved "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= array-filter@~0.0.0: version "0.0.1" @@ -2051,6 +1479,7 @@ array-filter@~0.0.0: array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= array-flatten@1.1.1: version "1.1.1" @@ -2063,6 +1492,7 @@ array-from@^2.1.1: array-ify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= array-map@~0.0.0: version "0.0.0" @@ -2079,12 +1509,14 @@ array-slice@^0.2.3: array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= dependencies: array-uniq "^1.0.1" array-uniq@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= array-unique@^0.2.1: version "0.2.1" @@ -2093,6 +1525,7 @@ array-unique@^0.2.1: array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= arraybuffer.slice@~0.0.7: version "0.0.7" @@ -2101,10 +1534,12 @@ arraybuffer.slice@~0.0.7: arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= asap@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= asn1.js@^4.0.0: version "4.10.1" @@ -2117,12 +1552,14 @@ asn1.js@^4.0.0: asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== dependencies: safer-buffer "~2.1.0" assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= assert@^1.1.1, assert@^1.4.1: version "1.4.1" @@ -2137,10 +1574,12 @@ assertion-error@^1.1.0: assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== async-each@^1.0.0, async-each@^1.0.1: version "1.0.1" @@ -2149,25 +1588,28 @@ async-each@^1.0.0, async-each@^1.0.1: async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" + integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg== async-to-gen@1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/async-to-gen/-/async-to-gen-1.3.3.tgz#d52c9fb4801f0df44abc4d2de1870b48b60e20bb" + integrity sha1-1SyftIAfDfRKvE0t4YcLSLYOILs= dependencies: babylon "^6.14.0" magic-string "^0.19.0" async@1.x, async@^1.4.0: version "1.5.2" - resolved "http://registry.npmjs.org/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= -async@^2.0.1, async@^2.1.2, async@^2.1.4, async@^2.5.0: +async@^2.0.1, async@^2.1.2: version "2.6.1" resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610" dependencies: lodash "^4.17.10" -async@^2.6.1: +async@^2.5.0, async@^2.6.1: version "2.6.2" resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== @@ -2177,25 +1619,22 @@ async@^2.6.1: asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= atob@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - -axios@^0.18.0: - version "0.18.0" - resolved "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102" - dependencies: - follow-redirects "^1.3.0" - is-buffer "^1.1.5" + integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" @@ -2205,9 +1644,10 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3: +babel-core@^6.26.0, babel-core@^6.26.3: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== dependencies: babel-code-frame "^6.26.0" babel-generator "^6.26.0" @@ -2229,7 +1669,7 @@ babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.26.3: slash "^1.0.0" source-map "^0.5.7" -babel-generator@^6.18.0, babel-generator@^6.26.0: +babel-generator@^6.26.0: version "6.26.1" resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" dependencies: @@ -2343,13 +1783,6 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1" - dependencies: - babel-plugin-istanbul "^4.1.6" - babel-preset-jest "^23.2.0" - babel-jest@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.1.0.tgz#441e23ef75ded3bd547e300ac3194cef87b55190" @@ -2372,15 +1805,6 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-istanbul@^4.1.6: - version "4.1.6" - resolved "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.13.0" - find-up "^2.1.0" - istanbul-lib-instrument "^1.10.1" - test-exclude "^4.2.1" - babel-plugin-istanbul@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz#7981590f1956d75d67630ba46f0c22493588c893" @@ -2390,10 +1814,6 @@ babel-plugin-istanbul@^5.1.0: istanbul-lib-instrument "^3.0.0" test-exclude "^5.0.0" -babel-plugin-jest-hoist@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" - babel-plugin-jest-hoist@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz#dfecc491fb15e2668abbd690a697a8fd1411a7f8" @@ -2407,10 +1827,6 @@ babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" -babel-plugin-syntax-object-rest-spread@^6.13.0: - version "6.13.0" - resolved "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - babel-plugin-syntax-trailing-function-commas@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" @@ -2648,13 +2064,6 @@ babel-preset-env@^1.7.0: invariant "^2.2.2" semver "^5.3.0" -babel-preset-jest@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46" - dependencies: - babel-plugin-jest-hoist "^23.2.0" - babel-plugin-syntax-object-rest-spread "^6.13.0" - babel-preset-jest@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz#83bc564fdcd4903641af65ec63f2f5de6b04132e" @@ -2682,7 +2091,7 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: +babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" dependencies: @@ -2692,7 +2101,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: +babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: @@ -2706,7 +2115,7 @@ babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-tra invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -2718,6 +2127,7 @@ babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24. babylon@^6.14.0, babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== backo2@1.0.2: version "1.0.2" @@ -2726,6 +2136,7 @@ backo2@1.0.2: balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= base64-arraybuffer@0.1.5: version "0.1.5" @@ -2742,6 +2153,7 @@ base64id@1.0.0: base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== dependencies: cache-base "^1.0.1" class-utils "^0.3.5" @@ -2753,18 +2165,16 @@ base@^0.11.1: basic-auth@1.1.0: version "1.1.0" - resolved "http://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.1.0.tgz#45221ee429f7ee1e5035be3f51533f1cdfd29884" + integrity sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ= bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: tweetnacl "^0.14.3" -before-after-hook@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.2.0.tgz#1079c10312cd4d4ad0d1676d37951ef8bfc3a563" - before-after-hook@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.3.2.tgz#7bfbf844ad670aa7a96b5a4e4e15bd74b08ed66b" @@ -2796,14 +2206,16 @@ blob@0.0.5: block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= dependencies: inherits "~2.0.0" bluebird@3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" + integrity sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw= -bluebird@^3.3.0, bluebird@^3.5.1, bluebird@^3.5.2, bluebird@^3.5.3: +bluebird@^3.3.0, bluebird@^3.5.1, bluebird@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7" @@ -2829,6 +2241,7 @@ body-parser@1.18.3, body-parser@^1.16.1: boxen@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.1.0.tgz#b1b69dd522305e807a99deee777dbd6e5167b102" + integrity sha1-sbad1SIwXoB6md7ud329blFnsQI= dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" @@ -2841,6 +2254,7 @@ boxen@1.1.0: boxen@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" + integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== dependencies: ansi-align "^2.0.0" camelcase "^4.0.0" @@ -2853,6 +2267,7 @@ boxen@^1.0.0: brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -2893,17 +2308,15 @@ brorand@^1.0.1: browser-process-hrtime@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4" + integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw== browser-resolve@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" + integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== dependencies: resolve "1.1.7" -browser-stdout@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" - browser-stdout@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" @@ -2978,12 +2391,14 @@ bs-logger@0.x: bser@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk= dependencies: node-int64 "^0.4.0" btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= buffer-alloc-unsafe@^1.1.0: version "1.1.0" @@ -2999,6 +2414,7 @@ buffer-alloc@^1.2.0: buffer-equal-constant-time@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= buffer-fill@^1.0.0: version "1.0.0" @@ -3028,7 +2444,7 @@ buffer@^5.2.1: base64-js "^1.0.2" ieee754 "^1.1.4" -builtin-modules@^1.0.0, builtin-modules@^1.1.1: +builtin-modules@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -3044,43 +2460,28 @@ builtin-status-codes@^3.0.0: builtins@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= byte-size@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-4.0.4.tgz#29d381709f41aae0d89c631f1c81aec88cd40b23" + integrity sha512-82RPeneC6nqCdSwCX2hZUz3JPOvN5at/nTEw/CMf05Smu3Hrpo9Psb7LjN+k+XndNArG1EY8L4+BM3aTM4BCvw== bytes@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" + integrity sha1-fZcZb51br39pNeJZhVSe3SpsIzk= bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" -cacache@^11.0.1, cacache@^11.0.2, cacache@^11.2.0: - version "11.3.1" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" - dependencies: - bluebird "^3.5.1" - chownr "^1.0.1" - figgy-pudding "^3.1.0" - glob "^7.1.2" - graceful-fs "^4.1.11" - lru-cache "^4.1.3" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.2" - ssri "^6.0.0" - unique-filename "^1.1.0" - y18n "^4.0.0" - -cacache@^11.3.2: +cacache@^11.0.1, cacache@^11.3.2: version "11.3.2" resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa" integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg== @@ -3100,9 +2501,29 @@ cacache@^11.3.2: unique-filename "^1.1.1" y18n "^4.0.0" +cacache@^11.0.2: + version "11.3.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f" + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + figgy-pudding "^3.1.0" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.3" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^6.0.0" + unique-filename "^1.1.0" + y18n "^4.0.0" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== dependencies: collection-visit "^1.0.0" component-emitter "^1.2.1" @@ -3117,16 +2538,19 @@ cache-base@^1.0.1: call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= dependencies: callsites "^2.0.0" caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= dependencies: caller-callsite "^2.0.0" @@ -3136,7 +2560,8 @@ callsite@1.0.0: callsites@^2.0.0: version "2.0.0" - resolved "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= callsites@^3.0.0: version "3.0.0" @@ -3145,7 +2570,8 @@ callsites@^3.0.0: camelcase-keys@^2.0.0: version "2.1.0" - resolved "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= dependencies: camelcase "^2.0.0" map-obj "^1.0.0" @@ -3153,6 +2579,7 @@ camelcase-keys@^2.0.0: camelcase-keys@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= dependencies: camelcase "^4.1.0" map-obj "^2.0.0" @@ -3165,14 +2592,17 @@ camelcase@4.1.0, camelcase@^4.0.0, camelcase@^4.1.0: camelcase@^1.0.2: version "1.2.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= camelcase@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== caniuse-lite@^1.0.30000844: version "1.0.30000912" @@ -3181,20 +2611,24 @@ caniuse-lite@^1.0.30000844: capture-exit@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28= dependencies: rsvp "^3.3.3" capture-stack-trace@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= center-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= dependencies: align-text "^0.1.3" lazy-cache "^1.0.3" @@ -3212,7 +2646,8 @@ chai@^4.1.2: chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" - resolved "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -3220,18 +2655,18 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +chalk@^2.1.0, chalk@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -3240,6 +2675,7 @@ chalk@^2.4.2: chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== check-error@^1.0.2: version "1.0.2" @@ -3286,6 +2722,7 @@ chokidar@^2.1.0: chownr@^1.0.1, chownr@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" + integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== chrome-trace-event@^1.0.0: version "1.0.0" @@ -3296,6 +2733,7 @@ chrome-trace-event@^1.0.0: ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== ci-info@^2.0.0: version "2.0.0" @@ -3317,6 +2755,7 @@ circular-json@^0.5.5: class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== dependencies: arr-union "^3.1.0" define-property "^0.2.5" @@ -3326,32 +2765,38 @@ class-utils@^0.3.5: cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" + integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= dependencies: restore-cursor "^2.0.0" cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= clipboardy@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.1.1.tgz#75b5a7ac50d83c98025fb6303298c6a9007c16c7" + integrity sha1-dbWnrFDYPJgCX7YwMpjGqQB8Fsc= dependencies: execa "^0.6.0" clipboardy@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.1.4.tgz#51b17574fc682588e2dd295cfa6e6aa109eab5ee" + integrity sha1-UbF1dPxoJYji3Slc+m5qoQnqte4= dependencies: execa "^0.6.0" cliui@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= dependencies: center-align "^0.1.1" right-align "^0.1.1" @@ -3360,6 +2805,7 @@ cliui@^2.1.0: cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -3368,10 +2814,12 @@ cliui@^4.0.0: clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= cmd-shim@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-2.0.2.tgz#6fcbda99483a8fd15d7d30a196ca69d688a2efdb" + integrity sha1-b8vamUg6j9FdfTChlspp1oii79s= dependencies: graceful-fs "^4.1.2" mkdirp "~0.5.0" @@ -3379,22 +2827,14 @@ cmd-shim@^2.0.2: co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= code-point-at@^1.0.0: version "1.1.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.1.0" - resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.1.0.tgz#340bd968d361f256976b5af782dd8ba9f82bc849" - dependencies: - argv "^0.0.2" - ignore-walk "^3.0.1" - js-yaml "^3.12.0" - request "^2.87.0" - urlgrey "^0.4.4" - -codecov@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/codecov/-/codecov-3.2.0.tgz#4465ee19884528092d8c313e1f9e4bdc7d3065cd" integrity sha512-3NJvNARXxilqnqVfgzDHyVrF4oeVgaYW1c1O6Oi5mn93exE7HTSSFNiYdwojWW6IwrCZABJ8crpNbKoo9aUHQw== @@ -3408,6 +2848,7 @@ codecov@^3.2.0: collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -3415,12 +2856,14 @@ collection-visit@^1.0.0: color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= colors@^1.1.0: version "1.3.2" @@ -3433,6 +2876,7 @@ colors@~0.6.0: columnify@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= dependencies: strip-ansi "^3.0.0" wcwidth "^1.0.0" @@ -3455,13 +2899,10 @@ combine-source-map@^0.8.0: combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" + integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== dependencies: delayed-stream "~1.0.0" -commander@2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - commander@2.15.1: version "2.15.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" @@ -3474,6 +2915,7 @@ commander@^2.12.1, commander@^2.18.0: commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== commenting@1.0.5: version "1.0.5" @@ -3482,6 +2924,7 @@ commenting@1.0.5: common-tags@^1.4.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== commondir@^1.0.1: version "1.0.1" @@ -3490,6 +2933,7 @@ commondir@^1.0.1: compare-func@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" + integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg= dependencies: array-ify "^1.0.0" dot-prop "^3.0.0" @@ -3520,6 +2964,7 @@ compressible@^2.0.12, compressible@~2.0.14: compression@^1.6.2: version "1.7.3" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db" + integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg== dependencies: accepts "~1.3.5" bytes "3.0.0" @@ -3532,10 +2977,12 @@ compression@^1.6.2: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" @@ -3555,6 +3002,7 @@ concat-stream@^2.0.0: config-chain@^1.1.11: version "1.1.12" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" proto-list "~1.2.1" @@ -3562,6 +3010,7 @@ config-chain@^1.1.11: configstore@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" + integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== dependencies: dot-prop "^4.1.0" graceful-fs "^4.1.2" @@ -3599,6 +3048,7 @@ console-browserify@^1.1.0: console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= constants-browserify@^1.0.0: version "1.0.0" @@ -3612,13 +3062,6 @@ content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -conventional-changelog-angular@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.2.tgz#39d945635e03b6d0c9d4078b1df74e06163dc66a" - dependencies: - compare-func "^1.3.1" - q "^1.5.1" - conventional-changelog-angular@^5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz#299fdd43df5a1f095283ac16aeedfb0a682ecab0" @@ -3627,24 +3070,6 @@ conventional-changelog-angular@^5.0.3: compare-func "^1.3.1" q "^1.5.1" -conventional-changelog-core@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.1.5.tgz#c2edf928539308b54fe1b90a2fc731abc021852c" - dependencies: - conventional-changelog-writer "^4.0.2" - conventional-commits-parser "^3.0.1" - dateformat "^3.0.0" - get-pkg-repo "^1.0.0" - git-raw-commits "2.0.0" - git-remote-origin-url "^2.0.0" - git-semver-tags "^2.0.2" - lodash "^4.2.1" - normalize-package-data "^2.3.5" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^2.0.0" - conventional-changelog-core@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-3.1.6.tgz#ac1731a461c50d150d29c1ad4f33143293bcd32f" @@ -3664,24 +3089,10 @@ conventional-changelog-core@^3.1.6: read-pkg-up "^3.0.0" through2 "^2.0.0" -conventional-changelog-preset-loader@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz#81d1a07523913f3d17da3a49f0091f967ad345b0" - -conventional-changelog-writer@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.2.tgz#eb493ed84269e7a663da36e49af51c54639c9a67" - dependencies: - compare-func "^1.3.1" - conventional-commits-filter "^2.0.1" - dateformat "^3.0.0" - handlebars "^4.0.2" - json-stringify-safe "^5.0.1" - lodash "^4.2.1" - meow "^4.0.0" - semver "^5.5.0" - split "^1.0.0" - through2 "^2.0.0" +conventional-changelog-preset-loader@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.0.2.tgz#81d1a07523913f3d17da3a49f0091f967ad345b0" + integrity sha512-pBY+qnUoJPXAXXqVGwQaVmcye05xi6z231QM98wHWamGAmu/ghkBprQAwmF5bdmyobdVxiLhPY3PrCfSeUNzRQ== conventional-changelog-writer@^4.0.3: version "4.0.3" @@ -3702,6 +3113,7 @@ conventional-changelog-writer@^4.0.3: conventional-commits-filter@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz#55a135de1802f6510b6758e0a6aa9e0b28618db3" + integrity sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A== dependencies: is-subset "^0.1.1" modify-values "^1.0.0" @@ -3709,6 +3121,7 @@ conventional-commits-filter@^2.0.1: conventional-commits-parser@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz#fe1c49753df3f98edb2285a5e485e11ffa7f2e4c" + integrity sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.0" @@ -3721,6 +3134,7 @@ conventional-commits-parser@^3.0.1: conventional-recommended-bump@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-4.0.4.tgz#05540584641d3da758c8863c09788fcaeb586872" + integrity sha512-9mY5Yoblq+ZMqJpBzgS+RpSq+SUfP2miOR3H/NR9drGf08WCrY9B6HAGJZEm6+ThsVP917VHAahSOjM6k1vhPg== dependencies: concat-stream "^1.6.0" conventional-changelog-preset-loader "^2.0.2" @@ -3752,6 +3166,7 @@ cookie@0.3.1: copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== dependencies: aproba "^1.1.1" fs-write-stream-atomic "^1.0.8" @@ -3763,11 +3178,17 @@ copy-concurrently@^1.0.0: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7: +core-js@^2.2.0, core-js@^2.4.0, core-js@^2.5.0: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" +core-js@^2.5.7: + version "2.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.5.tgz#44bc8d249e7fb2ff5d00e0341a7ffb94fbf67895" + integrity sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A== + core-js@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.3.0.tgz#fab83fbb0b2d8dc85fa636c4b9d34c75420c6d65" @@ -3776,14 +3197,17 @@ core-js@~2.3.0: core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cosmiconfig@^5.0.2: - version "5.0.7" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04" + version "5.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.1.0.tgz#6c5c35e97f37f985061cdf653f114784231185cf" + integrity sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q== dependencies: import-fresh "^2.0.0" is-directory "^0.3.1" js-yaml "^3.9.0" + lodash.get "^4.4.2" parse-json "^4.0.0" create-ecdh@^4.0.0: @@ -3796,6 +3220,7 @@ create-ecdh@^4.0.0: create-error-class@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= dependencies: capture-stack-trace "^1.0.0" @@ -3822,7 +3247,8 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: cross-spawn-async@^2.1.1: version "2.2.5" - resolved "http://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" + resolved "https://registry.yarnpkg.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" + integrity sha1-hF/wwINKPe2dFg2sptOQkGuyiMw= dependencies: lru-cache "^4.0.0" which "^1.2.8" @@ -3830,6 +3256,7 @@ cross-spawn-async@^2.1.1: cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= dependencies: lru-cache "^4.0.1" shebang-command "^1.2.0" @@ -3865,22 +3292,12 @@ crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797" - -cssom@^0.3.4: +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0", cssom@^0.3.4: version "0.3.6" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== -cssstyle@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb" - dependencies: - cssom "0.3.x" - -cssstyle@^1.1.1: +cssstyle@^1.0.0, cssstyle@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.1.tgz#3aceb2759eaf514ac1a21628d723d6043a819495" integrity sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A== @@ -3890,6 +3307,7 @@ cssstyle@^1.1.1: currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= dependencies: array-find-index "^1.0.1" @@ -3900,52 +3318,17 @@ custom-event@~1.0.0: cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= danger-plugin-tslint@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/danger-plugin-tslint/-/danger-plugin-tslint-2.0.0.tgz#7a9feb2180f59ada27d0647dd9b327302cd14604" + integrity sha1-ep/rIYD1mton0GR92bMnMCzRRgQ= dependencies: common-tags "^1.4.0" optionalDependencies: serve "^5.1.5" -danger@^6.1.5: - version "6.1.8" - resolved "https://registry.yarnpkg.com/danger/-/danger-6.1.8.tgz#a940ce426fb8ccce1891b4669c32f14e5e0b696c" - dependencies: - "@babel/polyfill" "^7.0.0" - "@octokit/rest" "^15.12.1" - chalk "^2.3.0" - commander "^2.18.0" - debug "^4.0.1" - get-stdin "^6.0.0" - https-proxy-agent "^2.2.1" - hyperlinker "^1.0.0" - jsome "^2.3.25" - json5 "^2.1.0" - jsonpointer "^4.0.1" - jsonwebtoken "^8.2.1" - lodash.find "^4.6.0" - lodash.includes "^4.3.0" - lodash.isobject "^3.0.2" - lodash.keys "^4.0.8" - memfs-or-file-map-to-github-branch "^1.1.0" - node-cleanup "^2.1.2" - node-fetch "^2.2.0" - override-require "^1.1.1" - p-limit "^2.0.0" - parse-diff "^0.5.1" - parse-git-config "^2.0.3" - parse-github-url "^1.0.2" - parse-link-header "^1.0.1" - pinpoint "^1.1.0" - readline-sync "^1.4.9" - require-from-string "^2.0.2" - rfc6902 "^3.0.1" - supports-hyperlinks "^1.0.1" - vm2 "^3.6.3" - voca "^1.4.0" - danger@^7.0.12: version "7.0.12" resolved "https://registry.yarnpkg.com/danger/-/danger-7.0.12.tgz#bba12a496adcc7a1e30619404bc13a3c6d9ba915" @@ -3986,16 +3369,19 @@ danger@^7.0.12: dargs@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" + integrity sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk= dargs@^4.0.1: version "4.1.0" resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" + integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= dependencies: number-is-nan "^1.0.0" dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: assert-plus "^1.0.0" @@ -4030,6 +3416,7 @@ dateformat@^1.0.6: dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== debounce@^1.2.0: version "1.2.0" @@ -4039,12 +3426,14 @@ debounce@^1.2.0: debug@2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.7.tgz#92bad1f6d05bbb6bba22cca88bcd0ec894c2861e" + integrity sha1-krrR9tBbu2u6Isyoi80OyJTChh4= dependencies: ms "2.0.0" debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" @@ -4057,12 +3446,7 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0: debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - dependencies: - ms "^2.1.1" - -debug@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" @@ -4076,10 +3460,12 @@ debug@^4.1.0, debug@^4.1.1: debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" + integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= decamelize-keys@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= dependencies: decamelize "^1.1.0" map-obj "^1.0.0" @@ -4091,10 +3477,12 @@ decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2, deca decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= deep-eql@^3.0.1: version "3.0.1" @@ -4105,22 +3493,18 @@ deep-eql@^3.0.1: deep-extend@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= deepmerge@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.2.0.tgz#58ef463a57c08d376547f8869fdc5bcee957f44e" integrity sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow== -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - default-require-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-2.0.0.tgz#f5f8fbb18a7d6d50b21f641f649ebb522cfe24f7" @@ -4131,30 +3515,35 @@ default-require-extensions@^2.0.0: defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= dependencies: clone "^1.0.2" define-properties@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= dependencies: is-descriptor "^1.0.0" define-property@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== dependencies: is-descriptor "^1.0.2" isobject "^3.0.1" @@ -4162,14 +3551,17 @@ define-property@^2.0.2: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= depd@~1.1.0, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= des.js@^1.0.0: version "1.0.0" @@ -4191,18 +3583,22 @@ detect-indent@^4.0.0: detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= detect-port@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.2.1.tgz#a2c0a048aa9df2b703fc54bb4436ce2118f09b5a" + integrity sha512-2KWLTLsfpi/oYPGNBEniPcFzr1GW/s+Xq/4hJmTQRdE8ULuRwGnRPuVhS/cf+Z4ZEXNo7EO2f6oydHJQd94KMg== dependencies: address "^1.0.1" debug "^2.6.0" @@ -4210,6 +3606,7 @@ detect-port@1.2.1: dezalgo@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= dependencies: asap "^2.0.0" wrappy "1" @@ -4223,10 +3620,6 @@ diff-sequences@^24.0.0: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.0.0.tgz#cdf8e27ed20d8b8d3caccb4e0c0d8fe31a173013" integrity sha512-46OkIuVGBBnrC0soO/4LHu5LHGHx0uhP65OVz8XOrAJpqiCB2aVIuESvjI1F9oqebuvY8lekS1pt6TN7vt7qsw== -diff@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" - diff@3.5.0, diff@^3.2.0, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -4244,9 +3637,10 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@^2.0.0: +dir-glob@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== dependencies: arrify "^1.0.1" path-type "^3.0.0" @@ -4267,12 +3661,14 @@ domain-browser@^1.1.1, domain-browser@^1.2.0: domexception@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== dependencies: webidl-conversions "^4.0.2" dot-prop@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" + integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= dependencies: is-obj "^1.0.0" @@ -4285,12 +3681,24 @@ dot-prop@^4.1.0, dot-prop@^4.2.0: duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= duplexer@^0.1.1: version "0.1.1" - resolved "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= -duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +duplexify@^3.5.0: version "3.6.1" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125" dependencies: @@ -4302,6 +3710,7 @@ duplexify@^3.4.2, duplexify@^3.5.0, duplexify@^3.6.0: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -4309,6 +3718,7 @@ ecc-jsbn@~0.1.1: ecdsa-sig-formatter@1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz#1c595000f04a8897dfb85000892a0f4c33af86c3" + integrity sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM= dependencies: safe-buffer "^5.0.1" @@ -4343,12 +3753,14 @@ encodeurl@~1.0.1, encodeurl@~1.0.2: encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= dependencies: iconv-lite "~0.4.13" end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== dependencies: once "^1.4.0" @@ -4406,6 +3818,7 @@ ent@^2.2.0, ent@~2.2.0: err-code@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" + integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= errno@^0.1.3, errno@~0.1.7: version "0.1.7" @@ -4416,10 +3829,11 @@ errno@^0.1.3, errno@~0.1.7: error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" -es-abstract@^1.4.3, es-abstract@^1.5.1: +es-abstract@^1.4.3: version "1.12.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165" dependencies: @@ -4429,17 +3843,31 @@ es-abstract@^1.4.3, es-abstract@^1.5.1: is-callable "^1.1.3" is-regex "^1.0.4" -es-to-primitive@^1.1.1: +es-abstract@^1.5.1: + version "1.13.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.1.1, es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== dependencies: is-callable "^1.1.4" is-date-object "^1.0.1" is-symbol "^1.0.2" es6-promise@^4.0.3: - version "4.2.5" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.5.tgz#da6d0d5692efb461e082c14817fe2427d8f5d054" + version "4.2.6" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.6.tgz#b685edd8258886365ea62b57d30de28fadcd974f" + integrity sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q== es6-promise@~3.0.2: version "3.0.2" @@ -4448,7 +3876,8 @@ es6-promise@~3.0.2: es6-promisify@^5.0.0: version "5.0.0" - resolved "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= dependencies: es6-promise "^4.0.3" @@ -4496,10 +3925,12 @@ esprima@2.7.x, esprima@^2.7.1: esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esrecurse@^4.1.0: version "4.2.1" @@ -4514,6 +3945,7 @@ estraverse@^1.9.1: estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "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" @@ -4522,10 +3954,12 @@ estree-walker@^0.5.2: esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= etag@~1.8.0, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= event-target-shim@^5.0.0: version "5.0.0" @@ -4555,12 +3989,14 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: exec-sh@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36" + integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw== dependencies: merge "^1.2.0" execa@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== dependencies: cross-spawn "^6.0.0" get-stream "^3.0.0" @@ -4573,6 +4009,7 @@ execa@^0.10.0: execa@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" + integrity sha1-TrZGejaglfq7KXD/nV4/t7zm68M= dependencies: cross-spawn-async "^2.1.1" is-stream "^1.1.0" @@ -4596,6 +4033,7 @@ execa@^0.6.0: execa@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= dependencies: cross-spawn "^5.0.1" get-stream "^3.0.0" @@ -4608,6 +4046,7 @@ execa@^0.7.0: execa@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== dependencies: cross-spawn "^6.0.0" get-stream "^4.0.0" @@ -4620,6 +4059,7 @@ execa@^1.0.0: exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= expand-braces@^0.1.1: version "0.1.2" @@ -4638,6 +4078,7 @@ expand-brackets@^0.1.4: expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -4663,20 +4104,10 @@ expand-range@^1.8.1: 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@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" - dependencies: - ansi-styles "^3.2.0" - jest-diff "^23.6.0" - jest-get-type "^22.1.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - expect@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/expect/-/expect-24.1.0.tgz#88e73301c4c785cde5f16da130ab407bdaf8c0f2" @@ -4726,12 +4157,14 @@ express@^4.16.4: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -4740,9 +4173,10 @@ extend@^3.0.0, extend@^3.0.1, extend@^3.0.2, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" -external-editor@^3.0.0: +external-editor@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" + integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== dependencies: chardet "^0.7.0" iconv-lite "^0.4.24" @@ -4757,6 +4191,7 @@ extglob@^0.3.1: extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== dependencies: array-unique "^0.3.2" define-property "^1.0.0" @@ -4770,18 +4205,22 @@ extglob@^2.0.4: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= fast-glob@^2.0.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.4.tgz#e54f4b66d378040e0e4d6a68ec36bbc5b04363c0" + version "2.2.6" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" + integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.1.2" @@ -4797,6 +4236,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fast-text-encoding@^1.0.0: version "1.0.0" @@ -4806,16 +4246,19 @@ fast-text-encoding@^1.0.0: fb-watchman@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg= dependencies: bser "^2.0.0" figgy-pudding@^3.1.0, figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= dependencies: escape-string-regexp "^1.0.5" @@ -4823,9 +4266,10 @@ filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" -fileset@^2.0.2, fileset@^2.0.3: +fileset@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA= dependencies: glob "^7.0.3" minimatch "^3.0.3" @@ -4833,6 +4277,7 @@ fileset@^2.0.2, fileset@^2.0.3: filesize@3.5.10: version "3.5.10" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.10.tgz#fc8fa23ddb4ef9e5e0ab6e1e64f679a24a56761f" + integrity sha1-/I+iPdtO+eXgq24eZPZ5okpWdh8= fill-range@^2.1.0: version "2.2.4" @@ -4847,6 +4292,7 @@ fill-range@^2.1.0: fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -4888,6 +4334,7 @@ find-cache-dir@^2.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" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" @@ -4895,12 +4342,14 @@ find-up@^1.0.0: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= 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" @@ -4910,13 +4359,14 @@ flatted@^2.0.0: integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== flush-write-stream@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd" + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== dependencies: - inherits "^2.0.1" - readable-stream "^2.0.4" + inherits "^2.0.3" + readable-stream "^2.3.6" -follow-redirects@^1.0.0, follow-redirects@^1.3.0: +follow-redirects@^1.0.0: version "1.5.10" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" dependencies: @@ -4935,10 +4385,12 @@ for-own@^0.1.4: forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.6" @@ -4951,12 +4403,14 @@ forwarded@~0.1.2: fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= dependencies: map-cache "^0.2.2" fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" + integrity sha1-9HTKXmqSRtb9jglTz6m5yAWvp44= fresh@0.5.2: version "0.5.2" @@ -4965,6 +4419,7 @@ fresh@0.5.2: from2@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= dependencies: inherits "^2.0.1" readable-stream "^2.0.0" @@ -4978,10 +4433,12 @@ fs-access@^1.0.0: fs-exists-sync@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= fs-extra@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291" + integrity sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE= dependencies: graceful-fs "^4.1.2" jsonfile "^3.0.0" @@ -4998,12 +4455,14 @@ fs-extra@7.0.1, fs-extra@^7.0.0: fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== dependencies: minipass "^2.2.1" fs-write-stream-atomic@^1.0.8: version "1.0.10" resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= dependencies: graceful-fs "^4.1.2" iferr "^0.1.5" @@ -5013,15 +4472,16 @@ fs-write-stream-atomic@^1.0.8: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.2, fsevents@^1.2.3: +fsevents@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" dependencies: nan "^2.9.2" node-pre-gyp "^0.10.0" -fsevents@^1.2.7: +fsevents@^1.2.3, fsevents@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.7.tgz#4851b664a3783e52003b3c66eb0eee1074933aa4" integrity sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw== @@ -5032,6 +4492,7 @@ fsevents@^1.2.7: fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE= dependencies: graceful-fs "^4.1.2" inherits "~2.0.0" @@ -5045,6 +4506,7 @@ function-bind@^1.0.2, function-bind@^1.1.1: gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= dependencies: aproba "^1.0.3" console-control-strings "^1.0.0" @@ -5065,14 +4527,6 @@ gaxios@^1.0.2, gaxios@^1.0.4, gaxios@^1.2.1: https-proxy-agent "^2.2.1" node-fetch "^2.2.0" -gcp-metadata@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.7.0.tgz#6c35dbb52bda32a427bb9c98f54237ddd1b5406f" - dependencies: - axios "^0.18.0" - extend "^3.0.1" - retry-axios "0.3.2" - gcp-metadata@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-0.9.3.tgz#1f9d7495f7460a14526481f29e11596dd563dd26" @@ -5081,17 +4535,6 @@ gcp-metadata@^0.9.3: gaxios "^1.0.2" json-bigint "^0.3.0" -gcs-resumable-upload@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/gcs-resumable-upload/-/gcs-resumable-upload-0.13.0.tgz#706e5c835e4c53cd5527b86013c9f4dda4bfcb14" - dependencies: - axios "^0.18.0" - configstore "^4.0.0" - google-auth-library "^2.0.0" - pumpify "^1.5.1" - request "^2.87.0" - stream-events "^1.0.4" - 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" @@ -5106,10 +4549,12 @@ gcs-resumable-upload@^0.14.1: genfun@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/genfun/-/genfun-5.0.0.tgz#9dd9710a06900a5c4a5bf57aca5da4e52fe76537" + integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== get-caller-file@^1.0.1, get-caller-file@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== get-func-name@^2.0.0: version "2.0.0" @@ -5118,6 +4563,7 @@ get-func-name@^2.0.0: get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= dependencies: hosted-git-info "^2.1.4" meow "^3.3.0" @@ -5128,42 +4574,51 @@ get-pkg-repo@^1.0.0: get-port@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.1.0.tgz#ef01b18a84ca6486970ff99e54446141a73ffd3e" + integrity sha1-7wGxioTKZIaXD/meVERhQac//T4= get-port@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== get-stream@^3.0.0: version "3.0.0" - resolved "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: assert-plus "^1.0.0" git-config-path@^1.0.1: version "1.0.1" - resolved "http://registry.npmjs.org/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664" + resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664" + integrity sha1-bTP37WPbDQ4RgTFQO6s6ykfVRmQ= dependencies: extend-shallow "^2.0.1" fs-exists-sync "^0.1.0" @@ -5172,6 +4627,7 @@ git-config-path@^1.0.1: git-raw-commits@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.0.tgz#d92addf74440c14bcc5c83ecce3fb7f8a79118b5" + integrity sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg== dependencies: dargs "^4.0.1" lodash.template "^4.0.2" @@ -5182,6 +4638,7 @@ git-raw-commits@2.0.0: git-remote-origin-url@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= dependencies: gitconfiglocal "^1.0.0" pify "^2.3.0" @@ -5189,6 +4646,7 @@ git-remote-origin-url@^2.0.0: git-semver-tags@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-2.0.2.tgz#f506ec07caade191ac0c8d5a21bdb8131b4934e3" + integrity sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w== dependencies: meow "^4.0.0" semver "^5.5.0" @@ -5211,6 +4669,7 @@ git-url-parse@^11.1.2: gitconfiglocal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= dependencies: ini "^1.3.2" @@ -5230,6 +4689,7 @@ glob-parent@^2.0.0: glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= dependencies: is-glob "^3.1.0" path-dirname "^1.0.0" @@ -5237,10 +4697,12 @@ glob-parent@^3.1.0: glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= glob@7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -5262,6 +4724,7 @@ glob@^5.0.15: glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -5280,30 +4743,18 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" globby@^8.0.1: - version "8.0.1" - resolved "http://registry.npmjs.org/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50" + version "8.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== dependencies: array-union "^1.0.1" - dir-glob "^2.0.0" + dir-glob "2.0.0" fast-glob "^2.0.2" glob "^7.1.2" ignore "^3.3.5" pify "^3.0.0" slash "^1.0.0" -google-auth-library@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-2.0.1.tgz#32c6215e771538ef826cb65391a984a2c62ba57c" - dependencies: - axios "^0.18.0" - gcp-metadata "^0.7.0" - gtoken "^2.3.0" - https-proxy-agent "^2.2.1" - jws "^3.1.5" - lodash.isstring "^4.0.1" - lru-cache "^4.1.3" - semver "^5.5.0" - google-auth-library@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-3.1.0.tgz#6378ea3e56067312209eee58223e5a00adaec639" @@ -5328,7 +4779,8 @@ google-p12-pem@^1.0.0: got@^6.7.1: version "6.7.1" - resolved "http://registry.npmjs.org/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= dependencies: create-error-class "^3.0.0" duplexer3 "^0.1.4" @@ -5345,10 +4797,7 @@ got@^6.7.1: graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.1.15" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - -growl@1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" + integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== growl@1.10.5: version "1.10.5" @@ -5358,16 +4807,7 @@ growl@1.10.5: growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - -gtoken@^2.3.0: - version "2.3.0" - resolved "http://registry.npmjs.org/gtoken/-/gtoken-2.3.0.tgz#4e0ffc16432d7041a1b3dbc1d97aac17a5dc964a" - dependencies: - axios "^0.18.0" - google-p12-pem "^1.0.0" - jws "^3.1.4" - mime "^2.2.0" - pify "^3.0.0" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= gtoken@^2.3.2: version "2.3.2" @@ -5383,6 +4823,7 @@ gtoken@^2.3.2: handlebars@4.0.10: version "4.0.10" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" + integrity sha1-PTDHGLCaPZbyPqTMH0A8TTup/08= dependencies: async "^1.4.0" optimist "^0.6.1" @@ -5390,7 +4831,7 @@ handlebars@4.0.10: optionalDependencies: uglify-js "^2.6" -handlebars@^4.0.1, handlebars@^4.0.2, handlebars@^4.0.3, handlebars@^4.0.6: +handlebars@^4.0.1: version "4.0.12" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5" dependencies: @@ -5400,7 +4841,7 @@ handlebars@^4.0.1, handlebars@^4.0.2, handlebars@^4.0.3, handlebars@^4.0.6: optionalDependencies: uglify-js "^3.1.4" -handlebars@^4.1.0: +handlebars@^4.0.6, handlebars@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.0.tgz#0d6a6f34ff1f63cecec8423aa4169827bf787c3a" integrity sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w== @@ -5414,10 +4855,12 @@ handlebars@^4.1.0: har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.0: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== dependencies: ajv "^6.5.5" har-schema "^2.0.0" @@ -5445,22 +4888,27 @@ has-flag@^1.0.0: has-flag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -5469,6 +4917,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -5477,17 +4926,20 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= dependencies: is-number "^3.0.0" kind-of "^4.0.0" -has@^1.0.1: +has@^1.0.1, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" @@ -5514,12 +4966,9 @@ hash.js@^1.0.0, hash.js@^1.0.3: he@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= -highlight.js@^9.0.0, highlight.js@^9.12.0: - version "9.13.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e" - -highlight.js@^9.13.1: +highlight.js@^9.12.0, highlight.js@^9.13.1: version "9.14.2" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.14.2.tgz#efbfb22dc701406e4da406056ef8c2b70ebe5b26" integrity sha512-Nc6YNECYpxyJABGYJAyw7dBAYbXEuIzwzkqoJnwbc1nIpCiN+3ioYf0XrBnLiyyG0JLuJhpPtt2iTSbXiKLoyA== @@ -5542,26 +4991,31 @@ home-or-tmp@^2.0.0: homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw= dependencies: parse-passwd "^1.0.0" hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: version "2.7.1" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== dependencies: whatwg-encoding "^1.0.1" http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== http-errors@1.6.3, http-errors@~1.6.1, http-errors@~1.6.2, http-errors@~1.6.3: version "1.6.3" - resolved "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= dependencies: depd "~1.1.2" inherits "2.0.3" @@ -5571,6 +5025,7 @@ http-errors@1.6.3, http-errors@~1.6.1, http-errors@~1.6.2, http-errors@~1.6.3: http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg== dependencies: agent-base "4" debug "3.1.0" @@ -5586,6 +5041,7 @@ http-proxy@^1.13.0: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -5595,7 +5051,7 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" -https-proxy-agent@2.2.1, https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: +https-proxy-agent@2.2.1, https-proxy-agent@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" dependencies: @@ -5605,16 +5061,19 @@ https-proxy-agent@2.2.1, https-proxy-agent@^2.2.0, https-proxy-agent@^2.2.1: humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= dependencies: ms "^2.0.0" hyperlinker@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hyperlinker/-/hyperlinker-1.0.0.tgz#23dc9e38a206b208ee49bc2d6c8ef47027df0c0e" + integrity sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ== iconv-lite@0.4.15: version "0.4.15" - resolved "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" + integrity sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es= iconv-lite@0.4.23: version "0.4.23" @@ -5625,6 +5084,7 @@ iconv-lite@0.4.23: iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" @@ -5635,16 +5095,19 @@ ieee754@^1.1.4: iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= ignore-walk@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== dependencies: minimatch "^3.0.4" ignore@^3.3.5: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== immediate@~3.0.5: version "3.0.6" @@ -5654,6 +5117,7 @@ immediate@~3.0.5: import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= dependencies: caller-path "^2.0.0" resolve-from "^3.0.0" @@ -5661,10 +5125,12 @@ import-fresh@^2.0.0: import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= import-local@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ== dependencies: pkg-dir "^2.0.0" resolve-cwd "^2.0.0" @@ -5680,16 +5146,19 @@ import-local@^2.0.0: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= dependencies: repeating "^2.0.0" indent-string@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= indexof@0.0.1: version "0.0.1" @@ -5698,6 +5167,7 @@ indexof@0.0.1: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: once "^1.3.0" wrappy "1" @@ -5713,10 +5183,12 @@ inherits@2.0.1: ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== init-package-json@^1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-1.10.3.tgz#45ffe2f610a8ca134f2bd1db5637b235070f6cbe" + integrity sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw== dependencies: glob "^7.1.1" npm-package-arg "^4.0.0 || ^5.0.0 || ^6.0.0" @@ -5734,26 +5206,28 @@ inline-source-map@~0.6.0: source-map "~0.5.3" inquirer@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.0.tgz#51adcd776f661369dc1e894859c2560a224abdd8" + version "6.2.2" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" + integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" + ansi-escapes "^3.2.0" + chalk "^2.4.2" cli-cursor "^2.1.0" cli-width "^2.0.0" - external-editor "^3.0.0" + external-editor "^3.0.3" figures "^2.0.0" - lodash "^4.17.10" + lodash "^4.17.11" mute-stream "0.0.7" run-async "^2.2.0" - rxjs "^6.1.0" + rxjs "^6.4.0" string-width "^2.1.0" - strip-ansi "^4.0.0" + strip-ansi "^5.0.0" through "^2.3.6" interpret@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" @@ -5764,14 +5238,17 @@ invariant@^2.2.2, invariant@^2.2.4: invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= invert-kv@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== ip@1.1.5, ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= ipaddr.js@1.8.0: version "1.8.0" @@ -5780,22 +5257,26 @@ ipaddr.js@1.8.0: is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= dependencies: kind-of "^3.0.2" is-accessor-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== dependencies: kind-of "^6.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= is-async-supported@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-async-supported/-/is-async-supported-1.2.0.tgz#20d58ac4d6707eb1cb3712dd38480c0536f27c07" + integrity sha1-INWKxNZwfrHLNxLdOEgMBTbyfAc= is-binary-path@^1.0.0: version "1.0.1" @@ -5806,20 +5287,17 @@ is-binary-path@^1.0.0: is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== is-ci@^1.0.10: version "1.2.1" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== dependencies: ci-info "^1.5.0" @@ -5833,22 +5311,26 @@ is-ci@^2.0.0: is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: kind-of "^3.0.2" is-data-descriptor@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: kind-of "^6.0.0" is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= is-descriptor@^0.1.0: version "0.1.6" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== dependencies: is-accessor-descriptor "^0.1.6" is-data-descriptor "^0.1.4" @@ -5857,6 +5339,7 @@ is-descriptor@^0.1.0: is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== dependencies: is-accessor-descriptor "^1.0.0" is-data-descriptor "^1.0.0" @@ -5865,6 +5348,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= is-dotfile@^1.0.0: version "1.0.3" @@ -5879,10 +5363,12 @@ is-equal-shallow@^0.1.3: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= is-extendable@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== dependencies: is-plain-object "^2.0.4" @@ -5893,26 +5379,26 @@ is-extglob@^1.0.0: is-extglob@^2.1.0, is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-generator-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= is-generator-fn@^2.0.0: version "2.0.0" @@ -5928,12 +5414,14 @@ is-glob@^2.0.0, is-glob@^2.0.1: is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= dependencies: is-extglob "^2.1.0" is-glob@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= dependencies: is-extglob "^2.1.1" @@ -5944,6 +5432,7 @@ is-module@^1.0.0: is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" + integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= is-number@^0.1.1: version "0.1.1" @@ -5958,6 +5447,7 @@ is-number@^2.1.0: is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= dependencies: kind-of "^3.0.2" @@ -5967,15 +5457,18 @@ is-number@^4.0.0: is-obj@^1.0.0: version "1.0.1" - resolved "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== dependencies: isobject "^3.0.1" @@ -5990,20 +5483,24 @@ is-primitive@^2.0.0: is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= dependencies: has "^1.0.1" is-retry-allowed@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= is-ssh@^1.3.0: version "1.3.1" @@ -6023,34 +5520,41 @@ is-stream@^1.0.0, is-stream@^1.1.0: is-subset@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" + integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= is-symbol@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== dependencies: has-symbols "^1.0.0" is-text-path@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= dependencies: text-extensions "^1.0.0" is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= 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== is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= is@^3.2.1: version "3.2.1" @@ -6063,6 +5567,7 @@ isarray@0.0.1: isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= isarray@2.0.1: version "2.0.1" @@ -6077,37 +5582,24 @@ isbinaryfile@^3.0.0: isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= isstream@0.1.2, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-api@^1.3.1: - version "1.3.7" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.2.1" - istanbul-lib-hook "^1.2.2" - istanbul-lib-instrument "^1.10.2" - istanbul-lib-report "^1.1.5" - istanbul-lib-source-maps "^1.2.6" - istanbul-reports "^1.5.1" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - istanbul-api@^2.0.8: version "2.1.1" resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-2.1.1.tgz#194b773f6d9cbc99a9258446848b0f988951c4d0" @@ -6127,21 +5619,11 @@ istanbul-api@^2.0.8: minimatch "^3.0.4" once "^1.4.0" -istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" - istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#0b891e5ad42312c2b9488554f603795f9a2211ba" integrity sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw== -istanbul-lib-hook@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86" - dependencies: - append-transform "^0.4.0" - istanbul-lib-hook@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz#e0e581e461c611be5d0e5ef31c5f0109759916fb" @@ -6149,18 +5631,6 @@ istanbul-lib-hook@^2.0.3: dependencies: append-transform "^1.0.0" -istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.2.1" - semver "^5.3.0" - istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz#a2b5484a7d445f1f311e93190813fa56dfb62971" @@ -6174,15 +5644,6 @@ istanbul-lib-instrument@^3.0.0, istanbul-lib-instrument@^3.0.1, istanbul-lib-ins istanbul-lib-coverage "^2.0.3" semver "^5.5.0" -istanbul-lib-report@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" - dependencies: - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - istanbul-lib-report@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz#bfd324ee0c04f59119cb4f07dab157d09f24d7e4" @@ -6192,16 +5653,6 @@ istanbul-lib-report@^2.0.4: make-dir "^1.3.0" supports-color "^6.0.0" -istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f" - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.2.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz#f1e817229a9146e8424a28e5d69ba220fda34156" @@ -6213,12 +5664,6 @@ istanbul-lib-source-maps@^3.0.1, istanbul-lib-source-maps@^3.0.2: rimraf "^2.6.2" source-map "^0.6.1" -istanbul-reports@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" - dependencies: - handlebars "^4.0.3" - istanbul-reports@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.1.1.tgz#72ef16b4ecb9a4a7bd0e2001e00f95d1eec8afa9" @@ -6245,12 +5690,6 @@ istanbul@0.4.5, istanbul@^0.4.0: which "^1.1.1" wordwrap "^1.0.0" -jest-changed-files@^23.4.2: - version "23.4.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83" - dependencies: - throat "^4.0.0" - jest-changed-files@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.0.0.tgz#c02c09a8cc9ca93f513166bc773741bd39898ff7" @@ -6259,47 +5698,6 @@ jest-changed-files@^24.0.0: execa "^1.0.0" throat "^4.0.0" -jest-cli@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.1.11" - import-local "^1.0.0" - is-ci "^1.0.10" - istanbul-api "^1.3.1" - istanbul-lib-coverage "^1.2.0" - istanbul-lib-instrument "^1.10.1" - istanbul-lib-source-maps "^1.2.4" - jest-changed-files "^23.4.2" - jest-config "^23.6.0" - jest-environment-jsdom "^23.4.0" - jest-get-type "^22.1.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve-dependencies "^23.6.0" - jest-runner "^23.6.0" - jest-runtime "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - jest-watcher "^23.4.0" - jest-worker "^23.2.0" - micromatch "^2.3.11" - node-notifier "^5.2.1" - prompts "^0.1.9" - realpath-native "^1.0.0" - rimraf "^2.5.4" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - yargs "^11.0.0" - jest-cli@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.1.0.tgz#f7cc98995f36e7210cce3cbb12974cbf60940843" @@ -6344,25 +5742,6 @@ jest-cli@^24.1.0: which "^1.2.12" yargs "^12.0.2" -jest-config@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" - dependencies: - babel-core "^6.0.0" - babel-jest "^23.6.0" - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^23.4.0" - jest-environment-node "^23.4.0" - jest-get-type "^22.1.0" - jest-jasmine2 "^23.6.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - pretty-format "^23.6.0" - jest-config@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.1.0.tgz#6ea6881cfdd299bc86cc144ee36d937c97c3850c" @@ -6384,15 +5763,6 @@ jest-config@^24.1.0: pretty-format "^24.0.0" realpath-native "^1.0.2" -jest-diff@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" - dependencies: - chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" - jest-diff@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.0.0.tgz#a3e5f573dbac482f7d9513ac9cfa21644d3d6b34" @@ -6403,12 +5773,6 @@ jest-diff@^24.0.0: jest-get-type "^24.0.0" pretty-format "^24.0.0" -jest-docblock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" - dependencies: - detect-newline "^2.1.0" - jest-docblock@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.0.0.tgz#54d77a188743e37f62181a91a01eb9222289f94e" @@ -6416,13 +5780,6 @@ jest-docblock@^24.0.0: dependencies: detect-newline "^2.1.0" -jest-each@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" - dependencies: - chalk "^2.0.1" - pretty-format "^23.6.0" - jest-each@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.0.0.tgz#10987a06b21c7ffbfb7706c89d24c52ed864be55" @@ -6433,14 +5790,6 @@ jest-each@^24.0.0: jest-util "^24.0.0" pretty-format "^24.0.0" -jest-environment-jsdom@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023" - dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" - jsdom "^11.5.1" - jest-environment-jsdom@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.0.0.tgz#5affa0654d6e44cd798003daa1a8701dbd6e4d11" @@ -6450,13 +5799,6 @@ jest-environment-jsdom@^24.0.0: jest-util "^24.0.0" jsdom "^11.5.1" -jest-environment-node@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10" - dependencies: - jest-mock "^23.2.0" - jest-util "^23.4.0" - jest-environment-node@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.0.0.tgz#330948980656ed8773ce2e04eb597ed91e3c7190" @@ -6465,28 +5807,11 @@ jest-environment-node@^24.0.0: jest-mock "^24.0.0" jest-util "^24.0.0" -jest-get-type@^22.1.0: - version "22.4.3" - resolved "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" - jest-get-type@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.0.0.tgz#36e72930b78e33da59a4f63d44d332188278940b" integrity sha512-z6/Eyf6s9ZDGz7eOvl+fzpuJmN9i0KyTt1no37/dHu8galssxz5ZEgnc1KaV8R31q1khxyhB4ui/X5ZjjPk77w== -jest-haste-map@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - invariant "^2.2.4" - jest-docblock "^23.2.0" - jest-serializer "^23.0.1" - jest-worker "^23.2.0" - micromatch "^2.3.11" - sane "^2.0.0" - jest-haste-map@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.0.0.tgz#e9ef51b2c9257384b4d6beb83bd48c65b37b5e6e" @@ -6501,23 +5826,6 @@ jest-haste-map@^24.0.0: micromatch "^3.1.10" sane "^3.0.0" -jest-jasmine2@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" - dependencies: - babel-traverse "^6.0.0" - chalk "^2.0.1" - co "^4.6.0" - expect "^23.6.0" - is-generator-fn "^1.0.0" - jest-diff "^23.6.0" - jest-each "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - pretty-format "^23.6.0" - jest-jasmine2@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.1.0.tgz#8377324b967037c440f0a549ee0bbd9912055db6" @@ -6536,12 +5844,6 @@ jest-jasmine2@^24.1.0: pretty-format "^24.0.0" throat "^4.0.0" -jest-leak-detector@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de" - dependencies: - pretty-format "^23.6.0" - jest-leak-detector@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.0.0.tgz#78280119fd05ee98317daee62cddb3aa537a31c6" @@ -6549,14 +5851,6 @@ jest-leak-detector@^24.0.0: dependencies: pretty-format "^24.0.0" -jest-matcher-utils@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80" - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - pretty-format "^23.6.0" - jest-matcher-utils@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.0.0.tgz#fc9c41cfc49b2c3ec14e576f53d519c37729d579" @@ -6567,16 +5861,6 @@ jest-matcher-utils@^24.0.0: jest-get-type "^24.0.0" pretty-format "^24.0.0" -jest-message-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f" - dependencies: - "@babel/code-frame" "^7.0.0-beta.35" - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - stack-utils "^1.0.1" - jest-message-util@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.0.0.tgz#a07a141433b2c992dbaec68d4cbfe470ba289619" @@ -6588,31 +5872,16 @@ jest-message-util@^24.0.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-mock@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" - jest-mock@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.0.0.tgz#9a4b53e01d66a0e780f7d857462d063e024c617d" integrity sha512-sQp0Hu5fcf5NZEh1U9eIW2qD0BwJZjb63Yqd98PQJFvf/zzUTBoUAwv/Dc/HFeNHIw1f3hl/48vNn+j3STaI7A== -jest-regex-util@^23.3.0: - version "23.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5" - jest-regex-util@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.0.0.tgz#4feee8ec4a358f5bee0a654e94eb26163cb9089a" integrity sha512-Jv/uOTCuC+PY7WpJl2mpoI+WbY2ut73qwwO9ByJJNwOCwr1qWhEW2Lyi2S9ZewUdJqeVpEBisdEVZSI+Zxo58Q== -jest-resolve-dependencies@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d" - dependencies: - jest-regex-util "^23.3.0" - jest-snapshot "^23.6.0" - jest-resolve-dependencies@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.1.0.tgz#78f738a2ec59ff4d00751d9da56f176e3f589f6c" @@ -6621,14 +5890,6 @@ jest-resolve-dependencies@^24.1.0: jest-regex-util "^24.0.0" jest-snapshot "^24.1.0" -jest-resolve@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" - dependencies: - browser-resolve "^1.11.3" - chalk "^2.0.1" - realpath-native "^1.0.0" - jest-resolve@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.1.0.tgz#42ff0169b0ea47bfdbd0c52a0067ca7d022c7688" @@ -6638,24 +5899,6 @@ jest-resolve@^24.1.0: chalk "^2.0.1" realpath-native "^1.0.0" -jest-runner@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38" - dependencies: - exit "^0.1.2" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-docblock "^23.2.0" - jest-haste-map "^23.6.0" - jest-jasmine2 "^23.6.0" - jest-leak-detector "^23.6.0" - jest-message-util "^23.4.0" - jest-runtime "^23.6.0" - jest-util "^23.4.0" - jest-worker "^23.2.0" - source-map-support "^0.5.6" - throat "^4.0.0" - jest-runner@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.1.0.tgz#3686a2bb89ce62800da23d7fdc3da2c32792943b" @@ -6676,32 +5919,6 @@ jest-runner@^24.1.0: source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" - dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.1.6" - chalk "^2.0.1" - convert-source-map "^1.4.0" - exit "^0.1.2" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.11" - jest-config "^23.6.0" - jest-haste-map "^23.6.0" - jest-message-util "^23.4.0" - jest-regex-util "^23.3.0" - jest-resolve "^23.6.0" - jest-snapshot "^23.6.0" - jest-util "^23.4.0" - jest-validate "^23.6.0" - micromatch "^2.3.11" - realpath-native "^1.0.0" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^11.0.0" - jest-runtime@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.1.0.tgz#7c157a2e776609e8cf552f956a5a19ec9c985214" @@ -6730,30 +5947,11 @@ jest-runtime@^24.1.0: write-file-atomic "2.4.1" yargs "^12.0.2" -jest-serializer@^23.0.1: - version "23.0.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" - jest-serializer@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.0.0.tgz#522c44a332cdd194d8c0531eb06a1ee5afb4256b" integrity sha512-9FKxQyrFgHtx3ozU+1a8v938ILBE7S8Ko3uiAVjT8Yfi2o91j/fj81jacCQZ/Ihjiff/VsUCXVgQ+iF1XdImOw== -jest-snapshot@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" - dependencies: - babel-types "^6.0.0" - chalk "^2.0.1" - jest-diff "^23.6.0" - jest-matcher-utils "^23.6.0" - jest-message-util "^23.4.0" - jest-resolve "^23.6.0" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^23.6.0" - semver "^5.5.0" - jest-snapshot@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.1.0.tgz#85e22f810357aa5994ab61f236617dc2205f2f5b" @@ -6770,19 +5968,6 @@ jest-snapshot@^24.1.0: pretty-format "^24.0.0" semver "^5.5.0" -jest-util@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - jest-message-util "^23.4.0" - mkdirp "^0.5.1" - slash "^1.0.0" - source-map "^0.6.0" - jest-util@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.0.0.tgz#fd38fcafd6dedbd0af2944d7a227c0d91b68f7d6" @@ -6797,15 +5982,6 @@ jest-util@^24.0.0: slash "^2.0.0" source-map "^0.6.0" -jest-validate@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" - dependencies: - chalk "^2.0.1" - jest-get-type "^22.1.0" - leven "^2.1.0" - pretty-format "^23.6.0" - jest-validate@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.0.0.tgz#aa8571a46983a6538328fef20406b4a496b6c020" @@ -6817,14 +5993,6 @@ jest-validate@^24.0.0: leven "^2.1.0" pretty-format "^24.0.0" -jest-watcher@^23.4.0: - version "23.4.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - string-length "^2.0.0" - jest-watcher@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.0.0.tgz#20d44244d10b0b7312410aefd256c1c1eef68890" @@ -6835,12 +6003,6 @@ jest-watcher@^24.0.0: jest-util "^24.0.0" string-length "^2.0.0" -jest-worker@^23.2.0: - version "23.2.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" - dependencies: - merge-stream "^1.0.1" - jest-worker@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0.tgz#3d3483b077bf04f412f47654a27bba7e947f8b6d" @@ -6849,13 +6011,6 @@ jest-worker@^24.0.0: merge-stream "^1.0.1" supports-color "^6.1.0" -jest@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" - dependencies: - import-local "^1.0.0" - jest-cli "^23.6.0" - jest@^24.1.0: version "24.1.0" resolved "https://registry.yarnpkg.com/jest/-/jest-24.1.0.tgz#b1e1135caefcf2397950ecf7f90e395fde866fd2" @@ -6867,25 +6022,36 @@ jest@^24.1.0: "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 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.x, js-yaml@^3.12.0, js-yaml@^3.7.0, js-yaml@^3.9.0: +js-yaml@3.x, js-yaml@^3.7.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.12.0, js-yaml@^3.9.0: + version "3.12.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" + integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= jsdom@^11.5.1: version "11.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8" + integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw== dependencies: abab "^2.0.0" acorn "^5.5.3" @@ -6962,6 +6128,7 @@ jsesc@~0.5.0: jsome@^2.3.25: version "2.5.0" resolved "https://registry.yarnpkg.com/jsome/-/jsome-2.5.0.tgz#5e417eef4341ffeb83ee8bfa9265b36d56fe49ed" + integrity sha1-XkF+70NB/+uD7ov6kmWzbVb+Se0= dependencies: chalk "^2.3.0" json-stringify-safe "^5.0.1" @@ -6977,18 +6144,22 @@ json-bigint@^0.3.0: json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@2.x, json5@^2.1.0: version "2.1.0" @@ -7003,12 +6174,14 @@ json5@^0.5.0, json5@^0.5.1: jsonfile@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.1.tgz#a5ecc6f65f53f662c4415c7675a0331d0992ec66" + integrity sha1-pezG9l9T9mLEQVx2daAzHQmS7GY= optionalDependencies: graceful-fs "^4.1.6" jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= optionalDependencies: graceful-fs "^4.1.6" @@ -7019,14 +6192,17 @@ jsonify@~0.0.0: jsonparse@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= jsonpointer@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + integrity sha1-T9kss04OnbPInIYi7PUfm5eMbLk= -jsonwebtoken@^8.2.1, jsonwebtoken@^8.4.0: +jsonwebtoken@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.4.0.tgz#8757f7b4cb7440d86d5e2f3becefa70536c8e46a" + integrity sha512-coyXjRTCy0pw5WYBpMvWOMN+Kjaik2MwTUIq9cna/W7NpO9E+iYbumZONAz3hcr+tXFJECoQVrtmIoC3Oz0gvg== dependencies: jws "^3.1.5" lodash.includes "^4.3.0" @@ -7041,6 +6217,7 @@ jsonwebtoken@^8.2.1, jsonwebtoken@^8.4.0: jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= dependencies: assert-plus "1.0.0" extsprintf "1.3.0" @@ -7058,28 +6235,26 @@ jszip@^3.1.3: pako "~1.0.2" readable-stream "~2.0.6" -just-extend@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-3.0.0.tgz#cee004031eaabf6406da03a7b84e4fe9d78ef288" - just-extend@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc" integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw== -jwa@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" +jwa@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.2.0.tgz#606da70c1c6d425cad329c77c99f2df2a981489a" + integrity sha512-Grku9ZST5NNQ3hqNUodSkDfEBqAmGA1R8yiyPHOnLzEKI0GaCQC/XhFmsheXYuXzFQJdILbh+lYBiliqG5R/Vg== dependencies: buffer-equal-constant-time "1.0.1" ecdsa-sig-formatter "1.0.10" safe-buffer "^5.0.1" -jws@^3.1.4, jws@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/jws/-/jws-3.1.5.tgz#80d12d05b293d1e841e7cb8b4e69e561adcf834f" +jws@^3.1.5: + version "3.2.1" + resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.1.tgz#d79d4216a62c9afa0a3d5e8b5356d75abdeb2be5" + integrity sha512-bGA2omSrFUkd72dhh05bIAN832znP4wOU3lfuXtRBuGTbsmNmDXMQg28f0Vsxaxgk4myF5YkKQpz6qeRpMgX9g== dependencies: - jwa "^1.1.5" + jwa "^1.2.0" safe-buffer "^5.0.1" karma-chai@^0.1.0: @@ -7147,6 +6322,7 @@ karma-sauce-launcher@^2.0.2: karma-sinon@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/karma-sinon/-/karma-sinon-1.0.5.tgz#4e3443f2830fdecff624d3747163f1217daa2a9a" + integrity sha1-TjRD8oMP3s/2JNN0cWPxIX2qKpo= karma-typescript-es6-transform@^4.0.0: version "4.0.0" @@ -7244,26 +6420,26 @@ karma@^4.0.0: kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= dependencies: is-buffer "^1.1.5" kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - -kleur@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" + integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== kleur@^3.0.2: version "3.0.2" @@ -7273,32 +6449,38 @@ kleur@^3.0.2: latest-version@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" + integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= dependencies: package-json "^4.0.0" lazy-cache@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= lazy-req@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lazy-req/-/lazy-req-2.0.0.tgz#c9450a363ecdda2e6f0c70132ad4f37f8f06f2b4" + integrity sha1-yUUKNj7N2i5vDHATKtTzf48G8rQ= lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= dependencies: invert-kv "^1.0.0" lcid@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== dependencies: invert-kv "^2.0.0" left-pad@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== lerna@3.13.0: version "3.13.0" @@ -7323,42 +6505,23 @@ lerna@3.13.0: import-local "^1.0.0" npmlog "^4.1.2" -lerna@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-3.5.0.tgz#fd989b8992701e90e10aa5b3970d6f7a3512ba64" - dependencies: - "@lerna/add" "^3.5.0" - "@lerna/bootstrap" "^3.5.0" - "@lerna/changed" "^3.5.0" - "@lerna/clean" "^3.5.0" - "@lerna/cli" "^3.2.0" - "@lerna/create" "^3.5.0" - "@lerna/diff" "^3.5.0" - "@lerna/exec" "^3.5.0" - "@lerna/import" "^3.5.0" - "@lerna/init" "^3.5.0" - "@lerna/link" "^3.5.0" - "@lerna/list" "^3.5.0" - "@lerna/publish" "^3.5.0" - "@lerna/run" "^3.5.0" - "@lerna/version" "^3.5.0" - import-local "^1.0.0" - npmlog "^4.1.2" - leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" -libnpmaccess@^3.0.0, libnpmaccess@^3.0.1: +libnpmaccess@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-3.0.1.tgz#5b3a9de621f293d425191aa2e779102f84167fa8" + integrity sha512-RlZ7PNarCBt+XbnP7R6PoVgOq9t+kou5rvhaInoNibhPO7eMlRfS0B8yjatgn2yaHIwWNyoJDolC/6Lc5L/IQA== dependencies: aproba "^2.0.0" get-stream "^4.0.0" @@ -7389,7 +6552,8 @@ lie@~3.1.0: load-json-file@^1.0.0: version "1.1.0" - resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -7400,6 +6564,7 @@ load-json-file@^1.0.0: load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" @@ -7421,6 +6586,7 @@ loader-utils@^1.1.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -7428,6 +6594,7 @@ locate-path@^2.0.0: locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" path-exists "^3.0.0" @@ -7435,6 +6602,7 @@ locate-path@^3.0.0: lodash._reinterpolate@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= lodash.clonedeep@^4.5.0: version "4.5.0" @@ -7448,42 +6616,52 @@ lodash.debounce@^4.0.8: lodash.find@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" + integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E= lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= lodash.includes@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= lodash.isboolean@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= lodash.isinteger@^4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= lodash.isnumber@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= lodash.isobject@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" + integrity sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0= lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= lodash.keys@^4.0.8: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" + integrity sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU= lodash.memoize@~3.0.3: version "3.0.4" @@ -7492,6 +6670,7 @@ lodash.memoize@~3.0.3: lodash.once@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= lodash.set@^4.3.2: version "4.3.2" @@ -7501,10 +6680,12 @@ lodash.set@^4.3.2: lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= lodash.template@^4.0.2: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" + integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= dependencies: lodash._reinterpolate "~3.0.0" lodash.templatesettings "^4.0.0" @@ -7512,6 +6693,7 @@ lodash.template@^4.0.2: lodash.templatesettings@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" + integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= dependencies: lodash._reinterpolate "~3.0.0" @@ -7560,23 +6742,22 @@ lolex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/lolex/-/lolex-3.0.0.tgz#f04ee1a8aa13f60f1abd7b0e8f4213ec72ec193e" -"long@git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69": - version "4.0.1" - resolved "git://github.com/dcodeIO/long.js.git#8181a6b50a2a230f0b2a1e4c4093f9b9d19c8b69" - longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" loud-rejection@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= dependencies: currently-unhandled "^0.4.1" signal-exit "^3.0.0" @@ -7584,8 +6765,9 @@ loud-rejection@^1.0.0: lowercase-keys@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== -lru-cache@4.1.x: +lru-cache@4.1.x, lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.3: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -7593,13 +6775,6 @@ lru-cache@4.1.x: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.4.tgz#51cc46e8e6d9530771c857e24ccc720ecdbcc031" - dependencies: - pseudomap "^1.0.2" - yallist "^3.0.2" - lru-cache@^5.0.0, lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -7618,6 +6793,7 @@ lsmod@1.0.0: macos-release@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.0.0.tgz#7dddf4caf79001a851eb4fba7fb6034f251276ab" + integrity sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A== magic-string@0.25.1, magic-string@^0.25.1: version "0.25.1" @@ -7628,12 +6804,14 @@ magic-string@0.25.1, magic-string@^0.25.1: magic-string@^0.19.0: version "0.19.1" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.19.1.tgz#14d768013caf2ec8fdea16a49af82fc377e75201" + integrity sha1-FNdoATyvLsj96hakmvgvw3fnUgE= dependencies: vlq "^0.2.1" 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" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== dependencies: pify "^3.0.0" @@ -7644,6 +6822,7 @@ make-error@1.x: make-fetch-happen@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz#141497cb878f243ba93136c83d8aba12c216c083" + integrity sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ== dependencies: agentkeepalive "^3.4.1" cacache "^11.0.1" @@ -7660,40 +6839,53 @@ make-fetch-happen@^4.0.1: makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= dependencies: tmpl "1.0.x" +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== dependencies: p-defer "^1.0.0" map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= map-obj@^1.0.0, map-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= map-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= dependencies: object-visit "^1.0.0" marked@^0.3.19: version "0.3.19" - resolved "http://registry.npmjs.org/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.19.tgz#5d47f709c4c9fc3c216b6d46127280f40b39d790" + integrity sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg== marked@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/marked/-/marked-0.4.0.tgz#9ad2c2a7a1791f10a852e0112f77b571dce10c66" + integrity sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw== math-random@^1.0.1: version "1.0.1" @@ -7714,20 +6906,23 @@ media-typer@0.3.0: mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= dependencies: mimic-fn "^1.0.0" mem@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf" + version "4.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.1.0.tgz#aeb9be2d21f47e78af29e4ac5978e8afa2ca5b8a" + integrity sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg== dependencies: map-age-cleaner "^0.1.1" mimic-fn "^1.0.0" - p-is-promise "^1.1.0" + p-is-promise "^2.0.0" memfs-or-file-map-to-github-branch@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/memfs-or-file-map-to-github-branch/-/memfs-or-file-map-to-github-branch-1.1.2.tgz#9d46c02481b7eca8e5ee8a94f170b7e0138cad67" + integrity sha512-D2JKK2DTuVYQqquBWco3K6UfSVyVwmd58dgNqh+TgxHOZdTmR8I130gjMbVCkemDl/EzqDA62417cJxKL3/FFA== memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" @@ -7742,7 +6937,8 @@ memorystream@^0.3.1: meow@^3.3.0: version "3.7.0" - resolved "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= dependencies: camelcase-keys "^2.0.0" decamelize "^1.1.2" @@ -7758,6 +6954,7 @@ meow@^3.3.0: meow@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" + integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== dependencies: camelcase-keys "^4.0.0" decamelize-keys "^1.0.0" @@ -7776,16 +6973,19 @@ merge-descriptors@1.0.1: merge-stream@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE= dependencies: readable-stream "^2.0.1" merge2@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" + integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== merge@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145" + integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ== methods@~1.1.2: version "1.1.2" @@ -7794,12 +6994,14 @@ methods@~1.1.2: micro-compress@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/micro-compress/-/micro-compress-1.0.0.tgz#53f5a80b4ad0320ca165a559b6e3df145d4f704f" + integrity sha1-U/WoC0rQMgyhZaVZtuPfFF1PcE8= dependencies: compression "^1.6.2" micro@7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/micro/-/micro-7.3.3.tgz#8261c56d2a31a7df93986eff86441396f2b4b070" + integrity sha1-gmHFbSoxp9+TmG7/hkQTlvK0sHA= dependencies: args "2.6.1" async-to-gen "1.3.3" @@ -7837,6 +7039,7 @@ micromatch@^2.3.11: 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== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -7866,22 +7069,37 @@ miller-rabin@^4.0.0: mime-db@~1.27.0: version "1.27.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" + integrity sha1-gg9XIpa70g7CXtVeW13oaeVDbrE= + +mime-db@~1.38.0: + version "1.38.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz#1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad" + integrity sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg== mime-types@2.1.15: version "2.1.15" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + integrity sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0= dependencies: mime-db "~1.27.0" -mime-types@^2.0.8, mime-types@^2.1.12, mime-types@~2.1.18, mime-types@~2.1.19: +mime-types@^2.0.8, mime-types@~2.1.18: version "2.1.21" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96" dependencies: mime-db "~1.37.0" +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.22" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz#fe6b355a190926ab7698c9a0556a11199b2199bd" + integrity sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog== + dependencies: + mime-db "~1.38.0" + mime@1.3.4: version "1.3.4" - resolved "http://registry.npmjs.org/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + integrity sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM= mime@1.4.1: version "1.4.1" @@ -7894,6 +7112,7 @@ mime@^2.2.0, mime@^2.3.1: mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" @@ -7912,13 +7131,15 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: minimist-options@^3.0.1: version "3.0.2" resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" minimist@0.0.8: version "0.0.8" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= minimist@1.2.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" @@ -7926,24 +7147,28 @@ minimist@1.2.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: minimist@~0.0.1: version "0.0.10" - resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minipass@^2.2.1, minipass@^2.3.4, minipass@^2.3.5: version "2.3.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== dependencies: safe-buffer "^5.1.2" yallist "^3.0.0" minizlib@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42" + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== dependencies: minipass "^2.2.1" mississippi@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== dependencies: concat-stream "^1.5.0" duplexify "^3.4.2" @@ -7959,6 +7184,7 @@ mississippi@^3.0.0: mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== dependencies: for-in "^1.0.2" is-extendable "^1.0.1" @@ -7969,21 +7195,6 @@ 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@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" - dependencies: - browser-stdout "1.3.0" - commander "2.11.0" - debug "3.1.0" - diff "3.3.1" - escape-string-regexp "1.0.5" - glob "7.1.2" - growl "1.10.3" - he "1.1.1" - mkdirp "0.5.1" - supports-color "4.4.0" - mocha@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" @@ -8002,8 +7213,9 @@ mocha@^5.2.0: supports-color "5.4.0" mock-require@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/mock-require/-/mock-require-3.0.2.tgz#7ce759b559e3b194be5f20a5b1cece0eb363f53d" + version "3.0.3" + resolved "https://registry.yarnpkg.com/mock-require/-/mock-require-3.0.3.tgz#ccd544d9eae81dd576b3f219f69ec867318a1946" + integrity sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg== dependencies: get-caller-file "^1.0.2" normalize-path "^2.1.1" @@ -8011,6 +7223,7 @@ mock-require@^3.0.2: modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== moment@2.23.0: version "2.23.0" @@ -8020,6 +7233,7 @@ moment@2.23.0: move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= dependencies: aproba "^1.1.1" copy-concurrently "^1.0.0" @@ -8031,31 +7245,42 @@ move-concurrently@^1.0.1: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@^2.0.0, ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== multimatch@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + integrity sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis= dependencies: array-differ "^1.0.0" array-union "^1.0.1" arrify "^1.0.0" minimatch "^3.0.0" -mute-stream@0.0.7, mute-stream@~0.0.4: +mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== nan@^2.9.2: - version "2.11.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766" + version "2.12.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552" + integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw== nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -8072,10 +7297,12 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= needle@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e" + integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA== dependencies: debug "^2.1.2" iconv-lite "^0.4.4" @@ -8092,16 +7319,7 @@ neo-async@^2.5.0: nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - -nise@^1.4.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/nise/-/nise-1.4.6.tgz#76cc3915925056ae6c405dd8ad5d12bde570c19f" - dependencies: - "@sinonjs/formatio" "3.0.0" - just-extend "^3.0.0" - lolex "^2.3.2" - path-to-regexp "^1.7.0" - text-encoding "^0.6.4" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nise@^1.4.8: version "1.4.8" @@ -8117,16 +7335,18 @@ nise@^1.4.8: node-cleanup@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" + integrity sha1-esGavSl+Caf3KnFUXZUbUX5N3iw= node-fetch-npm@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7" + integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw== dependencies: encoding "^0.1.11" json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@^2.1.1, node-fetch@^2.2.0, node-fetch@^2.3.0: +node-fetch@^2.2.0, node-fetch@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" @@ -8137,6 +7357,7 @@ node-forge@^0.7.4: node-gyp@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== dependencies: fstream "^1.0.0" glob "^7.0.3" @@ -8154,6 +7375,7 @@ node-gyp@^3.8.0: node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= node-libs-browser@^2.0.0: version "2.1.0" @@ -8189,10 +7411,12 @@ node-modules-regexp@^1.0.0: integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= node-notifier@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01" + version "5.4.0" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a" + integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ== dependencies: growly "^1.3.0" + is-wsl "^1.1.0" semver "^5.5.0" shellwords "^0.1.1" which "^1.3.0" @@ -8200,6 +7424,7 @@ node-notifier@^5.2.1: node-pre-gyp@^0.10.0: version "0.10.3" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc" + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -8215,6 +7440,7 @@ node-pre-gyp@^0.10.0: node-version@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.0.0.tgz#1b9b9584a9a7f7a6123f215cd14a652bf21ab19e" + integrity sha1-G5uVhKmn96YSPyFc0UplK/IasZ4= "nopt@2 || 3", nopt@3.x: version "3.0.6" @@ -8225,16 +7451,18 @@ node-version@1.0.0: nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= dependencies: abbrev "1" osenv "^0.1.4" normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5, normalize-package-data@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== dependencies: hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" + resolve "^1.10.0" semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" @@ -8255,12 +7483,14 @@ normalize-url@^3.3.0: integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== npm-bundled@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== -npm-lifecycle@^2.0.0, npm-lifecycle@^2.1.0: +npm-lifecycle@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-2.1.0.tgz#1eda2eedb82db929e3a0c50341ab0aad140ed569" + integrity sha512-QbBfLlGBKsktwBZLj6AviHC6Q9Y3R/AY4a2PYSIRhSKSS0/CxRyD/PfxEX6tPeOCXQgMSNdwGeECacstgptc+g== dependencies: byline "^5.0.0" graceful-fs "^4.1.11" @@ -8274,6 +7504,7 @@ npm-lifecycle@^2.0.0, npm-lifecycle@^2.1.0: "npm-package-arg@^4.0.0 || ^5.0.0 || ^6.0.0", npm-package-arg@^6.0.0, npm-package-arg@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-6.1.0.tgz#15ae1e2758a5027efb4c250554b85a737db7fcc1" + integrity sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA== dependencies: hosted-git-info "^2.6.0" osenv "^0.1.5" @@ -8281,8 +7512,9 @@ npm-lifecycle@^2.0.0, npm-lifecycle@^2.1.0: validate-npm-package-name "^3.0.0" npm-packlist@^1.1.12, npm-packlist@^1.1.6: - version "1.1.12" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a" + version "1.3.0" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.3.0.tgz#7f01e8e44408341379ca98cfd756e7b29bd2626c" + integrity sha512-qPBc6CnxEzpOcc4bjoIBJbYdy0D/LFFPUdxvfwor4/w3vxeE0h6TiOVurCEPpQ6trjN77u/ShyfeJGsbAfB3dA== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -8290,23 +7522,13 @@ npm-packlist@^1.1.12, npm-packlist@^1.1.6: npm-pick-manifest@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz#32111d2a9562638bb2c8f2bf27f7f3092c8fae40" + integrity sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA== dependencies: figgy-pudding "^3.5.1" npm-package-arg "^6.0.0" semver "^5.4.1" -npm-registry-fetch@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.8.0.tgz#aa7d9a7c92aff94f48dba0984bdef4bd131c88cc" - dependencies: - JSONStream "^1.3.4" - bluebird "^3.5.1" - figgy-pudding "^3.4.1" - lru-cache "^4.1.3" - make-fetch-happen "^4.0.1" - npm-package-arg "^6.1.0" - -npm-registry-fetch@^3.9.0: +npm-registry-fetch@^3.8.0, npm-registry-fetch@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-3.9.0.tgz#44d841780e2833f06accb34488f8c7450d1a6856" integrity sha512-srwmt8YhNajAoSAaDWndmZgx89lJwIZ1GWxOuckH4Coek4uHv5S+o/l9FLQe/awA+JwTnj4FJHldxhlXdZEBmw== @@ -8335,18 +7557,21 @@ npm-run-all@^4.1.2: npm-run-path@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" + integrity sha1-9cMr9ZX+ga6Sfa7FLoL4sACsPI8= dependencies: path-key "^1.0.0" npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= dependencies: path-key "^2.0.0" "npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: are-we-there-yet "~1.1.2" console-control-strings "~1.1.0" @@ -8360,12 +7585,9 @@ null-check@^1.0.0: number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nwsapi@^2.0.7: - version "2.0.9" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016" - -nwsapi@^2.0.9: +nwsapi@^2.0.7, nwsapi@^2.0.9: version "2.1.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.0.tgz#781065940aed90d9bb01ca5d0ce0fcf81c32712f" integrity sha512-ZG3bLAvdHmhIjaQ/Db1qvBxsGvFMLIRpQszyqbg31VJ53UP++uZX1/gf3Ut96pdwN9AuDwlMqIYLm0UPCdUeHg== @@ -8373,10 +7595,12 @@ nwsapi@^2.0.9: oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== object-assign@^4.0.1, object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-component@0.0.3: version "0.0.3" @@ -8385,24 +7609,28 @@ object-component@0.0.3: object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" object-keys@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" + version "1.1.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz#11bd22348dd2e096a045ab06f6c85bcc340fa032" + integrity sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg== object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= dependencies: isobject "^3.0.0" object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= dependencies: define-properties "^1.1.2" es-abstract "^1.5.1" @@ -8417,6 +7645,7 @@ object.omit@^2.0.0: object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" @@ -8434,6 +7663,7 @@ on-finished@~2.3.0: on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c= once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -8444,18 +7674,21 @@ once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= dependencies: mimic-fn "^1.0.0" opn@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" + integrity sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg== dependencies: is-wsl "^1.1.0" optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= dependencies: minimist "~0.0.1" wordwrap "~0.0.2" @@ -8463,6 +7696,7 @@ optimist@^0.6.1: optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= dependencies: deep-is "~0.1.3" fast-levenshtein "~2.0.4" @@ -8477,27 +7711,31 @@ os-browserify@^0.3.0: os-homedir@^1.0.0: version "1.0.2" - resolved "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== dependencies: execa "^0.7.0" lcid "^1.0.0" mem "^1.1.0" os-locale@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620" + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== dependencies: - execa "^0.10.0" + execa "^1.0.0" lcid "^2.0.0" mem "^4.0.0" os-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.0.0.tgz#e1434dbfddb8e74b44c98b56797d951b7648a5d9" + integrity sha512-7c74tib2FsdFbQ3W+qj8Tyd1R3Z6tuVRNNxXjJcZ4NgjIEQU9N/prVMqcW29XZPXGACqaXN3jq58/6hoaoXH6g== dependencies: macos-release "^2.0.0" windows-release "^3.1.0" @@ -8509,6 +7747,7 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: osenv@0, osenv@^0.1.4, osenv@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.0" @@ -8516,10 +7755,12 @@ osenv@0, osenv@^0.1.4, osenv@^0.1.5: override-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/override-require/-/override-require-1.1.1.tgz#6ae22fadeb1f850ffb0cf4c20ff7b87e5eb650df" + integrity sha1-auIvresfhQ/7DPTCD/e4fl62UN8= p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= p-each-series@^1.0.0: version "1.0.0" @@ -8531,24 +7772,21 @@ p-each-series@^1.0.0: p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^1.1.0: - version "1.1.0" - resolved "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" +p-is-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.0.0.tgz#7554e3d572109a87e1f3f53f6a7d85d1b194f4c5" + integrity sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg== p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" -p-limit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec" - dependencies: - p-try "^2.0.0" - -p-limit@^2.1.0: +p-limit@^2.0.0, p-limit@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.1.0.tgz#1d5a0d20fb12707c758a655f6bbc4386b5930d68" integrity sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g== @@ -8558,88 +7796,66 @@ p-limit@^2.1.0: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= dependencies: p-limit "^1.1.0" p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-map-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= dependencies: p-reduce "^1.0.0" p-map@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== p-pipe@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= p-try@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" + integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== p-waterfall@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-1.0.0.tgz#7ed94b3ceb3332782353af6aae11aa9fc235bb00" + integrity sha1-ftlLPOszMngjU69qrhGqn8I1uwA= dependencies: p-reduce "^1.0.0" package-json@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= dependencies: got "^6.7.1" registry-auth-token "^3.0.1" registry-url "^3.0.3" semver "^5.1.0" -pacote@^9.1.0: - version "9.2.3" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.2.3.tgz#48cfe87beb9177acd6594355a584a538835424b3" - dependencies: - bluebird "^3.5.2" - cacache "^11.2.0" - figgy-pudding "^3.5.1" - get-stream "^4.1.0" - glob "^7.1.3" - lru-cache "^4.1.3" - make-fetch-happen "^4.0.1" - minimatch "^3.0.4" - minipass "^2.3.5" - mississippi "^3.0.0" - mkdirp "^0.5.1" - normalize-package-data "^2.4.0" - npm-package-arg "^6.1.0" - npm-packlist "^1.1.12" - npm-pick-manifest "^2.2.3" - npm-registry-fetch "^3.8.0" - osenv "^0.1.5" - promise-inflight "^1.0.1" - promise-retry "^1.1.1" - protoduck "^5.0.1" - rimraf "^2.6.2" - safe-buffer "^5.1.2" - semver "^5.6.0" - ssri "^6.0.1" - tar "^4.4.6" - unique-filename "^1.1.1" - which "^1.3.1" - pacote@^9.4.1: version "9.4.1" resolved "https://registry.yarnpkg.com/pacote/-/pacote-9.4.1.tgz#f0af2a52d241bce523d39280ac810c671db62279" @@ -8692,6 +7908,7 @@ pako@~1.0.5: parallel-transform@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= dependencies: cyclist "~0.2.2" inherits "^2.0.3" @@ -8710,10 +7927,12 @@ parse-asn1@^5.0.0: parse-diff@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.5.1.tgz#18b3e82a0765ac1c8796e3854e475073a691c4fb" + integrity sha512-/qXjo9x/pFa5bVk/ZXaJD0yr3Tf3Yp6MWWMr4vnUmumDrE0yoE6YDH2A8vmcCD/Ko3tW2o0X+zGYh2zMLXshsg== parse-git-config@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-2.0.3.tgz#6fb840d4a956e28b971c97b33a5deb73a6d5b6bb" + integrity sha512-Js7ueMZOVSZ3tP8C7E3KZiHv6QQl7lnJ+OkbxoaFazzSa2KyEHqApfGbU3XboUgUnq4ZuUmskUpYKTNx01fm5A== dependencies: expand-tilde "^2.0.2" git-config-path "^1.0.1" @@ -8722,10 +7941,12 @@ parse-git-config@^2.0.3: parse-github-repo-url@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= parse-github-url@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" + integrity sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw== parse-glob@^3.0.4: version "3.0.4" @@ -8739,12 +7960,14 @@ parse-glob@^3.0.4: parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -8752,12 +7975,14 @@ parse-json@^4.0.0: parse-link-header@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-1.0.1.tgz#bedfe0d2118aeb84be75e7b025419ec8a61140a7" + integrity sha1-vt/g0hGK64S+deewJUGeyKYRQKc= dependencies: xtend "~4.0.1" parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= parse-path@^4.0.0: version "4.0.1" @@ -8780,6 +8005,7 @@ parse-url@^5.0.0: parse5@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA== parse5@5.1.0: version "5.1.0" @@ -8805,6 +8031,7 @@ parseurl@~1.3.2: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= path-browserify@0.0.0: version "0.0.0" @@ -8818,16 +8045,19 @@ path-browserify@^1.0.0: path-dirname@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" @@ -8836,14 +8066,17 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: path-key@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" + integrity sha1-XVPVeAGWRsDWiADbThRua9wqx68= path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= -path-parse@^1.0.5: +path-parse@^1.0.5, path-parse@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-to-regexp@0.1.7: version "0.1.7" @@ -8858,12 +8091,14 @@ path-to-regexp@^1.7.0: path-type@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= dependencies: pify "^2.0.0" path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= dependencies: graceful-fs "^4.1.2" pify "^2.0.0" @@ -8872,6 +8107,7 @@ path-type@^1.0.0: path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== dependencies: pify "^3.0.0" @@ -8892,6 +8128,7 @@ pbkdf2@^3.0.3: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= pidtree@^0.3.0: version "0.3.0" @@ -8899,11 +8136,13 @@ pidtree@^0.3.0: pify@^2.0.0, pify@^2.3.0: version "2.3.0" - resolved "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= pify@^4.0.0: version "4.0.1" @@ -8912,16 +8151,19 @@ pify@^4.0.0: pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= pinpoint@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pinpoint/-/pinpoint-1.1.0.tgz#0cf7757a6977f1bf7f6a32207b709e377388e874" + integrity sha1-DPd1eml38b9/ajIge3CeN3OI6HQ= pirates@^4.0.0: version "4.0.1" @@ -8933,18 +8175,21 @@ pirates@^4.0.0: pkg-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= dependencies: find-up "^2.1.0" pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== dependencies: find-up "^3.0.0" pkginfo@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.0.tgz#349dbb7ffd38081fcadc0853df687f0c7744cd65" + integrity sha1-NJ27f/04CB/K3AhT32h/DHdEzWU= plugin-error@^1.0.1: version "1.0.1" @@ -8959,18 +8204,22 @@ plugin-error@^1.0.1: pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= preserve@^0.2.0: version "0.2.0" @@ -8982,22 +8231,11 @@ prettier-check@^2.0.0: dependencies: execa "^0.6.0" -prettier@^1.14.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.2.tgz#d31abe22afa4351efa14c7f8b94b58bb7452205e" - -prettier@^1.16.4: +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== -pretty-format@^23.6.0: - version "23.6.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - pretty-format@^24.0.0: version "24.0.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.0.0.tgz#cb6599fd73ac088e37ed682f61291e4678f48591" @@ -9017,33 +8255,30 @@ process-nextick-args@~1.0.6: process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" progress@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31" + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= promise-retry@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-1.1.1.tgz#6739e968e3051da20ce6497fb2b50f6911df3d6d" + integrity sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0= dependencies: err-code "^1.0.0" retry "^0.10.0" -prompts@^0.1.9: - version "0.1.14" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" - dependencies: - kleur "^2.0.1" - sisteransi "^0.1.1" - prompts@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.3.tgz#c5ccb324010b2e8f74752aadceeb57134c1d2522" @@ -9055,12 +8290,14 @@ prompts@^2.0.1: promzard@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= dependencies: read "1" proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= protocols@^1.1.0, protocols@^1.4.0: version "1.4.7" @@ -9070,6 +8307,7 @@ protocols@^1.1.0, protocols@^1.4.0: protoduck@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/protoduck/-/protoduck-5.0.1.tgz#03c3659ca18007b69a50fd82a7ebcc516261151f" + integrity sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg== dependencies: genfun "^5.0.0" @@ -9087,10 +8325,12 @@ prr@~1.0.1: pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= psl@^1.1.24, psl@^1.1.28: - version "1.1.29" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67" + version "1.1.31" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" + integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== public-encrypt@^4.0.0: version "4.0.3" @@ -9106,6 +8346,7 @@ public-encrypt@^4.0.0: pump@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -9113,6 +8354,7 @@ pump@^2.0.0: pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -9132,14 +8374,17 @@ punycode@1.3.2: punycode@^1.2.4, punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== q@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= qjobs@^1.1.4: version "1.2.0" @@ -9160,6 +8405,7 @@ querystring@0.2.0: quick-lru@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= randomatic@^3.0.0: version "3.1.1" @@ -9189,6 +8435,7 @@ range-parser@^1.2.0, range-parser@~1.2.0: raw-body@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" + integrity sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y= dependencies: bytes "2.4.0" iconv-lite "0.4.15" @@ -9206,6 +8453,7 @@ raw-body@2.3.3: rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: deep-extend "^0.6.0" ini "~1.3.0" @@ -9215,12 +8463,14 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: read-cmd-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b" + integrity sha1-LV0Vd4ajfAVdIgd8MsU/gynpHHs= dependencies: graceful-fs "^4.1.2" "read-package-json@1 || 2", read-package-json@^2.0.0, read-package-json@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.0.13.tgz#2e82ebd9f613baa6d2ebe3aa72cefe3f68e41f4a" + integrity sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg== dependencies: glob "^7.1.1" json-parse-better-errors "^1.0.1" @@ -9230,8 +8480,9 @@ read-cmd-shim@^1.0.1: graceful-fs "^4.1.2" read-package-tree@^5.1.6: - version "5.2.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.1.tgz#6218b187d6fac82289ce4387bbbaf8eef536ad63" + version "5.2.2" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.2.2.tgz#4b6a0ef2d943c1ea36a578214c9a7f6b7424f7a8" + integrity sha512-rW3XWUUkhdKmN2JKB4FL563YAgtINifso5KShykufR03nJ5loGFlkUMe1g/yxmqX073SoYYTsgXu7XdDinKZuA== dependencies: debuglog "^1.0.1" dezalgo "^1.0.0" @@ -9242,6 +8493,7 @@ read-package-tree@^5.1.6: read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= dependencies: find-up "^1.0.0" read-pkg "^1.0.0" @@ -9249,6 +8501,7 @@ read-pkg-up@^1.0.1: read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= dependencies: find-up "^2.0.0" read-pkg "^3.0.0" @@ -9264,6 +8517,7 @@ read-pkg-up@^4.0.0: read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= dependencies: load-json-file "^1.0.0" normalize-package-data "^2.3.2" @@ -9272,6 +8526,7 @@ read-pkg@^1.0.0: read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= dependencies: load-json-file "^4.0.0" normalize-package-data "^2.3.2" @@ -9280,10 +8535,11 @@ read-pkg@^3.0.0: read@1, read@~1.0.1: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= dependencies: mute-stream "~0.0.4" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -9327,6 +8583,7 @@ readable-stream@~2.0.6: readdir-scoped-modules@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.0.2.tgz#9fafa37d286be5d92cbaebdee030dc9b5f406747" + integrity sha1-n6+jfShr5dksuuve4DDcm19AZ0c= dependencies: debuglog "^1.0.1" dezalgo "^1.0.0" @@ -9344,14 +8601,9 @@ readdirp@^2.0.0, readdirp@^2.2.1: readline-sync@^1.4.9: version "1.4.9" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.9.tgz#3eda8e65f23cd2a17e61301b1f0003396af5ecda" + integrity sha1-PtqOZfI80qF+YTAbHwADOWr17No= -realpath-native@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560" - dependencies: - util.promisify "^1.0.0" - -realpath-native@^1.0.2: +realpath-native@^1.0.0, realpath-native@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== @@ -9361,12 +8613,14 @@ realpath-native@^1.0.2: rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= dependencies: resolve "^1.1.6" redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= dependencies: indent-string "^2.1.0" strip-indent "^1.0.1" @@ -9374,6 +8628,7 @@ redent@^1.0.0: redent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= dependencies: indent-string "^3.0.0" strip-indent "^2.0.0" @@ -9382,7 +8637,7 @@ regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" -regenerator-runtime@^0.11.0, regenerator-runtime@^0.11.1: +regenerator-runtime@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" @@ -9408,6 +8663,7 @@ regex-cache@^0.4.2: regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== dependencies: extend-shallow "^3.0.2" safe-regex "^1.1.0" @@ -9423,6 +8679,7 @@ regexpu-core@^2.0.0: registry-auth-token@^3.0.1: version "3.3.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" + integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== dependencies: rc "^1.1.6" safe-buffer "^5.0.1" @@ -9430,6 +8687,7 @@ registry-auth-token@^3.0.1: registry-url@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= dependencies: rc "^1.0.1" @@ -9457,10 +8715,12 @@ remap-istanbul@^0.13.0: remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== repeat-string@^0.2.2: version "0.2.2" @@ -9473,19 +8733,11 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= dependencies: is-finite "^1.0.0" replace-in-file@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-3.4.2.tgz#6d40f076ac86948e28efeb6fab73fbad5c0bfa2a" - integrity sha512-wb2EU5MBBqUty+b1xSIqa0IKs5M2/a+4Ldw8KM5Gpe1btv16K0eii6nMxyNhAmRZhCEPrge0ss5Ij9f7vJEYcw== - dependencies: - chalk "^2.4.1" - glob "^7.1.2" - yargs "^12.0.1" - -replace-in-file@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-3.4.3.tgz#491a41c4353ca8d0342a4a0b9fb3eda3c2d0c7e3" integrity sha512-m62vEDCIL1B8uzymh+YKMLb4N4LdX5A5ObxOjap4wyCHzWqblAUYO5vhjWwk7zfR8PkTRIdPZVo/u4h33clnew== @@ -9494,19 +8746,21 @@ replace-in-file@^3.4.3: glob "^7.1.2" yargs "^12.0.5" -request-promise-core@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag== dependencies: - lodash "^4.13.1" + lodash "^4.17.11" request-promise-native@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" + version "1.0.7" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w== dependencies: - request-promise-core "1.1.1" - stealthy-require "^1.1.0" - tough-cookie ">=2.3.3" + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" request@^2.87.0, request@^2.88.0: version "2.88.0" @@ -9536,14 +8790,17 @@ request@^2.87.0, request@^2.88.0: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= requires-port@^1.0.0: version "1.0.0" @@ -9552,34 +8809,46 @@ requires-port@^1.0.0: resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= dependencies: resolve-from "^3.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" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@1.1.7, resolve@1.1.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@1.8.1, resolve@1.x, resolve@^1.1.6, resolve@^1.3.2, resolve@^1.8.1: +resolve@1.8.1, resolve@1.x, resolve@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26" dependencies: path-parse "^1.0.5" +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" + integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== + dependencies: + path-parse "^1.0.6" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -9587,10 +8856,7 @@ restore-cursor@^2.0.0: ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - -retry-axios@0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/retry-axios/-/retry-axios-0.3.2.tgz#5757c80f585b4cc4c4986aa2ffd47a60c6d35e13" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== retry-request@^4.0.0: version "4.0.0" @@ -9601,10 +8867,12 @@ retry-request@^4.0.0: retry@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" + integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= rfc6902@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/rfc6902/-/rfc6902-3.0.1.tgz#03a3d38329dbc266fbc92aa7fc14546d7839e89f" + integrity sha512-a4t5OlaOgAejBg48/lkyQMcV6EWpljjSjmXAtSXLhw83x1OhlcVGLMLf//GoUSpHsWt8x/7oxaf5FEGM9QH/iQ== rfdc@^1.1.2: version "1.1.2" @@ -9614,22 +8882,23 @@ rfdc@^1.1.2: right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -rimraf@^2.6.3: +rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== dependencies: glob "^7.1.3" +rimraf@^2.6.0, rimraf@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -9709,22 +8978,26 @@ rollup@^1.2.1: rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw== run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= dependencies: is-promise "^2.1.0" run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= dependencies: aproba "^1.1.1" -rxjs@^6.1.0: - version "6.3.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.3.3.tgz#3c6a7fa420e844a81390fb1158a9ec614f4bad55" +rxjs@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.4.0.tgz#f3bb0fe7bda7fb69deac0c16f17b50b0b8790504" + integrity sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw== dependencies: tslib "^1.9.0" @@ -9734,28 +9007,15 @@ safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s safe-regex@^1.1.0: version "1.1.0" - resolved "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= dependencies: ret "~0.1.10" "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - -sane@^2.0.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" - dependencies: - anymatch "^2.0.0" - capture-exit "^1.2.0" - exec-sh "^0.2.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.18.0" - optionalDependencies: - fsevents "^1.2.3" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sane@^3.0.0: version "3.1.0" @@ -9824,6 +9084,7 @@ selenium-webdriver@^4.0.0-alpha.1: semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" + integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= dependencies: semver "^5.0.3" @@ -9833,11 +9094,13 @@ semver-diff@^2.0.0: semver@~5.3.0: version "5.3.0" - resolved "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= send@0.15.3: version "0.15.3" resolved "https://registry.yarnpkg.com/send/-/send-0.15.3.tgz#5013f9f99023df50d1bd9892c19e3defd1d53309" + integrity sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk= dependencies: debug "2.6.7" depd "~1.1.0" @@ -9892,6 +9155,7 @@ serve-static@1.13.2: serve@^5.1.5: version "5.2.4" resolved "https://registry.yarnpkg.com/serve/-/serve-5.2.4.tgz#4742c05f65a2330f788cdde901cd7a09b23a99f6" + integrity sha1-R0LAX2WiMw94jN3pAc16CbI6mfY= dependencies: args "3.0.2" basic-auth "1.1.0" @@ -9917,10 +9181,12 @@ serve@^5.1.5: set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-value@^0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -9930,6 +9196,7 @@ set-value@^0.4.3: set-value@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== dependencies: extend-shallow "^2.0.1" is-extendable "^0.1.1" @@ -9954,12 +9221,14 @@ sha.js@^2.4.0, sha.js@^2.4.8: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= shell-quote@^1.6.1: version "1.6.1" @@ -9973,6 +9242,7 @@ shell-quote@^1.6.1: shelljs@^0.8.2: version "0.8.3" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" + integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== dependencies: glob "^7.0.0" interpret "^1.0.0" @@ -9981,26 +9251,14 @@ shelljs@^0.8.2: shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= -sinon@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.1.1.tgz#1202f317aa14d93cb9b69ff50b6bd49c0e05ffc9" - dependencies: - "@sinonjs/commons" "^1.2.0" - "@sinonjs/formatio" "^3.0.0" - "@sinonjs/samsam" "^2.1.2" - diff "^3.5.0" - lodash.get "^4.4.2" - lolex "^3.0.0" - nise "^1.4.6" - supports-color "^5.5.0" - type-detect "^4.0.8" - -sinon@^7.2.3: +sinon@^7.1.1, sinon@^7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/sinon/-/sinon-7.2.3.tgz#f8bfd956df32ddf592f8c102fd46982366412d8e" integrity sha512-i6j7sqcLEqTYqUcMV327waI745VASvYuSuQMCjbAwlpAeuCgKZ3LtrjDxAbu+GjNQR0FEDpywtwGCIh8GicNyg== @@ -10013,10 +9271,6 @@ sinon@^7.2.3: nise "^1.4.8" supports-color "^5.5.0" -sisteransi@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" - sisteransi@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c" @@ -10025,6 +9279,7 @@ sisteransi@^1.0.0: slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= slash@^2.0.0: version "2.0.0" @@ -10034,10 +9289,12 @@ slash@^2.0.0: slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.1.tgz#07ea1ca8d4db24eb4cac86537d7d18995221ace3" +smart-buffer@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.0.2.tgz#5207858c3815cc69110703c6b94e46c15634395d" + integrity sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw== snakeize@^0.1.0: version "0.1.0" @@ -10046,6 +9303,7 @@ snakeize@^0.1.0: snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== dependencies: define-property "^1.0.0" isobject "^3.0.0" @@ -10054,12 +9312,14 @@ snapdragon-node@^2.0.1: snapdragon-util@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== dependencies: kind-of "^3.2.0" snapdragon@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== dependencies: base "^0.11.1" debug "^2.2.0" @@ -10118,20 +9378,23 @@ socket.io@2.1.1: socks-proxy-agent@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz#5936bf8b707a993079c6f37db2091821bffa6473" + integrity sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw== dependencies: agent-base "~4.2.0" socks "~2.2.0" socks@~2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.2.tgz#f061219fc2d4d332afb4af93e865c84d3fa26e2b" + version "2.2.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.2.3.tgz#7399ce11e19b2a997153c983a9ccb6306721f2dc" + integrity sha512-+2r83WaRT3PXYoO/1z+RDEBE7Z2f9YcdQnJ0K/ncXXbV5gJ6wYfNAebYFYiiUjM6E4JyXnPY8cimwyvFYHVUUA== dependencies: ip "^1.1.5" - smart-buffer "^4.0.1" + smart-buffer "4.0.2" sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= dependencies: is-plain-obj "^1.0.0" @@ -10142,6 +9405,7 @@ source-list-map@^2.0.0: source-map-resolve@^0.5.0: version "0.5.2" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== dependencies: atob "^2.1.1" decode-uri-component "^0.2.0" @@ -10155,7 +9419,15 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.6, source-map-support@~0.5.6: +source-map-support@^0.5.6: + version "0.5.10" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c" + integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.6: version "0.5.9" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f" dependencies: @@ -10165,6 +9437,7 @@ source-map-support@^0.5.6, source-map-support@~0.5.6: source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" @@ -10172,13 +9445,15 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: source-map@^0.4.4: version "0.4.4" - resolved "http://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= dependencies: amdefine ">=0.0.4" -source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1, source-map@~0.5.3: +source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1, source-map@~0.5.3: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= source-map@^0.7.3: version "0.7.3" @@ -10196,8 +9471,9 @@ sourcemap-codec@^1.4.1: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" spdx-correct@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e" + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" @@ -10205,17 +9481,20 @@ spdx-correct@^3.0.0: spdx-exceptions@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== spdx-expression-parse@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2" + version "3.0.3" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e" + integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g== split-array-stream@^2.0.0: version "2.0.0" @@ -10226,28 +9505,33 @@ split-array-stream@^2.0.0: split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== dependencies: extend-shallow "^3.0.0" split2@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" + integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== dependencies: through2 "^2.0.2" split@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== dependencies: through "2" sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= sshpk@^1.7.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629" + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -10262,6 +9546,7 @@ sshpk@^1.7.0: ssri@^6.0.0, ssri@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== dependencies: figgy-pudding "^3.5.1" @@ -10272,10 +9557,12 @@ stack-trace@0.0.10: stack-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" + integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -10292,9 +9579,10 @@ statuses@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" -stealthy-require@^1.1.0: +stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= stream-browserify@^2.0.1: version "2.0.1" @@ -10314,6 +9602,7 @@ stream-browserify@^2.0.2: stream-each@^1.1.0: version "1.2.3" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== dependencies: end-of-stream "^1.1.0" stream-shift "^1.0.0" @@ -10347,6 +9636,7 @@ stream-http@^3.0.0: stream-shift@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= streamroller@0.7.0: version "0.7.0" @@ -10371,19 +9661,22 @@ streamroller@^1.0.1: string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0= dependencies: astral-regex "^1.0.0" strip-ansi "^4.0.0" string-similarity@1.1.0: version "1.1.0" - resolved "http://registry.npmjs.org/string-similarity/-/string-similarity-1.1.0.tgz#3c66498858a465ec7c40c7d81739bbd995904914" + resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-1.1.0.tgz#3c66498858a465ec7c40c7d81739bbd995904914" + integrity sha1-PGZJiFikZex8QMfYFzm72ZWQSRQ= dependencies: lodash "^4.13.1" string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -10392,6 +9685,7 @@ string-width@^1.0.1: "string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== dependencies: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" @@ -10416,19 +9710,22 @@ string_decoder@~0.10.x: string_decoder@~1.1.1: version "1.1.1" - resolved "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" - resolved "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= dependencies: ansi-regex "^3.0.0" @@ -10439,39 +9736,45 @@ strip-ansi@^5.0.0: dependencies: ansi-regex "^4.0.0" -strip-bom@3.0.0, strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: is-utf8 "^0.2.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-eof@^1.0.0: version "1.0.0" - resolved "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= dependencies: get-stdin "^4.0.1" strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= strong-log-transformer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.0.0.tgz#fa6d8e0a9e62b3c168c3cad5ae5d00dc97ba26cc" + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== dependencies: - byline "^5.0.0" duplexer "^0.1.1" minimist "^1.2.0" through "^2.3.4" @@ -10480,12 +9783,6 @@ stubs@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" -supports-color@4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - dependencies: - has-flag "^2.0.0" - supports-color@5.4.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" @@ -10497,9 +9794,10 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^3.1.0, supports-color@^3.1.2: +supports-color@^3.1.0: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= dependencies: has-flag "^1.0.0" @@ -10519,6 +9817,7 @@ supports-color@^6.0.0, supports-color@^6.1.0: supports-hyperlinks@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz#71daedf36cc1060ac5100c351bb3da48c29c0ef7" + integrity sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw== dependencies: has-flag "^2.0.0" supports-color "^5.0.0" @@ -10526,6 +9825,7 @@ supports-hyperlinks@^1.0.1: symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= tapable@^1.0.0, tapable@^1.1.0: version "1.1.1" @@ -10533,15 +9833,17 @@ tapable@^1.0.0, tapable@^1.1.0: tar@^2.0.0: version "2.2.1" - resolved "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE= dependencies: block-stream "*" fstream "^1.0.2" inherits "2" -tar@^4, tar@^4.4.6, tar@^4.4.8: +tar@^4, tar@^4.4.8: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" + integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== dependencies: chownr "^1.1.1" fs-minipass "^1.2.5" @@ -10551,14 +9853,6 @@ tar@^4, tar@^4.4.6, tar@^4.4.8: safe-buffer "^5.1.2" yallist "^3.0.2" -teeny-request@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.0.tgz#2780e3d8d04ecd4947a59b03ccaee273dd9a9122" - dependencies: - https-proxy-agent "^2.2.1" - node-fetch "^2.2.0" - uuid "^3.3.2" - teeny-request@^3.11.3, teeny-request@^3.7.0: version "3.11.3" resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-3.11.3.tgz#335c629f7645e5d6599362df2f3230c4cbc23a55" @@ -10571,10 +9865,12 @@ teeny-request@^3.11.3, teeny-request@^3.7.0: temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= temp-write@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-3.4.0.tgz#8cff630fb7e9da05f047c74ce4ce4d685457d492" + integrity sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI= dependencies: graceful-fs "^4.1.2" is-stream "^1.1.0" @@ -10586,12 +9882,14 @@ temp-write@^3.4.0: term-size@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/term-size/-/term-size-0.1.1.tgz#87360b96396cab5760963714cda0d0cbeecad9ca" + integrity sha1-hzYLljlsq1dgljcUzaDQy+7K2co= dependencies: execa "^0.4.0" term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" + integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= dependencies: execa "^0.7.0" @@ -10616,16 +9914,6 @@ terser@^3.8.1: source-map "~0.6.1" source-map-support "~0.5.6" -test-exclude@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20" - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - test-exclude@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.1.0.tgz#6ba6b25179d2d38724824661323b73e03c0c1de1" @@ -10643,10 +9931,12 @@ text-encoding@^0.6.4: text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= through2@3.0.0, through2@^3.0.0: version "3.0.0" @@ -10658,17 +9948,20 @@ through2@3.0.0, through2@^3.0.0: through2@^2.0.0, through2@^2.0.2: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== dependencies: readable-stream "~2.3.6" xtend "~4.0.1" through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: version "2.3.8" - resolved "http://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= timers-browserify@^2.0.10, timers-browserify@^2.0.4: version "2.0.10" @@ -10692,6 +9985,7 @@ tmp@0.0.33, tmp@0.0.x, tmp@^0.0.33: tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= to-array@0.1.4: version "0.1.4" @@ -10713,12 +10007,14 @@ to-fast-properties@^2.0.0: to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= dependencies: kind-of "^3.0.2" to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -10726,13 +10022,14 @@ to-regex-range@^2.1.0: to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== dependencies: define-property "^2.0.2" extend-shallow "^3.0.2" regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: +tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" dependencies: @@ -10742,6 +10039,7 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.5.0: tough-cookie@~2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== dependencies: psl "^1.1.24" punycode "^1.4.1" @@ -10749,24 +10047,29 @@ tough-cookie@~2.4.3: tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= dependencies: punycode "^2.1.0" trim-newlines@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= trim-newlines@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= trim-off-newlines@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= ts-jest@^23.10.5: version "23.10.5" @@ -10792,24 +10095,7 @@ tslint-config-prettier@^1.18.0: resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== -tslint@^5.11.0: - version "5.11.0" - resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.11.0.tgz#98f30c02eae3cde7006201e4c33cb08b48581eed" - dependencies: - babel-code-frame "^6.22.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" - minimatch "^3.0.4" - resolve "^1.3.2" - semver "^5.3.0" - tslib "^1.8.0" - tsutils "^2.27.2" - -tslint@^5.12.1: +tslint@^5.11.0, tslint@^5.12.1: version "5.12.1" resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.12.1.tgz#8cec9d454cf8a1de9b0a26d7bdbad6de362e52c1" integrity sha512-sfodBHOucFg6egff8d1BvuofoOQ/nOeYNfbp7LDlKBcLNrL3lmS5zoiDGyOMdT7YsEXAwWpTdAHwOGOc8eRZAw== @@ -10845,20 +10131,23 @@ tty-browserify@^0.0.1: tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: safe-buffer "^5.0.1" tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= dependencies: prelude-ls "~1.1.2" -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -10872,40 +10161,21 @@ type-is@~1.6.16: typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typedoc-default-themes@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/typedoc-default-themes/-/typedoc-default-themes-0.5.0.tgz#6dc2433e78ed8bea8e887a3acde2f31785bd6227" + integrity sha1-bcJDPnjti+qOiHo6zeLzF4W9Yic= typedoc-plugin-monorepo@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/typedoc-plugin-monorepo/-/typedoc-plugin-monorepo-0.1.0.tgz#d923cb6d9ffff09d8256b679c1bce2b929c0f271" + integrity sha512-hx42ck+9dJCoZO0jLCmEE3R6lydYaaYIKL+g6LT5Ev+B8CdAESsML2jiGR+TFu1rUuEujjArtCHjNLj2YqnKnQ== dependencies: highlight.js "^9.12.0" marked "^0.3.19" -typedoc@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.13.0.tgz#9efdf352bd54873955cd161bd4b75f24a8c59dde" - dependencies: - "@types/fs-extra" "^5.0.3" - "@types/handlebars" "^4.0.38" - "@types/highlight.js" "^9.12.3" - "@types/lodash" "^4.14.110" - "@types/marked" "^0.4.0" - "@types/minimatch" "3.0.3" - "@types/shelljs" "^0.8.0" - fs-extra "^7.0.0" - handlebars "^4.0.6" - highlight.js "^9.0.0" - lodash "^4.17.10" - marked "^0.4.0" - minimatch "^3.0.0" - progress "^2.0.0" - shelljs "^0.8.2" - typedoc-default-themes "^0.5.0" - typescript "3.1.x" - typedoc@^0.14.2: version "0.14.2" resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.14.2.tgz#769f457f4f9e4bdb8b5f3b177c86b6a31d8c3dc3" @@ -10929,14 +10199,6 @@ typedoc@^0.14.2: typedoc-default-themes "^0.5.0" typescript "3.2.x" -typescript-tslint-plugin@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/typescript-tslint-plugin/-/typescript-tslint-plugin-0.2.1.tgz#6a0361cd311bdc9dcec2e70c8a54cab16829e47f" - dependencies: - minimatch "^3.0.4" - mock-require "^3.0.2" - vscode-languageserver "^5.1.0" - typescript-tslint-plugin@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/typescript-tslint-plugin/-/typescript-tslint-plugin-0.3.1.tgz#d86ae0342c9e8f9ecfcbcc47f7a7c2b5ab0e86f9" @@ -10946,20 +10208,12 @@ typescript-tslint-plugin@^0.3.1: mock-require "^3.0.2" vscode-languageserver "^5.1.0" -typescript@3.1.x: - version "3.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.6.tgz#b6543a83cfc8c2befb3f4c8fba6896f5b0c9be68" - typescript@3.2.x: version "3.2.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.4.tgz#c585cb952912263d915b462726ce244ba510ef3d" integrity sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg== -typescript@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5" - -typescript@^3.3.3: +typescript@^3.2.0, typescript@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.3.tgz#f1657fc7daa27e1a8930758ace9ae8da31403221" integrity sha512-Y21Xqe54TBVp+VDSNbuDYdGw0BpoR/Q6wo/+35M8PAU0vipahnyduJWirxxdxjsAkS7hue53x2zp8gz7F05u0A== @@ -10967,6 +10221,7 @@ typescript@^3.3.3: uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= dependencies: source-map "~0.5.1" yargs "~3.10.0" @@ -10983,10 +10238,12 @@ uglify-js@^3.1.4, uglify-js@^3.4.9: uglify-to-browserify@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= uid-number@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= ultron@~1.1.0: version "1.1.1" @@ -10995,10 +10252,12 @@ ultron@~1.1.0: umask@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= dependencies: arr-union "^3.1.0" get-value "^2.0.6" @@ -11008,12 +10267,14 @@ union-value@^1.0.0: unique-filename@^1.1.0, unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== dependencies: unique-slug "^2.0.0" unique-slug@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6" + integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg== dependencies: imurmurhash "^0.1.4" @@ -11023,13 +10284,7 @@ unique-string@^1.0.0: dependencies: crypto-random-string "^1.0.0" -universal-user-agent@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.2.tgz#b0322da546100c658adcf4965110a56ed238aee6" - dependencies: - os-name "^3.0.0" - -universal-user-agent@^2.0.1: +universal-user-agent@^2.0.0, universal-user-agent@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.3.tgz#9f6f09f9cc33de867bb720d84c08069b14937c6c" integrity sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g== @@ -11039,6 +10294,7 @@ universal-user-agent@^2.0.1: universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" @@ -11047,6 +10303,7 @@ unpipe@1.0.0, unpipe@~1.0.0: unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -11054,6 +10311,7 @@ unset-value@^1.0.0: unzip-response@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= upath@^1.0.5, upath@^1.1.0: version "1.1.0" @@ -11062,6 +10320,7 @@ upath@^1.0.5, upath@^1.1.0: update-notifier@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.1.0.tgz#ec0c1e53536b76647a24b77cb83966d9315123d9" + integrity sha1-7AweU1NrdmR6JLd8uDlm2TFRI9k= dependencies: boxen "^1.0.0" chalk "^1.0.0" @@ -11075,6 +10334,7 @@ update-notifier@2.1.0: update-notifier@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.2.0.tgz#1b5837cf90c0736d88627732b661c138f86de72f" + integrity sha1-G1g3z5DAc22IYncytmHBOPht5y8= dependencies: boxen "^1.0.0" chalk "^1.0.0" @@ -11088,22 +10348,26 @@ update-notifier@2.2.0: uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== dependencies: punycode "^2.1.0" urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= dependencies: prepend-http "^1.0.1" url-template@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= url@^0.11.0: version "0.11.0" @@ -11119,6 +10383,7 @@ urlgrey@^0.4.4: use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== useragent@2.3.0: version "2.3.0" @@ -11135,6 +10400,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: util.promisify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== dependencies: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" @@ -11165,10 +10431,12 @@ utils-merge@1.0.1: uuid@^3.0.1, uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" @@ -11176,6 +10444,7 @@ validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: validate-npm-package-name@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= dependencies: builtins "^1.0.3" @@ -11186,6 +10455,7 @@ vary@~1.1.2: verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -11194,6 +10464,7 @@ verror@1.10.0: vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== vm-browserify@0.0.4: version "0.0.4" @@ -11206,14 +10477,6 @@ vm-browserify@1.1.0: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== -vm2@^3.6.3: - version "3.6.4" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.6.4.tgz#88b27a9f328a0630671841363692a57d24dead33" - -voca@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/voca/-/voca-1.4.0.tgz#e15ac58b38290b72acc0c330366b6cc7984924d7" - void-elements@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" @@ -11221,10 +10484,12 @@ void-elements@^2.0.0: vscode-jsonrpc@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" + integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== vscode-languageserver-protocol@3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.14.1.tgz#b8aab6afae2849c84a8983d39a1cf742417afe2f" + integrity sha512-IL66BLb2g20uIKog5Y2dQ0IiigW0XKrvmWiOvc0yXw80z3tMEzEnHjaGAb3ENuU7MnQqgnYJ1Cl2l9RvNgDi4g== dependencies: vscode-jsonrpc "^4.0.0" vscode-languageserver-types "3.14.0" @@ -11232,10 +10497,12 @@ vscode-languageserver-protocol@3.14.1: vscode-languageserver-types@3.14.0: version "3.14.0" resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.14.0.tgz#d3b5952246d30e5241592b6dde8280e03942e743" + integrity sha512-lTmS6AlAlMHOvPQemVwo3CezxBp0sNB95KNPkqp3Nxd5VFEnuG1ByM0zlRWos0zjO3ZWtkvhal0COgiV1xIA4A== vscode-languageserver@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-5.2.1.tgz#0d2feddd33f92aadf5da32450df498d52f6f14eb" + integrity sha512-GuayqdKZqAwwaCUjDvMTAVRPJOp/SLON3mJ07eGsx/Iq9HjRymhKWztX41rISqDKhHVVyFM+IywICyZDla6U3A== dependencies: vscode-languageserver-protocol "3.14.1" vscode-uri "^1.0.6" @@ -11243,10 +10510,12 @@ vscode-languageserver@^5.1.0: vscode-uri@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-1.0.6.tgz#6b8f141b0bbc44ad7b07e94f82f168ac7608ad4d" + integrity sha512-sLI2L0uGov3wKVb9EB+vIQBl9tVP90nqRvxSoJ35vI3NjxE8jfsE5DSOhWgSunHSZmKS4OCi2jrtfxK7uyp2ww== w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU= dependencies: browser-process-hrtime "^0.1.2" @@ -11262,12 +10531,14 @@ w3c-xmlserializer@^1.0.1: walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= dependencies: makeerror "1.0.x" watch@~0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY= dependencies: exec-sh "^0.2.0" minimist "^1.2.0" @@ -11289,6 +10560,7 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webpack-sources@^1.1.0, webpack-sources@^1.3.0: version "1.3.0" @@ -11297,15 +10569,15 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.29.4: - version "4.29.4" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.4.tgz#c0a2a12635142015f931b92efee7de6559f264dd" - integrity sha512-Uu/QgPFZG+w+5wjWIFBgIy+g9vOF3QiLmT2Bl783MQSLjRF/K+GMv2TH3TVNFyPQVEHY8rVnPoQtcqrnqK2H7Q== +webpack@^4.29.5: + version "4.29.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.29.5.tgz#52b60a7b0838427c3a894cd801a11dc0836bc79f" + integrity sha512-DuWlYUT982c7XVHodrLO9quFbNpVq5FNxLrMUfYUTlgKW0+yPimynYf1kttSQpEneAL1FH3P3OLNgkyImx8qIQ== dependencies: - "@webassemblyjs/ast" "1.8.2" - "@webassemblyjs/helper-module-context" "1.8.2" - "@webassemblyjs/wasm-edit" "1.8.2" - "@webassemblyjs/wasm-parser" "1.8.2" + "@webassemblyjs/ast" "1.8.3" + "@webassemblyjs/helper-module-context" "1.8.3" + "@webassemblyjs/wasm-edit" "1.8.3" + "@webassemblyjs/wasm-parser" "1.8.3" acorn "^6.0.5" acorn-dynamic-import "^4.0.0" ajv "^6.1.0" @@ -11340,6 +10612,7 @@ whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: whatwg-url@^6.4.1: version "6.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8" + integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -11348,6 +10621,7 @@ whatwg-url@^6.4.1: whatwg-url@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd" + integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" @@ -11356,6 +10630,7 @@ whatwg-url@^7.0.0: which-module@^2.0.0: version "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.1.1, which@^1.2.1, which@^1.2.12, which@^1.2.8, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" @@ -11366,34 +10641,40 @@ which@1, which@^1.1.1, which@^1.2.1, which@^1.2.12, which@^1.2.8, which@^1.2.9, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== dependencies: string-width "^1.0.2 || 2" widest-line@^1.0.0: version "1.0.0" - resolved "http://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-1.0.0.tgz#0c09c85c2a94683d0d7eaf8ee097d564bf0e105c" + integrity sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw= dependencies: string-width "^1.0.1" widest-line@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" + integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== dependencies: string-width "^2.1.1" window-size@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= windows-release@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.1.0.tgz#8d4a7e266cbf5a233f6c717dac19ce00af36e12e" + integrity sha512-hBb7m7acFgQPQc222uEQTmdcGLeBmQLNLFIh0rDk3CwFOBrfjefLzEfEfmpMq8Af/n/GnFf3eYf203FY1PmudA== dependencies: execa "^0.10.0" wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= wordwrap@^1.0.0, wordwrap@~1.0.0: version "1.0.0" @@ -11402,6 +10683,7 @@ wordwrap@^1.0.0, wordwrap@~1.0.0: wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= worker-farm@^1.5.2: version "1.6.0" @@ -11411,7 +10693,8 @@ worker-farm@^1.5.2: wrap-ansi@^2.0.0: version "2.1.0" - resolved "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -11419,6 +10702,7 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@2.4.1: version "2.4.1" @@ -11429,9 +10713,10 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" +write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" + integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== dependencies: graceful-fs "^4.1.11" imurmurhash "^0.1.4" @@ -11440,6 +10725,7 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.1.0, write-file-atomic@^2.3.0: write-json-file@^2.2.0, write-json-file@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" + integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8= dependencies: detect-indent "^5.0.0" graceful-fs "^4.1.2" @@ -11451,6 +10737,7 @@ write-json-file@^2.2.0, write-json-file@^2.3.0: write-pkg@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-3.2.0.tgz#0e178fe97820d389a8928bc79535dbe68c2cff21" + integrity sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw== dependencies: sort-keys "^2.0.0" write-json-file "^2.2.0" @@ -11458,6 +10745,7 @@ write-pkg@^3.1.0: ws@^5.2.0: version "5.2.2" resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== dependencies: async-limiter "~1.0.0" @@ -11483,6 +10771,7 @@ xdg-basedir@^3.0.0: xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xml2js@^0.4.17: version "0.4.19" @@ -11513,10 +10802,12 @@ xtend@^4.0.0, xtend@~4.0.1: y18n@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= "y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== yallist@^2.1.2: version "2.1.2" @@ -11526,6 +10817,7 @@ yallist@^2.1.2: yallist@^3.0.0, yallist@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== yargs-parser@10.x: version "10.1.0" @@ -11536,6 +10828,7 @@ yargs-parser@10.x: 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" @@ -11543,12 +10836,14 @@ yargs-parser@^11.1.1: yargs-parser@^9.0.2: version "9.0.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= dependencies: camelcase "^4.1.0" yargs@^11.0.0: version "11.1.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== dependencies: cliui "^4.0.0" decamelize "^1.1.1" @@ -11582,7 +10877,8 @@ yargs@^12.0.1, yargs@^12.0.2, yargs@^12.0.5: yargs@~3.10.0: version "3.10.0" - resolved "http://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= dependencies: camelcase "^1.0.2" cliui "^2.1.0" From 437300bdd78b2e331aff096d4db5a19b45cc2fff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Tue, 19 Feb 2019 15:24:33 +0100 Subject: [PATCH 8/9] [v5] Major utils rewrite (#1902) * ref: Move ExtendedError to a types package * ref: Remove assign util in favor of Object.assign * ref: Pass Event to sendEvent instead of just a body * ref: Remove isArray and isNaN utils * ref: Rewrite normalization and removed unused utils * Utils rewamp changelog --- CHANGELOG.md | 14 + .../browser/src/integrations/breadcrumbs.ts | 22 +- .../src/integrations/globalhandlers.ts | 6 +- packages/browser/src/integrations/helpers.ts | 11 +- .../browser/src/integrations/linkederrors.ts | 9 +- .../browser/src/integrations/pluggable/vue.ts | 4 +- packages/browser/src/parsers.ts | 12 +- packages/browser/src/tracekit.ts | 10 +- packages/browser/src/transports/base.ts | 4 +- packages/browser/src/transports/beacon.ts | 6 +- packages/browser/src/transports/fetch.ts | 6 +- packages/browser/src/transports/xhr.ts | 6 +- packages/browser/test/integration/common.js | 2 +- .../test/integrations/linkederrors.test.ts | 5 +- .../browser/test/mocks/simpletransport.ts | 4 +- packages/browser/test/transports/base.test.ts | 2 +- .../browser/test/transports/beacon.test.ts | 4 +- .../browser/test/transports/fetch.test.ts | 4 +- packages/browser/test/transports/xhr.test.ts | 4 +- packages/core/src/basebackend.ts | 3 +- packages/core/src/dsn.ts | 6 +- .../core/src/integrations/extraerrordata.ts | 20 +- .../core/src/integrations/inboundfilters.ts | 3 +- packages/core/src/transports/noop.ts | 4 +- .../lib/integrations/extraerrordata.test.ts | 9 +- packages/hub/src/scope.ts | 27 +- packages/node/src/backend.ts | 7 +- packages/node/src/handlers.ts | 7 +- .../node/src/integrations/linkederrors.ts | 9 +- packages/node/src/parsers.ts | 9 +- packages/node/src/transports/base.ts | 8 +- packages/node/src/transports/http.ts | 6 +- packages/node/src/transports/https.ts | 6 +- .../test/integrations/linkederrors.test.ts | 5 +- packages/node/test/transports/http.test.ts | 40 +- packages/node/test/transports/https.test.ts | 48 +- packages/types/src/error.ts | 6 + packages/types/src/index.ts | 1 + packages/types/src/transport.ts | 3 +- packages/utils/src/is.ts | 53 +- packages/utils/src/object.ts | 330 +++------ packages/utils/src/string.ts | 37 +- packages/utils/test/object.test.ts | 691 ++++++++---------- packages/utils/test/string.test.ts | 41 +- 44 files changed, 612 insertions(+), 902 deletions(-) create mode 100644 packages/types/src/error.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 454ebbf238ab..a0655eb29210 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,20 @@ since we removed some methods from the public API and removed some classes from - **breaking** [core] ref: Use `SyncPromise` internally, this reduces memory pressure by a lot. - **breaking** [browser] ref: Removed `BrowserBackend` from default export. - **breaking** [node] ref: Removed `BrowserBackend` from default export. +- ref: Move internal `ExtendedError` to a types package +- **breaking** [core] ref: Pass `Event` to `sendEvent` instead of already stringified data +- [utils] feat: Introduce `isSyntheticEvent` util +- **breaking** [utils] ref: remove `isArray` util in favor of `Array.isArray` +- **breaking** [utils] ref: Remove `isNaN` util in favor of `Number.isNaN` +- **breaking** [utils] ref: Remove `isFunction` util in favor of `typeof === 'function'` +- **breaking** [utils] ref: Remove `isUndefined` util in favor of `=== void 0` +- **breaking** [utils] ref: Remove `assign` util in favor of `Object.assign` +- **breaking** [utils] ref: Remove `includes` util in favor of native `includes` +- **breaking** [utils] ref: Rename `serializeKeysToEventMessage` to `keysToEventMessage` +- **breaking** [utils] ref: Rename `limitObjectDepthToSize` to `normalizeToSize` and rewrite its internals +- **breaking** [utils] ref: Rename `safeNormalize` to `normalize` and rewrite its internals +- **breaking** [utils] ref: Remove `serialize`, `deserialize`, `clone` and `serializeObject` functions +- **breaking** [utils] ref: Rewrite normalization functions by removing most of them and leaving just `normalize` and `normalizeToSize` ## 4.6.3 diff --git a/packages/browser/src/integrations/breadcrumbs.ts b/packages/browser/src/integrations/breadcrumbs.ts index 1a9bfc2613c1..2fcbd7c0f876 100644 --- a/packages/browser/src/integrations/breadcrumbs.ts +++ b/packages/browser/src/integrations/breadcrumbs.ts @@ -1,10 +1,10 @@ import { API, getCurrentHub } from '@sentry/core'; import { Breadcrumb, BreadcrumbHint, Integration, Severity } from '@sentry/types'; -import { isFunction, isString } from '@sentry/utils/is'; +import { isString } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; import { getEventDescription, getGlobalObject, parseUrl } from '@sentry/utils/misc'; -import { deserialize, fill, serializeObject } from '@sentry/utils/object'; -import { includes, safeJoin } from '@sentry/utils/string'; +import { fill, normalize } from '@sentry/utils/object'; +import { safeJoin } from '@sentry/utils/string'; import { supportsBeacon, supportsHistory, supportsNativeFetch } from '@sentry/utils/supports'; import { BrowserClient } from '../client'; import { breadcrumbEventHandler, keypressEventHandler, wrap } from './helpers'; @@ -87,7 +87,7 @@ export class Breadcrumbs implements Integration { const filterUrl = new API(dsn).getStoreEndpoint(); // if Sentry key appears in URL, don't capture it as a request // but rather as our own 'sentry' type breadcrumb - if (filterUrl && includes(url, filterUrl)) { + if (filterUrl && url.includes(filterUrl)) { addSentryBreadcrumb(data); return result; } @@ -132,7 +132,7 @@ export class Breadcrumbs implements Integration { category: 'console', data: { extra: { - arguments: serializeObject(args, 2), + arguments: normalize(args, 2), }, logger: 'console', }, @@ -143,7 +143,7 @@ export class Breadcrumbs implements Integration { if (level === 'assert') { if (args[0] === false) { breadcrumbData.message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`; - breadcrumbData.data.extra.arguments = serializeObject(args.slice(1), 2); + breadcrumbData.data.extra.arguments = normalize(args.slice(1), 2); } } @@ -205,7 +205,7 @@ export class Breadcrumbs implements Integration { const filterUrl = new API(dsn).getStoreEndpoint(); // if Sentry key appears in URL, don't capture it as a request // but rather as our own 'sentry' type breadcrumb - if (filterUrl && includes(url, filterUrl)) { + if (filterUrl && url.includes(filterUrl)) { if (method === 'POST' && args[1] && args[1].body) { addSentryBreadcrumb(args[1].body); } @@ -338,7 +338,7 @@ export class Breadcrumbs implements Integration { /** JSDoc */ function wrapProp(prop: string, xhr: XMLHttpRequest): void { // TODO: Fix XHR types - if (prop in xhr && isFunction((xhr as { [key: string]: any })[prop])) { + if (prop in xhr && typeof (xhr as { [key: string]: any })[prop] === 'function') { fill(xhr, prop, original => wrap(original, { mechanism: { @@ -372,7 +372,7 @@ export class Breadcrumbs implements Integration { const filterUrl = new API(dsn).getStoreEndpoint(); // if Sentry key appears in URL, don't capture it as a request // but rather as our own 'sentry' type breadcrumb - if (isString(url) && (filterUrl && includes(url, filterUrl))) { + if (isString(url) && (filterUrl && url.includes(filterUrl))) { this.__sentry_own_request__ = true; } } @@ -424,7 +424,7 @@ export class Breadcrumbs implements Integration { wrapProp(prop, xhr); }); - if ('onreadystatechange' in xhr && isFunction(xhr.onreadystatechange)) { + if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') { fill(xhr, 'onreadystatechange', function(original: () => void): void { return wrap( original, @@ -496,7 +496,7 @@ export class Breadcrumbs implements Integration { function addSentryBreadcrumb(serializedData: string): void { // There's always something that can go wrong with deserialization... try { - const event: { [key: string]: any } = deserialize(serializedData); + const event: { [key: string]: any } = JSON.parse(serializedData); Breadcrumbs.addBreadcrumb( { category: 'sentry', diff --git a/packages/browser/src/integrations/globalhandlers.ts b/packages/browser/src/integrations/globalhandlers.ts index 1b04a2cfdb28..87dad8aabebe 100644 --- a/packages/browser/src/integrations/globalhandlers.ts +++ b/packages/browser/src/integrations/globalhandlers.ts @@ -1,7 +1,6 @@ import { getCurrentHub } from '@sentry/core'; import { Event, Integration } from '@sentry/types'; import { logger } from '@sentry/utils/logger'; -import { safeNormalize, serialize } from '@sentry/utils/object'; import { truncate } from '@sentry/utils/string'; import { addExceptionTypeValue, eventFromStacktrace } from '../parsers'; import { @@ -114,10 +113,7 @@ export class GlobalHandlers implements Integration { }, }; - const fallbackValue = - typeof stacktrace.original !== 'undefined' - ? `${truncate(serialize(safeNormalize(stacktrace.original)), 300)}` - : ''; + const fallbackValue = stacktrace.original ? truncate(JSON.stringify(stacktrace.original), 300) : ''; const fallbackType = stacktrace.mechanism === 'onunhandledrejection' ? 'UnhandledRejection' : 'Error'; // This makes sure we have type/value in every exception diff --git a/packages/browser/src/integrations/helpers.ts b/packages/browser/src/integrations/helpers.ts index bddf5ff0324f..0e8402bc2a46 100644 --- a/packages/browser/src/integrations/helpers.ts +++ b/packages/browser/src/integrations/helpers.ts @@ -1,8 +1,7 @@ import { captureException, getCurrentHub, withScope } from '@sentry/core'; import { Event as SentryEvent, Mechanism, WrappedFunction } from '@sentry/types'; -import { isFunction } from '@sentry/utils/is'; import { htmlTreeAsString } from '@sentry/utils/misc'; -import { serializeObject } from '@sentry/utils/object'; +import { normalize } from '@sentry/utils/object'; const debounceDuration: number = 1000; let keypressTimeout: number | undefined; @@ -42,7 +41,8 @@ export function wrap( } = {}, before?: WrappedFunction, ): any { - if (!isFunction(fn)) { + // tslint:disable-next-line:strict-type-predicates + if (typeof fn !== 'function') { return fn; } @@ -64,7 +64,8 @@ export function wrap( } const sentryWrapped: WrappedFunction = function(this: any): void { - if (before && isFunction(before)) { + // tslint:disable-next-line:strict-type-predicates + if (before && typeof before === 'function') { before.apply(this, arguments); } @@ -96,7 +97,7 @@ export function wrap( processedEvent.extra = { ...processedEvent.extra, - arguments: serializeObject(args, 2), + arguments: normalize(args, 2), }; return processedEvent; diff --git a/packages/browser/src/integrations/linkederrors.ts b/packages/browser/src/integrations/linkederrors.ts index bda28e490a6c..b77c4e2db8bc 100644 --- a/packages/browser/src/integrations/linkederrors.ts +++ b/packages/browser/src/integrations/linkederrors.ts @@ -1,18 +1,11 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; -import { Event, EventHint, Exception, Integration } from '@sentry/types'; +import { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types'; import { exceptionFromStacktrace } from '../parsers'; import { computeStackTrace } from '../tracekit'; const DEFAULT_KEY = 'cause'; const DEFAULT_LIMIT = 5; -/** - * Just an Error object with arbitrary attributes attached to it. - */ -interface ExtendedError extends Error { - [key: string]: any; -} - /** Adds SDK info to an event. */ export class LinkedErrors implements Integration { /** diff --git a/packages/browser/src/integrations/pluggable/vue.ts b/packages/browser/src/integrations/pluggable/vue.ts index 461a7844240e..b8bd02dd1d3d 100644 --- a/packages/browser/src/integrations/pluggable/vue.ts +++ b/packages/browser/src/integrations/pluggable/vue.ts @@ -1,6 +1,6 @@ import { captureException, getCurrentHub, withScope } from '@sentry/core'; import { Event, Integration } from '@sentry/types'; -import { isPlainObject, isUndefined } from '@sentry/utils/is'; +import { isPlainObject } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; import { getGlobalObject } from '@sentry/utils/misc'; @@ -82,7 +82,7 @@ export class Vue implements Integration { } } - if (!isUndefined(info)) { + if (info !== void 0) { metadata.lifecycleHook = info; } diff --git a/packages/browser/src/parsers.ts b/packages/browser/src/parsers.ts index 67a03f5218f4..c90d7463369c 100644 --- a/packages/browser/src/parsers.ts +++ b/packages/browser/src/parsers.ts @@ -1,6 +1,6 @@ import { Event, Exception, StackFrame } from '@sentry/types'; -import { limitObjectDepthToSize, serializeKeysToEventMessage } from '@sentry/utils/object'; -import { includes } from '@sentry/utils/string'; +import { normalizeToSize } from '@sentry/utils/object'; +import { keysToEventMessage } from '@sentry/utils/string'; import { md5 } from './md5'; import { computeStackTrace, StackFrame as TraceKitStackFrame, StackTrace as TraceKitStackTrace } from './tracekit'; @@ -38,10 +38,10 @@ export function eventFromPlainObject(exception: {}, syntheticException: Error | const exceptionKeys = Object.keys(exception).sort(); const event: Event = { extra: { - __serialized__: limitObjectDepthToSize(exception), + __serialized__: normalizeToSize(exception), }, fingerprint: [md5(exceptionKeys.join(''))], - message: `Non-Error exception captured with keys: ${serializeKeysToEventMessage(exceptionKeys)}`, + message: `Non-Error exception captured with keys: ${keysToEventMessage(exceptionKeys)}`, }; if (syntheticException) { @@ -82,12 +82,12 @@ export function prepareFramesForEvent(stack: TraceKitStackFrame[]): StackFrame[] const lastFrameFunction = localStack[localStack.length - 1].func || ''; // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call) - if (includes(firstFrameFunction, 'captureMessage') || includes(firstFrameFunction, 'captureException')) { + if (firstFrameFunction.includes('captureMessage') || firstFrameFunction.includes('captureException')) { localStack = localStack.slice(1); } // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call) - if (includes(lastFrameFunction, 'sentryWrapped')) { + if (lastFrameFunction.includes('sentryWrapped')) { localStack = localStack.slice(0, -1); } diff --git a/packages/browser/src/tracekit.ts b/packages/browser/src/tracekit.ts index 4176df2c8d9b..dd1039fc8ddc 100644 --- a/packages/browser/src/tracekit.ts +++ b/packages/browser/src/tracekit.ts @@ -1,6 +1,6 @@ // tslint:disable -import { isUndefined, isError, isErrorEvent } from '@sentry/utils/is'; +import { isError, isErrorEvent } from '@sentry/utils/is'; import { getGlobalObject } from '@sentry/utils/misc'; /** @@ -712,7 +712,7 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { for (var i = 0; i < maxLines; ++i) { line = source[lineNo - i] + line; - if (!isUndefined(line)) { + if (line !== void 0) { if ((m = reGuessFunction.exec(line))) { return m[1]; } else if ((m = reFunctionArgNames.exec(line))) { @@ -751,7 +751,7 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { line -= 1; // convert to 0-based index for (var i = start; i < end; ++i) { - if (!isUndefined(source[i])) { + if (source[i] !== void 0) { context.push(source[i]); } } @@ -845,7 +845,7 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { * @memberof TraceKit.computeStackTrace */ function findSourceByFunctionBody(func: any) { - if (isUndefined(window && window.document)) { + if (window && window.document === void 0) { return; } @@ -1005,7 +1005,7 @@ TraceKit.computeStackTrace = (function computeStackTraceWrapper() { // NOTE: It's messing out our integration tests in Karma, let's see if we can live with it – Kamil // parts[4] = submatch[2]; // parts[5] = null; // no column when eval - } else if (i === 0 && !parts[5] && !isUndefined(ex.columnNumber)) { + } else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) { // FireFox uses this awesome columnNumber property for its top frame // Also note, Firefox's column number is 0-based and everything else expects 1-based, // so adding 1 diff --git a/packages/browser/src/transports/base.ts b/packages/browser/src/transports/base.ts index baf9688fe9be..637e77a76f55 100644 --- a/packages/browser/src/transports/base.ts +++ b/packages/browser/src/transports/base.ts @@ -1,5 +1,5 @@ import { API } from '@sentry/core'; -import { Response, Transport, TransportOptions } from '@sentry/types'; +import { Event, Response, Transport, TransportOptions } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import { PromiseBuffer } from '@sentry/utils/promisebuffer'; @@ -20,7 +20,7 @@ export abstract class BaseTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: string): Promise { + public async sendEvent(_: Event): Promise { throw new SentryError('Transport Class has to implement `sendEvent` method'); } diff --git a/packages/browser/src/transports/beacon.ts b/packages/browser/src/transports/beacon.ts index e2ffd37ac67f..ec4f8382bac3 100644 --- a/packages/browser/src/transports/beacon.ts +++ b/packages/browser/src/transports/beacon.ts @@ -1,4 +1,4 @@ -import { Response, Status } from '@sentry/types'; +import { Event, Response, Status } from '@sentry/types'; import { getGlobalObject } from '@sentry/utils/misc'; import { BaseTransport } from './base'; @@ -9,8 +9,8 @@ export class BeaconTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { - const result = global.navigator.sendBeacon(this.url, body); + public async sendEvent(event: Event): Promise { + const result = global.navigator.sendBeacon(this.url, JSON.stringify(event)); return this.buffer.add( Promise.resolve({ diff --git a/packages/browser/src/transports/fetch.ts b/packages/browser/src/transports/fetch.ts index f27356b41bd7..1d94982c35d5 100644 --- a/packages/browser/src/transports/fetch.ts +++ b/packages/browser/src/transports/fetch.ts @@ -1,4 +1,4 @@ -import { Response, Status } from '@sentry/types'; +import { Event, Response, Status } from '@sentry/types'; import { getGlobalObject } from '@sentry/utils/misc'; import { supportsReferrerPolicy } from '@sentry/utils/supports'; import { BaseTransport } from './base'; @@ -10,9 +10,9 @@ export class FetchTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(event: Event): Promise { const defaultOptions: RequestInit = { - body, + body: JSON.stringify(event), method: 'POST', // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default // https://caniuse.com/#feat=referrer-policy diff --git a/packages/browser/src/transports/xhr.ts b/packages/browser/src/transports/xhr.ts index 15e6e6b9d670..f70e49ce443f 100644 --- a/packages/browser/src/transports/xhr.ts +++ b/packages/browser/src/transports/xhr.ts @@ -1,4 +1,4 @@ -import { Response, Status } from '@sentry/types'; +import { Event, Response, Status } from '@sentry/types'; import { BaseTransport } from './base'; /** `XHR` based transport */ @@ -6,7 +6,7 @@ export class XHRTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(event: Event): Promise { return this.buffer.add( new Promise((resolve, reject) => { const request = new XMLHttpRequest(); @@ -26,7 +26,7 @@ export class XHRTransport extends BaseTransport { }; request.open('POST', this.url); - request.send(body); + request.send(JSON.stringify(event)); }), ); } diff --git a/packages/browser/test/integration/common.js b/packages/browser/test/integration/common.js index 319a71ff43b1..0092647bd3ef 100644 --- a/packages/browser/test/integration/common.js +++ b/packages/browser/test/integration/common.js @@ -107,7 +107,7 @@ function initSDK() { // stub transport so we don't actually transmit any data function DummyTransport() {} DummyTransport.prototype.sendEvent = function(event) { - sentryData.push(JSON.parse(event)); + sentryData.push(event); done(sentryData); return Promise.resolve({ status: 'success', diff --git a/packages/browser/test/integrations/linkederrors.test.ts b/packages/browser/test/integrations/linkederrors.test.ts index 27a6dfdc995b..f4b9c1a56057 100644 --- a/packages/browser/test/integrations/linkederrors.test.ts +++ b/packages/browser/test/integrations/linkederrors.test.ts @@ -1,3 +1,4 @@ +import { ExtendedError } from '@sentry/types'; import { expect } from 'chai'; import { stub } from 'sinon'; import { BrowserBackend } from '../../src/backend'; @@ -5,10 +6,6 @@ import { LinkedErrors } from '../../src/integrations/linkederrors'; let linkedErrors: LinkedErrors; -interface ExtendedError extends Error { - [key: string]: any; -} - describe('LinkedErrors', () => { beforeEach(() => { linkedErrors = new LinkedErrors(); diff --git a/packages/browser/test/mocks/simpletransport.ts b/packages/browser/test/mocks/simpletransport.ts index 23c90efb27fe..27d100d36c1a 100644 --- a/packages/browser/test/mocks/simpletransport.ts +++ b/packages/browser/test/mocks/simpletransport.ts @@ -1,8 +1,8 @@ -import { Response, Status } from '../../src'; +import { Event, Response, Status } from '../../src'; import { BaseTransport } from '../../src/transports'; export class SimpleTransport extends BaseTransport { - public async sendEvent(_: string): Promise { + public async sendEvent(_: Event): Promise { return this.buffer.add( Promise.resolve({ status: Status.fromHttpCode(200), diff --git a/packages/browser/test/transports/base.test.ts b/packages/browser/test/transports/base.test.ts index 907eb6190c88..5da9501730b8 100644 --- a/packages/browser/test/transports/base.test.ts +++ b/packages/browser/test/transports/base.test.ts @@ -10,7 +10,7 @@ describe('BaseTransport', () => { const transport = new SimpleTransport({ dsn: testDsn }); try { - await transport.sendEvent(''); + await transport.sendEvent({}); } catch (e) { expect(e.message).equal('Transport Class has to implement `sendEvent` method'); } diff --git a/packages/browser/test/transports/beacon.test.ts b/packages/browser/test/transports/beacon.test.ts index 9d6bce60be74..50615c068363 100644 --- a/packages/browser/test/transports/beacon.test.ts +++ b/packages/browser/test/transports/beacon.test.ts @@ -33,7 +33,7 @@ describe('BeaconTransport', () => { it('sends a request to Sentry servers', async () => { sendBeacon.returns(true); - return transport.sendEvent(JSON.stringify(payload)).then(res => { + return transport.sendEvent(payload).then(res => { expect(res.status).equal(Status.Success); expect(sendBeacon.calledOnce).equal(true); expect(sendBeacon.calledWith(transportUrl, JSON.stringify(payload))).equal(true); @@ -43,7 +43,7 @@ describe('BeaconTransport', () => { it('rejects with failed status', async () => { sendBeacon.returns(false); - return transport.sendEvent(JSON.stringify(payload)).catch(res => { + return transport.sendEvent(payload).catch(res => { expect(res.status).equal(Status.Failed); expect(sendBeacon.calledOnce).equal(true); expect(sendBeacon.calledWith(transportUrl, JSON.stringify(payload))).equal(true); diff --git a/packages/browser/test/transports/fetch.test.ts b/packages/browser/test/transports/fetch.test.ts index b7be26bb3e46..ba8e9edbc5d4 100644 --- a/packages/browser/test/transports/fetch.test.ts +++ b/packages/browser/test/transports/fetch.test.ts @@ -35,7 +35,7 @@ describe('FetchTransport', () => { fetch.returns(Promise.resolve(response)); - return transport.sendEvent(JSON.stringify(payload)).then(res => { + return transport.sendEvent(payload).then(res => { expect(res.status).equal(Status.Success); expect(fetch.calledOnce).equal(true); expect( @@ -53,7 +53,7 @@ describe('FetchTransport', () => { fetch.returns(Promise.reject(response)); - return transport.sendEvent(JSON.stringify(payload)).catch(res => { + return transport.sendEvent(payload).catch(res => { expect(res.status).equal(403); expect(fetch.calledOnce).equal(true); expect( diff --git a/packages/browser/test/transports/xhr.test.ts b/packages/browser/test/transports/xhr.test.ts index ef586c1778cd..cb126a9e8604 100644 --- a/packages/browser/test/transports/xhr.test.ts +++ b/packages/browser/test/transports/xhr.test.ts @@ -34,7 +34,7 @@ describe('XHRTransport', () => { it('sends a request to Sentry servers', async () => { server.respondWith('POST', transportUrl, [200, {}, '']); - return transport.sendEvent(JSON.stringify(payload)).then(res => { + return transport.sendEvent(payload).then(res => { expect(res.status).equal(Status.Success); const request = server.requests[0]; expect(server.requests.length).equal(1); @@ -46,7 +46,7 @@ describe('XHRTransport', () => { it('rejects with non-200 status code', done => { server.respondWith('POST', transportUrl, [403, {}, '']); - transport.sendEvent(JSON.stringify(payload)).catch(res => { + transport.sendEvent(payload).catch(res => { expect(res.status).equal(403); const request = server.requests[0]; diff --git a/packages/core/src/basebackend.ts b/packages/core/src/basebackend.ts index 5b20a843bfc7..b51a6574dd13 100644 --- a/packages/core/src/basebackend.ts +++ b/packages/core/src/basebackend.ts @@ -1,7 +1,6 @@ import { Event, EventHint, Options, Severity, Transport } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import { logger } from '@sentry/utils/logger'; -import { serialize } from '@sentry/utils/object'; import { SyncPromise } from '@sentry/utils/syncpromise'; import { NoopTransport } from './transports/noop'; @@ -95,7 +94,7 @@ export abstract class BaseBackend implements Backend { * @inheritDoc */ public sendEvent(event: Event): void { - this.transport.sendEvent(serialize(event)).catch(reason => { + this.transport.sendEvent(event).catch(reason => { logger.error(`Error while sending event: ${reason}`); }); } diff --git a/packages/core/src/dsn.ts b/packages/core/src/dsn.ts index 364cf2187ca0..643ffa7e662a 100644 --- a/packages/core/src/dsn.ts +++ b/packages/core/src/dsn.ts @@ -1,7 +1,5 @@ import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; -import { isNaN } from '@sentry/utils/is'; -import { assign } from '@sentry/utils/object'; /** Regular expression used to parse a Dsn. */ const DSN_REGEX = /^(?:(\w+):)\/\/(?:(\w+)(?::(\w+))?@)([\w\.-]+)(?::(\d+))?\/(.+)/; @@ -67,7 +65,7 @@ export class Dsn implements DsnComponents { path = split.slice(0, -1).join('/'); projectId = split.pop() as string; } - assign(this, { host, pass, path, projectId, port, protocol, user }); + Object.assign(this, { host, pass, path, projectId, port, protocol, user }); } /** Maps Dsn components into this instance. */ @@ -93,7 +91,7 @@ export class Dsn implements DsnComponents { throw new SentryError(`Invalid Dsn: Unsupported protocol "${this.protocol}"`); } - if (this.port && isNaN(parseInt(this.port, 10))) { + if (this.port && Number.isNaN(parseInt(this.port, 10))) { throw new SentryError(`Invalid Dsn: Invalid port number "${this.port}"`); } } diff --git a/packages/core/src/integrations/extraerrordata.ts b/packages/core/src/integrations/extraerrordata.ts index dd57657e20a7..bad2f877cf78 100644 --- a/packages/core/src/integrations/extraerrordata.ts +++ b/packages/core/src/integrations/extraerrordata.ts @@ -1,15 +1,8 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub'; -import { Event, EventHint, Integration } from '@sentry/types'; -import { isError, isString } from '@sentry/utils/is'; +import { Event, EventHint, ExtendedError, Integration } from '@sentry/types'; +import { isError, isPlainObject } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; -import { safeNormalize } from '@sentry/utils/object'; - -/** - * Just an Error object with arbitrary attributes attached to it. - */ -interface ExtendedError extends Error { - [key: string]: unknown; -} +import { normalize } from '@sentry/utils/object'; /** Patch toString calls to return proper name for wrapped functions */ export class ExtraErrorData implements Integration { @@ -50,13 +43,15 @@ export class ExtraErrorData implements Integration { let extra = { ...event.extra, }; - const normalizedErrorData = safeNormalize(errorData); - if (!isString(normalizedErrorData)) { + + const normalizedErrorData = normalize(errorData); + if (isPlainObject(normalizedErrorData)) { extra = { ...event.extra, ...normalizedErrorData, }; } + return { ...event, extra, @@ -84,6 +79,7 @@ export class ExtraErrorData implements Integration { if (isError(value)) { value = (value as Error).name || (value as Error).constructor.name; } + // tslint:disable:no-unsafe-any extraErrorInfo[key] = value; } result = { diff --git a/packages/core/src/integrations/inboundfilters.ts b/packages/core/src/integrations/inboundfilters.ts index 2ce7a88f9934..ce55b23b68ae 100644 --- a/packages/core/src/integrations/inboundfilters.ts +++ b/packages/core/src/integrations/inboundfilters.ts @@ -3,7 +3,6 @@ import { Client, Event, Integration } from '@sentry/types'; import { isRegExp } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; import { getEventDescription } from '@sentry/utils/misc'; -import { includes } from '@sentry/utils/string'; // "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. @@ -148,7 +147,7 @@ export class InboundFilters implements Integration { if (isRegExp(pattern)) { return (pattern as RegExp).test(value); } else if (typeof pattern === 'string') { - return includes(value, pattern); + return value.includes(pattern); } else { return false; } diff --git a/packages/core/src/transports/noop.ts b/packages/core/src/transports/noop.ts index 4bad9131885e..21e56df43d79 100644 --- a/packages/core/src/transports/noop.ts +++ b/packages/core/src/transports/noop.ts @@ -1,11 +1,11 @@ -import { Response, Status, Transport } from '@sentry/types'; +import { Event, Response, Status, Transport } from '@sentry/types'; /** Noop transport */ export class NoopTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: string): Promise { + public async sendEvent(_: Event): Promise { return Promise.resolve({ reason: `NoopTransport: Event has been skipped because no Dsn is configured.`, status: Status.Skipped, diff --git a/packages/core/test/lib/integrations/extraerrordata.test.ts b/packages/core/test/lib/integrations/extraerrordata.test.ts index df409fa94b28..1d1057932404 100644 --- a/packages/core/test/lib/integrations/extraerrordata.test.ts +++ b/packages/core/test/lib/integrations/extraerrordata.test.ts @@ -1,13 +1,6 @@ -import { SentryEvent } from '@sentry/types'; +import { ExtendedError, SentryEvent } from '@sentry/types'; import { ExtraErrorData } from '../../../src/integrations/extraerrordata'; -/** - * Just an Error object with arbitrary attributes attached to it. - */ -interface ExtendedError extends Error { - [key: string]: any; -} - const extraErrorData = new ExtraErrorData(); let event: SentryEvent; diff --git a/packages/hub/src/scope.ts b/packages/hub/src/scope.ts index fbceaa7440dd..9b32e8c10a1c 100644 --- a/packages/hub/src/scope.ts +++ b/packages/hub/src/scope.ts @@ -1,7 +1,7 @@ import { Breadcrumb, Event, EventHint, EventProcessor, Scope as ScopeInterface, Severity, User } from '@sentry/types'; -import { isFunction, isThenable } from '@sentry/utils/is'; +import { isThenable } from '@sentry/utils/is'; import { getGlobalObject } from '@sentry/utils/misc'; -import { assign, safeNormalize } from '@sentry/utils/object'; +import { normalize } from '@sentry/utils/object'; import { SyncPromise } from '@sentry/utils/syncpromise'; /** @@ -60,7 +60,8 @@ export class Scope implements ScopeInterface { ): SyncPromise { return new SyncPromise((resolve, reject) => { const processor = processors[index]; - if (event === null || !isFunction(processor)) { + // tslint:disable-next-line:strict-type-predicates + if (event === null || typeof processor !== 'function') { resolve(event); } else { const result = processor({ ...event }, hint) as Event | null; @@ -81,7 +82,7 @@ export class Scope implements ScopeInterface { * @inheritdoc */ public setUser(user: User): Scope { - this.user = safeNormalize(user); + this.user = normalize(user); return this; } @@ -89,7 +90,7 @@ export class Scope implements ScopeInterface { * @inheritdoc */ public setTag(key: string, value: string): Scope { - this.tags = { ...this.tags, [key]: safeNormalize(value) }; + this.tags = { ...this.tags, [key]: normalize(value) }; return this; } @@ -97,7 +98,7 @@ export class Scope implements ScopeInterface { * @inheritdoc */ public setExtra(key: string, extra: any): Scope { - this.extra = { ...this.extra, [key]: safeNormalize(extra) }; + this.extra = { ...this.extra, [key]: normalize(extra) }; return this; } @@ -105,7 +106,7 @@ export class Scope implements ScopeInterface { * @inheritdoc */ public setFingerprint(fingerprint: string[]): Scope { - this.fingerprint = safeNormalize(fingerprint); + this.fingerprint = normalize(fingerprint); return this; } @@ -113,7 +114,7 @@ export class Scope implements ScopeInterface { * @inheritdoc */ public setLevel(level: Severity): Scope { - this.level = safeNormalize(level); + this.level = normalize(level); return this; } @@ -123,12 +124,12 @@ export class Scope implements ScopeInterface { */ public static clone(scope?: Scope): Scope { const newScope = new Scope(); - assign(newScope, scope, { + Object.assign(newScope, scope, { scopeListeners: [], }); if (scope) { - newScope.extra = assign(scope.extra); - newScope.tags = assign(scope.tags) as any; + newScope.extra = { ...scope.extra }; + newScope.tags = { ...scope.tags }; newScope.breadcrumbs = [...scope.breadcrumbs]; newScope.eventProcessors = [...scope.eventProcessors]; } @@ -153,8 +154,8 @@ export class Scope implements ScopeInterface { public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): void { this.breadcrumbs = maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0 - ? [...this.breadcrumbs, safeNormalize(breadcrumb)].slice(-maxBreadcrumbs) - : [...this.breadcrumbs, safeNormalize(breadcrumb)]; + ? [...this.breadcrumbs, normalize(breadcrumb)].slice(-maxBreadcrumbs) + : [...this.breadcrumbs, normalize(breadcrumb)]; } /** diff --git a/packages/node/src/backend.ts b/packages/node/src/backend.ts index c6e9033f6c20..eafbad64f8fc 100644 --- a/packages/node/src/backend.ts +++ b/packages/node/src/backend.ts @@ -1,7 +1,8 @@ import { BaseBackend, Dsn, getCurrentHub } from '@sentry/core'; import { Event, EventHint, Options, Severity, Transport } from '@sentry/types'; import { isError, isPlainObject } from '@sentry/utils/is'; -import { limitObjectDepthToSize, serializeKeysToEventMessage } from '@sentry/utils/object'; +import { normalizeToSize } from '@sentry/utils/object'; +import { keysToEventMessage } from '@sentry/utils/string'; import { SyncPromise } from '@sentry/utils/syncpromise'; import { createHash } from 'crypto'; import { extractStackFromError, parseError, parseStack, prepareFramesForEvent } from './parsers'; @@ -81,10 +82,10 @@ export class NodeBackend extends BaseBackend { // This will allow us to group events based on top-level keys // which is much better than creating new group when any key/value change const keys = Object.keys(exception as {}).sort(); - const message = `Non-Error exception captured with keys: ${serializeKeysToEventMessage(keys)}`; + const message = `Non-Error exception captured with keys: ${keysToEventMessage(keys)}`; getCurrentHub().configureScope(scope => { - scope.setExtra('__serialized__', limitObjectDepthToSize(exception as {})); + scope.setExtra('__serialized__', normalizeToSize(exception as {})); scope.setFingerprint([ createHash('md5') .update(keys.join('')) diff --git a/packages/node/src/handlers.ts b/packages/node/src/handlers.ts index ecb59603b155..5eda022d6a37 100644 --- a/packages/node/src/handlers.ts +++ b/packages/node/src/handlers.ts @@ -1,8 +1,9 @@ import { captureException, getCurrentHub } from '@sentry/core'; import { Event } from '@sentry/types'; import { forget } from '@sentry/utils/async'; +import { isString } from '@sentry/utils/is'; import { logger } from '@sentry/utils/logger'; -import { serialize } from '@sentry/utils/object'; +import { normalize } from '@sentry/utils/object'; import * as cookie from 'cookie'; import * as domain from 'domain'; import * as http from 'http'; @@ -94,9 +95,9 @@ function extractRequestData(req: { [key: string]: any }): { [key: string]: strin data = ''; } } - if (data && typeof data !== 'string' && {}.toString.call(data) !== '[object String]') { + if (data && !isString(data)) { // Make sure the request body is a string - data = serialize(data); + data = JSON.stringify(normalize(data)); } // request interface diff --git a/packages/node/src/integrations/linkederrors.ts b/packages/node/src/integrations/linkederrors.ts index b43f8609633b..00c6cedda548 100644 --- a/packages/node/src/integrations/linkederrors.ts +++ b/packages/node/src/integrations/linkederrors.ts @@ -1,18 +1,11 @@ import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core'; -import { Event, EventHint, Exception, Integration } from '@sentry/types'; +import { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types'; import { SyncPromise } from '@sentry/utils/syncpromise'; import { getExceptionFromError } from '../parsers'; const DEFAULT_KEY = 'cause'; const DEFAULT_LIMIT = 5; -/** - * Just an Error object with arbitrary attributes attached to it. - */ -interface ExtendedError extends Error { - [key: string]: any; -} - /** Adds SDK info to an event. */ export class LinkedErrors implements Integration { /** diff --git a/packages/node/src/parsers.ts b/packages/node/src/parsers.ts index 6e15bd890464..4e9c1f861d01 100644 --- a/packages/node/src/parsers.ts +++ b/packages/node/src/parsers.ts @@ -1,4 +1,4 @@ -import { Event, Exception, StackFrame } from '@sentry/types'; +import { Event, Exception, ExtendedError, StackFrame } from '@sentry/types'; import { basename, dirname } from '@sentry/utils/path'; import { snipLine } from '@sentry/utils/string'; import { SyncPromise } from '@sentry/utils/syncpromise'; @@ -19,13 +19,6 @@ export function resetFileContentCache(): void { FILE_CONTENT_CACHE.clear(); } -/** - * Just an Error object with arbitrary attributes attached to it. - */ -interface ExtendedError extends Error { - [key: string]: any; -} - /** JSDoc */ function getFunction(frame: stacktrace.StackFrame): string { try { diff --git a/packages/node/src/transports/base.ts b/packages/node/src/transports/base.ts index 08c5ce5c41de..becf36ba988d 100644 --- a/packages/node/src/transports/base.ts +++ b/packages/node/src/transports/base.ts @@ -1,5 +1,5 @@ import { API } from '@sentry/core'; -import { Response, Status, Transport, TransportOptions } from '@sentry/types'; +import { Event, Response, Status, Transport, TransportOptions } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import { PromiseBuffer } from '@sentry/utils/promisebuffer'; import * as fs from 'fs'; @@ -71,7 +71,7 @@ export abstract class BaseTransport implements Transport { } /** JSDoc */ - protected async sendWithModule(httpModule: HTTPRequest, body: string): Promise { + protected async sendWithModule(httpModule: HTTPRequest, event: Event): Promise { return this.buffer.add( new Promise((resolve, reject) => { const req = httpModule.request(this.getRequestOptions(), (res: http.IncomingMessage) => { @@ -97,7 +97,7 @@ export abstract class BaseTransport implements Transport { }); }); req.on('error', reject); - req.end(body); + req.end(JSON.stringify(event)); }), ); } @@ -105,7 +105,7 @@ export abstract class BaseTransport implements Transport { /** * @inheritDoc */ - public async sendEvent(_: string): Promise { + public async sendEvent(_: Event): Promise { throw new SentryError('Transport Class has to implement `sendEvent` method.'); } diff --git a/packages/node/src/transports/http.ts b/packages/node/src/transports/http.ts index dfd818b67750..f31a9fc09d79 100644 --- a/packages/node/src/transports/http.ts +++ b/packages/node/src/transports/http.ts @@ -1,4 +1,4 @@ -import { Response, TransportOptions } from '@sentry/types'; +import { Event, Response, TransportOptions } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import * as http from 'http'; import * as HttpsProxyAgent from 'https-proxy-agent'; @@ -20,10 +20,10 @@ export class HTTPTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(event: Event): Promise { if (!this.module) { throw new SentryError('No module available in HTTPTransport'); } - return this.sendWithModule(this.module, body); + return this.sendWithModule(this.module, event); } } diff --git a/packages/node/src/transports/https.ts b/packages/node/src/transports/https.ts index 41da385c0924..2b2726387d11 100644 --- a/packages/node/src/transports/https.ts +++ b/packages/node/src/transports/https.ts @@ -1,4 +1,4 @@ -import { Response, TransportOptions } from '@sentry/types'; +import { Event, Response, TransportOptions } from '@sentry/types'; import { SentryError } from '@sentry/utils/error'; import * as https from 'https'; import * as HttpsProxyAgent from 'https-proxy-agent'; @@ -20,10 +20,10 @@ export class HTTPSTransport extends BaseTransport { /** * @inheritDoc */ - public async sendEvent(body: string): Promise { + public async sendEvent(event: Event): Promise { if (!this.module) { throw new SentryError('No module available in HTTPSTransport'); } - return this.sendWithModule(this.module, body); + return this.sendWithModule(this.module, event); } } diff --git a/packages/node/test/integrations/linkederrors.test.ts b/packages/node/test/integrations/linkederrors.test.ts index 97c1c28db899..9a391fc918b8 100644 --- a/packages/node/test/integrations/linkederrors.test.ts +++ b/packages/node/test/integrations/linkederrors.test.ts @@ -1,13 +1,10 @@ +import { ExtendedError } from '@sentry/types'; import { Event } from '../../src'; import { NodeBackend } from '../../src/backend'; import { LinkedErrors } from '../../src/integrations/linkederrors'; let linkedErrors: LinkedErrors; -interface ExtendedError extends Error { - [key: string]: any; -} - describe('LinkedErrors', () => { beforeEach(() => { linkedErrors = new LinkedErrors(); diff --git a/packages/node/test/transports/http.test.ts b/packages/node/test/transports/http.test.ts index be99f0117d69..fa6810fe28ec 100644 --- a/packages/node/test/transports/http.test.ts +++ b/packages/node/test/transports/http.test.ts @@ -44,11 +44,9 @@ describe('HTTPTransport', () => { test('send 200', async () => { const transport = createTransport({ dsn }); - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -60,11 +58,9 @@ describe('HTTPTransport', () => { const transport = createTransport({ dsn }); try { - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); } catch (e) { const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -80,11 +76,9 @@ describe('HTTPTransport', () => { const transport = createTransport({ dsn }); try { - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); } catch (e) { const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -100,11 +94,9 @@ describe('HTTPTransport', () => { a: 'b', }, }); - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -117,11 +109,9 @@ describe('HTTPTransport', () => { dsn, httpProxy: 'http://example.com:8080', }); - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); diff --git a/packages/node/test/transports/https.test.ts b/packages/node/test/transports/https.test.ts index 18d759a926ab..61ce02f95be9 100644 --- a/packages/node/test/transports/https.test.ts +++ b/packages/node/test/transports/https.test.ts @@ -50,11 +50,9 @@ describe('HTTPSTransport', () => { test('send 200', async () => { const transport = createTransport({ dsn }); - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -66,11 +64,9 @@ describe('HTTPSTransport', () => { const transport = createTransport({ dsn }); try { - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); } catch (e) { const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -86,11 +82,9 @@ describe('HTTPSTransport', () => { const transport = createTransport({ dsn }); try { - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); } catch (e) { const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -106,11 +100,9 @@ describe('HTTPSTransport', () => { a: 'b', }, }); - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -123,11 +115,9 @@ describe('HTTPSTransport', () => { dsn, httpsProxy: 'https://example.com:8080', }); - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); @@ -144,11 +134,9 @@ describe('HTTPSTransport', () => { caCerts: './some/path.pem', dsn, }); - await transport.sendEvent( - JSON.stringify({ - message: 'test', - }), - ); + await transport.sendEvent({ + message: 'test', + }); const requestOptions = (transport.module!.request as jest.Mock).mock.calls[0][0]; assertBasicOptions(requestOptions); expect(requestOptions.ca).toEqual('mockedCert'); diff --git a/packages/types/src/error.ts b/packages/types/src/error.ts new file mode 100644 index 000000000000..d94becdbaf1f --- /dev/null +++ b/packages/types/src/error.ts @@ -0,0 +1,6 @@ +/** + * Just an Error object with arbitrary attributes attached to it. + */ +export interface ExtendedError extends Error { + [key: string]: any; +} diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 99d49400fa0e..f1273ce3aa61 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -1,6 +1,7 @@ export { Breadcrumb, BreadcrumbHint } from './breadcrumb'; export { Client } from './client'; export { Dsn, DsnComponents, DsnLike, DsnProtocol } from './dsn'; +export { ExtendedError } from './error'; export { Event, EventHint } from './event'; export { EventProcessor } from './eventprocessor'; export { Exception } from './exception'; diff --git a/packages/types/src/transport.ts b/packages/types/src/transport.ts index 2b45da45d419..8595cd11cddf 100644 --- a/packages/types/src/transport.ts +++ b/packages/types/src/transport.ts @@ -1,4 +1,5 @@ import { DsnLike } from './dsn'; +import { Event } from './event'; import { Response } from './response'; /** Transport used sending data to Sentry */ @@ -8,7 +9,7 @@ export interface Transport { * * @param body String body that should be sent to Sentry. */ - sendEvent(body: string): Promise; + sendEvent(event: Event): Promise; /** * Call this function to wait until all pending requests have been sent. diff --git a/packages/utils/src/is.ts b/packages/utils/src/is.ts index 61682f393de1..b0de578e4532 100644 --- a/packages/utils/src/is.ts +++ b/packages/utils/src/is.ts @@ -51,28 +51,6 @@ export function isDOMException(wat: any): boolean { return Object.prototype.toString.call(wat) === '[object DOMException]'; } -/** - * Checks whether given value's type is an undefined - * {@link isUndefined}. - * - * @param wat A value to be checked. - * @returns A boolean representing the result. - */ -export function isUndefined(wat: any): boolean { - return wat === void 0; -} - -/** - * Checks whether given value's type is a function - * {@link isFunction}. - * - * @param wat A value to be checked. - * @returns A boolean representing the result. - */ -export function isFunction(wat: any): boolean { - return typeof wat === 'function'; -} - /** * Checks whether given value's type is a string * {@link isString}. @@ -95,17 +73,6 @@ export function isPrimitive(wat: any): boolean { return wat === null || (typeof wat !== 'object' && typeof wat !== 'function'); } -/** - * Checks whether given value's type is an array - * {@link isArray}. - * - * @param wat A value to be checked. - * @returns A boolean representing the result. - */ -export function isArray(wat: any): boolean { - return Object.prototype.toString.call(wat) === '[object Array]'; -} - /** * Checks whether given value's type is an object literal * {@link isPlainObject}. @@ -129,14 +96,13 @@ export function isRegExp(wat: any): boolean { } /** - * Checks whether given value's type is a NaN - * {@link isNaN}. - * + * Checks whether given value has a then function. * @param wat A value to be checked. - * @returns A boolean representing the result. */ -export function isNaN(wat: any): boolean { - return wat !== wat; +export function isThenable(wat: any): boolean { + // tslint:disable:no-unsafe-any + return Boolean(wat && wat.then && typeof wat.then === 'function'); + // tslint:enable:no-unsafe-any } /** @@ -150,12 +116,3 @@ export function isSyntheticEvent(wat: any): boolean { // tslint:disable-next-line:no-unsafe-any return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat; } - -/** - * Checks whether given value has a then function. - * @param wat A value to be checked. - */ -export function isThenable(wat: any): boolean { - // tslint:disable-next-line:no-unsafe-any - return Boolean(wat && wat.then && isFunction(wat.then)); -} diff --git a/packages/utils/src/object.ts b/packages/utils/src/object.ts index b8a5e836d446..531b90c6766f 100644 --- a/packages/utils/src/object.ts +++ b/packages/utils/src/object.ts @@ -1,51 +1,6 @@ -import { WrappedFunction } from '@sentry/types'; -import { isArray, isNaN, isPlainObject, isPrimitive, isSyntheticEvent, isUndefined } from './is'; +import { ExtendedError, WrappedFunction } from '@sentry/types'; +import { isError, isPlainObject, isPrimitive, isSyntheticEvent } from './is'; import { Memo } from './memo'; -import { truncate } from './string'; - -/** - * Just an Error object with arbitrary attributes attached to it. - */ -interface ExtendedError extends Error { - [key: string]: any; -} - -/** - * Serializes the given object into a string. - * Like JSON.stringify, but doesn't throw on circular references. - * - * @param object A JSON-serializable object. - * @returns A string containing the serialized object. - */ -export function serialize(object: T): string { - return JSON.stringify(object, serializer({ normalize: false })); -} - -/** - * Deserializes an object from a string previously serialized with - * {@link serialize}. - * - * @param str A serialized object. - * @returns The deserialized object. - */ -export function deserialize(str: string): T { - return JSON.parse(str) as T; -} - -/** - * Creates a deep copy of the given object. - * - * The object must be serializable, i.e.: - * - It must not contain any cycles - * - Only primitive types are allowed (object, array, number, string, boolean) - * - Its depth should be considerably low for performance reasons - * - * @param object A JSON-serializable object. - * @returns The object clone. - */ -export function clone(object: T): T { - return deserialize(serialize(object)); -} /** * Wrap a given object method with a higher-order function @@ -102,134 +57,6 @@ export function urlEncode(object: { [key: string]: any }): string { .join('&'); } -// Default Node.js REPL depth -const MAX_SERIALIZE_EXCEPTION_DEPTH = 3; -// 100kB, as 200kB is max payload size, so half sounds reasonable -const MAX_SERIALIZE_EXCEPTION_SIZE = 100 * 1024; -const MAX_SERIALIZE_KEYS_LENGTH = 40; - -/** JSDoc */ -function utf8Length(value: string): number { - // tslint:disable-next-line:no-bitwise - return ~-encodeURI(value).split(/%..|./).length; -} - -/** JSDoc */ -function jsonSize(value: any): number { - return utf8Length(JSON.stringify(value)); -} - -/** JSDoc */ -function serializeValue(value: T): T | string { - const type = Object.prototype.toString.call(value); - - if (typeof value === 'string') { - return truncate(value, 40); - } else if (type === '[object Object]') { - // Node.js REPL notation - return '[Object]'; - } else if (type === '[object Array]') { - // Node.js REPL notation - return '[Array]'; - } else { - return normalizeValue(value) as T; - } -} - -/** JSDoc */ -export function serializeObject(value: T, depth: number): T | string | {} { - if (depth === 0) { - return serializeValue(value); - } - - if (isPlainObject(value)) { - const serialized: { [key: string]: any } = {}; - const val = value as { - [key: string]: any; - }; - - Object.keys(val).forEach((key: string) => { - serialized[key] = serializeObject(val[key], depth - 1); - }); - - return serialized; - } else if (isArray(value)) { - const val = (value as any) as T[]; - return val.map(v => serializeObject(v, depth - 1)); - } - - return serializeValue(value); -} - -/** JSDoc */ -export function limitObjectDepthToSize( - object: { [key: string]: any }, - depth: number = MAX_SERIALIZE_EXCEPTION_DEPTH, - maxSize: number = MAX_SERIALIZE_EXCEPTION_SIZE, -): T { - const serialized = serializeObject(object, depth); - - if (jsonSize(serialize(serialized)) > maxSize) { - return limitObjectDepthToSize(object, depth - 1); - } - - return serialized as T; -} - -/** JSDoc */ -export function serializeKeysToEventMessage(keys: string[], maxLength: number = MAX_SERIALIZE_KEYS_LENGTH): string { - if (!keys.length) { - return '[object has no keys]'; - } - - if (keys[0].length >= maxLength) { - return truncate(keys[0], maxLength); - } - - for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) { - const serialized = keys.slice(0, includedKeys).join(', '); - if (serialized.length > maxLength) { - continue; - } - if (includedKeys === keys.length) { - return serialized; - } - return truncate(serialized, maxLength); - } - - return ''; -} - -// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill -/** JSDoc */ -export function assign(target: any, ...args: any[]): object { - if (target === null || target === undefined) { - throw new TypeError('Cannot convert undefined or null to object'); - } - - const to = Object(target) as { - [key: string]: any; - }; - - // tslint:disable-next-line:prefer-for-of - for (let i = 0; i < args.length; i++) { - const source = args[i]; - if (source !== null) { - for (const nextKey in source as { - [key: string]: any; - }) { - if (Object.prototype.hasOwnProperty.call(source, nextKey)) { - to[nextKey] = (source as { - [key: string]: any; - })[nextKey]; - } - } - } - } - - return to; -} - /** * Transforms Error object into an object literal with all it's attributes * attached to it. @@ -261,6 +88,50 @@ function objectifyError(error: ExtendedError): object { return err; } +/** Calculates bytes size of input string */ +function utf8Length(value: string): number { + // tslint:disable-next-line:no-bitwise + return ~-encodeURI(value).split(/%..|./).length; +} + +/** Calculates bytes size of input object */ +function jsonSize(value: any): number { + return utf8Length(JSON.stringify(value)); +} + +/** JSDoc */ +export function normalizeToSize( + object: { [key: string]: any }, + // Default Node.js REPL depth + depth: number = 3, + // 100kB, as 200kB is max payload size, so half sounds reasonable + maxSize: number = 100 * 1024, +): T { + const serialized = normalize(object, depth); + + if (jsonSize(serialized) > maxSize) { + return normalizeToSize(object, depth - 1, maxSize); + } + + return serialized as T; +} + +/** Transforms any input value into a string form, either primitive value or a type of the input */ +function stringifyValue(value: T): T | string { + // Node.js REPL notation + const type = Object.prototype.toString.call(value) as string; + + if (isPrimitive(value)) { + return value; + } else if (type === '[object Object]') { + return '[Object]'; + } else if (type === '[object Array]') { + return '[Array]'; + } else { + return type; + } +} + /** * normalizeValue() * @@ -271,12 +142,9 @@ function objectifyError(error: ExtendedError): object { * - filter global objects */ function normalizeValue(value: any, key?: any): any { - if (key === 'domain' && typeof value === 'object' && (value as { _events: any })._events) { - return '[Domain]'; - } - - if (key === 'domainEmitter') { - return '[DomainEmitter]'; + if (isError(value)) { + // tslint:disable-next-line:no-unsafe-any + return objectifyError(value); } if (typeof (global as any) !== 'undefined' && value === global) { @@ -291,13 +159,12 @@ function normalizeValue(value: any, key?: any): any { return '[Document]'; } - if (value instanceof Error) { - return objectifyError(value); + if (key === 'domain' && typeof value === 'object' && (value as { _events: any })._events) { + return '[Domain]'; } - // tslint:disable-next-line:strict-type-predicates - if (typeof Event !== 'undefined' && value instanceof Event) { - return Object.getPrototypeOf(value) ? value.constructor.name : 'Event'; + if (key === 'domainEmitter') { + return '[DomainEmitter]'; } // React's SyntheticEvent thingy @@ -305,11 +172,16 @@ function normalizeValue(value: any, key?: any): any { return '[SyntheticEvent]'; } - if (isNaN(value)) { + // tslint:disable-next-line:strict-type-predicates + if (typeof Event !== 'undefined' && value instanceof Event) { + return Object.getPrototypeOf(value) ? value.constructor.name : 'Event'; + } + + if (Number.isNaN(value as number)) { return '[NaN]'; } - if (isUndefined(value)) { + if (value === void 0) { return '[undefined]'; } @@ -321,60 +193,68 @@ function normalizeValue(value: any, key?: any): any { } /** - * Decycles an object to make it safe for json serialization. + * Walks an object to perform a normalization on it * - * @param obj Object to be decycled + * @param key of object that's walked in current iteration + * @param value object to be walked + * @param depth Optional number indicating how deep should walking be performed * @param memo Optional Memo class handling decycling */ -export function decycle(obj: any, memo: Memo = new Memo()): any { - // tslint:disable-next-line:no-unsafe-any - const copy = isArray(obj) ? obj.slice() : isPlainObject(obj) ? assign({}, obj) : obj; - const normalized = normalizeValue(obj); +export function walk(key: string, value: any, depth: number, memo: Memo = new Memo()): any { + // tslint:disable:no-unsafe-any + + // If we reach the maximum depth, stringify whatever left out of it + if (depth === 0) { + return stringifyValue(value); + } - // If an object was normalized to its string form, we should just bail out as theres no point in going down that branch - if (typeof normalized === 'string') { + // If value implements `toJSON` method, call it and return early + if (value !== null && value !== undefined && typeof value.toJSON === 'function') { + return value.toJSON(); + } + + const normalized = normalizeValue(value, key); + // If its a primitive, there are no branches left to walk, so we can just bail out as theres no point in going down that branch any further + if (isPrimitive(normalized)) { return normalized; } - if (!isPrimitive(obj)) { - if (memo.memoize(obj)) { - return '[Circular ~]'; - } - // tslint:disable-next-line - for (const key in obj) { - // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration. - if (!Object.prototype.hasOwnProperty.call(obj, key)) { - continue; - } - // tslint:disable-next-line - copy[key] = decycle(obj[key], memo); + // Make a copy of the value to prevent any mutations + const copy = Array.isArray(normalized) ? [...normalized] : isPlainObject(normalized) ? { ...normalized } : normalized; + + // If we already walked that branch, bail out + if (memo.memoize(value)) { + return '[Circular ~]'; + } + + for (const innerKey in normalized) { + // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration. + if (!Object.prototype.hasOwnProperty.call(normalized, innerKey)) { + continue; } - memo.unmemoize(obj); + copy[innerKey] = walk(innerKey, normalized[innerKey], depth - 1, memo); } - return copy; -} + memo.unmemoize(value); -/** - * serializer() - * - * Remove circular references, - * translates undefined/NaN values to "[undefined]"/"[NaN]" respectively, - * and takes care of Error objects serialization - */ -function serializer(options: { normalize: boolean } = { normalize: true }): (key: string, value: any) => any { - // tslint:disable-next-line - return (key: string, value: object) => (options.normalize ? normalizeValue(decycle(value), key) : decycle(value)); + return copy; } /** - * safeNormalize() + * normalize() * - * Creates a copy of the input by applying serializer function on it and parsing it back to unify the data + * - Creates a copy to prevent original input mutation + * - Skip non-enumerablers + * - Calls `toJSON` if implemented + * - Removes circular references + * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format + * - Translates known global objects/Classes to a string representations + * - Takes care of Error objects serialization + * - Optionally limit depth of final output */ -export function safeNormalize(input: any): any { +export function normalize(input: any, depth: number = +Infinity): any { try { - return JSON.parse(JSON.stringify(input, serializer({ normalize: true }))); + return JSON.parse(JSON.stringify(input, (key: string, value: any) => walk(key, value, depth))); } catch (_oO) { return '**non-serializable**'; } diff --git a/packages/utils/src/string.ts b/packages/utils/src/string.ts index 03a9e68ee8a8..68ece1afb80b 100644 --- a/packages/utils/src/string.ts +++ b/packages/utils/src/string.ts @@ -1,5 +1,3 @@ -import { isString } from './is'; - /** * Truncates given string to the maximum characters count * @@ -8,7 +6,7 @@ import { isString } from './is'; * @returns string Encoded */ export function truncate(str: string, max: number = 0): string { - if (max === 0 || !isString(str)) { + if (max === 0) { return str; } return str.length <= max ? str : `${str.substr(0, max)}...`; @@ -82,17 +80,26 @@ export function safeJoin(input: any[], delimiter?: string): string { return output.join(delimiter); } -/** - * Checks if given value is included in the target - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill - * @param target source string - * @param search string to be looked for - * @returns An answer - */ -export function includes(target: string, search: string): boolean { - if (search.length > target.length) { - return false; - } else { - return target.indexOf(search) !== -1; +/** Merges provided array of keys into */ +export function keysToEventMessage(keys: string[], maxLength: number = 40): string { + if (!keys.length) { + return '[object has no keys]'; + } + + if (keys[0].length >= maxLength) { + return truncate(keys[0], maxLength); } + + for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) { + const serialized = keys.slice(0, includedKeys).join(', '); + if (serialized.length > maxLength) { + continue; + } + if (includedKeys === keys.length) { + return serialized; + } + return truncate(serialized, maxLength); + } + + return ''; } diff --git a/packages/utils/test/object.test.ts b/packages/utils/test/object.test.ts index fa0128763fae..983cad8f2875 100644 --- a/packages/utils/test/object.test.ts +++ b/packages/utils/test/object.test.ts @@ -1,293 +1,4 @@ -import { - clone, - decycle, - deserialize, - fill, - safeNormalize, - serialize, - serializeKeysToEventMessage, - urlEncode, -} from '../src/object'; - -const MATRIX = [ - { name: 'boolean', object: true, serialized: 'true' }, - { name: 'number', object: 42, serialized: '42' }, - { name: 'string', object: 'test', serialized: '"test"' }, - { name: 'array', object: [1, 'test'], serialized: '[1,"test"]' }, - { name: 'object', object: { a: 'test' }, serialized: '{"a":"test"}' }, -]; - -describe('clone()', () => { - for (const entry of MATRIX) { - test(`clones a ${entry.name}`, () => { - expect(clone(entry.object)).toEqual(entry.object); - }); - } -}); - -describe('decycle()', () => { - test('decycles circular objects', () => { - const circular = { - foo: 1, - }; - circular.bar = circular; - - const decycled = decycle(circular); - - expect(decycled).toEqual({ - foo: 1, - bar: '[Circular ~]', - }); - }); - - test('decycles complex circular objects', () => { - const circular = { - foo: 1, - }; - circular.bar = [ - { - baz: circular, - }, - circular, - ]; - circular.qux = circular.bar[0].baz; - - const decycled = decycle(circular); - - expect(decycled).toEqual({ - bar: [ - { - baz: '[Circular ~]', - }, - '[Circular ~]', - ], - foo: 1, - qux: '[Circular ~]', - }); - }); - - test('dont mutate original object', () => { - const circular = { - foo: 1, - }; - circular.bar = circular; - - const decycled = decycle(circular); - - expect(decycled).toEqual({ - foo: 1, - bar: '[Circular ~]', - }); - - expect(circular.bar).toBe(circular); - expect(decycled).not.toBe(circular); - }); - - test('dont mutate original complex object', () => { - const circular = { - foo: 1, - }; - circular.bar = [ - { - baz: circular, - }, - circular, - ]; - circular.qux = circular.bar[0].baz; - - const decycled = decycle(circular); - - expect(decycled).toEqual({ - bar: [ - { - baz: '[Circular ~]', - }, - '[Circular ~]', - ], - foo: 1, - qux: '[Circular ~]', - }); - - expect(circular.bar[0].baz).toBe(circular); - expect(circular.bar[1]).toBe(circular); - expect(circular.qux).toBe(circular.bar[0].baz); - expect(decycled).not.toBe(circular); - }); - - test('skip non-enumerable properties', () => { - const circular = { - foo: 1, - }; - circular.bar = circular; - Object.defineProperty(circular, 'baz', { - enumerable: true, - value: circular, - }); - Object.defineProperty(circular, 'qux', { - enumerable: false, - value: circular, - }); - - const decycled = decycle(circular); - - expect(decycled).toEqual({ - bar: '[Circular ~]', - baz: '[Circular ~]', - foo: 1, - }); - }); -}); - -describe('serialize()', () => { - for (const entry of MATRIX) { - test(`serializes a ${entry.name}`, () => { - expect(serialize(entry.object)).toEqual(entry.serialized); - }); - } - - describe('cyclical structures', () => { - test('circular objects', () => { - const obj = { name: 'Alice' }; - // @ts-ignore - obj.self = obj; - expect(serialize(obj)).toEqual(JSON.stringify({ name: 'Alice', self: '[Circular ~]' })); - }); - - test('circular objects with intermediaries', () => { - const obj = { name: 'Alice' }; - // @ts-ignore - obj.identity = { self: obj }; - expect(serialize(obj)).toEqual(JSON.stringify({ name: 'Alice', identity: { self: '[Circular ~]' } })); - }); - - test('circular objects deeper', () => { - const obj = { name: 'Alice', child: { name: 'Bob' } }; - // @ts-ignore - obj.child.self = obj.child; - expect(serialize(obj)).toEqual( - JSON.stringify({ - name: 'Alice', - child: { name: 'Bob', self: '[Circular ~]' }, - }), - ); - }); - - test('circular objects deeper with intermediaries', () => { - const obj = { name: 'Alice', child: { name: 'Bob' } }; - // @ts-ignore - obj.child.identity = { self: obj.child }; - expect(serialize(obj)).toEqual( - JSON.stringify({ - name: 'Alice', - child: { name: 'Bob', identity: { self: '[Circular ~]' } }, - }), - ); - }); - - test('circular objects in an array', () => { - const obj = { name: 'Alice' }; - // @ts-ignore - obj.self = [obj, obj]; - expect(serialize(obj)).toEqual( - JSON.stringify({ - name: 'Alice', - self: ['[Circular ~]', '[Circular ~]'], - }), - ); - }); - - test('circular objects deeper in an array', () => { - const obj = { - name: 'Alice', - children: [{ name: 'Bob' }, { name: 'Eve' }], - }; - // @ts-ignore - obj.children[0].self = obj.children[0]; - // @ts-ignore - obj.children[1].self = obj.children[1]; - expect(serialize(obj)).toEqual( - JSON.stringify({ - name: 'Alice', - children: [{ name: 'Bob', self: '[Circular ~]' }, { name: 'Eve', self: '[Circular ~]' }], - }), - ); - }); - - test('circular arrays', () => { - const obj: object[] = []; - obj.push(obj); - obj.push(obj); - expect(serialize(obj)).toEqual(JSON.stringify(['[Circular ~]', '[Circular ~]'])); - }); - - test('circular arrays with intermediaries', () => { - const obj: object[] = []; - obj.push({ name: 'Alice', self: obj }); - obj.push({ name: 'Bob', self: obj }); - expect(serialize(obj)).toEqual( - JSON.stringify([{ name: 'Alice', self: '[Circular ~]' }, { name: 'Bob', self: '[Circular ~]' }]), - ); - }); - - test('repeated objects in objects', () => { - const obj = {}; - const alice = { name: 'Alice' }; - // @ts-ignore - obj.alice1 = alice; - // @ts-ignore - obj.alice2 = alice; - expect(serialize(obj)).toEqual( - JSON.stringify({ - alice1: { name: 'Alice' }, - alice2: { name: 'Alice' }, - }), - ); - }); - - test('repeated objects in arrays', () => { - const alice = { name: 'Alice' }; - const obj = [alice, alice]; - expect(serialize(obj)).toEqual(JSON.stringify([{ name: 'Alice' }, { name: 'Alice' }])); - }); - }); -}); - -describe('deserialize()', () => { - for (const entry of MATRIX) { - test(`deserializes a ${entry.name}`, () => { - // tslint:disable:no-inferred-empty-object-type - expect(deserialize(entry.serialized)).toEqual(entry.object); - }); - } -}); - -describe('serializeKeysToEventMessage()', () => { - test('no keys', () => { - expect(serializeKeysToEventMessage([], 10)).toEqual('[object has no keys]'); - }); - - test('one key should be returned as a whole if not over the length limit', () => { - expect(serializeKeysToEventMessage(['foo'], 10)).toEqual('foo'); - expect(serializeKeysToEventMessage(['foobarbazx'], 10)).toEqual('foobarbazx'); - }); - - test('one key should be appended with ... and truncated when over the limit', () => { - expect(serializeKeysToEventMessage(['foobarbazqux'], 10)).toEqual('foobarbazq...'); - }); - - test('multiple keys should be joined as a whole if not over the length limit', () => { - expect(serializeKeysToEventMessage(['foo', 'bar'], 10)).toEqual('foo, bar'); - }); - - test('multiple keys should include only as much keys as can fit into the limit', () => { - expect(serializeKeysToEventMessage(['foo', 'bar', 'baz'], 10)).toEqual('foo, bar'); - expect(serializeKeysToEventMessage(['foo', 'verylongkey', 'baz'], 10)).toEqual('foo'); - }); - - test('multiple keys should truncate first key if its too long', () => { - expect(serializeKeysToEventMessage(['foobarbazqux', 'bar', 'baz'], 10)).toEqual('foobarbazq...'); - }); -}); +import { fill, normalize, urlEncode } from '../src/object'; describe('fill()', () => { test('wraps a method by calling a replacement function on it', () => { @@ -371,115 +82,98 @@ describe('urlEncode()', () => { }); }); -describe('safeNormalize()', () => { - test('return same value for simple input', () => { - expect(safeNormalize('foo')).toEqual('foo'); - expect(safeNormalize(42)).toEqual(42); - expect(safeNormalize(true)).toEqual(true); - expect(safeNormalize(null)).toEqual(null); - }); +describe('normalize()', () => { + describe('acts as a pass-through for simple-cases', () => { + test('return same value for simple input', () => { + expect(normalize('foo')).toEqual('foo'); + expect(normalize(42)).toEqual(42); + expect(normalize(true)).toEqual(true); + expect(normalize(null)).toEqual(null); + }); - test('return same object or arrays for referenced inputs', () => { - expect(safeNormalize({ foo: 'bar' })).toEqual({ foo: 'bar' }); - expect(safeNormalize([42])).toEqual([42]); + test('return same object or arrays for referenced inputs', () => { + expect(normalize({ foo: 'bar' })).toEqual({ foo: 'bar' }); + expect(normalize([42])).toEqual([42]); + }); }); - test('return [undefined] string for undefined values', () => { - expect(safeNormalize(undefined)).toEqual('[undefined]'); - }); + test('extracts extra properties from error objects', () => { + const obj = new Error('Wubba Lubba Dub Dub'); + // @ts-ignore + obj.reason = new TypeError("I'm pickle Riiick!"); + // @ts-ignore + obj.extra = 'some extra prop'; - test('return [NaN] string for NaN values', () => { - expect(safeNormalize(NaN)).toEqual('[NaN]'); - }); + // Stack is inconsistent across browsers, so override it and just make sure its stringified + obj.stack = 'x'; + // @ts-ignore + obj.reason.stack = 'x'; - test('iterates through array and object values to replace undefined/NaN values', () => { - expect(safeNormalize(['foo', 42, undefined, NaN])).toEqual(['foo', 42, '[undefined]', '[NaN]']); - expect( - safeNormalize({ - foo: 42, - bar: undefined, - baz: NaN, - }), - ).toEqual({ - foo: 42, - bar: '[undefined]', - baz: '[NaN]', - }); - }); + // IE 10/11 + // @ts-ignore + delete obj.description; + // @ts-ignore + delete obj.reason.description; - test('iterates through array and object values, but recursively', () => { - expect(safeNormalize(['foo', 42, [[undefined]], [NaN]])).toEqual(['foo', 42, [['[undefined]']], ['[NaN]']]); - expect( - safeNormalize({ - foo: 42, - bar: { - baz: { - quz: undefined, - }, - }, - wat: { - no: NaN, - }, - }), - ).toEqual({ - foo: 42, - bar: { - baz: { - quz: '[undefined]', - }, - }, - wat: { - no: '[NaN]', + expect(normalize(obj)).toEqual({ + message: 'Wubba Lubba Dub Dub', + name: 'Error', + stack: 'x', + reason: { + message: "I'm pickle Riiick!", + name: 'TypeError', + stack: 'x', }, + extra: 'some extra prop', }); }); - describe('cyclical structures', () => { - test('must normalize circular objects', () => { + describe('decycles cyclical structures', () => { + test('circular objects', () => { const obj = { name: 'Alice' }; // @ts-ignore obj.self = obj; - expect(safeNormalize(obj)).toEqual({ name: 'Alice', self: '[Circular ~]' }); + expect(normalize(obj)).toEqual({ name: 'Alice', self: '[Circular ~]' }); }); - test('must normalize circular objects with intermediaries', () => { + test('circular objects with intermediaries', () => { const obj = { name: 'Alice' }; // @ts-ignore obj.identity = { self: obj }; - expect(safeNormalize(obj)).toEqual({ name: 'Alice', identity: { self: '[Circular ~]' } }); + expect(normalize(obj)).toEqual({ name: 'Alice', identity: { self: '[Circular ~]' } }); }); - test('must normalize circular objects deeper', () => { + test('deep circular objects', () => { const obj = { name: 'Alice', child: { name: 'Bob' } }; // @ts-ignore obj.child.self = obj.child; - expect(safeNormalize(obj)).toEqual({ + expect(normalize(obj)).toEqual({ name: 'Alice', child: { name: 'Bob', self: '[Circular ~]' }, }); }); - test('must normalize circular objects deeper with intermediaries', () => { + test('deep circular objects with intermediaries', () => { const obj = { name: 'Alice', child: { name: 'Bob' } }; // @ts-ignore obj.child.identity = { self: obj.child }; - expect(safeNormalize(obj)).toEqual({ + expect(normalize(obj)).toEqual({ name: 'Alice', child: { name: 'Bob', identity: { self: '[Circular ~]' } }, }); }); - test('must normalize circular objects in an array', () => { + test('circular objects in an array', () => { const obj = { name: 'Alice' }; // @ts-ignore obj.self = [obj, obj]; - expect(safeNormalize(obj)).toEqual({ + expect(normalize(obj)).toEqual({ name: 'Alice', self: ['[Circular ~]', '[Circular ~]'], }); }); - test('must normalize circular objects deeper in an array', () => { + test('deep circular objects in an array', () => { const obj = { name: 'Alice', children: [{ name: 'Bob' }, { name: 'Eve' }], @@ -488,54 +182,49 @@ describe('safeNormalize()', () => { obj.children[0].self = obj.children[0]; // @ts-ignore obj.children[1].self = obj.children[1]; - expect(safeNormalize(obj)).toEqual({ + expect(normalize(obj)).toEqual({ name: 'Alice', children: [{ name: 'Bob', self: '[Circular ~]' }, { name: 'Eve', self: '[Circular ~]' }], }); }); - test('must normalize circular arrays', () => { + test('circular arrays', () => { const obj: object[] = []; obj.push(obj); obj.push(obj); - expect(safeNormalize(obj)).toEqual(['[Circular ~]', '[Circular ~]']); + expect(normalize(obj)).toEqual(['[Circular ~]', '[Circular ~]']); }); - test('must normalize circular arrays with intermediaries', () => { + test('circular arrays with intermediaries', () => { const obj: object[] = []; obj.push({ name: 'Alice', self: obj }); obj.push({ name: 'Bob', self: obj }); - expect(safeNormalize(obj)).toEqual([ - { name: 'Alice', self: '[Circular ~]' }, - { name: 'Bob', self: '[Circular ~]' }, - ]); + expect(normalize(obj)).toEqual([{ name: 'Alice', self: '[Circular ~]' }, { name: 'Bob', self: '[Circular ~]' }]); }); - test('must normalize repeated objects in objects', () => { + test('repeated objects in objects', () => { const obj = {}; const alice = { name: 'Alice' }; // @ts-ignore obj.alice1 = alice; // @ts-ignore obj.alice2 = alice; - expect(safeNormalize(obj)).toEqual({ + expect(normalize(obj)).toEqual({ alice1: { name: 'Alice' }, alice2: { name: 'Alice' }, }); }); - test('must normalize repeated objects in arrays', () => { + test('repeated objects in arrays', () => { const alice = { name: 'Alice' }; const obj = [alice, alice]; - expect(safeNormalize(obj)).toEqual([{ name: 'Alice' }, { name: 'Alice' }]); + expect(normalize(obj)).toEqual([{ name: 'Alice' }, { name: 'Alice' }]); }); - test('must normalize error objects, including extra properties', () => { + test('error objects with circular references', () => { const obj = new Error('Wubba Lubba Dub Dub'); // @ts-ignore - obj.reason = new TypeError("I'm pickle Riiick!"); - // @ts-ignore - obj.extra = 'some extra prop'; + obj.reason = obj; // Stack is inconsistent across browsers, so override it and just make sure its stringified obj.stack = 'x'; @@ -545,46 +234,252 @@ describe('safeNormalize()', () => { // IE 10/11 // @ts-ignore delete obj.description; - // @ts-ignore - delete obj.reason.description; - const result = safeNormalize(obj); - - expect(result).toEqual({ + expect(normalize(obj)).toEqual({ message: 'Wubba Lubba Dub Dub', name: 'Error', stack: 'x', - reason: { - message: "I'm pickle Riiick!", - name: 'TypeError', - stack: 'x', + reason: '[Circular ~]', + }); + }); + }); + + describe('dont mutate and skip non-enumerables', () => { + test('simple object', () => { + const circular = { + foo: 1, + }; + circular.bar = circular; + + const normalized = normalize(circular); + expect(normalized).toEqual({ + foo: 1, + bar: '[Circular ~]', + }); + + expect(circular.bar).toBe(circular); + expect(normalized).not.toBe(circular); + }); + + test('complex object', () => { + const circular = { + foo: 1, + }; + circular.bar = [ + { + baz: circular, + }, + circular, + ]; + circular.qux = circular.bar[0].baz; + + const normalized = normalize(circular); + expect(normalized).toEqual({ + bar: [ + { + baz: '[Circular ~]', + }, + '[Circular ~]', + ], + foo: 1, + qux: '[Circular ~]', + }); + + expect(circular.bar[0].baz).toBe(circular); + expect(circular.bar[1]).toBe(circular); + expect(circular.qux).toBe(circular.bar[0].baz); + expect(normalized).not.toBe(circular); + }); + + test('object with non-enumerable properties', () => { + const circular = { + foo: 1, + }; + circular.bar = circular; + circular.baz = { + one: 1337, + }; + Object.defineProperty(circular, 'qux', { + enumerable: true, + value: circular, + }); + Object.defineProperty(circular, 'quaz', { + enumerable: false, + value: circular, + }); + Object.defineProperty(circular.baz, 'two', { + enumerable: false, + value: circular, + }); + + expect(normalize(circular)).toEqual({ + bar: '[Circular ~]', + baz: { + one: 1337, }, - extra: 'some extra prop', + foo: 1, + qux: '[Circular ~]', }); }); }); - test('must normalize error objects with circular references', () => { - const obj = new Error('Wubba Lubba Dub Dub'); - // @ts-ignore - obj.reason = obj; + describe('calls toJSON if implemented', () => { + test('primitive values', () => { + // tslint:disable:no-construct + const a = new Number(1); + a.toJSON = () => 10; + const b = new String('2'); + b.toJSON = () => '20'; + expect(normalize(a)).toEqual(10); + expect(normalize(b)).toEqual('20'); + }); + + test('objects, arrays and classes', () => { + const a = Object.create({}); + a.toJSON = () => 1; + function B(): void { + /*no-empty*/ + } + B.prototype.toJSON = () => 2; + const c = []; + c.toJSON = () => 3; + expect(normalize([{ a }, { b: new B() }, c])).toEqual([{ a: 1 }, { b: 2 }, 3]); + }); + }); - // Stack is inconsistent across browsers, so override it and just make sure its stringified - obj.stack = 'x'; - // @ts-ignore - obj.reason.stack = 'x'; + describe('changes unserializeable/global values/classes to its string representation', () => { + test('primitive values', () => { + expect(normalize(undefined)).toEqual('[undefined]'); + expect(normalize(NaN)).toEqual('[NaN]'); + }); - // IE 10/11 - // @ts-ignore - delete obj.description; + test('functions', () => { + expect( + normalize(() => { + /* no-empty */ + }), + ).toEqual('[Function: ]'); + const foo = () => { + /* no-empty */ + }; + expect(normalize(foo)).toEqual('[Function: foo]'); + }); - const result = safeNormalize(obj); + test('primitive values in objects/arrays', () => { + expect(normalize(['foo', 42, undefined, NaN])).toEqual(['foo', 42, '[undefined]', '[NaN]']); + expect( + normalize({ + foo: 42, + bar: undefined, + baz: NaN, + }), + ).toEqual({ + foo: 42, + bar: '[undefined]', + baz: '[NaN]', + }); + }); - expect(result).toEqual({ - message: 'Wubba Lubba Dub Dub', - name: 'Error', - stack: 'x', - reason: '[Circular ~]', + test('primitive values in deep objects/arrays', () => { + expect(normalize(['foo', 42, [[undefined]], [NaN]])).toEqual(['foo', 42, [['[undefined]']], ['[NaN]']]); + expect( + normalize({ + foo: 42, + bar: { + baz: { + quz: undefined, + }, + }, + wat: { + no: NaN, + }, + }), + ).toEqual({ + foo: 42, + bar: { + baz: { + quz: '[undefined]', + }, + }, + wat: { + no: '[NaN]', + }, + }); + }); + + test('known Classes like Reacts SyntheticEvents', () => { + const obj = { + foo: { + nativeEvent: 'wat', + preventDefault: 'wat', + stopPropagation: 'wat', + }, + }; + expect(normalize(obj)).toEqual({ + foo: '[SyntheticEvent]', + }); + }); + }); + + describe('can limit object to depth', () => { + test('single level', () => { + const obj = { + foo: [], + }; + + expect(normalize(obj, 1)).toEqual({ + foo: '[Array]', + }); + }); + + test('two levels', () => { + const obj = { + foo: [1, 2, []], + }; + + expect(normalize(obj, 2)).toEqual({ + foo: [1, 2, '[Array]'], + }); + }); + + test('multiple levels with various inputs', () => { + const obj = { + foo: { + bar: { + baz: 1, + qux: [ + { + rick: 'morty', + }, + ], + }, + }, + bar: 1, + baz: [ + { + something: 'else', + fn: () => { + /*no-empty*/ + }, + }, + ], + }; + + expect(normalize(obj, 3)).toEqual({ + bar: 1, + baz: [ + { + something: 'else', + fn: '[object Function]', + }, + ], + foo: { + bar: { + baz: 1, + qux: '[Array]', + }, + }, + }); }); }); diff --git a/packages/utils/test/string.test.ts b/packages/utils/test/string.test.ts index c8d531149088..e1166ca2dd3c 100644 --- a/packages/utils/test/string.test.ts +++ b/packages/utils/test/string.test.ts @@ -1,4 +1,4 @@ -import { truncate } from '../src/string'; +import { keysToEventMessage, truncate } from '../src/string'; describe('truncate()', () => { test('it works as expected', () => { @@ -8,19 +8,32 @@ describe('truncate()', () => { expect(truncate(new Array(1000).join('f'), 0)).toEqual(new Array(1000).join('f')); expect(truncate(new Array(1000).join('f'), 0)).toEqual(new Array(1000).join('f')); }); +}); + +describe('keysToEventMessage()', () => { + test('no keys', () => { + expect(keysToEventMessage([], 10)).toEqual('[object has no keys]'); + }); + + test('one key should be returned as a whole if not over the length limit', () => { + expect(keysToEventMessage(['foo'], 10)).toEqual('foo'); + expect(keysToEventMessage(['foobarbazx'], 10)).toEqual('foobarbazx'); + }); + + test('one key should be appended with ... and truncated when over the limit', () => { + expect(keysToEventMessage(['foobarbazqux'], 10)).toEqual('foobarbazq...'); + }); + + test('multiple keys should be joined as a whole if not over the length limit', () => { + expect(keysToEventMessage(['foo', 'bar'], 10)).toEqual('foo, bar'); + }); + + test('multiple keys should include only as much keys as can fit into the limit', () => { + expect(keysToEventMessage(['foo', 'bar', 'baz'], 10)).toEqual('foo, bar'); + expect(keysToEventMessage(['foo', 'verylongkey', 'baz'], 10)).toEqual('foo'); + }); - test('it instantly returns input when non-string is passed', () => { - // @ts-ignore - expect(truncate(2)).toEqual(2); - // @ts-ignore - expect(truncate(undefined, 123)).toEqual(undefined); - // @ts-ignore - expect(truncate(null)).toEqual(null); - const obj = {}; - // @ts-ignore - expect(truncate(obj, '42')).toEqual(obj); - const arr: any[] = []; - // @ts-ignore - expect(truncate(arr)).toEqual(arr); + test('multiple keys should truncate first key if its too long', () => { + expect(keysToEventMessage(['foobarbazqux', 'bar', 'baz'], 10)).toEqual('foobarbazq...'); }); }); From 76fb448fe734a2b0bf520e68435cff2e94ac390d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Tue, 19 Feb 2019 15:25:45 +0100 Subject: [PATCH 9/9] feat: Disable client once flushed (#1904) --- CHANGELOG.md | 1 + packages/core/src/baseclient.ts | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0655eb29210..01d9d6d5f48e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ since we removed some methods from the public API and removed some classes from - **breaking** [core] ref: Use `SyncPromise` internally, this reduces memory pressure by a lot. - **breaking** [browser] ref: Removed `BrowserBackend` from default export. - **breaking** [node] ref: Removed `BrowserBackend` from default export. +- **breaking** [core] feat: Disable client once flushed using `close` method - ref: Move internal `ExtendedError` to a types package - **breaking** [core] ref: Pass `Event` to `sendEvent` instead of already stringified data - [utils] feat: Introduce `isSyntheticEvent` util diff --git a/packages/core/src/baseclient.ts b/packages/core/src/baseclient.ts index e7d0deb27eee..87da0ef8751d 100644 --- a/packages/core/src/baseclient.ts +++ b/packages/core/src/baseclient.ts @@ -333,7 +333,9 @@ export abstract class BaseClient implement * @inheritDoc */ public async close(timeout?: number): Promise { - return this.flush(timeout); + return this.flush(timeout).finally(() => { + this.getOptions().enabled = false; + }); } /**