From d4eb73e929a66da6b326de0f0efc2bb20b599260 Mon Sep 17 00:00:00 2001 From: Robert Kuykendall Date: Mon, 17 Feb 2020 22:41:35 -0500 Subject: [PATCH] Remove unnecesary externalError state (#398) * Remove unnecesary externalError state * Unexpected yarn.lock changes --- ...-II.local's conflicted copy 2020-02-17).ts | 385 ++++++++++++++++++ src/Wrapper.ts | 6 +- src/index.ts | 7 +- yarn.lock | 215 +--------- 4 files changed, 398 insertions(+), 215 deletions(-) create mode 100644 dist/index.d (Robert-MightyBook-II.local's conflicted copy 2020-02-17).ts diff --git a/dist/index.d (Robert-MightyBook-II.local's conflicted copy 2020-02-17).ts b/dist/index.d (Robert-MightyBook-II.local's conflicted copy 2020-02-17).ts new file mode 100644 index 00000000..e553d374 --- /dev/null +++ b/dist/index.d (Robert-MightyBook-II.local's conflicted copy 2020-02-17).ts @@ -0,0 +1,385 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import validationRules from './validationRules'; +import Wrapper, { propTypes } from './Wrapper'; +import { IModel, InputComponent, IResetModel, IUpdateInputsWithValue, IUpdateInputsWithError, ValidationFunction } from './interfaces'; +declare type FormHTMLAttributesCleaned = Omit, 'onChange' | 'onSubmit'>; +export interface FormsyProps extends FormHTMLAttributesCleaned { + disabled: boolean; + getErrorMessage: any; + getErrorMessages: any; + getValue: any; + hasValue: any; + isFormDisabled: any; + isFormSubmitted: any; + isPristine: any; + isRequired: any; + isValid: any; + isValidValue: any; + mapping: null | ((model: IModel) => IModel); + onChange: (model: IModel, isChanged: boolean) => void; + onError: any; + onInvalid: () => void; + onInvalidSubmit: any; + onReset?: () => void; + onSubmit?: (model: IModel, resetModel: IResetModel, updateInputsWithError: IUpdateInputsWithError) => void; + onValid: () => void; + onValidSubmit?: (model: IModel, resetModel: IResetModel, updateInputsWithError: IUpdateInputsWithError) => void; + preventExternalInvalidation?: boolean; + resetValue: any; + setValidations: any; + setValue: any; + showError: any; + showRequired: any; + validationErrors?: null | object; +} +export interface FormsyState { + canChange: boolean; + formSubmitted?: boolean; + isPristine?: boolean; + isSubmitting: boolean; + isValid: boolean; +} +declare class Formsy extends React.Component { + inputs: any[]; + emptyArray: any[]; + prevInputNames: any[] | null; + static displayName: string; + static propTypes: { + disabled: PropTypes.Requireable; + getErrorMessage: PropTypes.Requireable<(...args: any[]) => any>; + getErrorMessages: PropTypes.Requireable<(...args: any[]) => any>; + getValue: PropTypes.Requireable<(...args: any[]) => any>; + hasValue: PropTypes.Requireable<(...args: any[]) => any>; + isFormDisabled: PropTypes.Requireable<(...args: any[]) => any>; + isFormSubmitted: PropTypes.Requireable<(...args: any[]) => any>; + isPristine: PropTypes.Requireable<(...args: any[]) => any>; + isRequired: PropTypes.Requireable<(...args: any[]) => any>; + isValid: PropTypes.Requireable<(...args: any[]) => any>; + isValidValue: PropTypes.Requireable<(...args: any[]) => any>; + mapping: PropTypes.Requireable<(...args: any[]) => any>; + onChange: PropTypes.Requireable<(...args: any[]) => any>; + onInvalid: PropTypes.Requireable<(...args: any[]) => any>; + onInvalidSubmit: PropTypes.Requireable<(...args: any[]) => any>; + onReset: PropTypes.Requireable<(...args: any[]) => any>; + onSubmit: PropTypes.Requireable<(...args: any[]) => any>; + onValid: PropTypes.Requireable<(...args: any[]) => any>; + onValidSubmit: PropTypes.Requireable<(...args: any[]) => any>; + preventExternalInvalidation: PropTypes.Requireable; + resetValue: PropTypes.Requireable<(...args: any[]) => any>; + setValidations: PropTypes.Requireable<(...args: any[]) => any>; + setValue: PropTypes.Requireable<(...args: any[]) => any>; + showError: PropTypes.Requireable<(...args: any[]) => any>; + showRequired: PropTypes.Requireable<(...args: any[]) => any>; + validationErrors: PropTypes.Requireable; + }; + static childContextTypes: { + formsy: PropTypes.Requireable; + }; + static defaultProps: Partial; + constructor(props: FormsyProps); + getChildContext: () => { + formsy: { + attachToForm: (component: any) => void; + detachFromForm: (component: InputComponent) => void; + isFormDisabled: boolean; + isValidValue: (component: any, value: any) => boolean; + validate: (component: InputComponent) => void; + }; + }; + componentDidMount: () => void; + componentDidUpdate: () => void; + getCurrentValues: () => any; + getModel: () => any; + getPristineValues: () => any; + setFormPristine: (isPristine: boolean) => void; + setInputValidationErrors: (errors: any) => void; + setFormValidState: (allIsValid: boolean) => void; + isValidValue: (component: any, value: any) => boolean; + isFormDisabled: () => boolean; + mapModel: (model: any) => any; + reset: (data?: any) => void; + resetInternal: (event: any) => void; + resetModel: IResetModel; + runValidation: (component: InputComponent, value?: V) => { + isRequired: boolean; + isValid: boolean; + error: any; + }; + attachToForm: (component: any) => void; + detachFromForm: (component: InputComponent) => void; + isChanged: () => boolean; + submit: (event: any) => void; + updateInputsWithError: IUpdateInputsWithError; + updateInputsWithValue: IUpdateInputsWithValue; + validate: (component: InputComponent) => void; + validateForm: () => void; + render: () => React.DetailedReactHTMLElement<{ + disabled: boolean; + onError: any; + hidden?: boolean; + dir?: string; + slot?: string; + style?: React.CSSProperties; + title?: string; + color?: string; + children?: React.ReactNode; + name?: string; + acceptCharset?: string; + action?: string; + autoComplete?: string; + encType?: string; + method?: string; + noValidate?: boolean; + target?: string; + defaultChecked?: boolean; + defaultValue?: string | number | string[]; + suppressContentEditableWarning?: boolean; + suppressHydrationWarning?: boolean; + accessKey?: string; + className?: string; + contentEditable?: boolean | "inherit" | "false" | "true"; + contextMenu?: string; + draggable?: boolean | "false" | "true"; + id?: string; + lang?: string; + placeholder?: string; + spellCheck?: boolean | "false" | "true"; + tabIndex?: number; + translate?: "yes" | "no"; + radioGroup?: string; + role?: string; + about?: string; + datatype?: string; + inlist?: any; + prefix?: string; + property?: string; + resource?: string; + typeof?: string; + vocab?: string; + autoCapitalize?: string; + autoCorrect?: string; + autoSave?: string; + itemProp?: string; + itemScope?: boolean; + itemType?: string; + itemID?: string; + itemRef?: string; + results?: number; + security?: string; + unselectable?: "on" | "off"; + inputMode?: "search" | "none" | "text" | "decimal" | "numeric" | "tel" | "url" | "email"; + is?: string; + 'aria-activedescendant'?: string; + 'aria-atomic'?: boolean | "false" | "true"; + 'aria-autocomplete'?: "none" | "both" | "inline" | "list"; + 'aria-busy'?: boolean | "false" | "true"; + 'aria-checked'?: boolean | "mixed" | "false" | "true"; + 'aria-colcount'?: number; + 'aria-colindex'?: number; + 'aria-colspan'?: number; + 'aria-controls'?: string; + 'aria-current'?: boolean | "time" | "page" | "false" | "true" | "step" | "location" | "date"; + 'aria-describedby'?: string; + 'aria-details'?: string; + 'aria-disabled'?: boolean | "false" | "true"; + 'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup"; + 'aria-errormessage'?: string; + 'aria-expanded'?: boolean | "false" | "true"; + 'aria-flowto'?: string; + 'aria-grabbed'?: boolean | "false" | "true"; + 'aria-haspopup'?: boolean | "dialog" | "menu" | "listbox" | "grid" | "false" | "true" | "tree"; + 'aria-hidden'?: boolean | "false" | "true"; + 'aria-invalid'?: boolean | "false" | "true" | "grammar" | "spelling"; + 'aria-keyshortcuts'?: string; + 'aria-label'?: string; + 'aria-labelledby'?: string; + 'aria-level'?: number; + 'aria-live'?: "off" | "assertive" | "polite"; + 'aria-modal'?: boolean | "false" | "true"; + 'aria-multiline'?: boolean | "false" | "true"; + 'aria-multiselectable'?: boolean | "false" | "true"; + 'aria-orientation'?: "horizontal" | "vertical"; + 'aria-owns'?: string; + 'aria-placeholder'?: string; + 'aria-posinset'?: number; + 'aria-pressed'?: boolean | "mixed" | "false" | "true"; + 'aria-readonly'?: boolean | "false" | "true"; + 'aria-relevant'?: "all" | "text" | "additions" | "additions text" | "removals"; + 'aria-required'?: boolean | "false" | "true"; + 'aria-roledescription'?: string; + 'aria-rowcount'?: number; + 'aria-rowindex'?: number; + 'aria-rowspan'?: number; + 'aria-selected'?: boolean | "false" | "true"; + 'aria-setsize'?: number; + 'aria-sort'?: "none" | "ascending" | "descending" | "other"; + 'aria-valuemax'?: number; + 'aria-valuemin'?: number; + 'aria-valuenow'?: number; + 'aria-valuetext'?: string; + dangerouslySetInnerHTML?: { + __html: string; + }; + onCopy?: (event: React.ClipboardEvent) => void; + onCopyCapture?: (event: React.ClipboardEvent) => void; + onCut?: (event: React.ClipboardEvent) => void; + onCutCapture?: (event: React.ClipboardEvent) => void; + onPaste?: (event: React.ClipboardEvent) => void; + onPasteCapture?: (event: React.ClipboardEvent) => void; + onCompositionEnd?: (event: React.CompositionEvent) => void; + onCompositionEndCapture?: (event: React.CompositionEvent) => void; + onCompositionStart?: (event: React.CompositionEvent) => void; + onCompositionStartCapture?: (event: React.CompositionEvent) => void; + onCompositionUpdate?: (event: React.CompositionEvent) => void; + onCompositionUpdateCapture?: (event: React.CompositionEvent) => void; + onFocus?: (event: React.FocusEvent) => void; + onFocusCapture?: (event: React.FocusEvent) => void; + onBlur?: (event: React.FocusEvent) => void; + onBlurCapture?: (event: React.FocusEvent) => void; + onChangeCapture?: (event: React.FormEvent) => void; + onBeforeInput?: (event: React.FormEvent) => void; + onBeforeInputCapture?: (event: React.FormEvent) => void; + onInput?: (event: React.FormEvent) => void; + onInputCapture?: (event: React.FormEvent) => void; + onResetCapture?: (event: React.FormEvent) => void; + onSubmitCapture?: (event: React.FormEvent) => void; + onInvalidCapture?: (event: React.FormEvent) => void; + onLoad?: (event: React.SyntheticEvent) => void; + onLoadCapture?: (event: React.SyntheticEvent) => void; + onErrorCapture?: (event: React.SyntheticEvent) => void; + onKeyDown?: (event: React.KeyboardEvent) => void; + onKeyDownCapture?: (event: React.KeyboardEvent) => void; + onKeyPress?: (event: React.KeyboardEvent) => void; + onKeyPressCapture?: (event: React.KeyboardEvent) => void; + onKeyUp?: (event: React.KeyboardEvent) => void; + onKeyUpCapture?: (event: React.KeyboardEvent) => void; + onAbort?: (event: React.SyntheticEvent) => void; + onAbortCapture?: (event: React.SyntheticEvent) => void; + onCanPlay?: (event: React.SyntheticEvent) => void; + onCanPlayCapture?: (event: React.SyntheticEvent) => void; + onCanPlayThrough?: (event: React.SyntheticEvent) => void; + onCanPlayThroughCapture?: (event: React.SyntheticEvent) => void; + onDurationChange?: (event: React.SyntheticEvent) => void; + onDurationChangeCapture?: (event: React.SyntheticEvent) => void; + onEmptied?: (event: React.SyntheticEvent) => void; + onEmptiedCapture?: (event: React.SyntheticEvent) => void; + onEncrypted?: (event: React.SyntheticEvent) => void; + onEncryptedCapture?: (event: React.SyntheticEvent) => void; + onEnded?: (event: React.SyntheticEvent) => void; + onEndedCapture?: (event: React.SyntheticEvent) => void; + onLoadedData?: (event: React.SyntheticEvent) => void; + onLoadedDataCapture?: (event: React.SyntheticEvent) => void; + onLoadedMetadata?: (event: React.SyntheticEvent) => void; + onLoadedMetadataCapture?: (event: React.SyntheticEvent) => void; + onLoadStart?: (event: React.SyntheticEvent) => void; + onLoadStartCapture?: (event: React.SyntheticEvent) => void; + onPause?: (event: React.SyntheticEvent) => void; + onPauseCapture?: (event: React.SyntheticEvent) => void; + onPlay?: (event: React.SyntheticEvent) => void; + onPlayCapture?: (event: React.SyntheticEvent) => void; + onPlaying?: (event: React.SyntheticEvent) => void; + onPlayingCapture?: (event: React.SyntheticEvent) => void; + onProgress?: (event: React.SyntheticEvent) => void; + onProgressCapture?: (event: React.SyntheticEvent) => void; + onRateChange?: (event: React.SyntheticEvent) => void; + onRateChangeCapture?: (event: React.SyntheticEvent) => void; + onSeeked?: (event: React.SyntheticEvent) => void; + onSeekedCapture?: (event: React.SyntheticEvent) => void; + onSeeking?: (event: React.SyntheticEvent) => void; + onSeekingCapture?: (event: React.SyntheticEvent) => void; + onStalled?: (event: React.SyntheticEvent) => void; + onStalledCapture?: (event: React.SyntheticEvent) => void; + onSuspend?: (event: React.SyntheticEvent) => void; + onSuspendCapture?: (event: React.SyntheticEvent) => void; + onTimeUpdate?: (event: React.SyntheticEvent) => void; + onTimeUpdateCapture?: (event: React.SyntheticEvent) => void; + onVolumeChange?: (event: React.SyntheticEvent) => void; + onVolumeChangeCapture?: (event: React.SyntheticEvent) => void; + onWaiting?: (event: React.SyntheticEvent) => void; + onWaitingCapture?: (event: React.SyntheticEvent) => void; + onAuxClick?: (event: React.MouseEvent) => void; + onAuxClickCapture?: (event: React.MouseEvent) => void; + onClick?: (event: React.MouseEvent) => void; + onClickCapture?: (event: React.MouseEvent) => void; + onContextMenu?: (event: React.MouseEvent) => void; + onContextMenuCapture?: (event: React.MouseEvent) => void; + onDoubleClick?: (event: React.MouseEvent) => void; + onDoubleClickCapture?: (event: React.MouseEvent) => void; + onDrag?: (event: React.DragEvent) => void; + onDragCapture?: (event: React.DragEvent) => void; + onDragEnd?: (event: React.DragEvent) => void; + onDragEndCapture?: (event: React.DragEvent) => void; + onDragEnter?: (event: React.DragEvent) => void; + onDragEnterCapture?: (event: React.DragEvent) => void; + onDragExit?: (event: React.DragEvent) => void; + onDragExitCapture?: (event: React.DragEvent) => void; + onDragLeave?: (event: React.DragEvent) => void; + onDragLeaveCapture?: (event: React.DragEvent) => void; + onDragOver?: (event: React.DragEvent) => void; + onDragOverCapture?: (event: React.DragEvent) => void; + onDragStart?: (event: React.DragEvent) => void; + onDragStartCapture?: (event: React.DragEvent) => void; + onDrop?: (event: React.DragEvent) => void; + onDropCapture?: (event: React.DragEvent) => void; + onMouseDown?: (event: React.MouseEvent) => void; + onMouseDownCapture?: (event: React.MouseEvent) => void; + onMouseEnter?: (event: React.MouseEvent) => void; + onMouseLeave?: (event: React.MouseEvent) => void; + onMouseMove?: (event: React.MouseEvent) => void; + onMouseMoveCapture?: (event: React.MouseEvent) => void; + onMouseOut?: (event: React.MouseEvent) => void; + onMouseOutCapture?: (event: React.MouseEvent) => void; + onMouseOver?: (event: React.MouseEvent) => void; + onMouseOverCapture?: (event: React.MouseEvent) => void; + onMouseUp?: (event: React.MouseEvent) => void; + onMouseUpCapture?: (event: React.MouseEvent) => void; + onSelect?: (event: React.SyntheticEvent) => void; + onSelectCapture?: (event: React.SyntheticEvent) => void; + onTouchCancel?: (event: React.TouchEvent) => void; + onTouchCancelCapture?: (event: React.TouchEvent) => void; + onTouchEnd?: (event: React.TouchEvent) => void; + onTouchEndCapture?: (event: React.TouchEvent) => void; + onTouchMove?: (event: React.TouchEvent) => void; + onTouchMoveCapture?: (event: React.TouchEvent) => void; + onTouchStart?: (event: React.TouchEvent) => void; + onTouchStartCapture?: (event: React.TouchEvent) => void; + onPointerDown?: (event: React.PointerEvent) => void; + onPointerDownCapture?: (event: React.PointerEvent) => void; + onPointerMove?: (event: React.PointerEvent) => void; + onPointerMoveCapture?: (event: React.PointerEvent) => void; + onPointerUp?: (event: React.PointerEvent) => void; + onPointerUpCapture?: (event: React.PointerEvent) => void; + onPointerCancel?: (event: React.PointerEvent) => void; + onPointerCancelCapture?: (event: React.PointerEvent) => void; + onPointerEnter?: (event: React.PointerEvent) => void; + onPointerEnterCapture?: (event: React.PointerEvent) => void; + onPointerLeave?: (event: React.PointerEvent) => void; + onPointerLeaveCapture?: (event: React.PointerEvent) => void; + onPointerOver?: (event: React.PointerEvent) => void; + onPointerOverCapture?: (event: React.PointerEvent) => void; + onPointerOut?: (event: React.PointerEvent) => void; + onPointerOutCapture?: (event: React.PointerEvent) => void; + onGotPointerCapture?: (event: React.PointerEvent) => void; + onGotPointerCaptureCapture?: (event: React.PointerEvent) => void; + onLostPointerCapture?: (event: React.PointerEvent) => void; + onLostPointerCaptureCapture?: (event: React.PointerEvent) => void; + onScroll?: (event: React.UIEvent) => void; + onScrollCapture?: (event: React.UIEvent) => void; + onWheel?: (event: React.WheelEvent) => void; + onWheelCapture?: (event: React.WheelEvent) => void; + onAnimationStart?: (event: React.AnimationEvent) => void; + onAnimationStartCapture?: (event: React.AnimationEvent) => void; + onAnimationEnd?: (event: React.AnimationEvent) => void; + onAnimationEndCapture?: (event: React.AnimationEvent) => void; + onAnimationIteration?: (event: React.AnimationEvent) => void; + onAnimationIterationCapture?: (event: React.AnimationEvent) => void; + onTransitionEnd?: (event: React.TransitionEvent) => void; + onTransitionEndCapture?: (event: React.TransitionEvent) => void; + onReset: (event: any) => void; + onSubmit: (event: any) => void; + }, HTMLElement>; +} +declare const addValidationRule: (name: string, func: ValidationFunction) => void; +export { addValidationRule, propTypes, validationRules, Wrapper as withFormsy }; +export default Formsy; diff --git a/src/Wrapper.ts b/src/Wrapper.ts index c7c01a65..b907a0a4 100644 --- a/src/Wrapper.ts +++ b/src/Wrapper.ts @@ -64,7 +64,6 @@ export interface WrapperProps { export interface WrapperState { [key: string]: unknown; - externalError: null; formSubmitted: boolean; isPristine: boolean; isRequired: boolean; @@ -138,7 +137,6 @@ export default function( public constructor(props) { super(props); this.state = { - externalError: null, formSubmitted: false, isPristine: true, isRequired: false, @@ -202,10 +200,10 @@ export default function( }; public getErrorMessages = (): ValidationError[] => { - const { externalError, validationError } = this.state; + const { validationError } = this.state; if (!this.isValid() || this.showRequired()) { - return externalError || validationError || []; + return validationError || []; } return []; }; diff --git a/src/index.ts b/src/index.ts index efcff7ad..ce310fd9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -375,7 +375,7 @@ class Formsy extends React.Component { const args = [ { isValid: preventExternalInvalidation, - externalError: utils.isString(error) ? [error] : error, + validationError: utils.isString(error) ? [error] : error, }, ]; component.setState(...args); @@ -413,7 +413,6 @@ class Formsy extends React.Component { // the validator IF there is a value or it is required component.setState( { - externalError: null, isRequired: validation.isRequired, isValid: validation.isValid, validationError: validation.error, @@ -442,15 +441,11 @@ class Formsy extends React.Component { // last component validated will run the onValidationComplete callback this.inputs.forEach((component, index) => { const validation = this.runValidation(component); - if (validation.isValid && component.state.externalError) { - validation.isValid = false; - } component.setState( { isValid: validation.isValid, isRequired: validation.isRequired, validationError: validation.error, - externalError: !validation.isValid && component.state.externalError ? component.state.externalError : null, }, index === this.inputs.length - 1 ? onValidationComplete : null, ); diff --git a/yarn.lock b/yarn.lock index 7eba52ca..da926188 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1368,11 +1368,6 @@ abab@^2.0.0: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== -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== - acorn-globals@^4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" @@ -1512,19 +1507,6 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -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" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2071,11 +2053,6 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -2245,11 +2222,6 @@ confusing-browser-globals@^1.0.7: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== -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= - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2428,13 +2400,6 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - debug@^4.0.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" @@ -2529,16 +2494,6 @@ delayed-stream@~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= - -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@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3336,13 +3291,6 @@ fragment-cache@^0.2.1: dependencies: map-cache "^0.2.2" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3390,20 +3338,6 @@ functions-have-names@^1.2.0: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.1.tgz#a981ac397fa0c9964551402cdc5533d7a4d52f91" integrity sha512-j48B/ZI7VKs3sgeI2cZp7WXWmZXu7Iq5pl5/vptV5N2mq+DGFuS/ulaDjtaoLpYzuD6u8UgrUKHfgo7fDTSiBA== -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" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3592,11 +3526,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - 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" @@ -3725,20 +3654,13 @@ husky@^4.2.1: slash "^3.0.0" which-pm-runs "^1.0.0" -iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24, iconv-lite@^0.4.24: 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" -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -5238,21 +5160,6 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5261,7 +5168,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -5347,15 +5254,6 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" -needle@^2.2.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.2.tgz#3342dea100b7160960a450dc8c22160ac712a528" - integrity sha512-DUzITvPVDUy6vczKKYTnWc/pBZ0EnjMJnQ3y+Jo5zfKFimJs7S3HFCxCRZYB9FUZcrzUQr3WsmvZgddMEIZv6w== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - neo-async@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" @@ -5412,22 +5310,6 @@ node-notifier@^6.0.0: shellwords "^0.1.1" which "^1.3.1" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - node-releases@^1.1.49: version "1.1.49" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.49.tgz#67ba5a3fac2319262675ef864ed56798bb33b93e" @@ -5435,14 +5317,6 @@ node-releases@^1.1.49: dependencies: semver "^6.3.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.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5509,13 +5383,6 @@ np@^5.0.0: terminal-link "^2.0.0" update-notifier "^3.0.0" -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - npm-name@^5.4.0: version "5.5.0" resolved "https://registry.yarnpkg.com/npm-name/-/npm-name-5.5.0.tgz#3a73adbcb0488a41a44ff820ed51dcc32c72bd09" @@ -5529,20 +5396,6 @@ npm-name@^5.4.0: registry-url "^5.1.0" validate-npm-package-name "^3.0.0" -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - 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" @@ -5564,16 +5417,6 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -npmlog@^4.0.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" - gauge "~2.7.3" - set-blocking "~2.0.0" - nth-check@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -5741,24 +5584,11 @@ optionator@^0.8.1, optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - 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" - ow@^0.15.0: version "0.15.1" resolved "https://registry.yarnpkg.com/ow/-/ow-0.15.1.tgz#ad21bb4d4c46d4478b948522e36b214f6f13039d" @@ -6216,7 +6046,7 @@ randexp@0.4.6: discontinuous-range "1.0.0" ret "~0.1.10" -rc@^1.2.7, rc@^1.2.8: +rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -6313,7 +6143,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.2, readable-stream@^2.0.6: +readable-stream@^2.0.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6593,7 +6423,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.6.1, rimraf@^2.6.3: +rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -6700,11 +6530,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - saxes@^3.1.9: version "3.1.11" resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" @@ -6742,7 +6567,7 @@ semver-regex@^2.0.0: resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-2.0.0.tgz#a93c2c5844539a770233379107b38c7b4ac9d338" integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6762,7 +6587,7 @@ semver@^7.1.1: resolved "https://registry.yarnpkg.com/semver/-/semver-7.1.3.tgz#e4345ce73071c53f336445cfc19efb1c311df2a6" integrity sha512-ekM0zfiA9SCBlsKa2X1hxyxiI4L3B6EbVJkkdgQXnSEEaHlGdvyodMruTiulSRWMMB4NeIuYNMC9rTKTz97GxA== -set-blocking@^2.0.0, 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= @@ -7030,7 +6855,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: +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== @@ -7217,19 +7042,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - term-size@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" @@ -7669,13 +7481,6 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - widest-line@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" @@ -7771,7 +7576,7 @@ yallist@^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, yallist@^3.0.3: +yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==