diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000000..a1daa3e6c7 --- /dev/null +++ b/.babelrc @@ -0,0 +1,9 @@ +{ + "plugins": ["emotion", "@babel/plugin-proposal-class-properties"], + "presets": [ + "@babel/preset-env", + "@babel/preset-react", + "@babel/preset-flow" + ], + "ignore": ["node_modules"] +} diff --git a/.eslintignore b/.eslintignore index 3db7ce84ec..80dc4fffe4 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,4 +5,3 @@ dist/* flow-typed/* lib/* node_modules/* -**/node_modules/* diff --git a/.eslintrc.js b/.eslintrc.js index f9fcb20d1a..e57f7f0d48 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -14,7 +14,6 @@ module.exports = { argsIgnorePattern: '^event$', ignoreRestSiblings: true, vars: 'all', - varsIgnorePattern: 'jsx|emotionJSX' }, ], curly: [2, 'multi-line'], diff --git a/.flowconfig b/.flowconfig index 39bc0d7107..c69920259f 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,7 +1,7 @@ [ignore] +./lib/.* +./dist/.* .*/node_modules/cypress/.* - -[untyped] .*/node_modules/@atlaskit/tooltip/dist/cjs/components/Marshal.js.flow .*/node_modules/@atlaskit/layer-manager/dist/cjs/components/FocusLock/index.js.flow .*/node_modules/@atlaskit/layer-manager/dist/cjs/components/gateway/components/Gateway.js.flow diff --git a/HISTORY.md b/HISTORY.md new file mode 100644 index 0000000000..48de7300d4 --- /dev/null +++ b/HISTORY.md @@ -0,0 +1,1430 @@ +# React-Select +## v2.4.2 / 2019-03-11 +### Bug fixes +* [#3446](https://github.com/JedWatson/react-select/pull/3446) Fix bug with select input value not being selectable. Thanks [kangweichan](https://github.com/kangweichan). +* [#3445](https://github.com/JedWatson/react-select/pull/3446) Fix accessibility bug. Disabled options are now focusable and announced by screen-readers but not selectable. Thanks [sarahbethfederman](https://github.com/sarahbethfederman). + +## Updates +* Fixed typo in style docs. Thanks [thiagodebastos](https://github.com/thiagodebastos). +* [#3460](https://github.com/JedWatson/react-select/pull/3460) Added description for actionTypes to docs. Thanks [mikekellyio](https://github.com/mikekellyio) + +## v2.4.1 / 2019-02-18 +### Bug fixes +* [#3432](https://github.com/JedWatson/react-select/pull/3432) Fix bug with select menu's not working on mobile. + +## v2.4.0 / 2019-02-15 +### Bug fixes +* [#3427](https://github.com/JedWatson/react-select/pull/3427) remove focusOption() invocation on ENTER press if the menu is not open. +* [#3402](https://github.com/JedWatson/react-select/pull/3402) fix menu scroll being reset on focus of a select with an open menu in ie11. See [#3342](https://github.com/JedWatson/react-select/issues/3342) for details. Thanks [timothypage](https://github.com/timothypage) +* [#3420](https://github.com/JedWatson/react-select/pull/3420) fixed select menu being opened on click, when openMenuOnClick is false. Thanks [caleb](https://github.com/caleb) and [rscotten](https://github.com/rscotten) +* [#3419](https://github.com/JedWatson/react-select/pull/3419) fixed bug with ScrollCaptor operating on an undefined scrollTarget. Thanks [iulian-radu-at](https://github.com/iulian-radu-at) +* [#3411](https://github.com/JedWatson/react-select/pull/3411) fix bug where Enter key press on select with a closed menu wouldn't propagate up. Resolves [#2217](https://github.com/JedWatson/react-select/issues/2217). +* [#3407](https://github.com/JedWatson/react-select/pull/3407) remove unnecessary aria-roles from menu and options. This is now all handled by our aria-live implementation. Resolves [#3355](https://github.com/JedWatson/react-select/issues/3355). Thanks [sarahbethfederman](https://github.com/sarahbethfederman). +* [#3393](https://github.com/JedWatson/react-select/pull/3393), fix aria live announcement text for removing a selected option. Thanks [msharkeyiii](https://github.com/msharkeyiii). +* [#3350](https://github.com/JedWatson/react-select/pull/3350) Updated to 0.91 of flow. Updated types to pass stricter type checking, in later versions of flow. Thanks [DragonWW](https://github.com/DragorWW) + + +### Updates +* [#3370](https://github.com/JedWatson/react-select/pull/3370) Updated memoize-one dependency to 5.0.0. Thanks [adam187](https://github.com/adam187) +* [#3366](https://github.com/JedWatson/react-select/pull/3366/files) Update build tooling, to leverage babel 7. Thanks [DragonWW](https://github.com/DragorWW) + +## v2.3.0 / 2019-01-18 + +### Bug fixes +* [#3315](https://github.com/JedWatson/react-select/pull/3315) add RAF call to Collapse component getRef() such that getBoundingClientRect() is invoked consistently. +* [#3275](https://github.com/JedWatson/react-select/pull/3275/files) wrap String invocation around inputValue to avoid calling toLowerCase on invalid elements. thanks [tavareshenrique](https://github.com/tavareshenrique) +* [#3357](https://github.com/JedWatson/react-select/pull/3357), fix loadOptions call in Async select to always pass in a string for the inputValue. +* [#3346](https://github.com/JedWatson/react-select/pull/3346) Revert work done in CSP nonce PR [#3260](https://github.com/JedWatson/react-select/pull/3260) to unblock react-select usage in an SSR setting. Users who need nonce support still, please pin your version of react-select at 2.2.0. Nonce support will be re-added in 3.0.0 along with an upgrade to emotion 10; which includes nonce support without having to provide a custom emotion instance. + +### Features +* [#3115](https://github.com/JedWatson/react-select/pull/3115) menu-is-open modifier added to control class when the menu is open. [@s20lee](https://github.com/s20lee) + +## v2.2.0 / 2018-12-28 + +### Bug Fixes +* [#3296](https://github.com/JedWatson/react-select/pull/3296) Fix for tab interactions when in composition mode with an IME. Thanks [yshr446](https://github.com/yshr446) for the PR. +* [#3302](https://github.com/JedWatson/react-select/pull/3302) Fix to breaking android and mobile safari touch bug [#2755](https://github.com/JedWatson/react-select/issues/2755), by adding more conscientious checks to the onTouchStart and onTouchMove listeners. Thanks [xakep139](https://github.com/xakep139) for the PR. +* [#3303](https://github.com/JedWatson/react-select/pull/3303) Input and GroupHeading components now get passed the selectProps prop, thanks [maxmarchuk](https://github.com/maxmarchuk) for the PR. +* [#3260](https://github.com/JedWatson/react-select/pull/3260) As a result of the CSP nonce support feature, the emotion instance is now cached and passed down to all internal components, meaning that users looking to heavily customise their Select components can do so without externally importing emotion, and nonce instances are respected per select instance. Please see [this segment](https://react-select.com/styles#cx-and-custom-components) in the docs for a more detailed explanation. +* [#3299](https://github.com/JedWatson/react-select/pull/3299) fix to assistive text on menu open. + +### Feature +* [#3260](https://github.com/JedWatson/react-select/pull/3260) Add CSP nonce support to Select, thanks [Avaq](https://github.com/Avaq) and [Andarist](https://github.com/Andarist) for the heavy lifting. + +## v2.1.2 / 2018-11-22 + +### Bug fixes + +* [#3161] Initialize state with `inputValue` when `defaultOptions` is true in AsyncSelect, resolves [#3160](https://github.com/JedWatson/react-select/issues/3160), thanks [@cutterbl](https://github.com/cutterbl) +* [#3096] Placeholder component now also receives the isFocused state value as a prop. Thanks [@Nelrohd](https://github.com/Nelrohd) +* [#3060] Fix bug where trying to set the cursor somewhere in an input value would close the menu. Thanks [@stijndeschuymer](https://github.com/stijndeschuymer) +* [#3163] Fixed bug where isDisabled wasn't being reflected onto the DummyInput, which meant that disabled non searchable selects were still focusable. Thanks [@gm0t](https://github.com/gm0t) +* [#3216] Fixes bug where clearing with backspace in a single select would result in an empty array, as opposed to the expected empty object. Thanks [@IanVS](https://github.com/IanVS) +* [#3013] Fixes bug where the menu would close on trying to scroll using the scroll bar in IE11. Thanks [@rakid](https://github.com/rakid) + +### Misc + +* A big shoutout to everyone who helped contribute to the docs. In no particular order [@acrawford13](https://github.com/JedWatson/react-select/commits?author=acrawford13), [@kirillku](https://github.com/kirillku), [@ajaymathur](https://github.com/ajaymathur), [@mgalgs](https://github.com/mgalgs), [@cutterbl](https://github.com/cutterbl), [@JonathanWbn](https://github.com/JonathanWbn), [@mwood23](https://github.com/mwood23), [@stevemao](https://github.com/stevemao), [@jossmac](https://github.com/jossmac), and anyone else I've missed. +* Thanks to [@IanVS](https://github.com/IanVS) for cleaning up our cypress tests. + +## v2.1.1 / 2018-10-24 + +### Bug fixes + +* [#3132] Strip theme props from default Input and GroupHeading components, as they were polluting the DOM. +* [#3131] Add support for the 'Delete' key in the internal onKeyDown method. Same functionality as 'Backspace'. +* [#3100] Update flow-types and normalised default prop declarations in indicators. Thanks [iseredov](https://github.com/iseredov) + +### Updates + +* [#3083] Added sideEffects property to package.json to support tree-shaking in webpack 4.x. Thanks [SimenB](https://github.com/SimenB). +* [#3078] Update jest dependency to 23.6.0. Thanks [papandreou](https://github.com/papandreou) +* [#3065] Update babel-plugin-emotion to 9.2.10. Thanks [mtzhang](https://github.com/mtzhang) +* [#3108] Update docs to include instructions for replicating the simple-value use case within react-select v2. Thanks [elboletaire](https://github.com/elboletaire) + +## v2.1.0 / 2018-10-03 + +* [#2839] Added support for theming via theme prop. Thanks [akx](https://github.com/akx) +* [#2874] Fixed flow-types of MultiValue components. Thanks [mike1808](https://github.com/mike1808) +* [#2903] Fix missing form input when there isn't a selected value. Thanks [alvinsj](https://github.com/alvinsj) +* [#2934] Reduced theme colors to a sane value set to make the exported theme more easy to consume and configure. Thanks [jossmac](https://github.com/jossmac) +* [#2876] Added overflow hidden to valueContainer to stop overflowing text in the control. Thanks [mike1808](https://github.com/mike1808) +* [#2975] Separated menu placement logic from menu primitive. Thanks [jossmac](https://github.com/jossmac). + +## v2.0.0 / 2018-07-23 + +* async select now accepts a filterOptions function as a prop [#2822](https://github.com/JedWatson/react-select/pull/2822) +* [BREAKING] react-select now exports react-select.esm.js from dist instead of react-select.es.js [#2641](https://github.com/JedWatson/react-select/pull/2641) +* [BREAKING] innerRef assignments in custom components must now be made from the root of the prop object, as opposed to reaching into innerProps. This is part of the work to normalize the behaviour circa custom components. [#2824](https://github.com/JedWatson/react-select/pull/2824) +* className and classNamePrefix deprecation warning and backward compatibility removed. className now only affects the select container, classNamePrefix prefixes all internal components. [#2820](https://github.com/JedWatson/react-select/pull/2820) +* Added `closeMenuOnScroll` prop, which can either be a `boolean` or a `function`, if set to `true` the select menu will close on scroll of the document/body. If a function is supplied, it must take the following shape `(event: ScrollEvent) => boolean`, the boolean value will be used to resolve whether the menu should be closed or stay open. [#2809](https://github.com/JedWatson/react-select/pull/2809), thanks [Vynlar](https://github.com/Vynlar) for this. +* Added fix to support IME inputs. [#2767](https://github.com/JedWatson/react-select/pull/2767), thanks [shamabe](https://github.com/shamabe) +* Removed primitives, and normalise multi-value components to be in line with existing component customisation patterns. [#2821](https://github.com/JedWatson/react-select/pull/2821) +* Normalised isOptionDisabled to be inline with its sibling prop isOptionSelected. [#2821](https://github.com/JedWatson/react-select/pull/2695) Thanks [SimeonC](https://github.com/SimeonC) +* [#2814](https://github.com/JedWatson/react-select/pull/2814) Added memoization to custom components within Select.js as well as in the exported makeAnimated factory method. Thanks to [Alex Reardon's](https://github.com/alexreardon) [memoize-one](https://github.com/alexreardon/memoize-one) +* [#2652](https://github.com/JedWatson/react-select/pull/2652), Async Select now re-evaluates defaultOptions on componentWillReceiveProps. Thanks [jesstelford](https://github.com/jesstelford) + +## v2.0.0-beta.7 / 2018-07-03 + +* Removed old aria-attributes in Option, MenuList and other components in favor of an aria-live-region implementation. `screenReaderStatus` prop is still at the moment untouched, and `aria-labelledby` and `aria-label` props are still available and retain their functionality. See [#2581](https://github.com/JedWatson/react-select/pull/2581). +* Internal ref `input` is now `inputRef` for consistency. +* Internal ref `menuRef` is now `menuListRef` for consistency. +* Fixed bug with MultiValueRemove interaction not working in mobile [#2762](https://github.com/JedWatson/react-select/pull/2762), thanks [chuckbergeron](https://github.com/chuckbergeron). +* Added makeAnimated function export, that takes passed in components and wraps them in higher order components that expose animated functionality. [#2724](https://github.com/JedWatson/react-select/pull/2724) +* Added functionality to not render the menu if `noOptionsMessage` or `loadingMessage` are set to null. [#2754](https://github.com/JedWatson/react-select/pull/2754) +* Fixed bug with mobile menu being blocked when `menuShouldBlockScroll` is true. +[#2756](https://github.com/JedWatson/react-select/pull/2756) +* Enabled hideSelectedOptions functionality for single-select as well. Changed logic so that if isMulti is true and hideSelectedOptions is not defined, we will hide selected options by default. Explicitly setting hideSelectedOptions will override this behaviour. https://github.com/JedWatson/react-select/pull/2753 +* Updates to flow types, thanks [mike1808](https://github.com/mike1808), [himerus](https://github.com/himerus), +[teamable-software](https://github.com/teamable-software) and +* Bumped internal flow-bin dependency to 0.72.0, [#2646](https://github.com/JedWatson/react-select/pull/2646) thanks [lunij](https://github.com/lunij) +* Fixed [#2701](https://github.com/JedWatson/react-select/issues/2701), use of un-polyfilled array.includes() in Select.js, this has now been subbed out for a IE compatible implementation. +* [#2733](https://github.com/JedWatson/react-select/issues/2733), fixed classname bug to do with prefixing classes with modifiers. +* [#2723](https://github.com/JedWatson/react-select/issues/2732), fixed emotion compilation bug blocking loadingDot rendering. +* [#2749](https://github.com/JedWatson/react-select/pull/2749) fixed typo in docs. thanks [JuhQ](https://github.com/juhq) +* [#2717](https://github.com/JedWatson/react-select/pull/2717) added selected value to onChange to accommodate multi-select, thanks [SimeonC](https://github.com/simeonc) + +## v2.0.0-beta.6 / 2018-05-23 + +* Fixed bug with `css` attribute being wrongly applied to a DOM element in SingleValue. Thanks [guigs](http://github.com/guigs) +* Added `removedValue` to the `actionMeta` of the `remove-value` action that's passed into the `onChange` prop. +* Reverted previous change of `innerRef` in `innerProps` of custom Components to `ref`. The property is now once again named `innerRef`. This is mostly to resolve issues with styled-components not passing `ref` down to wrapped dom elements, however this is also a safer pattern to apply as it requires users providing their own custom components to explicitly associate the passed down ref with the requisite dom element. +* selectValue now filters items based on the getOptionValue method. Thanks (inv8der)[http://github.com/inv8der] +* Added `createOptionPosition` to creatable select to allow users to specify where the createOption element appears in the menu. +* Added touch handling logic to detect user intent to scroll the page when interacting with the select control. + +## v2.0.0-beta.5 / 2018-05-18 + +* Added `controlShouldRenderValue` prop, defaults to true. Setting it to false disables rendering values in the control. Thanks[Joss Mackison](http://github.com/jossmac) + +## v2.0.0-beta.4 / 2018-05-15 +* Fixed bug where transition props were being spread onto the DummyInput causing react warnings in the console. Thanks [Mike Gardner](https://github.com/MikeLimeRocket) + +## v2.0.0-beta.3 / 2018-05-14 + +**Note**: There is an important change in this release to the behaviour of `className`. + +Previously, `className` would control the class names applied to internal components +as well as the containing element. Now, the `className` prop only controls the class +name of the containing element, and the new prop `classNamePrefix` controls classes +applies to internal components. + +Until 2.0.0 final is released, we have added backwards compatibility and a deprecation +warning to cover this change. + +* Added `classNamePrefix` prop, which now controls the class names applied to internal components +* Refactored cx internal implementation to reduce specificity of css-in-jss base styles. +* `maxValueHeight` prop removed +* Added `--is-disabled` className modifier to Option component, thanks [eemeli](https://github.com/eemeli) +* Fixed various IE11 issues, see [#2583](https://github.com/JedWatson/react-select/issues/2583) +* Added multi-value keyboard navigation using left and right arrows. +* Simplified flow distribution, thanks [falconmick](https://github.com/falconmick) +* Added fix to ensure focus is on the Input when the menu opens + +## v2.0.0-beta.2 / 2018-04-25 + +* Switched from glam to [emotion](https://emotion.sh) for css-in-js +* Input colour can now be changed +* Use of React 16 Fragment removed, 2.0.0 should work with React 15 +* SSR support improved +* Indicator icons are now exported + +## v2.0.0-beta.1 / 2018-04-20 + +* Added `tabIndex` prop +* Added `classNames` prop +* Added upgrade guide from v1 --> v2 +* Fixed bug with overflowing long values in the control +* Fixed ie11 bug to do with absolutely positioned children in flex parent. +* Documentation ie11, styling and copy improvements + +## v2.0.0-alpha.11 / 2018-04-12 + +Minor fix since last alpha: + +* Fixed a flow type issue that was causing issues for consumers + +## v2.0.0-alpha.10 / 2018-04-10 + +Minor fix since last alpha: + +* Fixed an issue with `dist/react-select.es.js` where `babelHelpers` weren't defined + +## v2.0.0-alpha.9 / 2018-04-10 + +Ongoing rewrite. Major changes since last alpha: + +* Added `openMenuOnClick` and `openMenuOnFocus` props +* Significant test coverage and documentation improvements +* Added `onMenuScrollToTop` and `onMenuScrollToBottom` event props +* `scrollMenuIntoView` prop renamed `menuShouldScrollIntoView` +* `onKeyDown` now based on event.key not event.keyCode +* Component ids no longer have double separators +* Fixed a Firefox bug with `position: absolute` and `display: flex` +* Added support for fixed position menu and scroll blocking +* Fixed issue with transition group props being passed to child components +* Fixed issue with portalled menu display when `menuPlacement="top"` + +## v2.0.0-alpha.8 / 2018-02-20 + +Ongoing rewrite. Major changes since last alpha: + +* Made `focus` and `blur` methods work consistently when composing HOCs +* Added `menuPortalTarget` prop which portals the menu, with a `MenuPortal` component and `menuPortal` style key +* Allow the `MultiValueRemove` component children to be changed +* Lots of new tests, updates to documentation and examples + +## v2.0.0-alpha.7 / 2018-02-14 + +Ongoing rewrite. Major changes since last alpha: + +* Significantly improved touch and mobile support +* New positioning behaviour for the Menu +* Added `scrollMenuIntoView` prop, which does exactly what you'd expect +* Added action meta to the `onInputChange` event handler arguments +* `Creatable` Component Added +* `AsyncCreatable` Component Added +* Fixed an issue with the layout that would trigger a Firefox repaint bug +* Improved behaviour when the `isDisabled` prop value is changed +* The `IndicatorSeparator` isn't rendered when there is no `DropdownIndicator` +* Converted `StateManager` to a higher order component +* New website, docs, and more tests! (still WIP) +* Examples can now be launched in CodeSandbox, thanks to [Ben Conolly](https://github.com/noviny) + +## v2.0.0-alpha.6 / 2018-02-14 + +Ongoing rewrite. Major changes since last alpha: + +* `menuIsOpen`, `inputValue` and `value` are now controllable props that default to internal state +* Fixed missing loading indicator +* Added "open in code sandbox" to all examples +* Switched menu rendering from li to div tags for better screen reader usability +* Removed unused primitives and simplified indicator components +* Improved accessibility of groups and options, cleaned up Group implementation +* Fixed some input alignment issues +* Added right-to-left support with `isRtl` prop +* Support blocking page scroll at menu boundaries with `captureMenuScroll` prop +* Added automatic menu flipping at window boundaries with `menuPlacement` and `menuShouldFlip` props +* Added `isSearchable` prop to support simple (not searchable) select inputs +* Added `pageSize` prop + +## v2.0.0-alpha.5 / 2018-02-07 + +Ongoing rewrite. Major changes since last alpha: + +* Fixed an issue where animated values would show ellipsis while leaving +* Long single values are now also correctly truncated + +## v2.0.0-alpha.4 / 2018-02-06 + +Ongoing rewrite. Major changes since last alpha: + +* Added support for Promises in the Async component +* Added `setValue` method on the Select class +* More consistent use of `innerProps` for internal components +* Internal components are now provided a consistent set of props and API +* Improved handling of keyboard and mouse interaction for options in the menu +* Default filtering behaviour now has parity with v1 +* New `createFilter` method lets you customise the filter options +* Some unnecessary components have been removed for better performance +* Long values are now truncated + +## v2.0.0-alpha.3 / 2018-02-02 + +Ongoing rewrite. Major changes since last alpha: + +* Added `getOptionValue`, `getOptionLabel` and `formatOptionLabel` props +* Added `isOptionSelected` and `isOptionDisabled` props +* Added `name` and `delimiter` props to support hidden html inputs for forms +* Added `loadingMessage`, `noOptionsMessage` and `screenReaderStatus` props so messages can be customised +* Customisable components are now passed `innerProps` for simpler implementation +* Cleaned up internal Components and made sure they can all be styled +* Implemented customisable filtering function with support for case and diacritics +* Fixed various css bugs and vendor prefixing issues +* Accessibility improvements + +## v2.0.0-alpha.2 / 2018-01-25 + +Ongoing rewrite. Major changes since last alpha: + +* `Async` component added +* `styles` prop added to Select component +* `isLoading` prop to Select component and new indicator added +* Support added for disabled options +* Internal components cleaned up +* Cypress tests added +* CSS class names added to default components +* Accessibility improvements + +## v2.0.0-alpha.1 / 2018-01-12 + +Complete rewrite, docs and upgrade notes on changes from v1 to come later. + +## v1.2.1 / 2018-01-13 + +* Fixed blocking the Del key when deleteRemoves is false, thanks [Nachtigall, Jens (init)](https://github.com/jnachtigall) - [see PR](https://github.com/JedWatson/react-select/pull/2291) +* Fixed inline-block rendering for arrowRenderer without autosize, thanks [Harry Kao](https://github.com/harrykao) - [see PR](https://github.com/JedWatson/react-select/pull/2276) +* Fixed dropdown menu positioning issues in IE 11, thanks [jharris4](https://github.com/jharris4) - [see PR](https://github.com/JedWatson/react-select/pull/2273) +* Added missing rule to the `scss` stylesheet, thanks [Jordan Whitfield](https://github.com/mantissa7) - [see PR](https://github.com/JedWatson/react-select/pull/2280) +>>>>>>> master + +## v1.2.0 / 2018-01-08 + +* Source cleanup, thanks to [Yuri S](https://github.com/yuri-sakharov) and + [Charles Lee](https://github.com/gwyneplaine) - + [see PR](https://github.com/JedWatson/react-select/pull/2262) +* Switched from babel-preset-es2015 to babel-preset-env, thanks + [Rambabu Yadlapalli](https://github.com/RamYadlapalli) - + [see PR](https://github.com/JedWatson/react-select/pull/2254) +* Fixed focused option. Issue #2237, thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2245) +* Fix onSelectResetsInput bug from keyboard navigation, thanks + [Charles Lee](https://github.com/gwyneplaine) - + [see PR](https://github.com/JedWatson/react-select/pull/2259) +* Fixed all warnings on running tests, thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2231) +* Added missing tests for Option.js and refactored Option-test.js., thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2249) +* Added missing tests for Async.js, thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2250) +* Fixed console error in GitHub users example, thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2244) +* Fixed readme example. Issue #2235, thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2246) +* Regression fix for single select with onSelectResetsInput=false, thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2226) +* Pass placeholder prop to ValueComponent, thanks + [Aravind Srivatsan](https://github.com/aravindsrivats) - + [see PR](https://github.com/JedWatson/react-select/pull/2225) +* Refactored handleKeyDown switch, thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2228) +* onSelectResetsInput regression fixed, thanks + [Jed Watson](https://github.com/dehamilton) - + [see PR](https://github.com/JedWatson/react-select/pull/2215) +* Don't open drop down menu when clear values, thanks + [Jed Watson](https://github.com/Chopinsky) - + [see PR](https://github.com/JedWatson/react-select/pull/2198) +* Clear input value on receiving props with another value., thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2183) +* Fix/is option unique crash, thanks [Jacob Zuo](https://github.com/Chopinsky) - + [see PR](https://github.com/JedWatson/react-select/pull/2185) +* Use react-input-autosize v2.1.2 for guard against undefined window, thanks + [DStyleZ](https://github.com/sximba) - + [see PR](https://github.com/JedWatson/react-select/pull/2187) +* Fix issue #2182, thanks [Kurt Hoyt](https://github.com/kurtinatlanta) - + [see PR](https://github.com/JedWatson/react-select/pull/2213) +* Documenting behavior of onBlurResetsInput in the readme., thanks + [hobbsl](https://github.com/levininja) - + [see PR](https://github.com/JedWatson/react-select/pull/2212) +* Use onSelectResetsInput for single select, thanks + [lachiet](https://github.com/lachiet) - + [see PR](https://github.com/JedWatson/react-select/pull/2205) +* Fix state value in README example, thanks + [Srishan Bhattarai](https://github.com/srishanbhattarai) - + [see PR](https://github.com/JedWatson/react-select/pull/2192) +* document breaking change of removing getInputValue, thanks + [Turadg Aleahmad](https://github.com/turadg) - + [see PR](https://github.com/JedWatson/react-select/pull/2195) +* Fixed search for invalid label and/or value, thanks + [Yuri S](https://github.com/yuri-sakharov) - + [see PR](https://github.com/JedWatson/react-select/pull/2179) + +## v1.1.0 / 2017-11-28 + +* added; more props are passed to the Option component: `focusOption`, + `inputValue`, `selectValue`, `removeValue` +* added; the `inputValue` is passed as the third argument to the + `optionRenderer` +* fixed; issues opening the menu correctly for multiselect when + `autosize={false}` +* fixed; removed `event.stopPropagation()` from Select's `clearValue` and + `onClick` handlers, thanks [Thomas Burke](https://github.com/etburke) +* fixed; `handleMouseDownOnArrow` when `openOnClick={false}`, thanks + [elias ghali](https://github.com/elghali) +* fixed; conditional scrolling into view of focused option, thanks + [Michael Lewis](https://github.com/mtlewis) + +## v1.0.1 / 2017-11-24 + +* reintroduced source files for scss and less stylesheets into the npm package + +## v1.0.0 / 2017-11-23 + +* breaking; removed `getInputValue` function - + [see PR](https://github.com/JedWatson/react-select/pull/2108) +* reverted spacebar-selects-option behaviour for searchable selects, thanks + [Charles Lee](https://github.com/gwyneplaine) - + [see PR](https://github.com/JedWatson/react-select/pull/2163) +* fixed behaviour where async doesn't handle onInputChange returning a value, + thanks [Anton](https://github.com/tehbi4) - + [see PR](https://github.com/JedWatson/react-select/pull/2133) +* fixed Creatable bug where the first enter keypress is ignored when + `promptTextCreator` returns only the label, thanks + [George Karagkiaouris](https://github.com/karaggeorge) - + [see PR](https://github.com/JedWatson/react-select/pull/2140) +* Utility functions are now exported from the es6 build, thanks + [Deiru](https://github.com/Deiru2k) - + [see PR](https://github.com/JedWatson/react-select/pull/2154) +* Update aria-only class to have absolute positioning, thanks + [Jacob Hilker](https://github.com/JHilker) - + [see PR](https://github.com/JedWatson/react-select/pull/1243) +* gives possibility to use ref property for Creatable, thanks + [blacktemplar](https://github.com/blacktemplar) - + [see PR](https://github.com/JedWatson/react-select/pull/1646) +* Adds lint and test pre-commit hooks, thanks + [carymcpoland](https://github.com/mcpolandc) - + [see PR](https://github.com/JedWatson/react-select/pull/2077) +* Disable some browser-specific behaviours that break the input, thanks + [Jed Watson](https://github.com/JedWatson) - + [see PR](https://github.com/JedWatson/react-select/pull/2101) +* onOpen: run after dom has rendered, thanks + [Karl-Aksel Puulmann](https://github.com/macobo) - + [see PR](https://github.com/JedWatson/react-select/pull/#1756) +* fix not clearing when given invalid values, from #1756, thanks + [Mário][https://github.com/ticklemynausea] - + [see PR](https://github.com/JedWatson/react-select/pull/2100) +* Exports Option Component, thanks + [Erkelens, Jan Paul](https://github.com/jperkelens) - + [see PR](https://github.com/JedWatson/react-select/pull/2097) +* Fix/numeric multi select, thanks + [Charles Lee](https://github.com/gwyneplaine) - + [see PR](https://github.com/JedWatson/react-select/pull/2086) +* removeSelected prop (round 2), for optionally keeping selected values in + dropdown, thanks [Jed Watson](https://github.com/banderson) - + [see PR](https://github.com/JedWatson/react-select/pull/1891) +* pass removeValue() and always pass valueArray, thanks + [kcliu](https://github.com/kcliu) - + [see PR](https://github.com/JedWatson/react-select/pull/1850) +* Accessibility Enhancements - Aria tags, Space/Enter keys, thanks + [sushmabadam](https://github.com/sushmabadam) - + [see PR](https://github.com/JedWatson/react-select/pull/1428) +* added rtl support, thanks [Dekel](https://github.com/dekelb) - + [see PR](https://github.com/JedWatson/react-select/pull/1613) +* Add inputValue to menuRenderer, thanks + [headcanon](https://github.com/chronick) - + [see PR](https://github.com/JedWatson/react-select/pull/1732) +* fix typo in handleKeyDown method, thanks + [jasonchangxo](https://github.com/jasonchangxo) - + [see PR](https://github.com/JedWatson/react-select/pull/2088) +* Fix/numeric multi select, thanks + [Charles Lee](https://github.com/gwyneplaine) - + [see PR](https://github.com/JedWatson/react-select/pull/2086) +* expose children in AsyncCreatable.js, thanks + [Charles Lee](https://github.com/gwyneplaine) - + [see PR](https://github.com/JedWatson/react-select/pull/2084) +* replace trim fn loop with regex, thanks + [Charles Lee](https://github.com/gwyneplaine) - + [see PR](https://github.com/JedWatson/react-select/pull/2085) +* Trim search text from beginning and the end. (fixes #1861), thanks + [Serkan Ozer](https://github.com/serkanozer) - + [see PR](https://github.com/JedWatson/react-select/pull/1862) +* Add variable for focused input background, thanks + [Aron Strandberg](https://github.com/aronstrandberg) - + [see PR](https://github.com/JedWatson/react-select/pull/1998) +* Added id in the input select, thanks + [thecreazy](https://github.com/thecreazy) - + [see PR](https://github.com/JedWatson/react-select/pull/2027) +* adding a nvmrc file and adding coverage to eslintignore, thanks + [Dave Birch](https://github.com/uxtx) - + [see PR](https://github.com/JedWatson/react-select/pull/1137) +* Updated the comment for the deleteRemoves option., thanks + [Abul Dider](https://github.com/dider7) - + [see PR](https://github.com/JedWatson/react-select/pull/2078) +* implemented optional rendering of arrow, thanks + [rolandjohann](https://github.com/rolandjohann) - + [see PR](https://github.com/JedWatson/react-select/pull/1761) +* Skip rendering arrow wrapper when custom arrow renderer returns falsy value, + thanks [Mike Lewis](https://github.com/mtlewis) - + [see PR](https://github.com/JedWatson/react-select/pull/2055) +* do not show clear button if value is an empty string, thanks + [Marie Godon](https://github.com/mariegodon) - + [see PR](https://github.com/JedWatson/react-select/pull/2074) +* Set isLoading to false if cache hit, thanks + [timhwang21](https://github.com/timhwang21) - + [see PR](https://github.com/JedWatson/react-select/pull/2042) +* Add aria-labels to Options, thanks + [jasonchangxo](https://github.com/jasonchangxo) - + [see PR](https://github.com/JedWatson/react-select/pull/2036) +* Adds source links to each example, thanks + [Damon Bauer](https://github.com/damonbauer) - + [see PR](https://github.com/JedWatson/react-select/pull/2051) +* Issue #2056: onInputChange should return modified value, thanks + [Caleb Scholze](https://github.com/cscholze) - + [see PR](https://github.com/JedWatson/react-select/pull/2057) +* Remove option `addLabelText` from README and propTypes, thanks + [Jannes Jeising](https://github.com/jjeising) - + [see PR](https://github.com/JedWatson/react-select/pull/2040) +* GitHub has a capital H, thanks + [David Baumgold](https://github.com/singingwolfboy) - + [see PR](https://github.com/JedWatson/react-select/pull/2053) +* refactor componentWillUnmount(), thanks + [riophae](https://github.com/riophae) - + [see PR](https://github.com/JedWatson/react-select/pull/2064) +* Slim down NPM package, thanks [Valentin Agachi](https://github.com/avaly) - + [see PR](https://github.com/JedWatson/react-select/pull/2062) +* Update contributing doc, thanks [Gregg Brewster](https://github.com/greggb) - + [see PR](https://github.com/JedWatson/react-select/pull/2059) +* strip proptypes in production build (fixes #1882), thanks + [Jochen Berger](https://github.com/jochenberger) - + [see PR](https://github.com/JedWatson/react-select/pull/2003) +* Support Webpack 2, Webpack 3, rollup., thanks + [Matthew Schnee](https://github.com/mschnee) - + [see PR](https://github.com/JedWatson/react-select/pull/2020) +* Add missing semicolon, thanks + [jochenberger](https://github.com/jochenberger) - + [see PR](https://github.com/JedWatson/react-select/pull/2018) +* autofocus --> autoFocus, thanks + [Charles Lee](https://github.com/gwyneplaine) - + [see PR](https://github.com/JedWatson/react-select/pull/2002) +* Async> cache async response regardless of req order, thanks + [Timothy Hwang](https://github.com/timhwang21) - + [see PR](https://github.com/JedWatson/react-select/pull/2012) +* Make this work in preact., thanks [liaoxuezhi](https://github.com/2betop) - + [see PR](https://github.com/JedWatson/react-select/pull/2013) +* Correct release candidate version on README, thanks + [Damon Aw](https://github.com/daemonsy) - + [see PR](https://github.com/JedWatson/react-select/pull/2017) +* Fix test name, thanks [jochenberger](https://github.com/jochenberger) - + [see PR](https://github.com/JedWatson/react-select/pull/2005) +* Fixing css states to be scoped with Select selector, closes #1951., thanks + [Adam Girton](https://github.com/agirton) - + [see PR](https://github.com/JedWatson/react-select/pull/2000) +* fix typo, thanks [jochenberger](https://github.com/jochenberger) - + [see PR](https://github.com/JedWatson/react-select/pull/1999) + +## v1.0.0-rc.10 / 2017-09-13 + +* changed; `openAfterFocus` prop has been renamed to `openOnClick`, and now + defaults to `true` +* fixed; React.PropTypes deprecation warning, thanks + [Jeremy Liberman](https://github.com/MrLeebo) +* improved; scrolling behaviour when navigating the menu with the keyboard, + thanks [boatkorachal](https://github.com/boatkorachal) +* fixed; error with the `Async` cache when you type `"hasOwnProperty"`, thanks + [SuhushinAS](https://github.com/SuhushinAS) + +## v1.0.0-rc.9 / 2017-09-13 + +* fixed; clearable padding style, thanks + [Minori Miyauchi](https://github.com/mmiyauchi) +* fixed; removed use of `Object.assign`, fixes IE compatibility +* added; new `closeOnSelect` prop (defaults to `true`) that controls whether the + menu is closed when an option is selected, thanks to + [Michael Elgar](https://github.com/melgar) for the original idea +* changed; by default, the menu for multi-selects now closes when an option is + selected +* changed; `Async` component no longer always clears options when one is + selected (although the menu is now closed by default). Use + `closeOnSelect={false} onSelectResetsInput={false}` to leave the menu open. +* fixed; `Async` component always called `onChange` even when it wasn't provided +* fixed; input lag for the `Async` component when results are returned from + cache +* fixed; required was not being updated without an onChange handler +* fixed; peer dependencies for `prop-types`, thanks + [Michaël De Boey](https://github.com/MichaelDeBoey) +* fixed; internal optimisations, thanks + [Kieran Boyle](https://github.com/dysfunc) +* added; `Value` component is now exported, thanks + [Prof Gra](https://github.com/Grahack) +* fixed; callback fired after `Async` component unmounts, thanks + [Andrew Russell](https://github.com/DeadHeadRussell) +* fixed; wrapping on Firefox in SCSS files, thanks + [Michael Williamson](https://github.com/mwilliamson) + +## v1.0.0-rc.8 / 2017-09-12 + +* fixed; `onMenuScrollToBottom` does not work in chrome 58.0, thanks + [Simon Hartcher](https://github.com/deevus) +* fixed; missing es6 module build for `js:next` entrypoint +* updated; `react-input-autosize@2.0.0` including several fixes for react-select + (see + [changes](https://github.com/JedWatson/react-input-autosize/blob/master/HISTORY.md)) + +## v1.0.0-rc.7 / 2017-09-11 + +* fixed; issue with `lib` build preventing use in ES2015 environments + +## v1.0.0-rc.6 / 2017-09-10 + +* fixed; changing `required` prop from `true` to `false` now works as expected, + thanks [George Karagkiaouris](https://github.com/karaggeorge) +* added; new prop `onSelectResetsInput` controls whether the input value is + cleared when options are selected, thanks + [David Roeca](https://github.com/davidroeca) and + [Alexander Nosov](https://github.com/nosovsh) +* fixed; tabindex parent bug fix for Edge, thanks + [George Payne](https://github.com/George-A-Payne) +* fixed; update selectize link in README.md, thanks + [kerumen](https://github.com/kerumen) +* added; standard issue template, thanks [agirton](https://github.com/agirton) +* added; new build process using rollup and webpack. Removed grunt. thanks + [gwyneplaine](https://github.com/gwyneplaine) +* fixed; updated contributor docs with the correct node version reference + [gwyneplaine](https://github.com/gwyneplaine) +* fixed; missing method binds in Option, thanks + [agirton](https://github.com/agirton) +* fixed; converted components to use es6 classes, thanks + [jochenberger](https://github.com/jochenberger) +* fixed; console.log example in usage docs, thanks + [rohmanhm](https://github.com/rohmanhm) +* fixed; hide create option after closing menu, thanks + [andreme](https://github.com/andreme) +* fixed; remove circular reference, thanks [agirton](https://github.com/agirton) +* fixed; readme typo, thanks [ieldanr](https:/github.com/ieldanr) +* fixed; add missing function binds in Option component, thanks + [agirton](https://github.com/agirton) and + [blacktemplar](https://github.com/blacktemplar) +* fixed; re-added fix to + [#1580](https://github.com/JedWatson/react-select/issues/1580), thanks + [agirton](https://github.com/agirton) +* fixed; avoid mutating user inputs when ignoring case/accents, thanks + [not-an-aardvark](https://github.com/not-an-aardvark) +* fixed; issues synchronising options props in `Async`, thanks + [cbergmiller](https://github.com/cbergmiller) +* fixed; backspace handling for non-multi select controls, thanks + [Jeremy Liberman](https://github.com/MrLeebo) + +## v1.0.0-rc.5 / 2017-05-25 + +* fixed; Allow `falsey` values to be clearable, thanks + [Simon Gaestel](https://github.com/sgaestel) +* fixed; issue where Firefox would crash due to incorrect use of `aria-owns` + attribute, thanks [Max Hubenthal](https://github.com/mhubenthal) +* fixed; regression where options not using the value key couldn't be focused, + thanks [Benjamin Piouffle](https://github.com/Betree) + +## v1.0.0-rc.4 / 2017-05-14 + +* fixed; no more warning when using React 15.5, thanks + [Adam Girton](https://github.com/agirton) +* fixed; issue comparing objects in `getFocusableOptionIndex`, thanks + [rndm2](https://github.com/rndm2) +* fixed; missing .focus() method in `Creatable`, thanks + [Anton Alexandrenok](https://github.com/the-spyke) +* added; support for `aria-describedby` attribute, thanks + [Eric Lee](https://github.com/ericj17) +* added; `.is-clearable` className when clearable is true, thanks + [Dan Diaz](https://github.com/dan-diaz) + +## v1.0.0-rc.3 / 2017-02-01 + +* added; `arrowRenderer` prop, thanks [Brian Vaughn](https://github.com/bvaughn) +* added; child-function support to `Async` and `Creatable` components so that + they can compose each other (or future HOCs), thanks + [Brian Vaughn](https://github.com/bvaughn) +* added; `asyncCreatable` HOC that combines `Async` and `Creatable` so they can + be used together, thanks [Brian Vaughn](https://github.com/bvaughn) +* added; undocumented arguments for `menuRenderer`, thanks + [Julian Krispel-Samsel](https://github.com/juliankrispel) +* fixed; Do not focus and open menu when disabled, thanks + [nhducit](https://github.com/nhducit) +* fixed; Scrolling with arrow-keys is not working correctly, thanks + [Damian Pieczynski](https://github.com/piecyk) +* added; "select all text" functionality `Shift+Home|Del`, thanks + [Damian Pieczynski](https://github.com/piecyk) +* added; support for `boolean` values, thanks + [Aaron Hardy](https://github.com/Aaronius) +* fixed; Remove duplicated `promptTextCreator` field from readme, thanks + [Jih-Chi Lee](https://github.com/jihchi) +* fixed; Adding back ref that was removed in rc2, thanks + [Martin Jujou](https://github.com/jooj123) +* fixed; `Creatable` component doesn't allow input key down handling, thanks + [Ivan Leonenko](https://github.com/IvanLeonenko) +* added; Allow react nodes to be passed as loadingPlaceholder, thanks + [Daniel Heath](https://github.com/DanielHeath) +* fixed; IE8 compatibility issues, thanks + [Kirill Mesnyankin](https://github.com/strayiker) +* improved; Allow users to specify noResultsText, thanks + [Daniel Heath](https://github.com/DanielHeath) +* added; Only remove options if a loading placeholder is available, thanks + [Daniel Heath](https://github.com/DanielHeath) +* fixed; firefox display items in two rows due to reflow, thanks + [Daniel Heath](https://github.com/DanielHeath) +* fixed; `Creatable` readme typo, thanks [Ben](https://github.com/rockingskier) +* fixed; explain way to implement `allowCreate` functionality with `Creatable` + to readme, thanks [mayerwin](https://github.com/mayerwin) +* added; delete key removes an item when there is no input, thanks + [forum-is](https://github.com/forum-is) +* added; `onNewOptionClick` handler for `Creatable`, thanks + [Lee Siong Chan](https://github.com/leesiongchan) +* fixed; `onInputChange` consistent for `Creatable`, thanks + [Lee Siong Chan](https://github.com/leesiongchan) +* fixed; `menuRenderer` is treated consistently between `Creatable` and + `Select`, thanks [Brian Vaughn](https://github.com/bvaughn) +* fixed; `asyncCreatable` options parsing will not parse undefined values into + props, thanks [Romain Dardour](https://github.com/unity) +* added; pass `inputProps` to `inputRenderer`, thanks + [Alec Winograd](https://github.com/awinograd) +* fixed; no exception when clearing an Async field that is not set to multi, + thanks [Patrik Stutz](https://github.com/VanCoding) +* added; allow rendering a custom clear component, thanks + [Conor Hastings](https://github.com/conorhastings) +* fixed; document `ignoreAccents`, thanks + [Domenico Matteo](https://github.com/dmatteo) +* fixed; arrowing up or down in `Select` with 0 options does not throw type + error, thanks [Alex Howard](https://github.com/thezanke) +* fixed; `Creatable` handles null children prop, thanks + [Jack Coulter](https://github.com/jscinoz) +* added; provide `isOpen` to arrowRenderer, thanks + [Kuan](https://github.com/khankuan) +* fixed; re-added the `focus()` method on `Select.Async`, thanks, + [Maarten Claes](https://github.com/mcls) +* fixed; focus the next available option after a selection, not the top option, + thanks [Nicolas Raynaud](https://github.com/nraynaud) + +Note there has also been a breaking change to the props for the `Async` +component: both `minimumInput` and `searchingText` have been removed. See #1226 +for more details. Apologies for doing this in an RC release, but we had to trade +off between resolving some important bugs and breaking the API, and figured it +was better to do this before declaring 1.0.0 stable. + +## v1.0.0-rc.1 / 2016-09-04 + +* fixed; reset value to `[]` when `multi=true`, thanks + [Michael Williamson](https://github.com/mwilliamson) +* added; pass index to `renderLabel` method, thanks + [nhducit](https://github.com/nhducit) +* fixed; uncontrolled to controlled component warning in React 15.3 +* fixed; props cleanup, thanks + [Forbes Lindesay](https://github.com/ForbesLindesay) +* fixed; issue where a value of the number `0` would be assumed to be no value, + thanks [Hanwen Cheng](https://github.com/hanwencheng) +* fixed; internal refs converted to callbacks instead of strings, thanks + [Johnny Nguyen](https://github.com/gojohnnygo) +* added; optional `instanceId` prop for server-side rendering, thanks + [Jevin Anderson](https://github.com/JevinAnderson) +* added; `onCloseResetsInput` prop, thanks + [Frankie](https://github.com/frankievx) +* added; `Creatable` component, replaces pre-1.0 `allowCreate` prop, thanks + [Brian Vaughn](https://github.com/bvaughn) + +## v1.0.0-beta14 / 2016-07-17 + +* fixed; `react-input-autosize` has been udpated to `1.1.0`, which includes + fixes for the new warnings that React 15.2 logs +* fixed; "Unknown prop `inputClassName` on
tag" warning, thanks + [Max Stoiber](https://github.com/mxstbr) +* fixed; Removed unnecessary `onUnfocus`, thanks + [Johnny Nguyen](https://github.com/gojohnnygo) +* added; Support for react components in `searchPromptText`, thanks + [Matt](https://github.com/hellaeon) +* fixed; focus bug on iOS, thanks + [Tony deCatanzaro](https://github.com/tonydecat) +* fixed; Async bugs with Promises, thanks + [Vladimir](https://github.com/VladimirPal) and + [Ian Firkin](https://github.com/lobsteropteryx) +* fixed; `searchingText` bug, thanks + [Tony deCatanzaro](https://github.com/tonydecat) +* improved; More antive-like input behaviour, thanks + [Johnny Nguyen](https://github.com/gojohnnygo) +* fixed; Added missing unit (px) to `minWidth` attribute, thanks + [Ian Witherow](https://github.com/ianwitherow) +* added; Support for assistive technologies, thanks + [Dave Brotherstone](https://github.com/bruderstein) +* fixed; React error if `onChange` callback causes a root component to unmount, + thanks [Nathan Norton](https://github.com/Xesued) +* fixed; Open menu is now closed if `disabled` becomes true, thanks + [Jason Moon](https://github.com/jsnmoon) +* fixed; Prevent `getFocusableOptionIndex` from returning a disabled option, + thanks [Brian Powers](https://github.com/brianspowers) +* added; Home, End, Page Up/Down support, thanks + [Jason Kadrmas](https://github.com/blackjk3) +* fixed; Don't render `backspaceToRemoveMessage` if `backspaceRemoves` is set to + false, thanks [Ryan Zec](https://github.com/ryanzec) +* fixed; Issue with an outline appearing on the auto sized input, thanks + [Ryan Zec](https://github.com/ryanzec) +* fixed; Events don't propagate when `esc` is pressed, thanks + [Yoshihide Jimbo](https://github.com/jmblog) +* fixed; Update `required` prop based on nextProps on update, thanks + [Matt Shwery](https://github.com/mshwery) +* fixed; On focus check whether input ref is a real input or an input component, + thanks [Peter Brant](https://github.com/pbrant) and + [Greg Poole](https://github.com/gpoole) + +Also a big thanks to [Brian Vaughn](https://github.com/bvaughn) for his help +triaging issues for this release! + +## v1.0.0-beta13 / 2016-05-30 + +* added; `inputRenderer` prop, allows you to override the input component, + thanks [Sean Burke](https://github.com/leftmostcat) +* added; `openOnFocus` prop, causes the menu to always open when the select + control is focused, thanks + [HuysentruytRuben](https://github.com/HuysentruytRuben) +* added; `react-virtualised-select` HOC example, thanks + [Brian Vaughn](https://github.com/bvaughn) +* added; `tabSelectsValue` prop can be set to false to prevent selection of + focused option when tab is pressed, thanks + [Byron Anderson](https://github.com/byronanderson) +* added; ability to override `resetValue` when clearing the control, thanks + [Alexander Luberg](https://github.com/LubergAlexander) +* added; input can be updated with `onInputChange`, thanks + [Brett DeWoody](https://github.com/brettdewoody) +* added; Styles for .is-selected class, thanks + [Danny Herran](https://github.com/dherran) +* fixed; `noResultsText` prop type is now `stringOrNode` for Async component, + thanks [Michael Groeneman](https://github.com/mgroeneman) +* fixed; `onInputChange` is wrapped by Async component, thanks + [Eric O'Connell](https://github.com/drd) +* fixed; `scrollMenuIntoView` behaviour in IE10, thanks + [Ivan Jager](https://github.com/aij) +* fixed; isEqualNode replaced with strict equality check, thanks + [Alexandre Balhier](https://github.com/abalhier) +* fixed; issue with value object not being passed to `handleRequired`, thanks + [Andrew Hite](https://github.com/andyhite) +* fixed; the menu-outer container is no longer rendered when it does not contain + anything, thanks [Kuan](https://github.com/khankuan) +* improved; better support for IE8 in styles, thanks + [Rockallite Wulf](https://github.com/rockallite) + +## v1.0.0-beta12 / 2016-04-02 + +* added; `menuRenderer` method and example for effeciently rendering thousands + of options, thanks [Brian Vaughn](https://github.com/bvaughn) +* added; `optionClassName` prop, thanks [Max Tyler](https://github.com/iam4x) + +## v1.0.0-beta11 / 2016-03-09 + +* updated dependencies to allow use with React 15.x +* changed; multiple selected values are now submitted using multiple inputs, + thanks [Trinh Hoang Nhu](https://github.com/james4388) +* added; `joinValues` prop to revert the above change and submit multiple values + in a single field with the delimiter + +## v1.0.0-beta10 / 2016-02-23 + +* fixed build issues with v1.0.0-beta9 + +## v1.0.0-beta9 / 2016-02-12 + +* added; onBlurResetsInput prop, thanks + [Sly Bridges](https://github.com/slybridges) +* changed; Enter selects and retains focus, Tab selects and shifts focus, thanks + [RDX](https://github.com/rdsubhas) +* fixed; Hide noResultsText when value is falsy, thanks + [Fernando Alex Helwanger](https://github.com/fhelwanger) +* added; `required` prop, adds HTML5 required attribute, thanks + [Domenico Matteo](https://github.com/dmatteo) +* fixed; Touch drag behaviour, thanks + [Pavel Tarnopolsky](https://github.com/Paveltarno) +* added; `onOpen` and `onClose` event props, thanks + [Jacob Page](https://github.com/DullReferenceException) +* fixed; Pressing Enter on open Select should stop propagation, thanks + [Jeremy Liberman](https://github.com/MrLeebo) +* fixed; Missing handleMouseDownOnMenu, thanks + [Jeremy Liberman](https://github.com/MrLeebo) +* added; Ensures the selected option is immediately visible when the menu is + open, thanks [Martin Jujou](https://github.com/jooj123) +* added; `autoBlur` prop, blurs the input when a value is selected, thanks + [Pavel Tarnopolsky](https://github.com/Paveltarno) +* fixed; Several isFocused checks weren't working properly + +## v1.0.0-beta8 / 2015-12-20 + +* fixed; input focus bug when toggling `disabled` prop, thanks + [Davide Curletti](https://github.com/dcurletti) +* fixed; `focus()` is now exposed on the `Async` component, thanks + [AugustinLF](https://github.com/AugustinLF) + +## v1.0.0-beta7 / 2015-12-15 + +* You can now use React elements for placeholders and the text props, thanks + [kromit](https://github.com/kromit) and + [Alyssa Biasi](https://github.com/alyssaBiasi) +* Fixed a problem where the border doesn't show when the element is inside a + table, thanks [Rodrigo Boratto](https://github.com/rwrz) +* New prop `scrollMenuIntoView` scrolls the viewport to display the menu, thanks + [Alexander Zaharakis](https://github.com/azaharakis) +* New LESS / SCSS variable `select-option-bg` lets you control the menu option + background color, thanks [Evan Goldenberg](https://github.com/Naveg) +* Fixed an error in the blur handler on IE when the menu is not visible, thanks + [Gaston Sanchez](https://github.com/gaastonsr) +* Added support for a `clearableValue` option property in `multi` mode, thanks + [Sly Bridges](https://github.com/slybridges) + +## v1.0.0-beta6 / 2015-11-29 + +* Test suite complete and passing, with a couple of minor fixes thanks to + @bruderstein + +## v1.0.0-beta5 / 2015-11-08 + +* Fixes issues relating to serializing simple values into the hidden field + +## v1.0.0-beta4 / 2015-11-08 + +* New default styles that match [Elemental UI](http://elemental-ui.com) and look + right at home in the new [KeystoneJS Admin UI](http://keystonejs.com) + +We're potentially going to ship some theme stylesheets in the future, shout out +on GitHub if this interests you. + +## v1.0.0-beta3 / 2015-11-08 + +* The selected value populated in the hidden field has been fixed (was `"[object Object]"` before) +* Added new `autofocus` prop +* Fixed duplicate key error for options and values with duplicate `value` + properties +* SCSS variables now have `!default` so you can override them + +## v1.0.0-beta2 / 2015-11-06 + +Changed since beta 1: + +* Async options cache works again +* New style props for custom styling the component without modifying css + classes: `style` `wrapperStyle` `menuStyle` `menuContainerStyle` +* The menu opens and closes correctly when `searchable={false}`, there is still + some work to do on this use-case + +## v1.0.0-beta1 / 2015-11-06 + +This is a complete rewrite. Major changes include: + +* Everything is simpler (I'm nearly done and the source code is only 60% of the + size of the last version) +* No more timeouts or weird handlers, the restructuring has let me make + everything more straight-forward +* The options array is no longer preprocessed into state, just retrieved from + props +* The values array is now initialised in the Options array during render, and + not stored in state, which along with the change to options makes the + component more reliable and fixes issues with props not updating correctly +* The component no longer stores its own value in state (ever) - it needs to be + passed as a prop and handled with `onChange`. +* Complex values are now enabled by default (so you're passed the option object, + not its value); you can enable the legacy mode with a prop +* The Value and Option components have been cleaned up as well for consistency +* The hidden `` field is now optional and the component is better suited + to use in a rich React.js app than it was +* You can disable options filtering to do the filtering externally with + `onInputChange` +* Accents on characters can now be ignored +* The `asyncOptions` prop has been replaced by a new wrapper component: + `Select.Async` + +Note that "Tag mode" (creating options on the fly) isn't reimplemented yet. + +A full guide to the breaking changes and new features will be written up soon. +In the meantime please see the new examples. + +## v0.9.1 / 2015-11-01 + +* added; new Contributors example w/ async options loading and custom value / + label keys +* fixed; several issues with custom `valueKey` and `labelKey` props +* fixed; autoload now loads options with no search input + +## v0.9.0 / 2015-10-29 + +* added; SCSS stylesheets! +* improved; Options rendering should be more performant +* breaking change; Custom `Option` components now need to pass their `option` + prop to event handlers; see + [this commit](https://github.com/JedWatson/react-select/commit/89af12a80a972794222b193a767f44234bbe9817) + for an example of the required change. + +## v0.8.4 / 2015-10-27 + +* fixed; LESS math operations now work with --strict-math=on, thanks + [Vincent Fretin](https://github.com/vincentfretin) + +## v0.8.3 / 2015-10-27 + +* fixed; IE issue where clicking the scrollbar would close the menu, thanks + [Pete Nykänen](https://github.com/petetnt) + +## v0.8.2 / 2015-10-22 + +* added; Promise support for `loadAsyncOptions`, thanks + [Domenico Matteo](https://github.com/dmatteo) + +## v0.8.1 / 2015-10-20 + +* fixed; `loadAsyncOptions` raises TypeError in setup, see #439 for details, + thanks [Pancham Mehrunkar](https://github.com/pancham348) + +## v0.8.0 / 2015-10-19 + +This release contains significant DOM structure and CSS improvements by +@jossmac, including: + +* no more `position: absolute` for inner controls +* `display: table` is used for layout, which works in IE8 and above, and + [all other modern browsers](http://caniuse.com/#feat=css-table) +* less "magic numbers" used for layout, should fix various browser-specific + alignment issues +* clear "x" control now animates in +* clearer `.Select--multi` className replaces `.Select.is-multi` +* new height & theme variables +* "dropdown" indicator chevron is no longer displayed for multi-select controls + +There are no functional changes, but if you've forked the LESS / CSS to create +your own theme you'll want to pay close attention to PR #527 when upgrading to +this version. + +## v0.7.0 / 2015-10-10 + +React Select is updated for React 0.14. If you're still using React 0.13, please +continue to use `react-select@0.6.x`. There are no functional differences +between v0.7.0 and v0.6.12. + +Additionally, our tests now require Node.js 4.x. If you are developing +`react-select`, please make sure you are running the latest version of node. + +Thanks to @bruderstein, @dmatteo and @hull for their help getting these updates +shipped! + +## v0.6.12 / 2015-10-02 + +* added; `labelKey` and `valueKey` props, so you can now use different keys in + `option` objects for the label and value +* fixed; additional `isMounted()` checks in timeouts +* fixed; componentDidUpdate timeout is reset correctly, see #208 and #434, + thanks [Petr Gladkikh](https://github.com/PetrGlad) +* fixed; mousedown event on scrollbar in menu no longer hides it, thanks + [Yishai Burt](https://github.com/burtyish) + +## v0.6.11 / 2015-09-28 + +* added; `isLoading` prop, allows indication of async options loading in + situations where more control is required, thanks + [Jon Gautsch](https://github.com/jgautsch) + +## v0.6.10 / 2015-09-24 + +* fixed; a build issue with the previous release that prevented the stylesheet + being generated / included +* fixed; a LESS syntax issue, thanks [Bob Cardenas](https://github.com/bcardi) + +## v0.6.9 / 2015-09-19 + +* added; `style` key for package.json, thanks + [Stephen Wan](https://github.com/stephen) +* added; `onInputChange` handler that returns the current input value, thanks + [Tom Leslie](https://github.com/lomteslie) +* fixed; simplifying handleKey function & preventDefault behaviour, thanks + [davidpene](https://github.com/davidpene) +* fixed; Display spinner while auto-loading initial data, thanks + [Ben Jenkinson](https://github.com/BenJenkinson) +* fixed; better support for touch events, thanks + [Montlouis-Calixte Stéphane](https://github.com/bulby97) +* fixed; prevent value splitting on non-multi-value select, thanks + [Alan R. Soares](https://github.com/alanrsoares) + +## v0.6.8 / 2015-09-16 + +* fixed; broader range of allowed prereleases for React 0.14, including rc1 +* fixed; preventing backspace from navigating back in the browser history, + thanks [davidpene](https://github.com/davidpene) + +## v0.6.7 / 2015-08-28 + +* fixed; missing styles for `.Select-search-prompt` and `.Select-searching` + issues, thanks [Jaak Erisalu](https://github.com/jaakerisalu) and + [davidpene](https://github.com/davidpene) + +## v0.6.6 / 2015-08-26 + +* fixed; issue in Chrome where clicking the scrollbar would close the menu, + thanks [Vladimir Matsola](https://github.com/vomchik) + +## v0.6.5 / 2015-08-24 + +* fixed; completely ignores clicks on disabled items, unless the target of the + click is a link, thanks [Ben Stahl](https://github.com/bhstahl) + +## v0.6.4 / 2015-08-24 + +This release includes a huge improvement to the examples / website thanks to +@jossmac. Also: + +* added; support for React 0.14 beta3 +* fixed; disabled options after searching, thanks @bruderstein +* added; support for "Searching..." text (w/ prop) while loading async results, + thanks @bruderstein and @johnomalley +* added; `className`, `style` and `title` keys are now supported in option + properties, thanks @bruderstein + +## v0.6.3 / 2015-08-18 + +Otherwise known as "the real 0.6.2" this includes the updated build for the last +version; sorry about that! + +## v0.6.2 / 2015-08-13 + +* changed; if the `searchable` prop is `false`, the menu is opened _or closed_ + on click, more like a standard Select input. thanks + [MaaikeB](https://github.com/MaaikeB) + +## v0.6.1 / 2015-08-09 + +* added; Support for options with numeric values, thanks + [Dave Brotherstone](https://github.com/bruderstein) +* changed; Disabled options now appear in the search results , thanks + [Dave Brotherstone](https://github.com/bruderstein) +* fixed; asyncOptions are reloaded on componentWillReceiveProps when the value + has changed, thanks [Francis Cote](https://github.com/drfeelgoud) +* added; `cacheAsyncResults` prop (default `true`) now controls whether the + internal cache is used for `asyncOptions` + +## v0.6.0 / 2015-08-05 + +* improved; option, value and single value have been split out into their own + components, and can be customised with props. see + [#328](https://github.com/JedWatson/react-select/pull/328) for more details. +* improved; Near-complete test coverage thanks to the awesome work of + [Dave Brotherstone](https://github.com/bruderstein) +* improved; Support all alpha/beta/rc's of React 0.14.0, thanks + [Sébastien Lorber](https://github.com/slorber) +* fixed; Close multi-select menu when tabbing away, thanks + [Ben Alpert](https://github.com/spicyj) +* fixed; Bug where Select shows the value instead of the label (reapplying fix) +* fixed; `valueRenderer` now works when `multi={false}`, thanks + [Chris Portela](https://github.com/0xCMP) +* added; New property `backspaceRemoves` (default `true`), allows the default + behaviour of removing values with backspace when `multi={true}`, thanks + [Leo Lehikoinen](https://github.com/lehikol2) + +## v0.5.6 / 2015-07-27 + +* fixed; Allow entering of commas when allowCreate is on but multi is off, + thanks [Angelo DiNardi](https://github.com/adinardi) +* fixed; Times (clear) character is now rendered from string unicode character + for consistent output, thanks [Nibbles](https://github.com/Siliconrob) +* fixed; allowCreate bug, thanks [goodzsq](https://github.com/goodzsq) +* fixed; changes to props.placeholder weren't being reflected correctly, thanks + [alesn](https://github.com/alesn) +* fixed; error when escape is pressedn where `clearValue` was not passed the + event, thanks [Mikhail Kotelnikov](https://github.com/mkotelnikov) +* added; More tests, thanks [Dave Brotherstone](https://github.com/bruderstein) + +## v0.5.5 / 2015-07-12 + +* fixed; replaced usage of `component.getDOMNode()` with + `React.findDOMNode(component)` for compatibility with React 0.14 + +## v0.5.4 / 2015-07-06 + +* fixed; regression in 0.5.3 that broke componentWillMount, sorry everyone! +* added; `addLabelText` prop for customising the "add {label}?" text when in + tags mode, thanks [Fenn](https://github.com/Fenntasy) + +## v0.5.3 / 2015-07-05 + +* fixed; autoload issues, thanks [Maxime Tyler](https://github.com/iam4x) +* fixed; style incompatibilities with Foundation framework, thanks + [Timothy Kempf](https://github.com/Fauntleroy) + +## v0.5.2 / 2015-06-28 + +* fixed; bug where Select shows the value instead of the label, thanks + [Stephen Demjanenko](https://github.com/sdemjanenko) +* added; 'is-selected' classname is added to the selected option, thanks + [Alexey Volodkin](https://github.com/miraks) +* fixed; async options are now loaded with the initial value, thanks + [Pokai Chang](https://github.com/Neson) +* fixed; `react-input-autosize` now correctly escapes ampersands (&), not + actually a fix in react-select but worth noting here because it would have + been causing a problem in `react-select` as well. + +## v0.5.1 / 2015-06-21 + +* added; custom option and value rendering capability, thanks + [Brian Reavis](https://github.com/brianreavis) +* fixed; collapsing issue when single-select or empty multi-select fields are + disabled +* fixed; issue where an empty value would be left after clearing all values in a + multi-select field + +## v0.5.0 / 2015-06-20 + +* fixed; `esc` key incorrectly created empty options, thanks + [rgrzelak](https://github.com/rgrzelak) +* adeed; New feature to allow option creation ("tags mode"), enable with + `allowCreate` prop, thanks [Florent Vilmart](https://github.com/flovilmart) + and [Brian Reavis](https://github.com/brianreavis) +* fixed; IE8 compatibility fallback for `addEventListener/removeEventListener`, + which don't exist in IE8, thanks + [Stefan Billiet](https://github.com/StefanBilliet) +* fixed; Undefined values when using asyncOptions, thanks + [bannaN](https://github.com/bannaN) +* fixed; Prevent add the last focused value when the drop down menu is closed / + Pushing enter without dropdown open adds a value, thanks + [Giuseppe](https://github.com/giuse88) +* fixed; Callback context is undefined, thanks + [Giuseppe](https://github.com/giuse88) +* fixed; Issue with event being swallowed on Enter `keydown`, thanks + [Kevin Burke](https://github.com/kembuco) +* added; Support for case-insensitive filtering when `matchPos="start"`, thanks + [wesrage](https://github.com/wesrage) +* added; Support for customizable background color, thanks + [John Morales](https://github.com/JohnMorales) +* fixed; Updated ESLint and cleared up warnings, thanks + [Alexander Shemetovsky](https://github.com/AlexKVal) +* fixed; Close dropdown when clicking on select, thanks + [Nik Butenko](https://github.com/nkbt) +* added; Tests, and mocha test framework, thanks + [Craig Dallimore](https://github.com/craigdallimore) +* fixed; You can now start the example server and watch for changes with `npm start` + +## v0.4.9 / 2015-05-11 + +* fixed; focus was being grabbed by the select when `autoload` and + `asyncOptions` were set +* added; `focus` method on the component +* added; support for disabled options, thanks + [Pasha Palangpour](https://github.com/pashap) +* improved; more closures, less binds, for better performance, thanks + [Daniel Cousens](https://github.com/dcousens) + +## v0.4.8 / 2015-05-02 + +* fixed; restored `dist/default.css` +* fixed; standalone example works again +* fixed; clarified dependency documentation and added dependencies for Bower +* fixed; Scoping issues in `_bindCloseMenuIfClickedOutside`, thanks + [bannaN](https://github.com/bannaN) +* fixed; Doesnt try to set focus afterupdate if component is disabled, thanks + [bannaN](https://github.com/bannaN) + +## v0.4.7 / 2015-04-21 + +* improved; lodash is no longer a dependency, thanks + [Daniel Lo Nigro](https://github.com/Daniel15) + +## v0.4.6 / 2015-04-06 + +* updated; dependencies, build process and input-autosize component + +## v0.4.5 / 2015-03-28 + +* fixed; issue with long options overlapping arrow and clear icons, thanks + [Rohit Kalkur](https://github.com/rovolution) + +## v0.4.4 / 2015-03-26 + +* fixed; error handling click events when the menu is closed, thanks + [Ilya Petrov](https://github.com/muromec) +* fixed; issue where options will not be filtered in certain conditions, thanks + [G. Kay Lee](https://github.com/gsklee) + +## v0.4.3 / 2015-03-25 + +* added tests and updated dependencies + +## v0.4.2 / 2015-03-23 + +* added; ESLint and contributing guide +* fixed; incorrect `classnames` variable assignment in window scope +* fixed; all ESLint errors and warnings (except invalid JSX undefined/unused + vars due to ESLint bug) +* fixed; first option is now focused correctly, thanks + [Eivind Siqveland Larsen](https://github.com/esiqveland) + +## v0.4.1 / 2015-03-20 + +* fixed; IE11 issue: clicking on scrollbar within menu no longer closes menu, + thanks [Rohit Kalkur](https://github.com/rovolution) + +## v0.4.0 / 2015-03-12 + +* updated; compatible with React 0.13 + +## v0.3.5 / 2015-03-09 + +* improved; less/no repaint on scroll for performance wins, thanks + [jsmunich](https://github.com/jsmunich) +* added; `onBlur` and `onFocus` event handlers, thanks + [Jonas Budelmann](https://github.com/cloudkite) +* added; support for `inputProps` prop, passed to the `` component, + thanks [Yann Plantevin](https://github.com/YannPl) +* changed; now using + [react-component-gulp-tasks](https://github.com/JedWatson/react-component-gulp-tasks) + for build +* fixed; issue w/ remote callbacks overriding cached options, thanks + [Corey McMahon](https://github.com/coreymcmahon) +* fixed; if not `this.props.multi`, menu doesn't need handleMouseDown, thanks + [wenbing](https://github.com/wenbing) + +## v0.3.4 / 2015-02-23 + +* fixed; issues with the underscore/lodash dependency change, thanks + [Aaron Powell](https://github.com/aaronpowell) + +## v0.3.3 / 2015-02-22 + +* added; `disabled` prop, thanks [Danny Shaw](https://github.com/dannyshaw) +* added; `searchable` prop - set to `false` to disable the search box, thanks + [Julen Ruiz Aizpuru](https://github.com/julen) +* added; `onOptionLabelClick` prop - see + [#66](https://github.com/JedWatson/react-select/pull/66) for docs, thanks + [Dmitry Smirnov](https://github.com/dmitry-smirnov) +* fixed; `text-overflow: ellipsis;` typo, thanks + [Andru Vallance](https://github.com/andru) + +## v0.3.2 / 2015-01-30 + +* fixed; issue adding undefined values to multiselect, thanks + [Tejas Dinkar](https://github.com/gja) + +## v0.3.1 / 2015-01-20 + +* fixed; missing `var` statement + +## v0.3.0 / 2015-01-20 + +* added; node compatible build now available in `/lib` + +## v0.2.14 / 2015-01-07 + +* added; `searchPromptText` property that is displayed when `asyncOptions` is + set and there are (a) no options loaded, and (b) no input entered to search + on, thanks [Anton Fedchenko](https://github.com/kompot) +* added; `clearable` property (defaults to `true`) to control whether the + "clear" control is available, thanks + [Anton Fedchenko](https://github.com/kompot) + +## v0.2.13 / 2015-01-05 + +* fixed; height issues in Safari, thanks + [Joss Mackison](https://github.com/jossmac) +* added; Option to specify "Clear value" label as prop for i18n + +## v0.2.12 / 2015-01-04 + +* fixed; UI now responds to touch events, and works on mobile devices! thanks + [Fraser Xu](https://github.com/fraserxu) + +## v0.2.11 / 2015-01-04 + +* fixed; Options in the dropdown now scroll into view when they are focused, + thanks [Adam](https://github.com/fmovlex) +* improved; Example dist is now excluded from the npm package + +## v0.2.10 / 2015-01-01 + +* fixed; More specific mixin name to avoid conflicts (css) +* fixed; Example CSS now correctly rebuilds on changes in development +* fixed; Values are now expanded correctly when options change (see #28) +* added; Option to specify "No results found" label as prop for i18n, thanks + [Julen Ruiz Aizpuru](https://github.com/julen) + +## v0.2.9 / 2014-12-09 + +* added; `filterOption` and `filterOptions` props for more control over + filtering + +## v0.2.8 / 2014-12-08 + +* added; `matchPos` option to control whether to match the `start` or `any` + position in the string when filtering options (default: `any`) +* added; `matchProp` option to control whether to match the `value`, `label` or + `any` property of each option when filtering (default: `any`) + +## v0.2.7 / 2014-12-01 + +* fixed; screen-readers will now read "clear value" instead of "times" for the + clear button +* fixed; non-left-click mousedown events aren't blocked by the control + +## v0.2.6 / 2014-11-30 + +* improved; better comparison of changes to [options] in `willReceiveProps` +* fixed; now focuses the first option correctly when in multiselect mode +* fixed; fixed focused option behaviour on value change +* fixed; when filtering, there is always a focused option (#19) +* changed; using ^ in package.json to compare dependencies + +## v0.2.5 / 2014-11-20 + +* fixed; compatibility with case-sensitive file systems + +## v0.2.4 / 2014-11-20 + +* fixed; package.json pointed at the right file + +## v0.2.3 / 2014-11-17 + +* fixed; Updating state correctly when props change +* improved; Build tasks and docs +* added; Working standalone build +* added; Minified dist version +* added; Publised to Bower + +## v0.2.2 / 2014-11-15 + +* fixed; backspace event being incorrectly cancelled + +## v0.2.1 / 2014-11-15 + +* fixed; issue where backspace incorrectly clears the value (#14) + +## v0.2.0 / 2014-11-15 + +* changed; Major rewrite to improve focus handling and internal state management +* added; Support for `multi` prop, enable multiselect mode + +## v0.1.1 / 2014-11-03 + +* added; Support for `onChange` event +* added; `propTypes` are defined by the `Select` component now +* added; `className` property, sets the `className` on the outer `div` element +* fixed; Removed deprecated `React.DOM.x` calls + +## v0.1.0 / 2014-11-01 + +* updated; React to 0.12.0 + +## v0.0.6 / 2014-10-14 + +* fixed; Error keeping value when using Async Options diff --git a/README.md b/README.md index 61ee0badd9..6559c406b3 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![NPM](https://img.shields.io/npm/v/react-select.svg)](https://www.npmjs.com/package/react-select) -[![CircleCI](https://circleci.com/gh/JedWatson/react-select/tree/master.svg?style=shield)](https://circleci.com/gh/JedWatson/react-select/tree/master) +[![CircleCI](https://circleci.com/gh/JedWatson/react-select/tree/master.svg?style=svg)](https://circleci.com/gh/JedWatson/react-select/tree/master) [![Coverage Status](https://coveralls.io/repos/JedWatson/react-select/badge.svg?branch=master&service=github)](https://coveralls.io/github/JedWatson/react-select?branch=master) [![Supported by Thinkmill](https://thinkmill.github.io/badge/heart.svg)](http://thinkmill.com.au/?utm_source=github&utm_medium=badge&utm_campaign=react-select) @@ -9,17 +9,17 @@ The Select control for [React](https://reactjs.com). Initially built for use in See [react-select.com](https://www.react-select.com) for live demos and comprehensive docs. -See our [upgrade guide](https://github.com/JedWatson/react-select/issues/3585) for a breakdown on how to upgrade from v2 to v3. +## Version 2 🎉 -React Select is funded by [Thinkmill](https://www.thinkmill.com.au) and [Atlassian](https://atlaskit.atlassian.com). It represents a whole new approach to developing powerful React.js components that _just work_ out of the box, while being extremely customisable. +React Select v2.0.0 is a complete rewrite, funded by [Thinkmill](https://www.thinkmill.com.au) and [Atlassian](https://atlaskit.atlassian.com). It represents a whole new approach to developing powerful React.js components that _just work_ out of the box, while being extremely customisable. -Features include: +Improvements include: -- Flexible approach to data, with customisable functions -- Extensible styling API with [emotion](https://emotion.sh) -- Component Injection API for complete control over the UI behaviour -- Controllable state props and modular architecture -- Long-requested features like option groups, portal support, animation, and more +* Flexible approach to data, with customisable functions +* Extensible styling API with [emotion](https://emotion.sh) +* Component Injection API for complete control over the UI behaviour +* Controllable state props and modular architecture +* Long-requested features like option groups, portal support, animation, and more If you're interested in the background, watch Jed's [talk on React Select](https://youtu.be/Eb2wy-HNGMo) at ReactNYC in March 2018. @@ -44,17 +44,17 @@ import Select from 'react-select'; const options = [ { value: 'chocolate', label: 'Chocolate' }, { value: 'strawberry', label: 'Strawberry' }, - { value: 'vanilla', label: 'Vanilla' }, + { value: 'vanilla', label: 'Vanilla' } ]; class App extends React.Component { state = { selectedOption: null, - }; - handleChange = selectedOption => { + } + handleChange = (selectedOption) => { this.setState({ selectedOption }); console.log(`Option selected:`, selectedOption); - }; + } render() { const { selectedOption } = this.state; @@ -73,17 +73,17 @@ class App extends React.Component { Common props you may want to specify include: -- `autoFocus` - focus the control when it mounts -- `className` - apply a className to the control -- `classNamePrefix` - apply classNames to inner elements with the given prefix -- `isDisabled` - disable the control -- `isMulti` - allow the user to select multiple values -- `isSearchable` - allow the user to search for matching options -- `name` - generate an HTML input with this name, containing the current value -- `onChange` - subscribe to change events -- `options` - specify the options the user can select from -- `placeholder` - change the text displayed when no option is selected -- `value` - control the current value +* `autoFocus` - focus the control when it mounts +* `className` - apply a className to the control +* `classNamePrefix` - apply classNames to inner elements with the given prefix +* `isDisabled` - disable the control +* `isMulti` - allow the user to select multiple values +* `isSearchable` - allow the user to search for matching options +* `name` - generate an HTML input with this name, containing the current value +* `onChange` - subscribe to change events +* `options` - specify the options the user can select from +* `placeholder` - change the text displayed when no option is selected +* `value` - control the current value See the [props documentation](https://www.react-select.com/props) for complete documentation on the props react-select supports. @@ -91,33 +91,33 @@ See the [props documentation](https://www.react-select.com/props) for complete d You can control the following props by providing values for them. If you don't, react-select will manage them for you. -- `value` / `onChange` - specify the current value of the control -- `menuIsOpen` / `onMenuOpen` / `onMenuClose` - control whether the menu is open -- `inputValue` / `onInputChange` - control the value of the search input (changing this will update the available options) +* `value` / `onChange` - specify the current value of the control +* `menuIsOpen` / `onMenuOpen` / `onMenuClose` - control whether the menu is open +* `inputValue` / `onInputChange` - control the value of the search input (changing this will update the available options) If you don't provide these props, you can set the initial value of the state they control: -- `defaultValue` - set the initial value of the control -- `defaultMenuIsOpen` - set the initial open value of the menu -- `defaultInputValue` - set the initial value of the search input +* `defaultValue` - set the initial value of the control +* `defaultMenuIsOpen` - set the initial open value of the menu +* `defaultInputValue` - set the initial value of the search input ## Methods React-select exposes two public methods: -- `focus()` - focus the control programatically -- `blur()` - blur the control programatically +* `focus()` - focus the control programatically +* `blur()` - blur the control programatically ## Customisation Check the docs for more information on: -- [Customising the styles](https://www.react-select.com/styles) -- [Using custom components](https://www.react-select.com/components) -- [Using the built-in animated components](https://www.react-select.com/home#animated-components) -- [Creating an async select](https://www.react-select.com/async) -- [Allowing users to create new options](https://www.react-select.com/creatable) -- [Advanced use-cases](https://www.react-select.com/advanced) +* [Customising the styles](https://www.react-select.com/styles) +* [Using custom components](https://www.react-select.com/components) +* [Using the built-in animated components](https://www.react-select.com/home#animated-components) +* [Creating an async select](https://www.react-select.com/async) +* [Allowing users to create new options](https://www.react-select.com/creatable) +* [Advanced use-cases](https://www.react-select.com/advanced) # Thanks @@ -129,4 +129,4 @@ Shout out to [Joss Mackison](https://github.com/jossmac), [Charles Lee](https:// ## License -MIT Licensed. Copyright (c) Jed Watson 2019. +MIT Licensed. Copyright (c) Jed Watson 2018. diff --git a/docs/App/Footer.js b/docs/App/Footer.js index e991fcad58..3ce938b2d2 100644 --- a/docs/App/Footer.js +++ b/docs/App/Footer.js @@ -1,7 +1,6 @@ // @flow -/** @jsx jsx */ -import { type Node } from 'react'; -import { jsx } from '@emotion/core'; + +import React, { type Node } from 'react'; // const smallDevice = '@media (max-width: 769px)'; const largeDevice = '@media (min-width: 770px)'; @@ -58,7 +57,7 @@ export default function Footer(): Node { return ( -

Copyright © Jed Watson, 2019. MIT Licensed.

+

Copyright © Jed Watson, 2018. MIT Licensed.

Thanks to Thinkmill and{' '} Atlassian for supporting this diff --git a/docs/App/GitHubButton.js b/docs/App/GitHubButton.js index 01ffae7ac4..689ee433b8 100644 --- a/docs/App/GitHubButton.js +++ b/docs/App/GitHubButton.js @@ -1,6 +1,6 @@ // @flow -/** @jsx jsx */ -import { jsx } from '@emotion/core'; + +import React from 'react'; type Props = { count: number, repo: string }; diff --git a/docs/App/Header.js b/docs/App/Header.js index d2a3b8177c..4bab0d8770 100644 --- a/docs/App/Header.js +++ b/docs/App/Header.js @@ -1,11 +1,10 @@ // @flow -/** @jsx jsx */ + import fetch from 'unfetch'; -import { Component, type Node } from 'react'; -import { jsx } from '@emotion/core'; +import React, { Component, type Node } from 'react'; import { withRouter } from 'react-router-dom'; -import Select from 'react-select'; +import Select from '../../src'; import type { RouterProps } from '../types'; import GitHubButton from './GitHubButton'; import TwitterButton from './TwitterButton'; @@ -176,6 +175,16 @@ class Header extends Component { }} > React Select + + v2 + ( } }} value={null} - placeholder="🎉 Feature Highlights" + placeholder="🎉 What's new in V2" styles={headerSelectStyles} />

diff --git a/docs/App/PageNav.js b/docs/App/PageNav.js index 03caa781ec..63f9ad3fa9 100644 --- a/docs/App/PageNav.js +++ b/docs/App/PageNav.js @@ -1,11 +1,10 @@ // @flow -/** @jsx jsx */ -import { Component, type ElementRef } from 'react'; -import { jsx } from '@emotion/core'; + +import React, { Component, type ElementRef } from 'react'; import { Route, Switch } from 'react-router-dom'; import type { RouterProps } from '../types'; -import { animatedScrollTo } from 'react-select/src/utils'; +import { animatedScrollTo } from '../../src/utils'; import routes from './routes'; import ScrollSpy from './ScrollSpy'; import Sticky from './Sticky'; diff --git a/docs/App/TwitterButton.js b/docs/App/TwitterButton.js index 1721ca0b9e..f759b3c322 100644 --- a/docs/App/TwitterButton.js +++ b/docs/App/TwitterButton.js @@ -1,6 +1,6 @@ // @flow -/** @jsx jsx */ -import { jsx } from '@emotion/core'; + +import React from 'react'; const TwitterButton = () => (
diff --git a/docs/App/components.js b/docs/App/components.js index 25fc7fb8fe..c697170cce 100644 --- a/docs/App/components.js +++ b/docs/App/components.js @@ -1,8 +1,7 @@ // @flow -/** @jsx jsx */ -import { Component, type ElementConfig } from 'react'; + +import React, { Component, type ElementConfig } from 'react'; import { Link, withRouter } from 'react-router-dom'; -import { jsx } from '@emotion/core'; const navWidth = 180; const appWidth = 800; diff --git a/docs/ExampleWrapper.js b/docs/ExampleWrapper.js index 3461c9714c..c8d989364e 100644 --- a/docs/ExampleWrapper.js +++ b/docs/ExampleWrapper.js @@ -1,21 +1,23 @@ -/** @jsx jsx */ -import { jsx } from '@emotion/core'; // eslint-disable-line no-unused-vars -import { Component } from 'react'; +import React, { Component } from 'react'; import CodeSandboxer from 'react-codesandboxer'; +import { replaceImports } from 'codesandboxer'; import { CodeBlock } from './markdown/renderer'; -import pkg from '../packages/react-select/package.json'; -import { defaultTheme } from 'react-select'; +import pkg from '../package.json'; +import { colors } from '../src/theme'; import Svg from './Svg'; -const { colors } = defaultTheme; - const gitInfo = { account: 'JedWatson', repository: 'react-select', - branch: 'master', + branch: 'v2', host: 'github', }; +const importReplacements = [ + ['src/*', 'react-select/lib/'], + ['src', 'react-select'], +]; + const sourceUrl = `https://github.com/${gitInfo.account}/react-select/tree/${ gitInfo.branch }`; @@ -26,14 +28,26 @@ export default class ExampleWrapper extends Component { handleEnter = () => this.setState({ isHovered: true }); handleLeave = () => this.setState({ isHovered: false }); renderCodeSample = () => { - console.log(raw); let { raw } = this.props; let { showCode } = this.state; if (!showCode || !raw) { return null; } else { - return ; + return ( + + ); } }; @@ -70,10 +84,11 @@ export default class ExampleWrapper extends Component { if (isEditable) { return ( { - defaultProps = defaultProps; + defaultProps = defaultProps } diff --git a/docs/PropTypes/Creatable.js b/docs/PropTypes/Creatable.js index 02e89c9675..4f16d924df 100644 --- a/docs/PropTypes/Creatable.js +++ b/docs/PropTypes/Creatable.js @@ -1,7 +1,7 @@ import { Component } from 'react'; -import { type CreatableProps, defaultProps } from 'react-select/src/Creatable'; +import { type CreatableProps, defaultProps } from '../../src/Creatable'; export default class Select extends Component { - defaultProps = defaultProps; + defaultProps = defaultProps } diff --git a/docs/PropTypes/Select.js b/docs/PropTypes/Select.js index 0c35d5544e..36f018862b 100644 --- a/docs/PropTypes/Select.js +++ b/docs/PropTypes/Select.js @@ -1,5 +1,6 @@ import { Component } from 'react'; -import { type Props, defaultProps } from 'react-select/src/Select'; +import { type Props, defaultProps } from '../../src/Select'; + export default class Select extends Component { defaultProps = defaultProps; diff --git a/docs/PropTypes/components/ClearIndicator.js b/docs/PropTypes/components/ClearIndicator.js index 85b4250828..2f12e24650 100644 --- a/docs/PropTypes/components/ClearIndicator.js +++ b/docs/PropTypes/components/ClearIndicator.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type IndicatorProps } from 'react-select/src/components/indicators'; +import { type IndicatorProps } from '../../../src/components/indicators'; export default class ClearIndicator extends Component {} diff --git a/docs/PropTypes/components/Control.js b/docs/PropTypes/components/Control.js index 2839031287..ded88ada24 100644 --- a/docs/PropTypes/components/Control.js +++ b/docs/PropTypes/components/Control.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type ControlProps } from 'react-select/src/components/Control'; +import { type ControlProps } from '../../../src/components/Control'; export default class Control extends Component {} diff --git a/docs/PropTypes/components/DropdownIndicator.js b/docs/PropTypes/components/DropdownIndicator.js index 9a704c9c0c..f312d7baaa 100644 --- a/docs/PropTypes/components/DropdownIndicator.js +++ b/docs/PropTypes/components/DropdownIndicator.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type IndicatorProps } from 'react-select/src/components/indicators'; +import { type IndicatorProps } from '../../../src/components/indicators'; export default class DropdownIndicator extends Component {} diff --git a/docs/PropTypes/components/Group.js b/docs/PropTypes/components/Group.js index 4879488cda..56f0076803 100644 --- a/docs/PropTypes/components/Group.js +++ b/docs/PropTypes/components/Group.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type GroupProps } from 'react-select/src/components/Group'; +import { type GroupProps } from '../../../src/components/Group'; export default class Group extends Component {} diff --git a/docs/PropTypes/components/IndicatorsContainer.js b/docs/PropTypes/components/IndicatorsContainer.js index f502092229..6b17f83352 100644 --- a/docs/PropTypes/components/IndicatorsContainer.js +++ b/docs/PropTypes/components/IndicatorsContainer.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type IndicatorContainerProps } from 'react-select/src/components/containers'; +import { type IndicatorContainerProps } from '../../../src/components/containers'; export default class IndicatorContainer extends Component {} diff --git a/docs/PropTypes/components/IndicatorsSeparator.js b/docs/PropTypes/components/IndicatorsSeparator.js index 9a704c9c0c..f312d7baaa 100644 --- a/docs/PropTypes/components/IndicatorsSeparator.js +++ b/docs/PropTypes/components/IndicatorsSeparator.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type IndicatorProps } from 'react-select/src/components/indicators'; +import { type IndicatorProps } from '../../../src/components/indicators'; export default class DropdownIndicator extends Component {} diff --git a/docs/PropTypes/components/Input.js b/docs/PropTypes/components/Input.js index 458ac40d8d..7e52979022 100644 --- a/docs/PropTypes/components/Input.js +++ b/docs/PropTypes/components/Input.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type InputProps } from 'react-select/src/components/Input'; +import { type InputProps } from '../../../src/components/Input'; export default class Input extends Component {} diff --git a/docs/PropTypes/components/LoadingIndicator.js b/docs/PropTypes/components/LoadingIndicator.js index e674e6c1ad..f007faad63 100644 --- a/docs/PropTypes/components/LoadingIndicator.js +++ b/docs/PropTypes/components/LoadingIndicator.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type LoadingIconProps } from 'react-select/src/components/indicators'; +import { type LoadingIconProps } from '../../../src/components/indicators'; export default class LoadingIndicator extends Component {} diff --git a/docs/PropTypes/components/LoadingMessage.js b/docs/PropTypes/components/LoadingMessage.js index 37a133310b..2f4de41c4a 100644 --- a/docs/PropTypes/components/LoadingMessage.js +++ b/docs/PropTypes/components/LoadingMessage.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type NoticeProps } from 'react-select/src/components/Menu'; +import { type NoticeProps } from '../../../src/components/Menu'; export default class LoadingMessage extends Component {} diff --git a/docs/PropTypes/components/Menu.js b/docs/PropTypes/components/Menu.js index bee648d150..a8d0925878 100644 --- a/docs/PropTypes/components/Menu.js +++ b/docs/PropTypes/components/Menu.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type MenuProps } from 'react-select/src/components/Menu'; +import { type MenuProps } from '../../../src/components/Menu'; export default class Menu extends Component {} diff --git a/docs/PropTypes/components/MenuList.js b/docs/PropTypes/components/MenuList.js index fff7ec1147..2f0aeef8a1 100644 --- a/docs/PropTypes/components/MenuList.js +++ b/docs/PropTypes/components/MenuList.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type MenuListComponentProps } from 'react-select/src/components/Menu'; +import { type MenuListComponentProps } from '../../../src/components/Menu'; export default class MenuList extends Component {} diff --git a/docs/PropTypes/components/MultiValue.js b/docs/PropTypes/components/MultiValue.js index b8da4f0183..20261257ad 100644 --- a/docs/PropTypes/components/MultiValue.js +++ b/docs/PropTypes/components/MultiValue.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type MultiValueProps } from 'react-select/src/components/MultiValue'; +import { type MultiValueProps } from '../../../src/components/MultiValue'; export default class MultiValue extends Component {} diff --git a/docs/PropTypes/components/MultiValueContainer.js b/docs/PropTypes/components/MultiValueContainer.js index 9dae612a8a..41147b973a 100644 --- a/docs/PropTypes/components/MultiValueContainer.js +++ b/docs/PropTypes/components/MultiValueContainer.js @@ -1,4 +1,6 @@ import { Component } from 'react'; -import { type MultiValueGenericProps } from 'react-select/src/components/MultiValue'; +import { type MultiValueGenericProps } from '../../../src/components/MultiValue'; -export default class MultiValueContainer extends Component {} +export default class MultiValueContainer extends Component< + MultiValueGenericProps +> {} diff --git a/docs/PropTypes/components/MultiValueLabel.js b/docs/PropTypes/components/MultiValueLabel.js index 7d485cb512..b22805da8c 100644 --- a/docs/PropTypes/components/MultiValueLabel.js +++ b/docs/PropTypes/components/MultiValueLabel.js @@ -1,4 +1,6 @@ import { Component } from 'react'; -import { type MultiValueGenericProps } from 'react-select/src/components/MultiValue'; +import { type MultiValueGenericProps } from '../../../src/components/MultiValue'; -export default class MultiValueLabel extends Component {} +export default class MultiValueLabel extends Component< + MultiValueGenericProps +> {} diff --git a/docs/PropTypes/components/MultiValueRemove.js b/docs/PropTypes/components/MultiValueRemove.js index 6fdf10fd07..a887560f6c 100644 --- a/docs/PropTypes/components/MultiValueRemove.js +++ b/docs/PropTypes/components/MultiValueRemove.js @@ -1,4 +1,6 @@ import { Component } from 'react'; -import { type MultiValueGenericProps } from 'react-select/src/components/MultiValue'; +import { type MultiValueGenericProps } from '../../../src/components/MultiValue'; -export default class MultiValueRemove extends Component {} +export default class MultiValueRemove extends Component< + MultiValueGenericProps +> {} diff --git a/docs/PropTypes/components/NoOptionsMessage.js b/docs/PropTypes/components/NoOptionsMessage.js index 8f2f1201d0..f2fb556176 100644 --- a/docs/PropTypes/components/NoOptionsMessage.js +++ b/docs/PropTypes/components/NoOptionsMessage.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type NoticeProps } from 'react-select/src/components/Menu'; +import { type NoticeProps } from '../../../src/components/Menu'; export default class NoOptionsMessage extends Component {} diff --git a/docs/PropTypes/components/Option.js b/docs/PropTypes/components/Option.js index 72f17915f9..c9146b0cd5 100644 --- a/docs/PropTypes/components/Option.js +++ b/docs/PropTypes/components/Option.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type OptionProps } from 'react-select/src/components/Option'; +import { type OptionProps } from '../../../src/components/Option'; export default class Option extends Component {} diff --git a/docs/PropTypes/components/Placeholder.js b/docs/PropTypes/components/Placeholder.js index 6ce0a32241..0602ea5007 100644 --- a/docs/PropTypes/components/Placeholder.js +++ b/docs/PropTypes/components/Placeholder.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type PlaceholderProps } from 'react-select/src/components/Placeholder'; +import { type PlaceholderProps } from '../../../src/components/Placeholder'; export default class Placeholder extends Component {} diff --git a/docs/PropTypes/components/SelectContainer.js b/docs/PropTypes/components/SelectContainer.js index a652cfa117..523c4a7747 100644 --- a/docs/PropTypes/components/SelectContainer.js +++ b/docs/PropTypes/components/SelectContainer.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type ContainerProps } from 'react-select/src/components/containers'; +import { type ContainerProps } from '../../../src/components/containers'; export default class SelectContainer extends Component {} diff --git a/docs/PropTypes/components/SingleValue.js b/docs/PropTypes/components/SingleValue.js index 939625d834..8ba1a5e465 100644 --- a/docs/PropTypes/components/SingleValue.js +++ b/docs/PropTypes/components/SingleValue.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type SingleValueProps } from 'react-select/src/components/SingleValue'; +import { type SingleValueProps } from '../../../src/components/SingleValue'; export default class SingleValue extends Component {} diff --git a/docs/PropTypes/components/ValueContainer.js b/docs/PropTypes/components/ValueContainer.js index 02d256709a..cbbf5e0ea3 100644 --- a/docs/PropTypes/components/ValueContainer.js +++ b/docs/PropTypes/components/ValueContainer.js @@ -1,4 +1,4 @@ import { Component } from 'react'; -import { type ValueContainerProps } from 'react-select/src/components/containers'; +import { type ValueContainerProps } from '../../../src/components/containers'; export default class ValueContainer extends Component {} diff --git a/docs/PropTypes/stateManager.js b/docs/PropTypes/stateManager.js index e85dc2e3e6..6bb1bcd488 100644 --- a/docs/PropTypes/stateManager.js +++ b/docs/PropTypes/stateManager.js @@ -1,5 +1,6 @@ import { Component } from 'react'; -import { type Props, defaultProps } from 'react-select/src/stateManager'; +import { type Props, defaultProps } from '../../src/stateManager'; + export default class StateManager extends Component { defaultProps = defaultProps; diff --git a/docs/Svg.js b/docs/Svg.js index f447953555..6b7b4b411f 100644 --- a/docs/Svg.js +++ b/docs/Svg.js @@ -1,6 +1,4 @@ -// @flow -/** @jsx jsx */ -import { jsx } from '@emotion/core'; +import React from 'react'; const Svg = ({ size, ...props }: { size: number }) => ( , @@ -55,7 +55,7 @@ class TestSuite extends Component { }; toggleEscapeClearsValue = () => { this.setState(state => ({ escapeClearsValue: !state.escapeClearsValue })); - }; + } setPlacement = ({ currentTarget }: SyntheticEvent<*>) => { const portalPlacement = currentTarget && currentTarget.value; @@ -240,7 +240,7 @@ export default function Tests() {
{ - this.selectRef = ref; - }} + ref={ref => { this.selectRef = ref; }} defaultValue={colourOptions[2]} name="colors" options={colourOptions} /> - + - + ); diff --git a/docs/examples/AnimatedMulti.js b/docs/examples/AnimatedMulti.js index 6aa69b67c4..4b2f28e44a 100644 --- a/docs/examples/AnimatedMulti.js +++ b/docs/examples/AnimatedMulti.js @@ -2,17 +2,16 @@ import React from 'react'; -import Select from 'react-select'; -import makeAnimated from 'react-select/animated'; +import Select from '../../src'; +import makeAnimated from '../../src/animated'; import { colourOptions } from '../data'; -const animatedComponents = makeAnimated(); export default function AnimatedMulti() { return ( { - this.select = ref; - }} + ref={(ref) => { this.select = ref; }} defaultValue={colourOptions[0]} isClearable menuIsOpen={menuIsOpen} diff --git a/docs/examples/CreatableAdvanced.js b/docs/examples/CreatableAdvanced.js index 8dcaa44a3d..bf2a94cc90 100644 --- a/docs/examples/CreatableAdvanced.js +++ b/docs/examples/CreatableAdvanced.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; -import CreatableSelect from 'react-select/creatable'; +import CreatableSelect from '../../src/Creatable'; type State = { options: [{ [string]: string }], diff --git a/docs/examples/CreatableInputOnly.js b/docs/examples/CreatableInputOnly.js index f9e0ce6e8a..d32df4037c 100644 --- a/docs/examples/CreatableInputOnly.js +++ b/docs/examples/CreatableInputOnly.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; -import CreatableSelect from 'react-select/creatable'; +import CreatableSelect from '../../src/Creatable'; const components = { DropdownIndicator: null, diff --git a/docs/examples/CreatableMulti.js b/docs/examples/CreatableMulti.js index f3dc989d6c..3a8cce093e 100644 --- a/docs/examples/CreatableMulti.js +++ b/docs/examples/CreatableMulti.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; -import CreatableSelect from 'react-select/creatable'; +import CreatableSelect from '../../src/Creatable'; import { colourOptions } from '../data'; export default class CreatableMulti extends Component<*, State> { diff --git a/docs/examples/CreatableSingle.js b/docs/examples/CreatableSingle.js index c41d5c0122..85c816eb33 100644 --- a/docs/examples/CreatableSingle.js +++ b/docs/examples/CreatableSingle.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; -import CreatableSelect from 'react-select/creatable'; +import CreatableSelect from '../../src/Creatable'; import { colourOptions } from '../data'; export default class CreatableSingle extends Component<*, State> { @@ -15,7 +15,7 @@ export default class CreatableSingle extends Component<*, State> { console.log(inputValue); console.log(`action: ${actionMeta.action}`); console.groupEnd(); - }; + } render() { return ( { state: State = { @@ -18,12 +18,17 @@ export default class SelectCreateFilter extends Component<*, State> { ignoreAccents: false, trim: false, matchFromStart: false, - }; - toggleOption = key => () => { + } + toggleOption = (key) => () => { this.setState(state => ({ [key]: !state[key] })); - }; - render() { - const { ignoreCase, ignoreAccents, trim, matchFromStart } = this.state; + } + render () { + const { + ignoreCase, + ignoreAccents, + trim, + matchFromStart, + } = this.state; const filterConfig = { ignoreCase, diff --git a/docs/examples/CustomClearIndicator.js b/docs/examples/CustomClearIndicator.js index b4b5cf5631..22b91c12ff 100644 --- a/docs/examples/CustomClearIndicator.js +++ b/docs/examples/CustomClearIndicator.js @@ -2,23 +2,17 @@ import React from 'react'; -import Select from 'react-select'; +import Select from '../../src'; import { colourOptions } from '../data'; const CustomClearText = () => 'clear all'; -const ClearIndicator = props => { - const { - children = , - getStyles, - innerProps: { ref, ...restInnerProps }, - } = props; +const ClearIndicator = (props) => { + const { children = , getStyles, innerProps: { ref, ...restInnerProps } } = props; return ( -
-
{children}
+
+
+ {children} +
); }; diff --git a/docs/examples/CustomControl.js b/docs/examples/CustomControl.js index 65c21e8271..43a50c45bf 100644 --- a/docs/examples/CustomControl.js +++ b/docs/examples/CustomControl.js @@ -1,15 +1,15 @@ import React, { Component } from 'react'; -import Select, { components } from 'react-select'; +import Select, { components } from '../../src'; import { colourOptions } from '../data'; const controlStyles = { borderRadius: '1px solid black', padding: '5px', background: colourOptions[2].color, - color: 'white', + color: 'white' }; -const ControlComponent = props => ( +const ControlComponent = (props) => (
{

Custom Control

} diff --git a/docs/examples/CustomDropdownIndicator.js b/docs/examples/CustomDropdownIndicator.js index 4b125bd42a..411e3d53e6 100644 --- a/docs/examples/CustomDropdownIndicator.js +++ b/docs/examples/CustomDropdownIndicator.js @@ -2,7 +2,7 @@ import React, { type ElementConfig } from 'react'; import EmojiIcon from '@atlaskit/icon/glyph/emoji'; -import Select, { components } from 'react-select'; +import Select, { components } from '../../src'; import { colourOptions } from '../data'; const DropdownIndicator = ( @@ -10,7 +10,9 @@ const DropdownIndicator = ( ) => { return ( - + ); }; diff --git a/docs/examples/CustomFilterOptions.js b/docs/examples/CustomFilterOptions.js index f379e781a1..ac078ed482 100644 --- a/docs/examples/CustomFilterOptions.js +++ b/docs/examples/CustomFilterOptions.js @@ -1,13 +1,14 @@ import React, { Component } from 'react'; -import Select from 'react-select'; +import Select from '../../src'; import { colourOptions } from '../data'; + type State = { ignoreCase: boolean, ignoreAccents: boolean, trim: boolean, matchFrom: boolean, -}; +} const filterOptions = (candidate, input) => { if (input) { return candidate.value === customOptions[0].value; @@ -15,16 +16,10 @@ const filterOptions = (candidate, input) => { return true; }; -const customOptions = [ - { - value: 'custom', - label: 'Using a custom filter to always display this option on search', - }, - ...colourOptions, -]; +const customOptions = [{ value: 'custom', label: 'Using a custom filter to always display this option on search' }, ...colourOptions]; export default class SelectCreateFilter extends Component<*, State> { - render() { + render () { return ( `${option.label}: ${option.rating}`} - /> +

Composing a display label from the label property and rating property in the options object

+ option.rating !== 'safe'} + isOptionDisabled={(option) => option.rating !== 'safe'} /> ); diff --git a/docs/examples/CustomLoadingIndicator.js b/docs/examples/CustomLoadingIndicator.js index b01cb41aa4..82e566b237 100644 --- a/docs/examples/CustomLoadingIndicator.js +++ b/docs/examples/CustomLoadingIndicator.js @@ -1,13 +1,13 @@ import React, { Component } from 'react'; import Spinner from '@atlaskit/spinner'; import Tooltip from '@atlaskit/tooltip'; -import AsyncSelect from 'react-select/async'; +import AsyncSelect from '../../src/Async'; import { colourOptions } from '../data'; -const LoadingIndicator = props => { +const LoadingIndicator = (props) => { return ( - + ); }; diff --git a/docs/examples/CustomLoadingMessage.js b/docs/examples/CustomLoadingMessage.js index 3cc0bf7500..952ff5dfe8 100644 --- a/docs/examples/CustomLoadingMessage.js +++ b/docs/examples/CustomLoadingMessage.js @@ -1,16 +1,13 @@ import React, { Component } from 'react'; import Tooltip from '@atlaskit/tooltip'; -import AsyncSelect from 'react-select/async'; +import AsyncSelect from '../../src/Async'; import { colourOptions } from '../data'; -const LoadingMessage = props => { +const LoadingMessage = (props) => { return ( -
- {props.children} +
+ {props.children}
); @@ -45,13 +42,7 @@ export default class CustomLoadingIndicator extends Component<*, State> { cacheOptions defaultOptions loadOptions={promiseOptions} - styles={{ - loadingMessage: base => ({ - ...base, - backgroundColor: colourOptions[2].color, - color: 'white', - }), - }} + styles={{ loadingMessage: (base) => ({ ...base, backgroundColor: colourOptions[2].color, color: 'white' }) }} components={{ LoadingMessage }} /> ); diff --git a/docs/examples/CustomMenu.js b/docs/examples/CustomMenu.js index 47413e2e90..aeb60a5158 100644 --- a/docs/examples/CustomMenu.js +++ b/docs/examples/CustomMenu.js @@ -1,27 +1,29 @@ import React, { Fragment } from 'react'; -import Select, { components } from 'react-select'; +import Select, { components } from '../../src'; import { colourOptions, groupedOptions } from '../data'; -function getLength(options) { +function getLength (options) { return options.reduce((acc, curr) => { if (curr.options) return acc + getLength(curr.options); return acc + 1; }, 0); -} +}; const menuHeaderStyle = { padding: '8px 12px', }; -const Menu = props => { +const Menu = (props) => { const optionsLength = getLength(props.options); return (
Custom Menu with {optionsLength} options
- {props.children} + + {props.children} +
); }; diff --git a/docs/examples/CustomMenuList.js b/docs/examples/CustomMenuList.js index 8864737ac6..3d0989be67 100644 --- a/docs/examples/CustomMenuList.js +++ b/docs/examples/CustomMenuList.js @@ -1,6 +1,6 @@ import React from 'react'; -import Select, { components } from 'react-select'; +import Select, { components } from '../../src'; import { colourOptions, groupedOptions } from '../data'; const menuHeaderStyle = { @@ -9,10 +9,12 @@ const menuHeaderStyle = { color: 'white', }; -const MenuList = props => { +const MenuList = (props) => { return ( -
Custom Menu List
+
+ Custom Menu List +
{props.children}
); diff --git a/docs/examples/CustomMultiValueContainer.js b/docs/examples/CustomMultiValueContainer.js index b08347374c..4d0effe6cf 100644 --- a/docs/examples/CustomMultiValueContainer.js +++ b/docs/examples/CustomMultiValueContainer.js @@ -2,13 +2,13 @@ import React from 'react'; import Tooltip from '@atlaskit/tooltip'; -import Select, { components } from 'react-select'; +import Select, { components } from '../../src'; import { colourOptions } from '../data'; -const MultiValueContainer = props => { +const MultiValueContainer = (props) => { return ( - + ); }; @@ -17,12 +17,7 @@ export default () => ( ({ - ...base, - backgroundColor: colourOptions[2].color, - color: 'white', - }), - }} + styles={{ multiValueLabel: (base) => ({ ...base, backgroundColor: colourOptions[2].color, color: 'white' }) }} defaultValue={[colourOptions[4], colourOptions[5]]} isMulti options={colourOptions} diff --git a/docs/examples/CustomMultiValueRemove.js b/docs/examples/CustomMultiValueRemove.js index cdaa1df6ac..ea354a986d 100644 --- a/docs/examples/CustomMultiValueRemove.js +++ b/docs/examples/CustomMultiValueRemove.js @@ -3,17 +3,14 @@ import React from 'react'; import EmojiIcon from '@atlaskit/icon/glyph/emoji'; import Tooltip from '@atlaskit/tooltip'; -import Select, { components } from 'react-select'; +import Select, { components } from '../../src'; import { colourOptions } from '../data'; -const MultiValueRemove = props => { +const MultiValueRemove = (props) => { return ( - + - + ); @@ -23,13 +20,7 @@ export default () => ( ({ ...base, ...msgStyles }) }} + styles={{ noOptionsMessage: (base) => ({ ...base, ...msgStyles }) }} isSearchable name="color" options={[]} diff --git a/docs/examples/CustomOption.js b/docs/examples/CustomOption.js index 7c5f7bfb2a..3039ccc98c 100644 --- a/docs/examples/CustomOption.js +++ b/docs/examples/CustomOption.js @@ -1,12 +1,12 @@ import React from 'react'; import Tooltip from '@atlaskit/tooltip'; -import Select, { components } from 'react-select'; +import Select, { components } from '../../src'; import { colourOptions } from '../data'; -const Option = props => { +const Option = (props) => { return ( - + ); }; @@ -15,13 +15,7 @@ export default () => ( ({ - ...base, - backgroundColor: colourOptions[2].color, - padding: 5, - }), - }} + + styles={{ container: (base) => ({ ...base, backgroundColor:colourOptions[2].color, padding: 5 }) }} options={colourOptions} /> ); diff --git a/docs/examples/CustomSingleValue.js b/docs/examples/CustomSingleValue.js index 5253c4762c..40776046b2 100644 --- a/docs/examples/CustomSingleValue.js +++ b/docs/examples/CustomSingleValue.js @@ -1,9 +1,12 @@ import React, { Component } from 'react'; -import Select, { components } from 'react-select'; +import Select, { components } from '../../src'; import { colourOptions } from '../data'; + const SingleValue = ({ children, ...props }) => ( - {children} + + {children} + ); type State = {}; @@ -15,16 +18,7 @@ export default class CustomControl extends Component<*, State> { { @@ -22,9 +22,7 @@ export default class MenuPortal extends Component<*, State> { console.log('menuPortal is Open'); this.setState({ isOpen: true }); }; - close = () => { - this.setState({ isOpen: false }); - }; + close = () => { this.setState({ isOpen: false }); }; setPlacement = ({ currentTarget }: SyntheticEvent) => { const portalPlacement = currentTarget && currentTarget.value; this.setState({ portalPlacement }); @@ -38,7 +36,8 @@ export default class MenuPortal extends Component<*, State> { return ( - {isOpen ? ( + { + isOpen ?

Portaled Menu Element

({ - ...base, - border: `1px dotted ${colourOptions[2].color}`, - height: '100%', - }), - }} + styles={{ option: (base) => ({ ...base, border: `1px dotted ${colourOptions[2].color}`, height: '100%' }) }} defaultValue={colourOptions[4]} options={colourOptions} /> diff --git a/docs/examples/StyledMulti.js b/docs/examples/StyledMulti.js index 3185948ecc..8f0da6487c 100644 --- a/docs/examples/StyledMulti.js +++ b/docs/examples/StyledMulti.js @@ -2,7 +2,7 @@ import React from 'react'; import chroma from 'chroma-js'; import { colourOptions } from '../data'; -import Select from 'react-select'; +import Select from '../../src'; const colourStyles = { control: styles => ({ ...styles, backgroundColor: 'white' }), @@ -12,24 +12,13 @@ const colourStyles = { ...styles, backgroundColor: isDisabled ? null - : isSelected - ? data.color - : isFocused - ? color.alpha(0.1).css() - : null, + : isSelected ? data.color : isFocused ? color.alpha(0.1).css() : null, color: isDisabled ? '#ccc' : isSelected - ? chroma.contrast(color, 'white') > 2 - ? 'white' - : 'black' - : data.color, + ? chroma.contrast(color, 'white') > 2 ? 'white' : 'black' + : data.color, cursor: isDisabled ? 'not-allowed' : 'default', - - ':active': { - ...styles[':active'], - backgroundColor: !isDisabled && (isSelected ? data.color : color.alpha(0.3).css()), - }, }; }, multiValue: (styles, { data }) => { diff --git a/docs/examples/StyledSingle.js b/docs/examples/StyledSingle.js index 0c4f4b309d..96f388f007 100644 --- a/docs/examples/StyledSingle.js +++ b/docs/examples/StyledSingle.js @@ -2,7 +2,7 @@ import React from 'react'; import chroma from 'chroma-js'; import { colourOptions } from '../data'; -import Select from 'react-select'; +import Select from '../../src'; const dot = (color = '#ccc') => ({ alignItems: 'center', @@ -27,24 +27,13 @@ const colourStyles = { ...styles, backgroundColor: isDisabled ? null - : isSelected - ? data.color - : isFocused - ? color.alpha(0.1).css() - : null, + : isSelected ? data.color : isFocused ? color.alpha(0.1).css() : null, color: isDisabled ? '#ccc' : isSelected - ? chroma.contrast(color, 'white') > 2 - ? 'white' - : 'black' - : data.color, + ? chroma.contrast(color, 'white') > 2 ? 'white' : 'black' + : data.color, cursor: isDisabled ? 'not-allowed' : 'default', - - ':active': { - ...styles[':active'], - backgroundColor: !isDisabled && (isSelected ? data.color : color.alpha(0.3).css()), - }, }; }, input: styles => ({ ...styles, ...dot() }), diff --git a/docs/examples/Theme.js b/docs/examples/Theme.js index 61774ca9f5..76302feb6e 100644 --- a/docs/examples/Theme.js +++ b/docs/examples/Theme.js @@ -1,18 +1,18 @@ import React from 'react'; import { flavourOptions } from '../data'; -import Select from 'react-select'; +import Select from '../../src'; export default () => ( ); let selectOption = selectWrapper diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000000..ae030bbab9 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,72 @@ +// @flow + +import babel from 'rollup-plugin-babel'; +import commonjs from 'rollup-plugin-commonjs'; +import resolve from 'rollup-plugin-node-resolve'; +import { terser } from 'rollup-plugin-terser'; +import pkg from './package.json'; + +const name = 'Select'; +const path = 'dist/react-select'; +const globals = { + classnames: 'classNames', + emotion: 'emotion', + 'prop-types': 'PropTypes', + 'react-dom': 'ReactDOM', + 'react-input-autosize': 'AutosizeInput', + react: 'React', +}; +// $FlowFixMe This should be inferred by Flow and manual casting does not work inside of this config. +const external = Object.keys(globals); + +const babelOptions = () => { + let result = { + babelrc: false, + presets: [ + '@babel/preset-env', + '@babel/preset-react', + '@babel/preset-flow' + ], + plugins: [ + 'emotion', + '@babel/plugin-proposal-class-properties' + ] + }; + return result; +}; + +export default [ + { + input: 'src/index.js', + output: { + file: pkg.module, + format: 'esm', + }, + external: [...external, 'raf'], + plugins: [babel(babelOptions())], + }, + + { + input: 'src/index.umd.js', + output: { + name, + file: path + '.js', + format: 'umd', + globals, + }, + external, + plugins: [babel(babelOptions()), resolve(), commonjs()], + }, + + { + input: 'src/index.umd.js', + output: { + name, + file: path + '.min.js', + format: 'umd', + globals, + }, + external, + plugins: [babel(babelOptions()), resolve(), commonjs(), terser()], + }, +]; diff --git a/src/Async.js b/src/Async.js new file mode 100644 index 0000000000..cdfdb356ef --- /dev/null +++ b/src/Async.js @@ -0,0 +1,191 @@ +// @flow + +import React, { + Component, + type ElementConfig, + type AbstractComponent, + type ElementRef, +} from 'react'; +import Select, { type Props as SelectProps } from './Select'; +import { handleInputChange } from './utils'; +import manageState from './stateManager'; +import type { OptionsType, InputActionMeta } from './types'; + +export type AsyncProps = { + /* The default set of options to show before the user starts searching. When + set to `true`, the results for loadOptions('') will be autoloaded. */ + defaultOptions: OptionsType | boolean, + /* Function that returns a promise, which is the set of options to be used + once the promise resolves. */ + loadOptions: (string, (OptionsType) => void) => Promise<*> | void, + /* If cacheOptions is truthy, then the loaded data will be cached. The cache + will remain until `cacheOptions` changes value. */ + cacheOptions: any, + onInputChange: (string, InputActionMeta) => void, + inputValue: string, +}; + +export type Props = SelectProps & AsyncProps; + +export const defaultProps = { + cacheOptions: false, + defaultOptions: false, + filterOption: null, +}; + +type State = { + defaultOptions?: OptionsType, + inputValue: string, + isLoading: boolean, + loadedInputValue?: string, + loadedOptions: OptionsType, + passEmptyOptions: boolean, +}; + +export const makeAsyncSelect = ( + SelectComponent: AbstractComponent +): AbstractComponent => + class Async extends Component { + static defaultProps = defaultProps; + select: ElementRef<*>; + lastRequest: {}; + mounted: boolean = false; + optionsCache: { [string]: OptionsType } = {}; + constructor(props: C & AsyncProps) { + super(); + this.state = { + defaultOptions: Array.isArray(props.defaultOptions) + ? props.defaultOptions + : undefined, + inputValue: + typeof props.inputValue !== 'undefined' ? props.inputValue : '', + isLoading: props.defaultOptions === true, + loadedOptions: [], + passEmptyOptions: false, + }; + } + componentDidMount() { + this.mounted = true; + const { defaultOptions } = this.props; + const { inputValue } = this.state; + if (defaultOptions === true) { + this.loadOptions(inputValue, options => { + if (!this.mounted) return; + const isLoading = !!this.lastRequest; + this.setState({ defaultOptions: options || [], isLoading }); + }); + } + } + componentWillReceiveProps(nextProps: C & AsyncProps) { + // if the cacheOptions prop changes, clear the cache + if (nextProps.cacheOptions !== this.props.cacheOptions) { + this.optionsCache = {}; + } + if (nextProps.defaultOptions !== this.props.defaultOptions) { + this.setState({ + defaultOptions: Array.isArray(nextProps.defaultOptions) + ? nextProps.defaultOptions + : undefined, + }); + } + } + componentWillUnmount() { + this.mounted = false; + } + focus() { + this.select.focus(); + } + blur() { + this.select.blur(); + } + loadOptions(inputValue: string, callback: (?Array<*>) => void) { + const { loadOptions } = this.props; + if (!loadOptions) return callback(); + const loader = loadOptions(inputValue, callback); + if (loader && typeof loader.then === 'function') { + loader.then(callback, () => callback()); + } + } + handleInputChange = (newValue: string, actionMeta: InputActionMeta) => { + const { cacheOptions, onInputChange } = this.props; + // TODO + const inputValue = handleInputChange(newValue, actionMeta, onInputChange); + if (!inputValue) { + delete this.lastRequest; + this.setState({ + inputValue: '', + loadedInputValue: '', + loadedOptions: [], + isLoading: false, + passEmptyOptions: false, + }); + return; + } + if (cacheOptions && this.optionsCache[inputValue]) { + this.setState({ + inputValue, + loadedInputValue: inputValue, + loadedOptions: this.optionsCache[inputValue], + isLoading: false, + passEmptyOptions: false, + }); + } else { + const request = (this.lastRequest = {}); + this.setState( + { + inputValue, + isLoading: true, + passEmptyOptions: !this.state.loadedInputValue, + }, + () => { + this.loadOptions(inputValue, options => { + if (!this.mounted) return; + if (options) { + this.optionsCache[inputValue] = options; + } + if (request !== this.lastRequest) return; + delete this.lastRequest; + this.setState({ + isLoading: false, + loadedInputValue: inputValue, + loadedOptions: options || [], + passEmptyOptions: false, + }); + }); + } + ); + } + return inputValue; + }; + render() { + const { loadOptions, ...props } = this.props; + const { + defaultOptions, + inputValue, + isLoading, + loadedInputValue, + loadedOptions, + passEmptyOptions, + } = this.state; + const options = passEmptyOptions + ? [] + : inputValue && loadedInputValue + ? loadedOptions + : defaultOptions || []; + return ( + { + this.select = ref; + }} + options={options} + isLoading={isLoading} + onInputChange={this.handleInputChange} + /> + ); + } + }; + +const SelectState = manageState>(Select); + +export default makeAsyncSelect>(SelectState); diff --git a/src/AsyncCreatable.js b/src/AsyncCreatable.js new file mode 100644 index 0000000000..ab56ff404c --- /dev/null +++ b/src/AsyncCreatable.js @@ -0,0 +1,18 @@ +// @flow + +import { type ElementConfig } from 'react'; +import { makeAsyncSelect } from './Async'; +import { makeCreatableSelect } from './Creatable'; +import manageState from './stateManager'; +import Select from './Select'; + +const SelectCreatable = makeCreatableSelect>( + Select +); +const SelectCreatableState = manageState>( + SelectCreatable +); + +export default makeAsyncSelect>( + SelectCreatableState +); diff --git a/src/Creatable.js b/src/Creatable.js new file mode 100644 index 0000000000..67a173e1fd --- /dev/null +++ b/src/Creatable.js @@ -0,0 +1,183 @@ +// @flow + +import React, { + Component, + type Node, + type AbstractComponent, + type ElementRef, + type ElementConfig, +} from 'react'; +import Select, { type Props as SelectProps } from './Select'; +import type { OptionType, OptionsType, ValueType, ActionMeta } from './types'; +import { cleanValue } from './utils'; +import manageState from './stateManager'; + +export type CreatableProps = {| + /* Allow options to be created while the `isLoading` prop is true. Useful to + prevent the "create new ..." option being displayed while async results are + still being loaded. */ + allowCreateWhileLoading: boolean, + /* Gets the label for the "create new ..." option in the menu. Is given the + current input value. */ + formatCreateLabel: string => Node, + /* Determines whether the "create new ..." option should be displayed based on + the current input value, select value and options array. */ + isValidNewOption: (string, OptionsType, OptionsType) => boolean, + /* Returns the data for the new option when it is created. Used to display the + value, and is passed to `onChange`. */ + getNewOptionData: (string, Node) => OptionType, + /* If provided, this will be called with the input value when a new option is + created, and `onChange` will **not** be called. Use this when you need more + control over what happens when new options are created. */ + onCreateOption?: string => void, + /* Sets the position of the createOption element in your options list. Defaults to 'last' */ + createOptionPosition: 'first' | 'last', + options?: OptionsType, + inputValue: string, + value: ValueType, + isLoading?: boolean, + isMulti?: boolean, + onChange: (ValueType, ActionMeta) => void, +|}; + +export type Props = SelectProps & CreatableProps; + +const compareOption = (inputValue = '', option) => { + const candidate = String(inputValue).toLowerCase(); + const optionValue = String(option.value).toLowerCase(); + const optionLabel = String(option.label).toLowerCase(); + return optionValue === candidate || optionLabel === candidate; +}; + +const builtins = { + formatCreateLabel: (inputValue: string) => `Create "${inputValue}"`, + isValidNewOption: ( + inputValue: string, + selectValue: OptionsType, + selectOptions: OptionsType + ) => + !( + !inputValue || + (!selectValue || selectValue.some(option => compareOption(inputValue, option))) || + selectOptions.some(option => compareOption(inputValue, option)) + ), + getNewOptionData: (inputValue: string, optionLabel: Node) => ({ + label: optionLabel, + value: inputValue, + __isNew__: true, + }), +}; + +export const defaultProps = { + allowCreateWhileLoading: false, + createOptionPosition: 'last', + ...builtins, +}; + +type State = { + newOption: OptionType | void, + options: OptionsType, +}; + +export const makeCreatableSelect = ( + SelectComponent: AbstractComponent +): AbstractComponent => + class Creatable extends Component { + static defaultProps = defaultProps; + select: ElementRef<*>; + constructor(props: CreatableProps & C) { + super(props); + const options = props.options || []; + this.state = { + newOption: undefined, + options: options, + }; + } + componentWillReceiveProps(nextProps: CreatableProps & C) { + const { + allowCreateWhileLoading, + createOptionPosition, + formatCreateLabel, + getNewOptionData, + inputValue, + isLoading, + isValidNewOption, + value, + } = nextProps; + const options = nextProps.options || []; + let { newOption } = this.state; + if (isValidNewOption(inputValue, cleanValue(value), options)) { + newOption = getNewOptionData(inputValue, formatCreateLabel(inputValue)); + } else { + newOption = undefined; + } + this.setState({ + newOption: newOption, + options: + (allowCreateWhileLoading || !isLoading) && newOption + ? createOptionPosition === 'first' + ? [newOption, ...options] + : [...options, newOption] + : options, + }); + } + onChange = (newValue: ValueType, actionMeta: ActionMeta) => { + const { + getNewOptionData, + inputValue, + isMulti, + onChange, + onCreateOption, + value, + } = this.props; + if (actionMeta.action !== 'select-option') { + return onChange(newValue, actionMeta); + } + const { newOption } = this.state; + const valueArray = Array.isArray(newValue) ? newValue : [newValue]; + + if (valueArray[valueArray.length - 1] === newOption) { + if (onCreateOption) onCreateOption(inputValue); + else { + const newOptionData = getNewOptionData(inputValue, inputValue); + const newActionMeta = { action: 'create-option' }; + if (isMulti) { + onChange([...cleanValue(value), newOptionData], newActionMeta); + } else { + onChange(newOptionData, newActionMeta); + } + } + return; + } + onChange(newValue, actionMeta); + }; + focus() { + this.select.focus(); + } + blur() { + this.select.blur(); + } + render() { + const { ...props } = this.props; + const { options } = this.state; + return ( + { + this.select = ref; + }} + options={options} + onChange={this.onChange} + /> + ); + } + }; + +// TODO: do this in package entrypoint +const SelectCreatable = makeCreatableSelect>( + Select +); + +export default manageState>( + SelectCreatable +); diff --git a/src/Select.js b/src/Select.js new file mode 100644 index 0000000000..c225d527b2 --- /dev/null +++ b/src/Select.js @@ -0,0 +1,1843 @@ +// @flow + +import React, { Component, type ElementRef, type Node } from 'react'; + +import memoizeOne from 'memoize-one'; +import { MenuPlacer } from './components/Menu'; +import isEqual from './internal/react-fast-compare'; + +import { createFilter } from './filters'; +import { + A11yText, + DummyInput, + ScrollBlock, + ScrollCaptor, +} from './internal/index'; +import { + valueFocusAriaMessage, + optionFocusAriaMessage, + resultsAriaMessage, + valueEventAriaMessage, + instructionsAriaMessage, + type InstructionsContext, + type ValueEventContext, +} from './accessibility/index'; + +import { + classNames, + cleanValue, + isTouchCapable, + isMobileDevice, + noop, + scrollIntoView, + isDocumentElement, +} from './utils'; + +import { + formatGroupLabel, + getOptionLabel, + getOptionValue, + isOptionDisabled, +} from './builtins'; + +import { + defaultComponents, + type PlaceholderOrValue, + type SelectComponents, + type SelectComponentsConfig, +} from './components/index'; + +import { defaultStyles, type StylesConfig } from './styles'; +import { defaultTheme, type ThemeConfig } from './theme'; + +import type { + ActionMeta, + ActionTypes, + FocusDirection, + FocusEventHandler, + GroupType, + InputActionMeta, + KeyboardEventHandler, + MenuPlacement, + MenuPosition, + OptionsType, + OptionType, + ValueType, +} from './types'; + +type MouseOrTouchEvent = + | SyntheticMouseEvent + | SyntheticTouchEvent; +type FormatOptionLabelContext = 'menu' | 'value'; +type FormatOptionLabelMeta = { + context: FormatOptionLabelContext, + inputValue: string, + selectValue: ValueType, +}; + +export type Props = { + /* Aria label (for assistive tech) */ + 'aria-label'?: string, + /* HTML ID of an element that should be used as the label (for assistive tech) */ + 'aria-labelledby'?: string, + /* Focus the control when it is mounted */ + autoFocus?: boolean, + /* Remove the currently focused option when the user presses backspace */ + backspaceRemovesValue: boolean, + /* Remove focus from the input when the user selects an option (handy for dismissing the keyboard on touch devices) */ + blurInputOnSelect: boolean, + /* When the user reaches the top/bottom of the menu, prevent scroll on the scroll-parent */ + captureMenuScroll: boolean, + /* Sets a className attribute on the outer component */ + className?: string, + /* + If provided, all inner components will be given a prefixed className attribute. + + This is useful when styling via CSS classes instead of the Styles API approach. + */ + classNamePrefix?: string | null, + /* Close the select menu when the user selects an option */ + closeMenuOnSelect: boolean, + /* + If `true`, close the select menu when the user scrolls the document/body. + + If a function, takes a standard javascript `ScrollEvent` you return a boolean: + + `true` => The menu closes + + `false` => The menu stays open + + This is useful when you have a scrollable modal and want to portal the menu out, + but want to avoid graphical issues. + */ + closeMenuOnScroll: boolean | EventListener, + /* + This complex object includes all the compositional components that are used + in `react-select`. If you wish to overwrite a component, pass in an object + with the appropriate namespace. + + If you only wish to restyle a component, we recommend using the `styles` prop + instead. For a list of the components that can be passed in, and the shape + that will be passed to them, see [the components docs](/components) + */ + components: SelectComponentsConfig, + /* Whether the value of the select, e.g. SingleValue, should be displayed in the control. */ + controlShouldRenderValue: boolean, + /* Delimiter used to join multiple values into a single HTML Input value */ + delimiter?: string, + /* Clear all values when the user presses escape AND the menu is closed */ + escapeClearsValue: boolean, + /* Custom method to filter whether an option should be displayed in the menu */ + filterOption: + | (({ label: string, value: string, data: OptionType }, string) => boolean) + | null, + /* + Formats group labels in the menu as React components + + An example can be found in the [Replacing builtins](/advanced#replacing-builtins) documentation. + */ + formatGroupLabel: typeof formatGroupLabel, + /* Formats option labels in the menu and control as React components */ + formatOptionLabel?: (OptionType, FormatOptionLabelMeta) => Node, + /* Resolves option data to a string to be displayed as the label by components */ + getOptionLabel: typeof getOptionLabel, + /* Resolves option data to a string to compare options and specify value attributes */ + getOptionValue: typeof getOptionValue, + /* Hide the selected option from the menu */ + hideSelectedOptions?: boolean, + /* The id to set on the SelectContainer component. */ + id?: string, + /* The value of the search input */ + inputValue: string, + /* The id of the search input */ + inputId?: string, + /* Define an id prefix for the select components e.g. {your-id}-value */ + instanceId?: number | string, + /* Is the select value clearable */ + isClearable?: boolean, + /* Is the select disabled */ + isDisabled: boolean, + /* Is the select in a state of loading (async) */ + isLoading: boolean, + /* + Override the built-in logic to detect whether an option is disabled + + An example can be found in the [Replacing builtins](/advanced#replacing-builtins) documentation. + */ + isOptionDisabled: (OptionType, OptionsType) => boolean | false, + /* Override the built-in logic to detect whether an option is selected */ + isOptionSelected?: (OptionType, OptionsType) => boolean, + /* Support multiple selected options */ + isMulti: boolean, + /* Is the select direction right-to-left */ + isRtl: boolean, + /* Whether to enable search functionality */ + isSearchable: boolean, + /* Async: Text to display when loading options */ + loadingMessage: ({ inputValue: string }) => string | null, + /* Minimum height of the menu before flipping */ + minMenuHeight: number, + /* Maximum height of the menu before scrolling */ + maxMenuHeight: number, + /* Whether the menu is open */ + menuIsOpen: boolean, + /* Default placement of the menu in relation to the control. 'auto' will flip + when there isn't enough space below the control. */ + menuPlacement: MenuPlacement, + /* The CSS position value of the menu, when "fixed" extra layout management is required */ + menuPosition: MenuPosition, + /* + Whether the menu should use a portal, and where it should attach + + An example can be found in the [Portaling](/advanced#portaling) documentation + */ + menuPortalTarget?: HTMLElement, + /* Whether to block scroll events when the menu is open */ + menuShouldBlockScroll: boolean, + /* Whether the menu should be scrolled into view when it opens */ + menuShouldScrollIntoView: boolean, + /* Name of the HTML Input (optional - without this, no input will be rendered) */ + name?: string, + /* Text to display when there are no options */ + noOptionsMessage: ({ inputValue: string }) => string | null, + /* Handle blur events on the control */ + onBlur?: FocusEventHandler, + /* Handle change events on the select */ + onChange: (ValueType, ActionMeta) => void, + /* Handle focus events on the control */ + onFocus?: FocusEventHandler, + /* Handle change events on the input */ + onInputChange: (string, InputActionMeta) => void, + /* Handle key down events on the select */ + onKeyDown?: KeyboardEventHandler, + /* Handle the menu opening */ + onMenuOpen: () => void, + /* Handle the menu closing */ + onMenuClose: () => void, + /* Fired when the user scrolls to the top of the menu */ + onMenuScrollToTop?: (SyntheticEvent) => void, + /* Fired when the user scrolls to the bottom of the menu */ + onMenuScrollToBottom?: (SyntheticEvent) => void, + /* Allows control of whether the menu is opened when the Select is focused */ + openMenuOnFocus: boolean, + /* Allows control of whether the menu is opened when the Select is clicked */ + openMenuOnClick: boolean, + /* Array of options that populate the select menu */ + options: OptionsType, + /* Number of options to jump in menu when page{up|down} keys are used */ + pageSize: number, + /* Placeholder text for the select value */ + placeholder: string, + /* Status to relay to screen readers */ + screenReaderStatus: ({ count: number }) => string, + /* + Style modifier methods + + A basic example can be found at the bottom of the [Replacing builtins](/advanced#replacing-builtins) documentation. + */ + styles: StylesConfig, + /* Theme modifier method */ + theme?: ThemeConfig, + /* Sets the tabIndex attribute on the input */ + tabIndex: string, + /* Select the currently focused option when the user presses tab */ + tabSelectsValue: boolean, + /* The value of the select; reflected by the selected option */ + value: ValueType, +}; + +export const defaultProps = { + backspaceRemovesValue: true, + blurInputOnSelect: isTouchCapable(), + captureMenuScroll: !isTouchCapable(), + closeMenuOnSelect: true, + closeMenuOnScroll: false, + components: {}, + controlShouldRenderValue: true, + escapeClearsValue: false, + filterOption: createFilter(), + formatGroupLabel: formatGroupLabel, + getOptionLabel: getOptionLabel, + getOptionValue: getOptionValue, + isDisabled: false, + isLoading: false, + isMulti: false, + isRtl: false, + isSearchable: true, + isOptionDisabled: isOptionDisabled, + loadingMessage: () => 'Loading...', + maxMenuHeight: 300, + minMenuHeight: 140, + menuIsOpen: false, + menuPlacement: 'bottom', + menuPosition: 'absolute', + menuShouldBlockScroll: false, + menuShouldScrollIntoView: !isMobileDevice(), + noOptionsMessage: () => 'No options', + openMenuOnFocus: false, + openMenuOnClick: true, + options: [], + pageSize: 5, + placeholder: 'Select...', + screenReaderStatus: ({ count }: { count: number }) => + `${count} result${count !== 1 ? 's' : ''} available`, + styles: {}, + tabIndex: '0', + tabSelectsValue: true, +}; + +type MenuOptions = { + render: Array, + focusable: Array, +}; + +type State = { + ariaLiveSelection: string, + ariaLiveContext: string, + inputIsHidden: boolean, + isFocused: boolean, + isComposing: boolean, + focusedOption: OptionType | null, + focusedValue: OptionType | null, + menuOptions: MenuOptions, + selectValue: OptionsType, +}; + +type ElRef = ElementRef<*>; + +let instanceId = 1; + +export default class Select extends Component { + static defaultProps = defaultProps; + state = { + ariaLiveSelection: '', + ariaLiveContext: '', + focusedOption: null, + focusedValue: null, + inputIsHidden: false, + isFocused: false, + isComposing: false, + menuOptions: { render: [], focusable: [] }, + selectValue: [], + }; + + // Misc. Instance Properties + // ------------------------------ + + blockOptionHover: boolean = false; + clearFocusValueOnUpdate: boolean = false; + commonProps: any; // TODO + components: SelectComponents; + hasGroups: boolean = false; + initialTouchX: number = 0; + initialTouchY: number = 0; + inputIsHiddenAfterUpdate: ?boolean; + instancePrefix: string = ''; + openAfterFocus: boolean = false; + scrollToFocusedOptionOnUpdate: boolean = false; + userIsDragging: ?boolean; + + // Refs + // ------------------------------ + + controlRef: ElRef = null; + getControlRef = (ref: HTMLElement) => { + this.controlRef = ref; + }; + focusedOptionRef: ElRef = null; + getFocusedOptionRef = (ref: HTMLElement) => { + this.focusedOptionRef = ref; + }; + menuListRef: ElRef = null; + getMenuListRef = (ref: HTMLElement) => { + this.menuListRef = ref; + }; + inputRef: ElRef = null; + getInputRef = (ref: HTMLElement) => { + this.inputRef = ref; + }; + + // Lifecycle + // ------------------------------ + + constructor(props: Props) { + super(props); + const { value } = props; + this.cacheComponents = memoizeOne(this.cacheComponents, isEqual).bind(this); + this.cacheComponents(props.components); + this.instancePrefix = + 'react-select-' + (this.props.instanceId || ++instanceId); + + const selectValue = cleanValue(value); + const menuOptions = props.menuIsOpen ? this.buildMenuOptions(props, selectValue) : { render: [], focusable: [] }; + + this.state.menuOptions = menuOptions; + this.state.selectValue = selectValue; + } + componentDidMount() { + this.startListeningComposition(); + this.startListeningToTouch(); + + if (this.props.closeMenuOnScroll && document && document.addEventListener) { + // Listen to all scroll events, and filter them out inside of 'onScroll' + document.addEventListener('scroll', this.onScroll, true); + } + + if (this.props.autoFocus) { + this.focusInput(); + } + } + componentWillReceiveProps(nextProps: Props) { + const { options, value, menuIsOpen, inputValue } = this.props; + // re-cache custom components + this.cacheComponents(nextProps.components); + // rebuild the menu options + if ( + nextProps.value !== value || + nextProps.options !== options || + nextProps.menuIsOpen !== menuIsOpen || + nextProps.inputValue !== inputValue + ) { + const selectValue = cleanValue(nextProps.value); + const menuOptions = nextProps.menuIsOpen ? this.buildMenuOptions(nextProps, selectValue) : { render: [], focusable: [] }; + const focusedValue = this.getNextFocusedValue(selectValue); + const focusedOption = this.getNextFocusedOption(menuOptions.focusable); + this.setState({ menuOptions, selectValue, focusedOption, focusedValue }); + } + // some updates should toggle the state of the input visibility + if (this.inputIsHiddenAfterUpdate != null) { + this.setState({ + inputIsHidden: this.inputIsHiddenAfterUpdate, + }); + delete this.inputIsHiddenAfterUpdate; + } + } + componentDidUpdate(prevProps: Props) { + const { isDisabled, menuIsOpen } = this.props; + const { isFocused } = this.state; + + // ensure focus is restored correctly when the control becomes enabled + const ensureFocus_isDisabled = isFocused && !isDisabled && prevProps.isDisabled; + // ensure focus is on the Input when the menu opens + const ensureFocus_menuIsOpen = isFocused && menuIsOpen && !prevProps.menuIsOpen; + if (ensureFocus_isDisabled || ensureFocus_menuIsOpen) { + this.focusInput(); + } + + // scroll the focused option into view if necessary + if ( + this.menuListRef && + this.focusedOptionRef && + this.scrollToFocusedOptionOnUpdate + ) { + scrollIntoView(this.menuListRef, this.focusedOptionRef); + } + this.scrollToFocusedOptionOnUpdate = false; + } + componentWillUnmount() { + this.stopListeningComposition(); + this.stopListeningToTouch(); + document.removeEventListener('scroll', this.onScroll, true); + } + cacheComponents = (components: SelectComponents) => { + this.components = defaultComponents({ components }); + }; + // ============================== + // Consumer Handlers + // ============================== + + onMenuOpen() { + this.props.onMenuOpen(); + } + onMenuClose() { + const { isSearchable, isMulti } = this.props; + this.announceAriaLiveContext({ + event: 'input', + context: { isSearchable, isMulti }, + }); + this.onInputChange('', { action: 'menu-close' }); + this.props.onMenuClose(); + } + onInputChange(newValue: string, actionMeta: InputActionMeta) { + this.props.onInputChange(newValue, actionMeta); + } + + // ============================== + // Methods + // ============================== + + focusInput() { + if (!this.inputRef) return; + this.inputRef.focus(); + } + blurInput() { + if (!this.inputRef) return; + this.inputRef.blur(); + } + + // aliased for consumers + focus = this.focusInput; + blur = this.blurInput; + + openMenu(focusOption: 'first' | 'last') { + const { menuOptions, selectValue, isFocused } = this.state; + const { isMulti } = this.props; + let openAtIndex = + focusOption === 'first' ? 0 : menuOptions.focusable.length - 1; + + if (!isMulti) { + const selectedIndex = menuOptions.focusable.indexOf(selectValue[0]); + if (selectedIndex > -1) { + openAtIndex = selectedIndex; + } + } + + // only scroll if the menu isn't already open + this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef); + this.inputIsHiddenAfterUpdate = false; + + this.onMenuOpen(); + this.setState({ + focusedValue: null, + focusedOption: menuOptions.focusable[openAtIndex], + }); + + this.announceAriaLiveContext({ event: 'menu' }); + } + focusValue(direction: 'previous' | 'next') { + const { isMulti, isSearchable } = this.props; + const { selectValue, focusedValue } = this.state; + + // Only multiselects support value focusing + if (!isMulti) return; + + this.setState({ + focusedOption: null, + }); + + let focusedIndex = selectValue.indexOf(focusedValue); + if (!focusedValue) { + focusedIndex = -1; + this.announceAriaLiveContext({ event: 'value' }); + } + + const lastIndex = selectValue.length - 1; + let nextFocus = -1; + if (!selectValue.length) return; + + switch (direction) { + case 'previous': + if (focusedIndex === 0) { + // don't cycle from the start to the end + nextFocus = 0; + } else if (focusedIndex === -1) { + // if nothing is focused, focus the last value first + nextFocus = lastIndex; + } else { + nextFocus = focusedIndex - 1; + } + break; + case 'next': + if (focusedIndex > -1 && focusedIndex < lastIndex) { + nextFocus = focusedIndex + 1; + } + break; + } + + if (nextFocus === -1) { + this.announceAriaLiveContext({ + event: 'input', + context: { isSearchable, isMulti }, + }); + } + + this.setState({ + inputIsHidden: nextFocus !== -1, + focusedValue: selectValue[nextFocus], + }); + } + + focusOption(direction: FocusDirection = 'first') { + const { pageSize } = this.props; + const { focusedOption, menuOptions } = this.state; + const options = menuOptions.focusable; + + if (!options.length) return; + let nextFocus = 0; // handles 'first' + let focusedIndex = options.indexOf(focusedOption); + if (!focusedOption) { + focusedIndex = -1; + this.announceAriaLiveContext({ event: 'menu' }); + } + + if (direction === 'up') { + nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1; + } else if (direction === 'down') { + nextFocus = (focusedIndex + 1) % options.length; + } else if (direction === 'pageup') { + nextFocus = focusedIndex - pageSize; + if (nextFocus < 0) nextFocus = 0; + } else if (direction === 'pagedown') { + nextFocus = focusedIndex + pageSize; + if (nextFocus > options.length - 1) nextFocus = options.length - 1; + } else if (direction === 'last') { + nextFocus = options.length - 1; + } + this.scrollToFocusedOptionOnUpdate = true; + this.setState({ + focusedOption: options[nextFocus], + focusedValue: null, + }); + this.announceAriaLiveContext({ event: 'menu', context: { isDisabled: isOptionDisabled(options[nextFocus]) } }); + } + onChange = (newValue: ValueType, actionMeta: ActionMeta) => { + const { onChange, name } = this.props; + onChange(newValue, { ...actionMeta, name }); + }; + setValue = ( + newValue: ValueType, + action: ActionTypes = 'set-value', + option?: OptionType + ) => { + const { closeMenuOnSelect, isMulti } = this.props; + this.onInputChange('', { action: 'set-value' }); + if (closeMenuOnSelect) { + this.inputIsHiddenAfterUpdate = !isMulti; + this.onMenuClose(); + } + // when the select value should change, we should reset focusedValue + this.clearFocusValueOnUpdate = true; + this.onChange(newValue, { action, option }); + }; + selectOption = (newValue: OptionType) => { + const { blurInputOnSelect, isMulti } = this.props; + const { selectValue } = this.state; + + if (isMulti) { + if (this.isOptionSelected(newValue, selectValue)) { + const candidate = this.getOptionValue(newValue); + this.setValue( + selectValue.filter(i => this.getOptionValue(i) !== candidate), + 'deselect-option', + newValue + ); + this.announceAriaLiveSelection({ + event: 'deselect-option', + context: { value: this.getOptionLabel(newValue) }, + }); + } else { + if (!this.isOptionDisabled(newValue, selectValue)) { + this.setValue([...selectValue, newValue], 'select-option', newValue); + this.announceAriaLiveSelection({ + event: 'select-option', + context: { value: this.getOptionLabel(newValue) }, + }); + } else { + // announce that option is disabled + this.announceAriaLiveSelection({ + event: 'select-option', + context: { value: this.getOptionLabel(newValue), isDisabled: true }, + }); + } + } + } else { + if (!this.isOptionDisabled(newValue, selectValue)) { + this.setValue(newValue, 'select-option'); + this.announceAriaLiveSelection({ + event: 'select-option', + context: { value: this.getOptionLabel(newValue) }, + }); + } else { + // announce that option is disabled + this.announceAriaLiveSelection({ + event: 'select-option', + context: { value: this.getOptionLabel(newValue), isDisabled: true }, + }); + } + } + + if (blurInputOnSelect) { + this.blurInput(); + } + }; + removeValue = (removedValue: OptionType) => { + const { selectValue } = this.state; + const candidate = this.getOptionValue(removedValue); + this.onChange( + selectValue.filter(i => this.getOptionValue(i) !== candidate), + { + action: 'remove-value', + removedValue, + } + ); + this.announceAriaLiveSelection({ + event: 'remove-value', + context: { + value: removedValue ? this.getOptionLabel(removedValue) : '', + }, + }); + this.focusInput(); + }; + clearValue = () => { + const { isMulti } = this.props; + this.onChange(isMulti ? [] : null, { action: 'clear' }); + }; + popValue = () => { + const { selectValue } = this.state; + const lastSelectedValue = selectValue[selectValue.length - 1]; + this.announceAriaLiveSelection({ + event: 'pop-value', + context: { + value: lastSelectedValue ? this.getOptionLabel(lastSelectedValue) : '', + }, + }); + this.onChange(selectValue.slice(0, selectValue.length - 1), { + action: 'pop-value', + removedValue: lastSelectedValue, + }); + }; + + // ============================== + // Getters + // ============================== + + getTheme() { + // Use the default theme if there are no customizations. + if (!this.props.theme) { + return defaultTheme; + } + // If the theme prop is a function, assume the function + // knows how to merge the passed-in default theme with + // its own modifications. + if (typeof this.props.theme === 'function') { + return this.props.theme(defaultTheme); + } + // Otherwise, if a plain theme object was passed in, + // overlay it with the default theme. + return { + ...defaultTheme, + ...this.props.theme, + }; + } + + getCommonProps() { + const { clearValue, getStyles, setValue, selectOption, props } = this; + const { classNamePrefix, isMulti, isRtl, options } = props; + const { selectValue } = this.state; + const hasValue = this.hasValue(); + const getValue = () => selectValue; + + const cx = classNames.bind(null, classNamePrefix); + return { + cx, + clearValue, + getStyles, + getValue, + hasValue, + isMulti, + isRtl, + options, + selectOption, + setValue, + selectProps: props, + theme: this.getTheme(), + }; + } + + getNextFocusedValue(nextSelectValue: OptionsType) { + if (this.clearFocusValueOnUpdate) { + this.clearFocusValueOnUpdate = false; + return null; + } + const { focusedValue, selectValue: lastSelectValue } = this.state; + const lastFocusedIndex = lastSelectValue.indexOf(focusedValue); + if (lastFocusedIndex > -1) { + const nextFocusedIndex = nextSelectValue.indexOf(focusedValue); + if (nextFocusedIndex > -1) { + // the focused value is still in the selectValue, return it + return focusedValue; + } else if (lastFocusedIndex < nextSelectValue.length) { + // the focusedValue is not present in the next selectValue array by + // reference, so return the new value at the same index + return nextSelectValue[lastFocusedIndex]; + } + } + return null; + } + + getNextFocusedOption(options: OptionsType) { + const { focusedOption: lastFocusedOption } = this.state; + return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 + ? lastFocusedOption + : options[0]; + } + getOptionLabel = (data: OptionType): string => { + return this.props.getOptionLabel(data); + }; + getOptionValue = (data: OptionType): string => { + return this.props.getOptionValue(data); + }; + getStyles = (key: string, props: {}): {} => { + const base = defaultStyles[key](props); + base.boxSizing = 'border-box'; + const custom = this.props.styles[key]; + return custom ? custom(base, props) : base; + }; + getElementId = (element: 'group' | 'input' | 'listbox' | 'option') => { + return `${this.instancePrefix}-${element}`; + }; + getActiveDescendentId = () => { + const { menuIsOpen } = this.props; + const { menuOptions, focusedOption } = this.state; + + if (!focusedOption || !menuIsOpen) return undefined; + + const index = menuOptions.focusable.indexOf(focusedOption); + const option = menuOptions.render[index]; + + return option && option.key; + }; + + // ============================== + // Helpers + // ============================== + announceAriaLiveSelection = ({ + event, + context, + }: { + event: string, + context: ValueEventContext, + }) => { + this.setState({ + ariaLiveSelection: valueEventAriaMessage(event, context), + }); + }; + announceAriaLiveContext = ({ + event, + context, + }: { + event: string, + context?: InstructionsContext, + }) => { + this.setState({ + ariaLiveContext: instructionsAriaMessage(event, { + ...context, + label: this.props['aria-label'], + }), + }); + }; + + hasValue() { + const { selectValue } = this.state; + return selectValue.length > 0; + } + hasOptions() { + return !!this.state.menuOptions.render.length; + } + countOptions() { + return this.state.menuOptions.focusable.length; + } + isClearable(): boolean { + const { isClearable, isMulti } = this.props; + + // single select, by default, IS NOT clearable + // multi select, by default, IS clearable + if (isClearable === undefined) return isMulti; + + return isClearable; + } + isOptionDisabled(option: OptionType, selectValue: OptionsType): boolean { + return typeof this.props.isOptionDisabled === 'function' + ? this.props.isOptionDisabled(option, selectValue) + : false; + } + isOptionSelected(option: OptionType, selectValue: OptionsType): boolean { + if (selectValue.indexOf(option) > -1) return true; + if (typeof this.props.isOptionSelected === 'function') { + return this.props.isOptionSelected(option, selectValue); + } + const candidate = this.getOptionValue(option); + return selectValue.some(i => this.getOptionValue(i) === candidate); + } + filterOption( + option: { label: string, value: string, data: OptionType }, + inputValue: string + ) { + return this.props.filterOption + ? this.props.filterOption(option, inputValue) + : true; + } + formatOptionLabel(data: OptionType, context: FormatOptionLabelContext): Node { + if (typeof this.props.formatOptionLabel === 'function') { + const { inputValue } = this.props; + const { selectValue } = this.state; + return this.props.formatOptionLabel(data, { + context, + inputValue, + selectValue, + }); + } else { + return this.getOptionLabel(data); + } + } + formatGroupLabel(data: GroupType) { + return this.props.formatGroupLabel(data); + } + + // ============================== + // Mouse Handlers + // ============================== + + onMenuMouseDown = (event: SyntheticMouseEvent) => { + if (event.button !== 0) { + return; + } + event.stopPropagation(); + event.preventDefault(); + this.focusInput(); + }; + onMenuMouseMove = (event: SyntheticMouseEvent) => { + this.blockOptionHover = false; + }; + onControlMouseDown = (event: MouseOrTouchEvent) => { + const { openMenuOnClick } = this.props; + if (!this.state.isFocused) { + if (openMenuOnClick) { + this.openAfterFocus = true; + } + this.focusInput(); + } else if (!this.props.menuIsOpen) { + if (openMenuOnClick) { + this.openMenu('first'); + } + } else { + //$FlowFixMe + if (event.target.tagName !== 'INPUT') { + this.onMenuClose(); + } + } + //$FlowFixMe + if (event.target.tagName !== 'INPUT') { + event.preventDefault(); + } + }; + onDropdownIndicatorMouseDown = (event: MouseOrTouchEvent) => { + // ignore mouse events that weren't triggered by the primary button + if (event && event.type === 'mousedown' && event.button !== 0) { + return; + } + if (this.props.isDisabled) return; + const { isMulti, menuIsOpen } = this.props; + this.focusInput(); + if (menuIsOpen) { + this.inputIsHiddenAfterUpdate = !isMulti; + this.onMenuClose(); + } else { + this.openMenu('first'); + } + event.preventDefault(); + event.stopPropagation(); + }; + onClearIndicatorMouseDown = (event: MouseOrTouchEvent) => { + // ignore mouse events that weren't triggered by the primary button + if (event && event.type === 'mousedown' && event.button !== 0) { + return; + } + this.clearValue(); + event.stopPropagation(); + this.openAfterFocus = false; + setTimeout(() => this.focusInput()); + }; + onScroll = (event: Event) => { + if (typeof this.props.closeMenuOnScroll === 'boolean') { + if ( + event.target instanceof HTMLElement && + isDocumentElement(event.target) + ) { + this.props.onMenuClose(); + } + } else if (typeof this.props.closeMenuOnScroll === 'function') { + if (this.props.closeMenuOnScroll(event)) { + this.props.onMenuClose(); + } + } + }; + + // ============================== + // Composition Handlers + // ============================== + + startListeningComposition() { + if (document && document.addEventListener) { + document.addEventListener( + 'compositionstart', + this.onCompositionStart, + false + ); + document.addEventListener('compositionend', this.onCompositionEnd, false); + } + } + stopListeningComposition() { + if (document && document.removeEventListener) { + document.removeEventListener('compositionstart', this.onCompositionStart); + document.removeEventListener('compositionend', this.onCompositionEnd); + } + } + onCompositionStart = () => { + this.setState({ + isComposing: true, + }); + }; + onCompositionEnd = () => { + this.setState({ + isComposing: false, + }); + }; + + // ============================== + // Touch Handlers + // ============================== + + startListeningToTouch() { + if (document && document.addEventListener) { + document.addEventListener('touchstart', this.onTouchStart, false); + document.addEventListener('touchmove', this.onTouchMove, false); + document.addEventListener('touchend', this.onTouchEnd, false); + } + } + stopListeningToTouch() { + if (document && document.removeEventListener) { + document.removeEventListener('touchstart', this.onTouchStart); + document.removeEventListener('touchmove', this.onTouchMove); + document.removeEventListener('touchend', this.onTouchEnd); + } + } + onTouchStart = ({ touches }: TouchEvent) => { + const touch = touches.item(0); + if (!touch) { + return; + } + + this.initialTouchX = touch.clientX; + this.initialTouchY = touch.clientY; + this.userIsDragging = false; + }; + onTouchMove = ({ touches }: TouchEvent) => { + const touch = touches.item(0); + if (!touch) { + return; + } + + const deltaX = Math.abs(touch.clientX - this.initialTouchX); + const deltaY = Math.abs(touch.clientY - this.initialTouchY); + const moveThreshold = 5; + + this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold; + }; + onTouchEnd = (event: TouchEvent) => { + if (this.userIsDragging) return; + + // close the menu if the user taps outside + // we're checking on event.target here instead of event.currentTarget, because we want to assert information + // on events on child elements, not the document (which we've attached this handler to). + if ( + this.controlRef && + !this.controlRef.contains(event.target) && + this.menuListRef && + !this.menuListRef.contains(event.target) + ) { + this.blurInput(); + } + + // reset move vars + this.initialTouchX = 0; + this.initialTouchY = 0; + }; + onControlTouchEnd = (event: SyntheticTouchEvent) => { + if (this.userIsDragging) return; + this.onControlMouseDown(event); + }; + onClearIndicatorTouchEnd = (event: SyntheticTouchEvent) => { + if (this.userIsDragging) return; + + this.onClearIndicatorMouseDown(event); + }; + onDropdownIndicatorTouchEnd = (event: SyntheticTouchEvent) => { + if (this.userIsDragging) return; + + this.onDropdownIndicatorMouseDown(event); + }; + + // ============================== + // Focus Handlers + // ============================== + + handleInputChange = (event: SyntheticKeyboardEvent) => { + const inputValue = event.currentTarget.value; + this.inputIsHiddenAfterUpdate = false; + this.onInputChange(inputValue, { action: 'input-change' }); + this.onMenuOpen(); + }; + onInputFocus = (event: SyntheticFocusEvent) => { + const { isSearchable, isMulti } = this.props; + if (this.props.onFocus) { + this.props.onFocus(event); + } + this.inputIsHiddenAfterUpdate = false; + this.announceAriaLiveContext({ + event: 'input', + context: { isSearchable, isMulti }, + }); + this.setState({ + isFocused: true, + }); + if (this.openAfterFocus || this.props.openMenuOnFocus) { + this.openMenu('first'); + } + this.openAfterFocus = false; + }; + onInputBlur = (event: SyntheticFocusEvent) => { + if (this.menuListRef && this.menuListRef.contains(document.activeElement)) { + this.inputRef.focus(); + return; + } + if (this.props.onBlur) { + this.props.onBlur(event); + } + this.onInputChange('', { action: 'input-blur' }); + this.onMenuClose(); + this.setState({ + focusedValue: null, + isFocused: false, + }); + }; + onOptionHover = (focusedOption: OptionType) => { + if (this.blockOptionHover || this.state.focusedOption === focusedOption) { + return; + } + this.setState({ focusedOption }); + }; + shouldHideSelectedOptions = () => { + const { hideSelectedOptions, isMulti } = this.props; + if (hideSelectedOptions === undefined) return isMulti; + return hideSelectedOptions; + }; + + // ============================== + // Keyboard Handlers + // ============================== + + onKeyDown = (event: SyntheticKeyboardEvent) => { + const { + isMulti, + backspaceRemovesValue, + escapeClearsValue, + inputValue, + isClearable, + isDisabled, + menuIsOpen, + onKeyDown, + tabSelectsValue, + openMenuOnFocus, + } = this.props; + const { + isComposing, + focusedOption, + focusedValue, + selectValue, + } = this.state; + + if (isDisabled) return; + + if (typeof onKeyDown === 'function') { + onKeyDown(event); + if (event.defaultPrevented) { + return; + } + } + + // Block option hover events when the user has just pressed a key + this.blockOptionHover = true; + switch (event.key) { + case 'ArrowLeft': + if (!isMulti || inputValue) return; + this.focusValue('previous'); + break; + case 'ArrowRight': + if (!isMulti || inputValue) return; + this.focusValue('next'); + break; + case 'Delete': + case 'Backspace': + if (inputValue) return; + if (focusedValue) { + this.removeValue(focusedValue); + } else { + if (!backspaceRemovesValue) return; + if (isMulti) { + this.popValue(); + } else if (isClearable) { + this.clearValue(); + } + } + break; + case 'Tab': + if (isComposing) return; + + if ( + event.shiftKey || + !menuIsOpen || + !tabSelectsValue || + !focusedOption || + // don't capture the event if the menu opens on focus and the focused + // option is already selected; it breaks the flow of navigation + (openMenuOnFocus && this.isOptionSelected(focusedOption, selectValue)) + ) { + return; + } + this.selectOption(focusedOption); + break; + case 'Enter': + if (menuIsOpen) { + if (!focusedOption) return; + if (isComposing) return; + this.selectOption(focusedOption); + break; + } + return; + case 'Escape': + if (menuIsOpen) { + this.inputIsHiddenAfterUpdate = false; + this.onInputChange('', { action: 'menu-close' }); + this.onMenuClose(); + } else if (isClearable && escapeClearsValue) { + this.clearValue(); + } + break; + case ' ': // space + if (inputValue) { + return; + } + if (!menuIsOpen) { + this.openMenu('first'); + break; + } + if (!focusedOption) return; + this.selectOption(focusedOption); + break; + case 'ArrowUp': + if (menuIsOpen) { + this.focusOption('up'); + } else { + this.openMenu('last'); + } + break; + case 'ArrowDown': + if (menuIsOpen) { + this.focusOption('down'); + } else { + this.openMenu('first'); + } + break; + case 'PageUp': + if (!menuIsOpen) return; + this.focusOption('pageup'); + break; + case 'PageDown': + if (!menuIsOpen) return; + this.focusOption('pagedown'); + break; + case 'Home': + if (!menuIsOpen) return; + this.focusOption('first'); + break; + case 'End': + if (!menuIsOpen) return; + this.focusOption('last'); + break; + default: + return; + } + event.preventDefault(); + }; + + // ============================== + // Menu Options + // ============================== + + buildMenuOptions(props: Props, selectValue: OptionsType): MenuOptions { + const { inputValue = '', options } = props; + + const toOption = (option, id) => { + const isDisabled = this.isOptionDisabled(option, selectValue); + const isSelected = this.isOptionSelected(option, selectValue); + const label = this.getOptionLabel(option); + const value = this.getOptionValue(option); + + if ( + (this.shouldHideSelectedOptions() && isSelected) || + !this.filterOption({ label, value, data: option }, inputValue) + ) { + return; + } + + const onHover = isDisabled ? undefined : () => this.onOptionHover(option); + const onSelect = isDisabled ? undefined : () => this.selectOption(option); + const optionId = `${this.getElementId('option')}-${id}`; + + return { + innerProps: { + id: optionId, + onClick: onSelect, + onMouseMove: onHover, + onMouseOver: onHover, + tabIndex: -1, + }, + data: option, + isDisabled, + isSelected, + key: optionId, + label, + type: 'option', + value, + }; + }; + + return options.reduce( + (acc, item, itemIndex) => { + if (item.options) { + // TODO needs a tidier implementation + if (!this.hasGroups) this.hasGroups = true; + + const { options: items } = item; + const children = items + .map((child, i) => { + const option = toOption(child, `${itemIndex}-${i}`); + if (option) acc.focusable.push(child); + return option; + }) + .filter(Boolean); + if (children.length) { + const groupId = `${this.getElementId('group')}-${itemIndex}`; + acc.render.push({ + type: 'group', + key: groupId, + data: item, + options: children, + }); + } + } else { + const option = toOption(item, `${itemIndex}`); + if (option) { + acc.render.push(option); + acc.focusable.push(item); + } + } + return acc; + }, + { render: [], focusable: [] } + ); + } + + // ============================== + // Renderers + // ============================== + constructAriaLiveMessage() { + const { + ariaLiveContext, + selectValue, + focusedValue, + focusedOption, + } = this.state; + const { options, menuIsOpen, inputValue, screenReaderStatus } = this.props; + + // An aria live message representing the currently focused value in the select. + const focusedValueMsg = focusedValue + ? valueFocusAriaMessage({ + focusedValue, + getOptionLabel: this.getOptionLabel, + selectValue, + }) + : ''; + // An aria live message representing the currently focused option in the select. + const focusedOptionMsg = + focusedOption && menuIsOpen + ? optionFocusAriaMessage({ + focusedOption, + getOptionLabel: this.getOptionLabel, + options, + }) + : ''; + // An aria live message representing the set of focusable results and current searchterm/inputvalue. + const resultsMsg = resultsAriaMessage({ + inputValue, + screenReaderMessage: screenReaderStatus({ count: this.countOptions() }), + }); + + return `${focusedValueMsg} ${focusedOptionMsg} ${resultsMsg} ${ariaLiveContext}`; + } + + renderInput() { + const { + isDisabled, + isSearchable, + inputId, + inputValue, + tabIndex, + } = this.props; + const { Input } = this.components; + const { inputIsHidden } = this.state; + + const id = inputId || this.getElementId('input'); + + if (!isSearchable) { + // use a dummy input to maintain focus/blur functionality + return ( + + ); + } + + // aria attributes makes the JSX "noisy", separated for clarity + const ariaAttributes = { + 'aria-autocomplete': 'list', + 'aria-label': this.props['aria-label'], + 'aria-labelledby': this.props['aria-labelledby'], + }; + + const { cx, theme, selectProps } = this.commonProps; + + return ( + + ); + } + renderPlaceholderOrValue(): ?PlaceholderOrValue { + const { + MultiValue, + MultiValueContainer, + MultiValueLabel, + MultiValueRemove, + SingleValue, + Placeholder, + } = this.components; + const { commonProps } = this; + const { + controlShouldRenderValue, + isDisabled, + isMulti, + inputValue, + placeholder, + } = this.props; + const { selectValue, focusedValue, isFocused } = this.state; + + if (!this.hasValue() || !controlShouldRenderValue) { + return inputValue ? null : ( + + {placeholder} + + ); + } + + if (isMulti) { + const selectValues: Array = selectValue.map(opt => { + let isFocusedOption = opt === focusedValue; + return ( + this.removeValue(opt), + onTouchEnd: () => this.removeValue(opt), + onMouseDown: e => { + e.preventDefault(); + e.stopPropagation(); + }, + }} + data={opt} + > + {this.formatOptionLabel(opt, 'value')} + + ); + }); + return selectValues; + } + + if (inputValue) { + return null; + } + + const singleValue = selectValue[0]; + return ( + + {this.formatOptionLabel(singleValue, 'value')} + + ); + } + renderClearIndicator() { + const { ClearIndicator } = this.components; + const { commonProps } = this; + const { isDisabled, isLoading } = this.props; + const { isFocused } = this.state; + + if ( + !this.isClearable() || + !ClearIndicator || + isDisabled || + !this.hasValue() || + isLoading + ) { + return null; + } + + const innerProps = { + onMouseDown: this.onClearIndicatorMouseDown, + onTouchEnd: this.onClearIndicatorTouchEnd, + 'aria-hidden': 'true', + }; + + return ( + + ); + } + renderLoadingIndicator() { + const { LoadingIndicator } = this.components; + const { commonProps } = this; + const { isDisabled, isLoading } = this.props; + const { isFocused } = this.state; + + if (!LoadingIndicator || !isLoading) return null; + + const innerProps = { 'aria-hidden': 'true' }; + return ( + + ); + } + renderIndicatorSeparator() { + const { DropdownIndicator, IndicatorSeparator } = this.components; + + // separator doesn't make sense without the dropdown indicator + if (!DropdownIndicator || !IndicatorSeparator) return null; + + const { commonProps } = this; + const { isDisabled } = this.props; + const { isFocused } = this.state; + + return ( + + ); + } + renderDropdownIndicator() { + const { DropdownIndicator } = this.components; + if (!DropdownIndicator) return null; + const { commonProps } = this; + const { isDisabled } = this.props; + const { isFocused } = this.state; + + const innerProps = { + onMouseDown: this.onDropdownIndicatorMouseDown, + onTouchEnd: this.onDropdownIndicatorTouchEnd, + 'aria-hidden': 'true', + }; + + return ( + + ); + } + renderMenu() { + const { + Group, + GroupHeading, + Menu, + MenuList, + MenuPortal, + LoadingMessage, + NoOptionsMessage, + Option, + } = this.components; + const { commonProps } = this; + const { focusedOption, menuOptions } = this.state; + const { + captureMenuScroll, + inputValue, + isLoading, + loadingMessage, + minMenuHeight, + maxMenuHeight, + menuIsOpen, + menuPlacement, + menuPosition, + menuPortalTarget, + menuShouldBlockScroll, + menuShouldScrollIntoView, + noOptionsMessage, + onMenuScrollToTop, + onMenuScrollToBottom, + } = this.props; + + if (!menuIsOpen) return null; + + // TODO: Internal Option Type here + const render = (props: OptionType) => { + // for performance, the menu options in state aren't changed when the + // focused option changes so we calculate additional props based on that + const isFocused = focusedOption === props.data; + props.innerRef = isFocused ? this.getFocusedOptionRef : undefined; + + return ( + + ); + }; + + let menuUI; + + if (this.hasOptions()) { + menuUI = menuOptions.render.map(item => { + if (item.type === 'group') { + const { type, ...group } = item; + const headingId = `${item.key}-heading`; + + return ( + + {item.options.map(option => render(option))} + + ); + } else if (item.type === 'option') { + return render(item); + } + }); + } else if (isLoading) { + const message = loadingMessage({ inputValue }); + if (message === null) return null; + menuUI = {message}; + } else { + const message = noOptionsMessage({ inputValue }); + if (message === null) return null; + menuUI = {message}; + } + const menuPlacementProps = { + minMenuHeight, + maxMenuHeight, + menuPlacement, + menuPosition, + menuShouldScrollIntoView, + }; + + const menuElement = ( + + {({ ref, placerProps: { placement, maxHeight } }) => ( + + + + + {menuUI} + + + + + )} + + ); + + // positioning behaviour is almost identical for portalled and fixed, + // so we use the same component. the actual portalling logic is forked + // within the component based on `menuPosition` + return menuPortalTarget || menuPosition === 'fixed' ? ( + + {menuElement} + + ) : ( + menuElement + ); + } + renderFormField() { + const { delimiter, isDisabled, isMulti, name } = this.props; + const { selectValue } = this.state; + + if (!name || isDisabled) return; + + if (isMulti) { + if (delimiter) { + const value = selectValue + .map(opt => this.getOptionValue(opt)) + .join(delimiter); + return ; + } else { + const input = + selectValue.length > 0 ? ( + selectValue.map((opt, i) => ( + + )) + ) : ( + + ); + + return
{input}
; + } + } else { + const value = selectValue[0] ? this.getOptionValue(selectValue[0]) : ''; + return ; + } + } + + renderLiveRegion() { + if (!this.state.isFocused) return null; + return ( + +

 {this.state.ariaLiveSelection}

+

 {this.constructAriaLiveMessage()}

+
+ ); + } + + render() { + const { + Control, + IndicatorsContainer, + SelectContainer, + ValueContainer, + } = this.components; + + const { className, id, isDisabled, menuIsOpen } = this.props; + const { isFocused } = this.state; + + const commonProps = (this.commonProps = this.getCommonProps()); + + return ( + + {this.renderLiveRegion()} + + + {this.renderPlaceholderOrValue()} + {this.renderInput()} + + + {this.renderClearIndicator()} + {this.renderLoadingIndicator()} + {this.renderIndicatorSeparator()} + {this.renderDropdownIndicator()} + + + {this.renderMenu()} + {this.renderFormField()} + + ); + } +} diff --git a/src/__tests__/Async.test.js b/src/__tests__/Async.test.js new file mode 100644 index 0000000000..e1f6902770 --- /dev/null +++ b/src/__tests__/Async.test.js @@ -0,0 +1,177 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import toJson from 'enzyme-to-json'; +import cases from 'jest-in-case'; + +import Async from '../Async'; +import { OPTIONS } from './constants'; +import { components } from '../components'; +const { Option } = components; + +test('defaults - snapshot', () => { + const tree = mount(); + expect(toJson(tree)).toMatchSnapshot(); +}); + +/** + * loadOptions with promise is not resolved and it renders loading options + * confirmed by logging in component that loadOptions is resolved and options are available + * but still loading options is rendered + */ +cases( + 'load option prop with defaultOptions true', + ({ props, expectOptionLength }) => { + const asyncSelectWrapper = mount(); + expect(asyncSelectWrapper.find(Option).length).toBe(expectOptionLength); + }, + { + 'with callback > should resolve options': { + props: { + defaultOptions: true, + loadOptions: (inputValue, callBack) => callBack([OPTIONS[0]]), + }, + expectOptionLength: 1, + }, + 'with promise > should resolve options': { + skip: true, + props: { + defaultOptions: true, + loadOptions: () => Promise.resolve([OPTIONS[0]]), + }, + expectOptionLength: 1, + }, + } +); + +test('load options prop with defaultOptions true and inputValue prop', () => { + const loadOptionsSpy = jest.fn((value) => value); + const searchString = 'hello world'; + mount(); + expect(loadOptionsSpy).toHaveReturnedWith(searchString); +}); + +/** + * loadOptions with promise is not resolved and it renders loading options + * confirmed by logging in component that loadOptions is resolved and options are available + * but still loading options is rendered + */ +cases( + 'load options props with no default options', + ({ props, expectloadOptionsLength }) => { + let asyncSelectWrapper = mount( + + ); + let inputValueWrapper = asyncSelectWrapper.find( + 'div.react-select__input input' + ); + asyncSelectWrapper.setProps({ inputValue: 'a' }); + inputValueWrapper.simulate('change', { currentTarget: { value: 'a' } }); + expect(asyncSelectWrapper.find(Option).length).toBe( + expectloadOptionsLength + ); + }, + { + 'with callback > should resolve the options': { + props: { + loadOptions: (inputValue, callBack) => callBack(OPTIONS), + }, + expectloadOptionsLength: 17, + }, + 'with promise > should resolve the options': { + skip: true, + props: { + loadOptions: () => Promise.resolve(OPTIONS), + }, + expectloadOptionsLength: 17, + }, + } +); + +/** + * Need to update props to trigger on change in input + * when updating props renders the component therefore options cache is lost thus loadOptions is called again + */ +test.skip('to not call loadOptions again for same value when cacheOptions is true', () => { + let loadOptionsSpy = jest.fn(); + let asyncSelectWrapper = mount( + + ); + let inputValueWrapper = asyncSelectWrapper.find( + 'div.react-select__input input' + ); + + asyncSelectWrapper.setProps({ inputValue: 'a' }); + inputValueWrapper.simulate('change', { currentTarget: { value: 'a' } }); + expect(loadOptionsSpy).toHaveBeenCalledTimes(1); + + asyncSelectWrapper.setProps({ inputValue: 'b' }); + inputValueWrapper.simulate('change', { + target: { value: 'b' }, + currentTarget: { value: 'b' }, + }); + expect(loadOptionsSpy).toHaveBeenCalledTimes(2); + + asyncSelectWrapper.setProps({ inputValue: 'b' }); + inputValueWrapper.simulate('change', { currentTarget: { value: 'b' } }); + expect(loadOptionsSpy).toHaveBeenCalledTimes(2); +}); + +test('to create new cache for each instance', () => { + const asyncSelectWrapper = mount(); + const instanceOne = asyncSelectWrapper.instance(); + + const asyncSelectTwoWrapper = mount(); + const instanceTwo = asyncSelectTwoWrapper.instance(); + + expect(instanceOne.optionsCache).not.toBe(instanceTwo.optionsCache); +}); + +test('in case of callbacks display the most recently-requested loaded options (if results are returned out of order)', () => { + let callbacks = []; + const loadOptions = (inputValue, callback) => { + callbacks.push(callback); + }; + let asyncSelectWrapper = mount( + + ); + let inputValueWrapper = asyncSelectWrapper.find( + 'div.react-select__input input' + ); + asyncSelectWrapper.setProps({ inputValue: 'foo' }); + inputValueWrapper.simulate('change', { currentTarget: { value: 'foo' } }); + asyncSelectWrapper.setProps({ inputValue: 'bar' }); + inputValueWrapper.simulate('change', { currentTarget: { value: 'bar' } }); + expect(asyncSelectWrapper.find(Option).exists()).toBeFalsy(); + callbacks[1]([{ value: 'bar', label: 'bar' }]); + callbacks[0]([{ value: 'foo', label: 'foo' }]); + asyncSelectWrapper.update(); + expect(asyncSelectWrapper.find(Option).text()).toBe('bar'); +}); + +/** + * This throws a jsdom exception + */ +test.skip('in case of callbacks should handle an error by setting options to an empty array', () => { + const loadOptions = (inputValue, callback) => { + callback(new Error('error')); + }; + let asyncSelectWrapper = mount( + + ); + let inputValueWrapper = asyncSelectWrapper.find( + 'div.react-select__input input' + ); + asyncSelectWrapper.setProps({ inputValue: 'foo' }); + inputValueWrapper.simulate('change', { currentTarget: { value: 'foo' } }); + asyncSelectWrapper.update(); + expect(asyncSelectWrapper.find(Option).length).toBe(1); +}); diff --git a/src/__tests__/AsyncCreatable.test.js b/src/__tests__/AsyncCreatable.test.js new file mode 100644 index 0000000000..53e9746fc4 --- /dev/null +++ b/src/__tests__/AsyncCreatable.test.js @@ -0,0 +1,71 @@ +import React from 'react'; +import { mount } from 'enzyme'; +import toJson from 'enzyme-to-json'; + +import AsyncCreatable from '../AsyncCreatable'; +import Select from '../Select'; +import { components } from '../components'; +import { OPTIONS } from './constants'; +const { Menu, Option } = components; + +test('defaults - snapshot', () => { + const tree = mount(); + expect(toJson(tree)).toMatchSnapshot(); +}); + +test('creates an inner Select', () => { + const asyncCreatableWrapper = mount( + + ); + expect(asyncCreatableWrapper.find(Select).exists()).toBeTruthy(); +}); + +test('render decorated select with props passed', () => { + const asyncCreatableWrapper = mount(); + expect(asyncCreatableWrapper.find(Select).props().className).toBe('foo'); +}); + +test('to show the create option in menu', () => { + let asyncCreatableWrapper = mount( + + ); + let inputValueWrapper = asyncCreatableWrapper.find( + 'div.react-select__input input' + ); + asyncCreatableWrapper.setProps({ inputValue: 'a' }); + inputValueWrapper.simulate('change', { currentTarget: { value: 'a' } }); + expect( + asyncCreatableWrapper + .find(Option) + .last() + .text() + ).toBe('Create "a"'); +}); + +test('to show loading and then create option in menu', () => { + jest.useFakeTimers(); + let loadOptionsSpy = jest.fn((inputValue, callback) => + setTimeout(() => callback(OPTIONS), 200) + ); + let asyncCreatableWrapper = mount( + + ); + let inputValueWrapper = asyncCreatableWrapper.find( + 'div.react-select__input input' + ); + asyncCreatableWrapper.setProps({ inputValue: 'a' }); + inputValueWrapper.simulate('change', { currentTarget: { value: 'a' } }); + + // to show a loading message while loading options + expect(asyncCreatableWrapper.find(Menu).text()).toBe('Loading...'); + jest.runAllTimers(); + asyncCreatableWrapper.update(); + + // show create options once options are loaded + expect( + asyncCreatableWrapper + .find(Option) + .last() + .text() + ).toBe('Create "a"'); +}); diff --git a/src/__tests__/Creatable.test.js b/src/__tests__/Creatable.test.js new file mode 100644 index 0000000000..6c9700ad35 --- /dev/null +++ b/src/__tests__/Creatable.test.js @@ -0,0 +1,187 @@ +import React from 'react'; +import { shallow, mount } from 'enzyme'; +import toJson from 'enzyme-to-json'; +import cases from 'jest-in-case'; + +import Creatable from '../Creatable'; +import { OPTIONS } from './constants'; +import { components } from '../components'; +const { Menu, NoOptionsMessage } = components; + +test('defaults - snapshot', () => { + const tree = shallow(); + expect(toJson(tree)).toMatchSnapshot(); +}); + +cases('filtered option is an exact match for an existing option', + ({ props = { options: OPTIONS } }) => { + const creatableSelectWrapper = mount(); + creatableSelectWrapper.setProps({ inputValue: 'one' }); + expect(creatableSelectWrapper.find(Menu).text()).not.toEqual( + expect.stringContaining('create') + ); + }, + { + 'single select > should not show "create..." prompt"': {}, + 'multi select > should not show "create..." prompt"': { + props: { + isMulti: true, + options: OPTIONS, + }, + }, + } +); + +cases('filterOptions returns invalid value ( null )', + ({ props = { option: OPTIONS } }) => { + let filterOptionSpy = jest.fn().mockReturnValue(null); + const creatableSelectWrapper = mount( + + ); + creatableSelectWrapper.setProps({ inputValue: 'one' }); + expect(creatableSelectWrapper.find(NoOptionsMessage).exists()).toBeTruthy(); + expect(creatableSelectWrapper.find(Menu).text()).not.toEqual( + expect.stringContaining('create') + ); + }, + { + 'single select > should not show "create..." prompt"': {}, + 'multi select > should not show "create..." prompt"': { + props: { + isMulti: true, + option: OPTIONS, + }, + }, + } +); + +cases('inputValue does not match any option after filter', + ({ props = { options: OPTIONS } }) => { + const creatableSelectWrapper = mount(); + creatableSelectWrapper.setProps({ inputValue: 'option not is list' }); + expect(creatableSelectWrapper.find(Menu).text()).toBe( + 'Create "option not is list"' + ); + }, + { + 'single select > should show a placeholder "create..." prompt': {}, + 'multi select > should show a placeholder "create..." prompt': { + props: { + isMulti: true, + options: OPTIONS, + }, + }, + } +); + +cases('isValidNewOption() prop', + ({ props = { options: OPTIONS } }) => { + let isValidNewOption = jest.fn(options => options === 'new Option'); + const creatableSelectWrapper = mount( + + ); + + creatableSelectWrapper.setProps({ inputValue: 'new Option' }); + expect(creatableSelectWrapper.find(Menu).text()).toEqual( + expect.stringContaining('Create "new Option"') + ); + expect(creatableSelectWrapper.find(NoOptionsMessage).exists()).toBeFalsy(); + + creatableSelectWrapper.setProps({ inputValue: 'invalid new Option' }); + expect(creatableSelectWrapper.find(Menu).text()).not.toEqual( + expect.stringContaining('Create "invalid new Option"') + ); + expect(creatableSelectWrapper.find(NoOptionsMessage).exists()).toBeTruthy(); + }, + { + 'single select > should show "create..." prompt only if isValidNewOption returns thruthy value': {}, + 'multi select > should show "create..." prompt only if isValidNewOption returns thruthy value': { + props: { + isMulti: true, + options: OPTIONS, + }, + }, + } +); + +cases('close by hitting escape with search text present', + ({ props = { options: OPTIONS } }) => { + const creatableSelectWrapper = mount(); + creatableSelectWrapper.setState({ inputValue: 'new Option' }); + creatableSelectWrapper.update(); + creatableSelectWrapper.simulate('keyDown', { keyCode: 27, key: 'Escape' }); + creatableSelectWrapper.update(); + expect(creatableSelectWrapper.state('inputValue')).toBe(''); + }, + { + 'single select > should remove the search text': { + }, + 'multi select > should remove the search text': { + props: { + isMulti: true, + options: OPTIONS, + }, + }, + } +); + +test('should remove the new option after closing on blur', () => { + const creatableSelectWrapper = mount( + + ); + creatableSelectWrapper.setState({ inputValue: 'new Option' }); + creatableSelectWrapper.find('Control input').simulate('blur'); + expect(creatableSelectWrapper.state('inputValue')).toBe(''); +}); + +cases('getNewOptionData() prop', + ({ props = { options: OPTIONS } }) => { + let getNewOptionDataSpy = jest.fn(label => ({ + label: `custom text ${label}`, + value: label, + })); + const creatableSelectWrapper = mount( + + ); + creatableSelectWrapper.setState({ inputValue: 'new Option' }); + expect(creatableSelectWrapper.find(Menu).text()).toEqual( + expect.stringContaining('custom text new Option') + ); + }, + { + 'single select > should create option as per label returned from getNewOptionData': { + }, + 'multi select > should create option as per label returned from getNewOptionData': { + props: { + isMulti: true, + options: OPTIONS, + }, + }, + } +); + +cases('formatCreateLabel() prop', + ({ props = { options: OPTIONS } }) => { + let formatCreateLabelSpy = jest.fn(label => `custom label "${label}"`); + const creatableSelectWrapper = mount( + + ); + creatableSelectWrapper.setState({ inputValue: 'new Option' }); + expect(creatableSelectWrapper.find(Menu).text()).toEqual( + expect.stringContaining('custom label "new Option"') + ); + }, + { + 'single select > should show label of custom option as per text returned from formatCreateLabel': {}, + 'multi select > should show label of custom option as per text returned from formatCreateLabel': { + props: { + isMulti: true, + options: OPTIONS, + }, + }, + } +); diff --git a/src/__tests__/Select.test.js b/src/__tests__/Select.test.js new file mode 100644 index 0000000000..9c1a0d9f29 --- /dev/null +++ b/src/__tests__/Select.test.js @@ -0,0 +1,2339 @@ +import React from 'react'; +import { shallow, mount } from 'enzyme'; +import toJson from 'enzyme-to-json'; +import cases from 'jest-in-case'; + +import { + OPTIONS, + OPTIONS_NUMBER_VALUE, + OPTIONS_BOOLEAN_VALUE, + OPTIONS_DISABLED +} from './constants'; +import Select from '../Select'; +import { components } from '../components'; + +const { + ClearIndicator, + Control, + DropdownIndicator, + GroupHeading, + IndicatorsContainer, + Input, + Menu, + MultiValue, + NoOptionsMessage, + Option, + Placeholder, + ValueContainer, + SingleValue, +} = components; + +const BASIC_PROPS = { + className: 'react-select', + classNamePrefix: 'react-select', + onChange: jest.fn(), + onInputChange: jest.fn(), + onMenuClose: jest.fn(), + onMenuOpen: jest.fn(), + name: 'test-input-name', + options: OPTIONS, +}; + +test('snapshot - defaults', () => { + const tree = shallow( + ); + expect(selectWrapper.find(Input).props().id).toContain('custom-id'); + selectWrapper.find('div.react-select__option').forEach(opt => { + expect(opt.props().id).toContain('custom-id'); + }); +}); + +test('hidden input field is not present if name is not passes', () => { + let selectWrapper = mount( + ); + expect(selectWrapper.find('input[type="hidden"]').exists()).toBeTruthy(); +}); + +test('single select > passing multiple values > should select the first value', () => { + const props = { ...BASIC_PROPS, value: [OPTIONS[0], OPTIONS[4]] }; + let selectWrapper = mount( + ); + expect(selectWrapper.props().isRtl).toBe(true); +}); + +test('isOptionSelected() prop > single select > mark value as isSelected if isOptionSelected returns true for the option', () => { + // Select all but option with label '1' + let isOptionSelected = jest.fn(option => option.label !== '1'); + let selectWrapper = mount( + + ); + + expect(selectWrapper.find(Option).length).toBe(1); + expect(selectWrapper.find(Option).text()).toBe('1'); +}); + +cases( + 'formatOptionLabel', + ({ props, valueComponent, expectedOptions }) => { + let selectWrapper = shallow(); + let input = selectWrapper.find('input'); + expect(input.props().name).toBe(expectedName); + }, + { + 'single select > should assign the given name': { + props: { ...BASIC_PROPS, name: 'form-field-single-select' }, + expectedName: 'form-field-single-select', + }, + 'multi select > should assign the given name': { + props: { + ...BASIC_PROPS, + name: 'form-field-multi-select', + isMulti: true, + value: OPTIONS[2], + }, + expectedName: 'form-field-multi-select', + }, + } +); + +cases( + 'menuIsOpen prop', + ({ props = BASIC_PROPS }) => { + let selectWrapper = mount(); + selectWrapper.setProps({ inputValue: searchString }); + expect(selectWrapper.find(Option).length).toBe(expectResultsLength); + }, + { + 'single select > should filter all options as per searchString': { + props: { + ...BASIC_PROPS, + filterOption: (value, search) => value.value.indexOf(search) > -1, + menuIsOpen: true, + value: OPTIONS[0], + }, + searchString: 'o', + expectResultsLength: 5, + }, + 'multi select > should filter all options other that options in value of select': { + props: { + ...BASIC_PROPS, + filterOption: (value, search) => value.value.indexOf(search) > -1, + isMulti: true, + menuIsOpen: true, + value: OPTIONS[0], + }, + searchString: 'o', + expectResultsLength: 4, + }, + } +); + +cases( + 'filterOption prop is null', + ({ props, searchString, expectResultsLength }) => { + let selectWrapper = mount(); + selectWrapper.setProps({ inputValue: searchString }); + expect(selectWrapper.find(NoOptionsMessage).exists()).toBeTruthy(); + }, + { + 'single Select > should show NoOptionsMessage': { + props: { + ...BASIC_PROPS, + filterOption: (value, search) => value.value.indexOf(search) > -1, + menuIsOpen: true, + }, + searchString: 'some text not in options', + }, + 'multi select > should show NoOptionsMessage': { + props: { + ...BASIC_PROPS, + filterOption: (value, search) => value.value.indexOf(search) > -1, + menuIsOpen: true, + }, + searchString: 'some text not in options', + }, + } +); + +cases( + 'noOptionsMessage() function prop', + ({ props, expectNoOptionsMessage, searchString }) => { + let selectWrapper = mount(); + expect(selectWrapper.state('selectValue')).toEqual(expectedValue); + }, + { + 'single select > should set it as initial value': { + props: { + ...BASIC_PROPS, + value: OPTIONS[2], + }, + expectedValue: [{ label: '2', value: 'two' }], + }, + 'single select > with option values as number > should set it as initial value': { + props: { + ...BASIC_PROPS, + value: OPTIONS_NUMBER_VALUE[2], + }, + expectedValue: [{ label: '2', value: 2 }], + }, + 'multi select > should set it as initial value': { + props: { + ...BASIC_PROPS, + isMulti: true, + value: OPTIONS[1], + }, + expectedValue: [{ label: '1', value: 'one' }], + }, + 'multi select > with option values as number > should set it as initial value': { + props: { + ...BASIC_PROPS, + isMulti: true, + value: OPTIONS_NUMBER_VALUE[1], + }, + expectedValue: [{ label: '1', value: 1 }], + }, + } +); + +cases( + 'update the value prop', + ({ + props = { ...BASIC_PROPS, value: OPTIONS[1] }, + updateValueTo, + expectedInitialValue, + expectedUpdatedValue, + }) => { + let selectWrapper = mount(); + + let selectOption = selectWrapper + .find('div.react-select__option') + .findWhere(n => n.props().children === optionsSelected.label); + selectWrapper.setState({ focusedOption }); + + selectOption.simulate(...event); + selectWrapper.update(); + expect(onChangeSpy).toHaveBeenCalledWith(expectedSelectedOption, { + action: 'select-option', + option: expectedActionMetaOption, + name: BASIC_PROPS.name + }); + }, + { + 'single select > option is clicked > should call onChange() prop with selected option': { + event: ['click'], + optionsSelected: { label: '2', value: 'two' }, + expectedSelectedOption: { label: '2', value: 'two' }, + }, + 'single select > option with number value > option is clicked > should call onChange() prop with selected option': { + props: { + ...BASIC_PROPS, + menuIsOpen: true, + options: OPTIONS_NUMBER_VALUE, + }, + event: ['click'], + optionsSelected: { label: '0', value: 0 }, + expectedSelectedOption: { label: '0', value: 0 }, + }, + 'single select > option with boolean value > option is clicked > should call onChange() prop with selected option': { + props: { + ...BASIC_PROPS, + menuIsOpen: true, + options: OPTIONS_BOOLEAN_VALUE, + }, + event: ['click'], + optionsSelected: { label: 'true', value: true }, + expectedSelectedOption: { label: 'true', value: true }, + }, + 'single select > tab key is pressed while focusing option > should call onChange() prop with selected option': { + event: ['keyDown', { keyCode: 9, key: 'Tab' }], + optionsSelected: { label: '1', value: 'one' }, + focusedOption: { label: '1', value: 'one' }, + expectedSelectedOption: { label: '1', value: 'one' }, + }, + 'single select > enter key is pressed while focusing option > should call onChange() prop with selected option': { + event: ['keyDown', { keyCode: 13, key: 'Enter' }], + optionsSelected: { label: '3', value: 'three' }, + focusedOption: { label: '3', value: 'three' }, + expectedSelectedOption: { label: '3', value: 'three' }, + }, + 'single select > space key is pressed while focusing option > should call onChange() prop with selected option': { + event: ['keyDown', { keyCode: 32, key: ' ' }], + optionsSelected: { label: '1', value: 'one' }, + focusedOption: { label: '1', value: 'one' }, + expectedSelectedOption: { label: '1', value: 'one' }, + }, + 'multi select > option is clicked > should call onChange() prop with selected option': { + props: { + ...BASIC_PROPS, + isMulti: true, + menuIsOpen: true, + options: OPTIONS, + }, + event: ['click'], + optionsSelected: { label: '2', value: 'two' }, + expectedSelectedOption: [{ label: '2', value: 'two' }], + expectedActionMetaOption: { label: '2', value: 'two' }, + }, + 'multi select > option with number value > option is clicked > should call onChange() prop with selected option': { + props: { + ...BASIC_PROPS, + isMulti: true, + menuIsOpen: true, + options: OPTIONS_NUMBER_VALUE, + }, + event: ['click'], + optionsSelected: { label: '0', value: 0 }, + expectedSelectedOption: [{ label: '0', value: 0 }], + expectedActionMetaOption: { label: '0', value: 0 }, + }, + 'multi select > option with boolean value > option is clicked > should call onChange() prop with selected option': { + props: { + ...BASIC_PROPS, + isMulti: true, + menuIsOpen: true, + options: OPTIONS_BOOLEAN_VALUE, + }, + event: ['click'], + optionsSelected: { label: 'true', value: true }, + expectedSelectedOption: [{ label: 'true', value: true }], + expectedActionMetaOption: { label: 'true', value: true }, + }, + 'multi select > tab key is pressed while focusing option > should call onChange() prop with selected option': { + props: { + ...BASIC_PROPS, + isMulti: true, + menuIsOpen: true, + options: OPTIONS, + }, + event: ['keyDown', { keyCode: 9, key: 'Tab' }], + menuIsOpen: true, + optionsSelected: { label: '1', value: 'one' }, + focusedOption: { label: '1', value: 'one' }, + expectedSelectedOption: [{ label: '1', value: 'one' }], + expectedActionMetaOption: { label: '1', value: 'one' }, + }, + 'multi select > enter key is pressed while focusing option > should call onChange() prop with selected option': { + props: { + ...BASIC_PROPS, + isMulti: true, + menuIsOpen: true, + options: OPTIONS, + }, + event: ['keyDown', { keyCode: 13, key: 'Enter' }], + optionsSelected: { label: '3', value: 'three' }, + focusedOption: { label: '3', value: 'three' }, + expectedSelectedOption: [{ label: '3', value: 'three' }], + expectedActionMetaOption: { label: '3', value: 'three' }, + }, + 'multi select > space key is pressed while focusing option > should call onChange() prop with selected option': { + props: { + ...BASIC_PROPS, + isMulti: true, + menuIsOpen: true, + options: OPTIONS, + }, + event: ['keyDown', { keyCode: 32, key: ' ' }], + optionsSelected: { label: '1', value: 'one' }, + focusedOption: { label: '1', value: 'one' }, + expectedSelectedOption: [{ label: '1', value: 'one' }], + expectedActionMetaOption: { label: '1', value: 'one' }, + }, + } +); + +cases( + 'calls onChange on de-selecting an option in multi select', + ({ + props = { ...BASIC_PROPS }, + event, + expectedSelectedOption, + expectedMetaOption, + optionsSelected, + focusedOption, + }) => { + let onChangeSpy = jest.fn(); + props = { ...props, onChange: onChangeSpy, menuIsOpen: true, hideSelectedOptions: false, isMulti: true }; + let selectWrapper = mount( + ); + + let selectOption = selectWrapper + .find('div.react-select__option') + .findWhere(n => n.props().children === optionsSelected.label); + selectWrapper.setState({ focusedOption }); + + selectOption.simulate(...event); + expect(onChangeSpy).not.toHaveBeenCalled(); + }, + { + 'single select > should not call onChange prop': { + props: { + ...BASIC_PROPS, + menuIsOpen: true, + }, + optionsSelected: { label: '1', value: 'one' }, + focusedOption: { label: '1', value: 'one' }, + event: ['keyDown', { keyCode: 27 }], + }, + 'multi select > should not call onChange prop': { + props: { + ...BASIC_PROPS, + isMulti: true, + menuIsOpen: true, + }, + optionsSelected: { label: '1', value: 'one' }, + focusedOption: { label: '1', value: 'one' }, + event: ['keyDown', { keyCode: 27 }], + }, + } +); + +cases( + 'click to open select', + ({ props = BASIC_PROPS, expectedToFocus }) => { + let selectWrapper = mount(); + + // this will get updated on input click, though click on input is not bubbling up to control component + selectWrapper.setState({ isFocused: true }); + let controlComponent = selectWrapper.find('div.react-select__control'); + controlComponent.simulate('mouseDown', { target: { tagName: 'div' } }); + expect(spy).not.toHaveBeenCalled(); +}); + +cases( + 'focus on options > keyboard interaction with Menu', + ({ props, selectedOption, nextFocusOption, keyEvent = [] }) => { + let selectWrapper = mount( + ); + + selectWrapper.simulate('keyDown', { keyCode: 27, key: 'Escape' }); + expect(spy).toHaveBeenCalledWith('', { action: 'menu-close' }); + }, + { + 'single select > should call onInputChange prop with empty string as inputValue': { + props: { + ...BASIC_PROPS, + inputValue: 'test', + menuIsOpen: true, + value: OPTIONS[0], + }, + }, + 'multi select > should call onInputChange prop with empty string as inputValue': { + props: { + ...BASIC_PROPS, + inputValue: 'test', + isMulti: true, + menuIsOpen: true, + value: OPTIONS[0], + }, + }, + } +); + +cases( + 'Clicking dropdown indicator on select with closed menu with primary button on mouse', + ({ props = BASIC_PROPS }) => { + let onMenuOpenSpy = jest.fn(); + props = { ...props, onMenuOpen: onMenuOpenSpy }; + let selectWrapper = mount(); + // Menu is open + expect(selectWrapper.find(Menu).exists()).toBeTruthy(); + selectWrapper + .find('div.react-select__dropdown-indicator') + .simulate('mouseDown', { button: 0 }); + expect(onMenuCloseSpy).toHaveBeenCalled(); + }, + { + 'single select > should call onMenuOpen prop when select is opened and onMenuClose prop when select is closed': {}, + 'multi select > should call onMenuOpen prop when select is opened and onMenuClose prop when select is closed': { + props: { + ...BASIC_PROPS, + isMulti: true, + }, + }, + } +); + +cases('Clicking Enter on a focused select', ({ props = BASIC_PROPS, expectedValue }) => { + let wrapper = mount( + ); + let downButtonWrapper = selectWrapper.find( + 'div.react-select__dropdown-indicator' + ); + + // does not open menu if menu is closed + expect(selectWrapper.props().menuIsOpen).toBe(false); + downButtonWrapper.simulate('mouseDown', { button: 1 }); + expect(onMenuOpenSpy).not.toHaveBeenCalled(); + + // does not close menu if menu is opened + selectWrapper.setProps({ menuIsOpen: true }); + downButtonWrapper.simulate('mouseDown', { button: 1 }); + expect(onMenuCloseSpy).not.toHaveBeenCalled(); + }, + { + 'single select > secondary click is ignored > should not call onMenuOpen and onMenuClose prop': {}, + 'multi select > secondary click is ignored > should not call onMenuOpen and onMenuClose prop': { + props: { + ...BASIC_PROPS, + isMulti: true, + }, + }, + } +); + +cases( + 'required on input is not there by default', + ({ props = BASIC_PROPS }) => { + let selectWrapper = mount(); + let hiddenInput = selectWrapper.find('input[type="hidden"]'); + expect(hiddenInput.props().value).toEqual(expectedValue); + }, + { + 'single select > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + value: OPTIONS[3], + }, + expectedValue: 'three', + }, + 'single select > options with number values > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + options: OPTIONS_NUMBER_VALUE, + value: OPTIONS_NUMBER_VALUE[3], + }, + expectedValue: 3, + }, + 'single select > options with boolean values > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + options: OPTIONS_BOOLEAN_VALUE, + value: OPTIONS_BOOLEAN_VALUE[1], + }, + expectedValue: false, + }, + 'multi select > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + isMulti: true, + value: OPTIONS[3], + }, + expectedValue: 'three', + }, + 'multi select > with delimiter prop > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + delimiter: ', ', + isMulti: true, + value: [OPTIONS[3], OPTIONS[5]], + }, + expectedValue: 'three, five', + }, + 'multi select > options with number values > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + isMulti: true, + options: OPTIONS_NUMBER_VALUE, + value: OPTIONS_NUMBER_VALUE[3], + }, + expectedValue: 3, + }, + 'multi select > with delimiter prop > options with number values > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + delimiter: ', ', + isMulti: true, + options: OPTIONS_NUMBER_VALUE, + value: [OPTIONS_NUMBER_VALUE[3], OPTIONS_NUMBER_VALUE[1]], + }, + expectedValue: '3, 1', + }, + 'multi select > options with boolean values > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + isMulti: true, + options: OPTIONS_BOOLEAN_VALUE, + value: OPTIONS_BOOLEAN_VALUE[1], + }, + expectedValue: false, + }, + 'multi select > with delimiter prop > options with boolean values > should set value of input as value prop': { + props: { + ...BASIC_PROPS, + delimiter: ', ', + isMulti: true, + options: OPTIONS_BOOLEAN_VALUE, + value: [OPTIONS_BOOLEAN_VALUE[1], OPTIONS_BOOLEAN_VALUE[0]], + }, + expectedValue: 'false, true', + }, + } +); + +cases( + 'isOptionDisabled() prop', + ({ props, expectedEnabledOption, expectedDisabledOption }) => { + let selectWrapper = mount(); + expect(selectWrapper.props().isDisabled).toBeTruthy(); + + let controlWrapper = selectWrapper.find(Control); + expect(controlWrapper.props().isDisabled).toBeTruthy(); + + let valueWrapper = selectWrapper.find(ValueContainer); + expect(valueWrapper.props().isDisabled).toBeTruthy(); + + let indicatorsContainerWrapper = selectWrapper.find(IndicatorsContainer); + expect(indicatorsContainerWrapper.props().isDisabled).toBeTruthy(); + + let DropdownIndicatorWrapper = selectWrapper.find(DropdownIndicator); + expect(DropdownIndicatorWrapper.props().isDisabled).toBeTruthy(); + }, + { + 'single select > should add isDisabled prop to select components': { + props: { + ...BASIC_PROPS, + isDisabled: true, + }, + }, + 'multi select > should add isDisabled prop to select components': { + props: { + ...BASIC_PROPS, + isDisabled: true, + isMulti: true, + }, + }, + } +); + +test('hitting tab on option should not call onChange if tabSelectsValue is false', () => { + let spy = jest.fn(); + let selectWrapper = mount( + + ); + + let availableOptions = selectWrapper + .find(Option) + .map(option => option.text()); + expect(availableOptions.indexOf('0') > -1).toBeTruthy(); + + selectWrapper.setProps({ value: OPTIONS[0] }); + + // Re-open Menu + selectWrapper + .find('div.react-select__dropdown-indicator') + .simulate('mouseDown', { button: 0 }); + availableOptions = selectWrapper.find(Option).map(option => option.text()); + + expect(availableOptions.indexOf('0') > -1).toBeFalsy(); +}); + +test('multi select > to not hide the selected options from the menu if hideSelectedOptions is false', () => { + let selectWrapper = mount( + + ); + expect(selectWrapper.find(Control).text()).toBe('012'); + + selectWrapper + .find(Control) + .simulate('keyDown', { keyCode: 8, key: 'Backspace' }); + expect(onChangeSpy).toHaveBeenCalledWith( + [{ label: '0', value: 'zero' }, { label: '1', value: 'one' }], + { action: 'pop-value', removedValue: { label: '2', value: 'two' }, name: BASIC_PROPS.name }, + ); +}); + +test('should not call onChange on hitting backspace when backspaceRemovesValue is false', () => { + let onChangeSpy = jest.fn(); + let selectWrapper = mount( + + ); + selectWrapper + .find(Control) + .simulate('keyDown', { keyCode: 8, key: 'Backspace' }); + expect(onChangeSpy).not.toHaveBeenCalled(); +}); + +test('should call onChange with `null` on hitting backspace when backspaceRemovesValue is true and isMulti is false', () => { + let onChangeSpy = jest.fn(); + let selectWrapper = mount( + + ); + selectWrapper + .find(Control) + .simulate('keyDown', { keyCode: 8, key: 'Backspace' }); + expect(onChangeSpy).toHaveBeenCalledWith([], { action: 'pop-value', name: 'test-input-name', removedValue: undefined }); +}); + +test('multi select > clicking on X next to option will call onChange with all options other that the clicked option', () => { + let onChangeSpy = jest.fn(); + let selectWrapper = mount( + ); + + selectWrapper + .find(Menu) + .simulate('keyDown', { keyCode: 40, key: 'ArrowDown' }); + expect( + selectWrapper.find('Control input').props()['aria-activedescendant'] + ).toBe('1'); + }, + { + 'single select > should update aria-activedescendant as per focused option': { + skip: true, + }, + 'multi select > should update aria-activedescendant as per focused option': { + skip: true, + props: { + ...BASIC_PROPS, + value: { label: '2', value: 'two' }, + }, + }, + } +); + +cases( + 'accessibility > passes through aria-labelledby prop', + ({ props = { ...BASIC_PROPS, 'aria-labelledby': 'testing' } }) => { + let selectWrapper = mount(); + expect(selectWrapper.find('Control input').props()['aria-label']).toBe( + 'testing' + ); + }, + { + 'single select > should pass aria-labelledby prop down to input': {}, + 'multi select > should pass aria-labelledby prop down to input': { + props: { + ...BASIC_PROPS, + 'aria-label': 'testing', + isMulti: true, + }, + }, + } +); + +test('accessibility > to show the number of options available in A11yText when the menu is Open', () => { + let selectWrapper = mount(); + const liveRegionId = '#aria-context'; + const liveRegionEventId = '#aria-selection-event'; + selectWrapper.setState({ isFocused: true }); + selectWrapper.update(); + + // navigate to disabled option + selectWrapper + .find(Menu) + .simulate('keyDown', { keyCode: 40, key: 'ArrowDown' }) + .simulate('keyDown', { keyCode: 40, key: 'ArrowDown' }); + + expect(selectWrapper.find(liveRegionId).text()).toMatch( + 'option 1 focused disabled, 2 of 17. 17 results available. Use Up and Down to choose options, press Escape to exit the menu, press Tab to select the option and exit the menu.' + ); + + // attempt to select disabled option + selectWrapper + .find(Menu) + .simulate('keyDown', { keyCode: 13, key: 'Enter' }); + + expect(selectWrapper.find(liveRegionEventId).text()).toMatch( + 'option 1 is disabled. Select another option.' + ); +}); + +test('accessibility > screenReaderStatus function prop > to pass custom text to A11yText', () => { + const screenReaderStatus = ({ count }) => + `There are ${count} options available`; + + const liveRegionId = '#aria-context'; + let selectWrapper = mount( + + ); + selectWrapper + .find('div.react-select__option') + .at(0) + .simulate('click', { button: 0 }); + expect(onMenuCloseSpy).not.toHaveBeenCalled(); +}); + +/** + * TODO: Delete after confirmation - Not a case anymore, not getting this label in V2 + */ +test.skip('accessibility > multi select > remove value label', () => { + const props = { + ...BASIC_PROPS, + isMulti: true, + value: [OPTIONS[0], OPTIONS[1]], + }; + let selectWrapper = mount(); + expect(selectWrapper.find('Control input').props().id).toBe( + document.activeElement.id + ); + }, + { + 'single select > should focus select on mount': {}, + 'multi select > should focus select on mount': { + props: { + ...BASIC_PROPS, + isMulti: true, + autoFocus: true, + }, + }, + } +); + +/** + * onFocus hook is not being called when component is mounted is autoFocus true + * Reproducible here -> https://codesandbox.io/s/71xrkj0qj + */ +cases( + 'onFocus prop with autoFocus', + ({ props = { ...BASIC_PROPS, autoFocus: true } }) => { + let onFocusSpy = jest.fn(); + let selectWrapper = mount(); + selectWrapper.find('Control input').simulate('focus'); + expect(onFocusSpy).toHaveBeenCalledTimes(1); + }, + { + 'single select > should call onFocus handler on focus on input': {}, + 'multi select > should call onFocus handler on focus on input': { + props: { + ...BASIC_PROPS, + isMulti: true, + }, + }, + } +); + +cases( + 'onBlur prop', + ({ props = { ...BASIC_PROPS } }) => { + let onBlurSpy = jest.fn(); + let selectWrapper = mount( + + ); + selectWrapper.find('Control input').simulate('blur'); + // Once by blur and other time by menu-close + expect(onInputChangeSpy).toHaveBeenCalledTimes(2); +}); + +test('onMenuClose() function prop to be called on blur', () => { + let onMenuCloseSpy = jest.fn(); + let selectWrapper = mount( + ); + expect(selectWrapper.find('Control').text()).toBe(expectPlaceholder); + }, + { + 'single select > should display default placeholder "Select..."': {}, + 'single select > should display provided placeholder': { + props: { + placeholder: 'single Select...', + }, + expectPlaceholder: 'single Select...', + }, + 'multi select > should display default placeholder "Select..."': {}, + 'multi select > should display provided placeholder': { + props: { + placeholder: 'multi Select...', + }, + expectPlaceholder: 'multi Select...', + }, + } +); + +cases( + 'display placeholder once value is removed', + ({ props }) => { + let selectWrapper = mount(); + let inputWrapper = selectWrapper.find('Control input'); + expect(inputWrapper.props().readOnly).toBe(true); +}); + +cases( + 'clicking on disabled option', + ({ props = BASIC_PROPS, optionsSelected }) => { + let onChangeSpy = jest.fn(); + props = { ...props, onChange: onChangeSpy }; + let selectWrapper = mount(); + let selectOption = selectWrapper + .find('div.react-select__option') + .findWhere(n => n.props().children === optionsSelected); + selectOption.simulate('keyDown', { keyCode: 13, key: 'Enter' }); + expect(onChangeSpy).not.toHaveBeenCalled(); + }, + { + 'single select > should not select the disabled option': { + props: { + ...BASIC_PROPS, + options: [ + { label: 'option 1', value: 'opt1' }, + { label: 'option 2', value: 'opt2', isDisabled: true }, + ], + }, + optionsSelected: 'option 2', + }, + 'multi select > should not select the disabled option': { + props: { + ...BASIC_PROPS, + options: [ + { label: 'option 1', value: 'opt1' }, + { label: 'option 2', value: 'opt2', isDisabled: true }, + ], + }, + optionsSelected: 'option 2', + }, + } +); + +test('does not select anything when a disabled option is the only item in the list after a search', () => { + let onChangeSpy = jest.fn(); + const options = [ + { label: 'opt', value: 'opt1', isDisabled: true }, + ...OPTIONS, + ]; + const props = { ...BASIC_PROPS, onChange: onChangeSpy, options }; + // Getting error trying to change unControlled component to controlled + // so passing inputValue + let selectWrapper = mount( + ); + + expect(selectWrapper.find(Input).exists()).toBeFalsy(); + expect(selectWrapper.find(InputComponent).exists()).toBeTruthy(); +}); + +test('render custom Menu Component', () => { + const MenuComponent = () =>
; + let selectWrapper = mount( + + ); + + expect(selectWrapper.find(Option).exists()).toBeFalsy(); + expect(selectWrapper.find(OptionComponent).exists()).toBeTruthy(); +}); + +cases( + 'isClearable is false', + ({ props = BASIC_PROPS }) => { + let selectWrapper = mount(); + + expect(selectWrapper.find(MultiValue).length).toBe(1); + selectWrapper + .find('div.react-select__clear-indicator') + .simulate('mousedown', { button: 0 }); + expect(onChangeSpy).toBeCalledWith([], { action: 'clear', name: BASIC_PROPS.name }); +}); + +test('clearing select using clear button to not call onMenuOpen or onMenuClose', () => { + let onMenuCloseSpy = jest.fn(); + let onMenuOpenSpy = jest.fn(); + let props = { + ...BASIC_PROPS, + onMenuClose: onMenuCloseSpy, + onMenuOpen: onMenuOpenSpy, + }; + let selectWrapper = mount( + ); + selectWrapper + .find('div.react-select__option') + .at(0) + .simulate('click', { button: 0 }); + const selectedOption = { label: '0', value: 'zero' }; + expect(onChangeSpy).toHaveBeenCalledWith([selectedOption], { + action: 'select-option', + option: selectedOption, + name: BASIC_PROPS.name + }); +}); + +test('getOptionLabel() prop > to format the option label', () => { + const getOptionLabel = option => `This a custom option ${option.label} label`; + const selectWrapper = mount( + + ); + expect(selectWrapper.find(GroupHeading).text()).toBe( + 'This is custom group 1 header' + ); +}); + +test('to only render groups with at least one match when filtering', () => { + const options = [ + { + label: 'group 1', + options: [{ value: 1, label: '1' }, { value: 2, label: '2' }], + }, + { + label: 'group 2', + options: [{ value: 3, label: '3' }, { value: 4, label: '4' }], + }, + ]; + const selectWrapper = mount( + + ); + selectWrapper.setProps({ inputValue: '5' }); + + expect(selectWrapper.find('Group').length).toBe(0); +}); + +test('multi select > have default value delimiter seperated', () => { + let selectWrapper = mount( + + ); + expect(selectWrapper.find('input[type="hidden"]').props().value).toBe( + 'zero===&===one' + ); +}); + +test('hitting spacebar should select option if isSearchable is false', () => { + let onChangeSpy = jest.fn(); + let props = { ...BASIC_PROPS, onChange: onChangeSpy }; + let selectWrapper = mount( + ); + + // focus the first option + selectWrapper + .find(Menu) + .simulate('keyDown', { keyCode: 40, key: 'ArrowDown' }); + selectWrapper.simulate('keyDown', { keyCode: 27, key: 'Escape' }); + expect(onChangeSpy).not.toHaveBeenCalled(); +}); + +test('multi select > removes the selected option from the menu options when isSearchable is false', () => { + let selectWrapper = mount( + ); + selectWrapper + .find('div.react-select__control') + .simulate('keyDown', { keyCode: 38, key: 'ArrowUp' }); + expect(selectWrapper.state('focusedOption')).toEqual({ + label: '16', + value: 'sixteen', + }); +}); + +test('close menu on hitting escape and clear input value if menu is open even if escapeClearsValue and isClearable are true', () => { + let onMenuCloseSpy = jest.fn(); + let onInputChangeSpy = jest.fn(); + let props = { + ...BASIC_PROPS, + onInputChange: onInputChangeSpy, + onMenuClose: onMenuCloseSpy, + value: OPTIONS[0], + }; + let selectWrapper = mount( + + ); + + selectWrapper.simulate('keyDown', { keyCode: 27, key: 'Escape' }); + expect(onChangeSpy).not.toHaveBeenCalled(); +}); + +test('to not clear value when hitting escape if escapeClearsValue is true and isClearable is false', () => { + let onChangeSpy = jest.fn(); + let props = { ...BASIC_PROPS, onChange: onChangeSpy, value: OPTIONS[0] }; + let selectWrapper = mount( + ); + + selectWrapper.simulate('keyDown', { keyCode: 27, key: 'Escape' }); + expect(onChangeSpy).not.toHaveBeenCalled(); +}); + +test('to clear value when hitting escape if escapeClearsValue and isClearable are true', () => { + let onInputChangeSpy = jest.fn(); + let props = { ...BASIC_PROPS, onChange: onInputChangeSpy, value: OPTIONS[0] }; + let selectWrapper = mount( + ); + // Open Menu + selectWrapper.setState({ focusedOption: OPTIONS[0] }); + selectWrapper.simulate('keyDown', { keyCode: 32, key: ' ' }); + expect(onChangeSpy).not.toHaveBeenCalled(); +}); + + +test('renders with custom theme', () => { + const primary = 'rgb(255, 164, 83)'; + const selectWrapper = mount( + ); + expect(toJson(tree)).toMatchSnapshot(); +}); + +test('passes down the className prop', () => { + let selectWrapper = mount(); + // Menu not open by defualt + expect(selectWrapper.find(Menu).exists()).toBeFalsy(); + // Open Menu + selectWrapper + .find('div.react-select__dropdown-indicator') + .simulate('mouseDown', { button: 0 }); + expect(selectWrapper.find(Menu).exists()).toBeTruthy(); + + // close open menu + selectWrapper + .find('div.react-select__dropdown-indicator') + .simulate('mouseDown', { button: 0 }); + expect(selectWrapper.find(Menu).exists()).toBeFalsy(); + }, + { + 'single select > should toggle Menu': {}, + 'multi select > should toggle Menu': { + props: { + ...BASIC_PROPS, + isMulti: true, + }, + }, + } +); + +test('If menuIsOpen prop is passed Menu should not close on clicking Dropdown Indicator', () => { + let selectWrapper = mount(); + expect(selectWrapper.find(Menu).exists()).toBeTruthy(); + + selectWrapper + .find('div.react-select__dropdown-indicator') + .simulate('mouseDown', { button: 0 }); + expect(selectWrapper.find(Menu).exists()).toBeFalsy(); +}); + +test('Menu is controllable by menuIsOpen prop', () => { + let selectWrapper = mount(); + expect(selectWrapper.find(Menu).exists()).toBeTruthy(); + selectWrapper + .find('div.react-select__dropdown-indicator') + .simulate('mouseDown', { button: 0 }); + // menu is not closed + expect(selectWrapper.find(Menu).exists()).toBeTruthy(); + }, + { + 'single select > should keep Menu open by default if true is passed for menuIsOpen prop': {}, + 'multi select > should keep Menu open by default if true is passed for menuIsOpen prop': { + props: { + ...BASIC_PROPS, + isMulti: true, + menuIsOpen: true, + }, + }, + } +); + +test('multi select > selecting multiple values', () => { + let selectWrapper = mount(); + expect(selectWrapper.find('Control input').props().value).toBe('0'); + let input = selectWrapper.find('Control input').getDOMNode(); + // Thit is to set the event.currentTarget.value + // Enzyme issue : https://github.com/airbnb/enzyme/issues/218 + input.value = 'A'; + selectWrapper + .find('Control input') + .simulate('change', { keyCode: 65, Key: 'A' }); + expect(selectWrapper.find('Control input').props().value).toBe('A'); +}); + +test('inputValue prop > should not update the inputValue when on change of input if inputValue prop is provided', () => { + const props = { ...BASIC_PROPS, inputValue: '0' }; + let selectWrapper = mount(); + expect(selectWrapper.find('input[type="hidden"]').props().value).toBe('zero'); + selectWrapper + .find('div.react-select__option') + .at(1) + .simulate('click'); + expect(selectWrapper.find('input[type="hidden"]').props().value).toBe('one'); +}); + +test('value prop > should update the value on selecting option', () => { + const props = { ...BASIC_PROPS, value: [OPTIONS[0]] }; + let selectWrapper = mount(); + let toSelectOption = selectWrapper + .find('div.react-select__option') + .findWhere(n => n.props().children === selectOption.label); + toSelectOption.simulate(...event); + expect(selectWrapper.find('input[type="hidden"]').props().value).toBe( + expectSelectedOption + ); + }, + { + 'single select > clicking on an option > should select the clicked option': { + props: { + ...BASIC_PROPS, + menuIsOpen: true, + }, + event: ['click', { button: 0 }], + selectOption: OPTIONS[2], + expectSelectedOption: 'two', + }, + 'multi select > clicking on an option > should select the clicked option': { + props: { + ...BASIC_PROPS, + delimiter: ', ', + isMulti: true, + menuIsOpen: true, + }, + event: ['click', { button: 0 }], + selectOption: OPTIONS[2], + expectSelectedOption: 'two', + }, + } +); + +cases( + 'Integration tests > selection an option > keyboard interaction', + ({ + props = { ...BASIC_PROPS }, + eventsToSimulate, + expectedSelectedOption, + }) => { + let selectWrapper = mount( + +
+ +
+ +
+ +
+ Select... +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+ + + + + + +
+
+
+ +
+ + + + +`; diff --git a/src/__tests__/__snapshots__/AsyncCreatable.test.js.snap b/src/__tests__/__snapshots__/AsyncCreatable.test.js.snap new file mode 100644 index 0000000000..013ae56590 --- /dev/null +++ b/src/__tests__/__snapshots__/AsyncCreatable.test.js.snap @@ -0,0 +1,1032 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`defaults - snapshot 1`] = ` + + + + +
+ +
+ +
+
+ +
+ +
+ + +
+ + + + + + +
+
+
+ +
+ + +
+ +
+`; diff --git a/src/__tests__/__snapshots__/Creatable.test.js.snap b/src/__tests__/__snapshots__/Creatable.test.js.snap new file mode 100644 index 0000000000..9bbd63afaa --- /dev/null +++ b/src/__tests__/__snapshots__/Creatable.test.js.snap @@ -0,0 +1,18 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`defaults - snapshot 1`] = ` + +`; diff --git a/src/__tests__/__snapshots__/Select.test.js.snap b/src/__tests__/__snapshots__/Select.test.js.snap new file mode 100644 index 0000000000..5c2eb8168a --- /dev/null +++ b/src/__tests__/__snapshots__/Select.test.js.snap @@ -0,0 +1,698 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`snapshot - defaults 1`] = ` + + + + + Select... + + + + + + + + + +`; diff --git a/src/__tests__/__snapshots__/StateManaged.test.js.snap b/src/__tests__/__snapshots__/StateManaged.test.js.snap new file mode 100644 index 0000000000..cd42b2902d --- /dev/null +++ b/src/__tests__/__snapshots__/StateManaged.test.js.snap @@ -0,0 +1,48 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`defaults > snapshot 1`] = ` + + ); + } +} diff --git a/src/internal/NodeResolver.js b/src/internal/NodeResolver.js new file mode 100644 index 0000000000..338a621e92 --- /dev/null +++ b/src/internal/NodeResolver.js @@ -0,0 +1,21 @@ +// @flow + +import { Component, type Element, type ElementRef } from 'react'; +import { findDOMNode } from 'react-dom'; + +type Props = { + children: Element<*>, + innerRef: ElementRef<*>, +}; + +export default class NodeResolver extends Component { + componentDidMount() { + this.props.innerRef(findDOMNode(this)); + } + componentWillUnmount() { + this.props.innerRef(null); + } + render() { + return this.props.children; + } +} diff --git a/src/internal/ScrollBlock.js b/src/internal/ScrollBlock.js new file mode 100644 index 0000000000..690d6aa507 --- /dev/null +++ b/src/internal/ScrollBlock.js @@ -0,0 +1,71 @@ +// @flow + +import React, { PureComponent, type Element } from 'react'; +import { css } from 'emotion'; +import NodeResolver from './NodeResolver'; +import ScrollLock from './ScrollLock/index'; + +type Props = { + children: Element<*>, + isEnabled: boolean, +}; +type State = { + touchScrollTarget: HTMLElement | null, +}; + +// NOTE: +// We shouldn't need this after updating to React v16.3.0, which introduces: +// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref +// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref + +export default class ScrollBlock extends PureComponent { + state = { touchScrollTarget: null }; + + // must be in state to trigger a re-render, only runs once per instance + getScrollTarget = (ref: HTMLElement) => { + if (ref === this.state.touchScrollTarget) return; + this.setState({ touchScrollTarget: ref }); + }; + + // this will close the menu when a user clicks outside + blurSelectInput = () => { + if (document.activeElement) { + document.activeElement.blur(); + } + }; + + render() { + const { children, isEnabled } = this.props; + const { touchScrollTarget } = this.state; + + // bail early if not enabled + if (!isEnabled) return children; + + /* + * Div + * ------------------------------ + * blocks scrolling on non-body elements behind the menu + + * NodeResolver + * ------------------------------ + * we need a reference to the scrollable element to "unlock" scroll on + * mobile devices + + * ScrollLock + * ------------------------------ + * actually does the scroll locking + */ + return ( +
+
+ {children} + {touchScrollTarget ? ( + + ) : null} +
+ ); + } +} diff --git a/src/internal/ScrollCaptor.js b/src/internal/ScrollCaptor.js new file mode 100644 index 0000000000..0a913e7d55 --- /dev/null +++ b/src/internal/ScrollCaptor.js @@ -0,0 +1,146 @@ +// @flow + +import React, { Component, type Element } from 'react'; + +import NodeResolver from './NodeResolver'; + +export type CaptorProps = { + children: Element<*>, + onBottomArrive?: (event: SyntheticEvent) => void, + onBottomLeave?: (event: SyntheticEvent) => void, + onTopArrive?: (event: SyntheticEvent) => void, + onTopLeave?: (event: SyntheticEvent) => void, +}; + +class ScrollCaptor extends Component { + isBottom: boolean = false; + isTop: boolean = false; + scrollTarget: HTMLElement; + touchStart: number; + + componentDidMount() { + this.startListening(this.scrollTarget); + } + componentWillUnmount() { + this.stopListening(this.scrollTarget); + } + startListening(el: HTMLElement) { + // bail early if no scroll available + if (!el) return; + if (el.scrollHeight <= el.clientHeight) return; + + // all the if statements are to appease Flow 😢 + if (typeof el.addEventListener === 'function') { + el.addEventListener('wheel', this.onWheel, false); + } + if (typeof el.addEventListener === 'function') { + el.addEventListener('touchstart', this.onTouchStart, false); + } + if (typeof el.addEventListener === 'function') { + el.addEventListener('touchmove', this.onTouchMove, false); + } + } + stopListening(el: HTMLElement) { + // bail early if no scroll available + if (el.scrollHeight <= el.clientHeight) return; + + // all the if statements are to appease Flow 😢 + if (typeof el.removeEventListener === 'function') { + el.removeEventListener('wheel', this.onWheel, false); + } + if (typeof el.removeEventListener === 'function') { + el.removeEventListener('touchstart', this.onTouchStart, false); + } + if (typeof el.removeEventListener === 'function') { + el.removeEventListener('touchmove', this.onTouchMove, false); + } + } + + cancelScroll = (event: SyntheticEvent) => { + event.preventDefault(); + event.stopPropagation(); + }; + handleEventDelta = (event: SyntheticEvent, delta: number) => { + const { + onBottomArrive, + onBottomLeave, + onTopArrive, + onTopLeave, + } = this.props; + const { scrollTop, scrollHeight, clientHeight } = this.scrollTarget; + const target = this.scrollTarget; + const isDeltaPositive = delta > 0; + const availableScroll = scrollHeight - clientHeight - scrollTop; + let shouldCancelScroll = false; + + // reset bottom/top flags + if (availableScroll > delta && this.isBottom) { + if (onBottomLeave) onBottomLeave(event); + this.isBottom = false; + } + if (isDeltaPositive && this.isTop) { + if (onTopLeave) onTopLeave(event); + this.isTop = false; + } + + // bottom limit + if (isDeltaPositive && delta > availableScroll) { + if (onBottomArrive && !this.isBottom) { + onBottomArrive(event); + } + target.scrollTop = scrollHeight; + shouldCancelScroll = true; + this.isBottom = true; + + // top limit + } else if (!isDeltaPositive && -delta > scrollTop) { + if (onTopArrive && !this.isTop) { + onTopArrive(event); + } + target.scrollTop = 0; + shouldCancelScroll = true; + this.isTop = true; + } + + // cancel scroll + if (shouldCancelScroll) { + this.cancelScroll(event); + } + }; + + onWheel = (event: SyntheticWheelEvent) => { + this.handleEventDelta(event, event.deltaY); + }; + onTouchStart = (event: SyntheticTouchEvent) => { + // set touch start so we can calculate touchmove delta + this.touchStart = event.changedTouches[0].clientY; + }; + onTouchMove = (event: SyntheticTouchEvent) => { + const deltaY = this.touchStart - event.changedTouches[0].clientY; + this.handleEventDelta(event, deltaY); + }; + + getScrollTarget = (ref: HTMLElement) => { + this.scrollTarget = ref; + }; + + render() { + return ( + + {this.props.children} + + ); + } +} + +type SwitchProps = CaptorProps & { + isEnabled: boolean, +}; + +export default class ScrollCaptorSwitch extends Component { + static defaultProps = { isEnabled: true }; + render() { + const { isEnabled, ...props } = this.props; + return isEnabled ? : this.props.children; + } +} diff --git a/src/internal/ScrollLock/constants.js b/src/internal/ScrollLock/constants.js new file mode 100644 index 0000000000..825588c784 --- /dev/null +++ b/src/internal/ScrollLock/constants.js @@ -0,0 +1,14 @@ +export const STYLE_KEYS = [ + 'boxSizing', + 'height', + 'overflow', + 'paddingRight', + 'position' +]; + +export const LOCK_STYLES = { + boxSizing: 'border-box', // account for possible declaration `width: 100%;` on body + overflow: 'hidden', + position: 'relative', + height: '100%' +}; diff --git a/src/internal/ScrollLock/index.js b/src/internal/ScrollLock/index.js new file mode 100644 index 0000000000..69430e4f17 --- /dev/null +++ b/src/internal/ScrollLock/index.js @@ -0,0 +1,144 @@ +// @flow +import { Component } from 'react'; + +import { LOCK_STYLES, STYLE_KEYS } from './constants'; +import { + allowTouchMove, + isTouchDevice, + preventInertiaScroll, + preventTouchMove, +} from './utils'; + +const canUseDOM = !!( + typeof window !== 'undefined' && + window.document && + window.document.createElement +); + +let activeScrollLocks = 0; + +type Props = { + accountForScrollbars: boolean, + touchScrollTarget?: HTMLElement, +}; +type TargetStyle = { + [key: string]: string | null, +}; + +export default class ScrollLock extends Component { + originalStyles = {}; + listenerOptions = { + capture: false, + passive: false, + }; + static defaultProps = { + accountForScrollbars: true, + }; + componentDidMount() { + if (!canUseDOM) return; + + const { accountForScrollbars, touchScrollTarget } = this.props; + const target = document.body; + const targetStyle = target && (target.style: TargetStyle); + + if (accountForScrollbars) { + // store any styles already applied to the body + STYLE_KEYS.forEach(key => { + const val = targetStyle && targetStyle[key]; + this.originalStyles[key] = val; + }); + } + + // apply the lock styles and padding if this is the first scroll lock + if (accountForScrollbars && activeScrollLocks < 1) { + const currentPadding = + parseInt(this.originalStyles.paddingRight, 10) || 0; + const clientWidth = document.body ? document.body.clientWidth : 0; + const adjustedPadding = + window.innerWidth - clientWidth + currentPadding || 0; + + Object.keys(LOCK_STYLES).forEach(key => { + const val = LOCK_STYLES[key]; + if (targetStyle) { + targetStyle[key] = val; + } + }); + + if (targetStyle) { + targetStyle.paddingRight = `${adjustedPadding}px`; + } + } + + // account for touch devices + if (target && isTouchDevice()) { + // Mobile Safari ignores { overflow: hidden } declaration on the body. + target.addEventListener( + 'touchmove', + preventTouchMove, + this.listenerOptions + ); + + // Allow scroll on provided target + if (touchScrollTarget) { + touchScrollTarget.addEventListener( + 'touchstart', + preventInertiaScroll, + this.listenerOptions + ); + touchScrollTarget.addEventListener( + 'touchmove', + allowTouchMove, + this.listenerOptions + ); + } + } + + // increment active scroll locks + activeScrollLocks += 1; + } + componentWillUnmount() { + if (!canUseDOM) return; + + const { accountForScrollbars, touchScrollTarget } = this.props; + const target = document.body; + const targetStyle = target && (target.style: TargetStyle); + + // safely decrement active scroll locks + activeScrollLocks = Math.max(activeScrollLocks - 1, 0); + + // reapply original body styles, if any + if (accountForScrollbars && activeScrollLocks < 1) { + STYLE_KEYS.forEach(key => { + const val = this.originalStyles[key]; + if (targetStyle) { + targetStyle[key] = val; + } + }); + } + + // remove touch listeners + if (target && isTouchDevice()) { + target.removeEventListener( + 'touchmove', + preventTouchMove, + this.listenerOptions + ); + + if (touchScrollTarget) { + touchScrollTarget.removeEventListener( + 'touchstart', + preventInertiaScroll, + this.listenerOptions + ); + touchScrollTarget.removeEventListener( + 'touchmove', + allowTouchMove, + this.listenerOptions + ); + } + } + } + render() { + return null; + } +} diff --git a/src/internal/ScrollLock/utils.js b/src/internal/ScrollLock/utils.js new file mode 100644 index 0000000000..22f1ea77e4 --- /dev/null +++ b/src/internal/ScrollLock/utils.js @@ -0,0 +1,25 @@ +export function preventTouchMove(e) { + e.preventDefault(); +} + +export function allowTouchMove(e) { + e.stopPropagation(); +} + +export function preventInertiaScroll() { + const top = this.scrollTop; + const totalScroll = this.scrollHeight; + const currentScroll = top + this.offsetHeight; + + if (top === 0) { + this.scrollTop = 1; + } else if (currentScroll === totalScroll) { + this.scrollTop = top - 1; + } +} + +// `ontouchstart` check works on most browsers +// `maxTouchPoints` works on IE10/11 and Surface +export function isTouchDevice() { + return 'ontouchstart' in window || navigator.maxTouchPoints; +} diff --git a/src/internal/index.js b/src/internal/index.js new file mode 100644 index 0000000000..9afff8c74f --- /dev/null +++ b/src/internal/index.js @@ -0,0 +1,7 @@ +// @flow + +export { default as A11yText } from './A11yText'; +export { default as DummyInput } from './DummyInput'; +export { default as NodeResolver } from './NodeResolver'; +export { default as ScrollBlock } from './ScrollBlock'; +export { default as ScrollCaptor } from './ScrollCaptor'; diff --git a/src/internal/react-fast-compare.js b/src/internal/react-fast-compare.js new file mode 100644 index 0000000000..6465aed3dc --- /dev/null +++ b/src/internal/react-fast-compare.js @@ -0,0 +1,90 @@ +'use strict'; + +var isArray = Array.isArray; +var keyList = Object.keys; +var hasProp = Object.prototype.hasOwnProperty; + +function equal(a, b) { + // fast-deep-equal index.js 2.0.1 + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + var arrA = isArray(a) + , arrB = isArray(b) + , i + , length + , key; + + if (arrA && arrB) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) { + if (!equal(a[i], b[i])) return false; + } + return true; + } + + if (arrA != arrB) return false; + + var dateA = a instanceof Date + , dateB = b instanceof Date; + if (dateA != dateB) return false; + if (dateA && dateB) return a.getTime() == b.getTime(); + + var regexpA = a instanceof RegExp + , regexpB = b instanceof RegExp; + if (regexpA != regexpB) return false; + if (regexpA && regexpB) return a.toString() == b.toString(); + + var keys = keyList(a); + length = keys.length; + + if (length !== keyList(b).length) { + return false; + } + + for (i = length; i-- !== 0;) { + if (!hasProp.call(b, keys[i])) return false; + } + // end fast-deep-equal + + // Custom handling for React + for (i = length; i-- !== 0;) { + key = keys[i]; + if (key === '_owner' && a.$$typeof) { + // React-specific: avoid traversing React elements' _owner. + // _owner contains circular references + // and is not needed when comparing the actual elements (and not their owners) + // .$$typeof and ._store on just reasonable markers of a react element + continue; + } else { + // all other properties should be traversed as usual + if (!equal(a[key], b[key])) return false; + } + } + + // fast-deep-equal index.js 2.0.1 + return true; + } + + return a!==a && b!==b; +} +// end fast-deep-equal + +export default function exportedEqual(a, b) { + try { + return equal(a, b); + } catch (error) { + if (error.message && error.message.match(/stack|recursion/i)) { + // warn on circular references, don't crash + // browsers give this different errors name and messages: + // chrome/safari: "RangeError", "Maximum call stack size exceeded" + // firefox: "InternalError", too much recursion" + // edge: "Error", "Out of stack space" + console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message); + return false; + } + // some other error. we should definitely know about these + throw error; + } +}; diff --git a/src/stateManager.js b/src/stateManager.js new file mode 100644 index 0000000000..ccb08cbf4e --- /dev/null +++ b/src/stateManager.js @@ -0,0 +1,133 @@ +// @flow + +import React, { + Component, + type ElementRef, + type AbstractComponent, + type Config, +} from 'react'; + +import type { ActionMeta, InputActionMeta, ValueType } from './types'; + +export type DefaultProps = {| + defaultInputValue: string, + defaultMenuIsOpen: boolean, + defaultValue: ValueType, +|}; +export type Props = { + ...DefaultProps, + inputValue?: string, + menuIsOpen?: boolean, + value?: ValueType, + onChange?: (ValueType, ActionMeta) => void, +}; + +type StateProps

= $Diff< + P, + { + inputValue: any, + value: any, + menuIsOpen: any, + onChange: any, + onInputChange: any, + onMenuClose: any, + onMenuOpen: any, + } +>; + +type State = { + inputValue: string, + menuIsOpen: boolean, + value: ValueType, +}; + +export const defaultProps = { + defaultInputValue: '', + defaultMenuIsOpen: false, + defaultValue: null, +}; + +const manageState = ( + SelectComponent: AbstractComponent +): AbstractComponent & Config> => + class StateManager extends Component & Props, State> { + static defaultProps: DefaultProps = defaultProps; + + select: ElementRef<*>; + + state = { + inputValue: + this.props.inputValue !== undefined + ? this.props.inputValue + : this.props.defaultInputValue, + menuIsOpen: + this.props.menuIsOpen !== undefined + ? this.props.menuIsOpen + : this.props.defaultMenuIsOpen, + value: + this.props.value !== undefined + ? this.props.value + : this.props.defaultValue, + }; + focus() { + this.select.focus(); + } + blur() { + this.select.blur(); + } + // FIXME: untyped flow code, return any + getProp(key: string) { + return this.props[key] !== undefined ? this.props[key] : this.state[key]; + } + // FIXME: untyped flow code, return any + callProp(name: string, ...args: any) { + if (typeof this.props[name] === 'function') { + return this.props[name](...args); + } + } + onChange = (value: any, actionMeta: ActionMeta) => { + this.callProp('onChange', value, actionMeta); + this.setState({ value }); + }; + onInputChange = (value: any, actionMeta: InputActionMeta) => { + // TODO: for backwards compatibility, we allow the prop to return a new + // value, but now inputValue is a controllable prop we probably shouldn't + const newValue = this.callProp('onInputChange', value, actionMeta); + this.setState({ + inputValue: newValue !== undefined ? newValue : value, + }); + }; + onMenuOpen = () => { + this.callProp('onMenuOpen'); + this.setState({ menuIsOpen: true }); + }; + onMenuClose = () => { + this.callProp('onMenuClose'); + this.setState({ menuIsOpen: false }); + }; + render() { + const { + defaultInputValue, + defaultMenuIsOpen, + defaultValue, + ...props + } = this.props; + return ( + { + this.select = ref; + }} + inputValue={this.getProp('inputValue')} + menuIsOpen={this.getProp('menuIsOpen')} + onChange={this.onChange} + onInputChange={this.onInputChange} + onMenuClose={this.onMenuClose} + onMenuOpen={this.onMenuOpen} + value={this.getProp('value')} + /> + ); + } + }; + +export default manageState; diff --git a/src/styles.js b/src/styles.js new file mode 100644 index 0000000000..5d30f4e76f --- /dev/null +++ b/src/styles.js @@ -0,0 +1,109 @@ +// @flow + +import { + containerCSS, + indicatorsContainerCSS, + valueContainerCSS, +} from './components/containers'; +import { css as controlCSS } from './components/Control'; +import { groupCSS, groupHeadingCSS } from './components/Group'; +import { + clearIndicatorCSS, + dropdownIndicatorCSS, + loadingIndicatorCSS, + indicatorSeparatorCSS, +} from './components/indicators'; +import { inputCSS } from './components/Input'; +import { placeholderCSS } from './components/Placeholder'; +import { optionCSS } from './components/Option'; +import { + menuCSS, + menuListCSS, + menuPortalCSS, + noOptionsMessageCSS, + loadingMessageCSS, +} from './components/Menu'; +import { css as singleValueCSS } from './components/SingleValue'; +import { + multiValueCSS, + multiValueLabelCSS, + multiValueRemoveCSS, +} from './components/MultiValue'; + +type Props = { [key: string]: any }; + +// TODO: flow for state +type StyleFn = (props: Props, state: { [key: string]: any }) => {}; + +export type Styles = { + clearIndicator?: StyleFn, + container?: StyleFn, + control?: StyleFn, + dropdownIndicator?: StyleFn, + group?: StyleFn, + groupHeading?: StyleFn, + indicatorsContainer?: StyleFn, + indicatorSeparator?: StyleFn, + input?: StyleFn, + loadingIndicator?: StyleFn, + loadingMessageCSS?: StyleFn, + menu?: StyleFn, + menuList?: StyleFn, + menuPortal?: StyleFn, + multiValue?: StyleFn, + multiValueLabel?: StyleFn, + multiValueRemove?: StyleFn, + noOptionsMessageCSS?: StyleFn, + option?: StyleFn, + placeholder?: StyleFn, + singleValue?: StyleFn, + valueContainer: StyleFn, +}; +export type StylesConfig = $Shape; +export type GetStyles = (string, Props) => {}; + +export const defaultStyles: Styles = { + clearIndicator: clearIndicatorCSS, + container: containerCSS, + control: controlCSS, + dropdownIndicator: dropdownIndicatorCSS, + group: groupCSS, + groupHeading: groupHeadingCSS, + indicatorsContainer: indicatorsContainerCSS, + indicatorSeparator: indicatorSeparatorCSS, + input: inputCSS, + loadingIndicator: loadingIndicatorCSS, + loadingMessage: loadingMessageCSS, + menu: menuCSS, + menuList: menuListCSS, + menuPortal: menuPortalCSS, + multiValue: multiValueCSS, + multiValueLabel: multiValueLabelCSS, + multiValueRemove: multiValueRemoveCSS, + noOptionsMessage: noOptionsMessageCSS, + option: optionCSS, + placeholder: placeholderCSS, + singleValue: singleValueCSS, + valueContainer: valueContainerCSS, +}; + +// Merge Utility +// Allows consumers to extend a base Select with additional styles + +export function mergeStyles(source: Object, target: Object = {}) { + // initialize with source styles + const styles = { ...source }; + + // massage in target styles + Object.keys(target).forEach(key => { + if (source[key]) { + styles[key] = (rsCss, props) => { + return target[key](source[key](rsCss, props), props); + }; + } else { + styles[key] = target[key]; + } + }); + + return styles; +} diff --git a/src/theme.js b/src/theme.js new file mode 100644 index 0000000000..5d758418ea --- /dev/null +++ b/src/theme.js @@ -0,0 +1,44 @@ +// @flow + +import type { Theme } from './types'; + +export const colors = { + primary: '#2684FF', + primary75: '#4C9AFF', + primary50: '#B2D4FF', + primary25: '#DEEBFF', + + danger: '#DE350B', + dangerLight: '#FFBDAD', + + neutral0: 'hsl(0, 0%, 100%)', + neutral5: 'hsl(0, 0%, 95%)', + neutral10: 'hsl(0, 0%, 90%)', + neutral20: 'hsl(0, 0%, 80%)', + neutral30: 'hsl(0, 0%, 70%)', + neutral40: 'hsl(0, 0%, 60%)', + neutral50: 'hsl(0, 0%, 50%)', + neutral60: 'hsl(0, 0%, 40%)', + neutral70: 'hsl(0, 0%, 30%)', + neutral80: 'hsl(0, 0%, 20%)', + neutral90: 'hsl(0, 0%, 10%)', +}; + +const borderRadius = 4; +const baseUnit = 4; /* Used to calculate consistent margin/padding on elements */ +const controlHeight = 38; /* The minimum height of the control */ +const menuGutter = baseUnit * 2; /* The amount of space between the control and menu */ + +export const spacing = { + baseUnit, + controlHeight, + menuGutter, +}; + +export const defaultTheme: Theme = { + borderRadius, + colors, + spacing, +}; + +export type ThemeConfig = Theme | ((theme: Theme) => Theme); diff --git a/src/types.js b/src/types.js new file mode 100644 index 0000000000..88f8d3f30d --- /dev/null +++ b/src/types.js @@ -0,0 +1,119 @@ +// @flow +import type { Ref } from 'react'; + +export type OptionType = { + [string]: any, +}; + +export type OptionsType = Array; + +export type GroupType = { + options: OptionsType, + [string]: any, +}; + +export type ValueType = OptionType | OptionsType | null | void; + +export type FocusEventHandler = (SyntheticFocusEvent) => void; +export type MouseEventHandler = (SyntheticMouseEvent) => void; +export type KeyboardEventHandler = ( + SyntheticKeyboardEvent +) => void; + +export type InnerRef = Ref<*>; +export type PropsWithInnerRef = { + /** The inner reference. */ + innerRef: Ref<*>, +}; + +type ThemeSpacing = { + baseUnit: number, + controlHeight: number, + menuGutter: number, +}; + +export type Theme = { + borderRadius: number, + colors: { [key: string]: string }, + spacing: ThemeSpacing, +}; + +export type PropsWithStyles = { + /** + Get the styles of a particular part of the select. Pass in the name of the + property as the first argument, and the current props as the second argument. + See the `styles` object for the properties available. + */ + getStyles: (string, any) => {}, + theme: Theme, +}; + +export type ClassNameList = Array; +export type ClassNamesState = { [string]: boolean } | void; + +export type CommonProps = { + clearValue: () => void, + className?: string, + cx: (?string | null, ClassNamesState | void, string | void) => string | void, + /** + Get the styles of a particular part of the select. Pass in the name of the + property as the first argument, and the current props as the second argument. + See the `styles` object for the properties available. + */ + getStyles: (string, any) => {}, + theme: Theme, + getValue: () => ValueType, + hasValue: boolean, + isMulti: boolean, + options: OptionsType, + selectOption: OptionType => void, + selectProps: any, + setValue: (ValueType, ActionTypes) => void, +}; + +export type ActionTypes = + | 'select-option' + | 'deselect-option' + | 'remove-value' + | 'pop-value' + | 'set-value' + | 'clear' + | 'create-option'; + +export type ActionMeta = { + action: ActionTypes, +}; + +export type InputActionTypes = + | 'set-value' + | 'input-change' + | 'input-blur' + | 'menu-close'; + +export type InputActionMeta = {| + action: InputActionTypes, +|}; + +export type MenuPlacement = 'auto' | 'bottom' | 'top'; +export type MenuPosition = 'absolute' | 'fixed'; + +export type FocusDirection = + | 'up' + | 'down' + | 'pageup' + | 'pagedown' + | 'first' + | 'last'; + +export type OptionProps = PropsWithInnerRef & { + data: any, + id: number, + index: number, + isDisabled: boolean, + isFocused: boolean, + isSelected: boolean, + label: string, + onClick: MouseEventHandler, + onMouseOver: MouseEventHandler, + value: any, +}; diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 0000000000..0787bfd03b --- /dev/null +++ b/src/utils.js @@ -0,0 +1,269 @@ +// @flow + +import raf from 'raf'; +import { type ElementRef } from 'react'; +import type { + ClassNamesState, + InputActionMeta, + OptionsType, + ValueType, +} from './types'; + +// ============================== +// NO OP +// ============================== + +export const noop = () => {}; +export const emptyString = () => ''; + +// ============================== +// Class Name Prefixer +// ============================== + +/** + String representation of component state for styling with class names. + + Expects an array of strings OR a string/object pair: + - className(['comp', 'comp-arg', 'comp-arg-2']) + @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2' + - className('comp', { some: true, state: false }) + @returns 'react-select__comp react-select__comp--some' +*/ +function applyPrefixToName(prefix, name) { + if (!name) { + return prefix; + } else if (name[0] === '-') { + return prefix + name; + } else { + return prefix + '__' + name; + } +} + +export function classNames( + prefix?: string | null, + cssKey?: string | null, + state?: ClassNamesState, + className?: string, +) { + const arr = [cssKey, className]; + if (state && prefix) { + for (let key in state) { + if (state.hasOwnProperty(key) && state[key]) { + arr.push(`${applyPrefixToName(prefix, key)}`); + } + } + } + + return arr.filter(i => i).map(i => String(i).trim()).join(' '); +} +// ============================== +// Clean Value +// ============================== + +export const cleanValue = (value: ValueType): OptionsType => { + if (Array.isArray(value)) return value.filter(Boolean); + if (typeof value === 'object' && value !== null) return [value]; + return []; +}; + +// ============================== +// Handle Input Change +// ============================== + +export function handleInputChange( + inputValue: string, + actionMeta: InputActionMeta, + onInputChange?: (string, InputActionMeta) => string | void +) { + if (onInputChange) { + const newValue = onInputChange(inputValue, actionMeta); + if (typeof newValue === 'string') return newValue; + } + return inputValue; +} + +// ============================== +// Scroll Helpers +// ============================== + +export function isDocumentElement(el: Element) { + return [document.documentElement, document.body, window].indexOf(el) > -1; +} + +// Normalized Scroll Top +// ------------------------------ + +export function normalizedHeight(el: Element): number { + if (isDocumentElement(el)) { + return window.innerHeight; + } + + return el.clientHeight; +} + +// Normalized scrollTo & scrollTop +// ------------------------------ + +export function getScrollTop(el: Element): number { + if (isDocumentElement(el)) { + return window.pageYOffset; + } + return el.scrollTop; +} + +export function scrollTo(el: Element, top: number): void { + // with a scroll distance, we perform scroll on the element + if (isDocumentElement(el)) { + window.scrollTo(0, top); + return; + } + + el.scrollTop = top; +} + +// Get Scroll Parent +// ------------------------------ + +export function getScrollParent(element: ElementRef<*>): Element { + let style = getComputedStyle(element); + const excludeStaticParent = style.position === 'absolute'; + const overflowRx = /(auto|scroll)/; + const docEl = ((document.documentElement: any): Element); // suck it, flow... + + if (style.position === 'fixed') return docEl; + + for (let parent = element; (parent = parent.parentElement); ) { + style = getComputedStyle(parent); + if (excludeStaticParent && style.position === 'static') { + continue; + } + if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) { + return parent; + } + } + + return docEl; +} + +// Animated Scroll To +// ------------------------------ + +/** + @param t: time (elapsed) + @param b: initial value + @param c: amount of change + @param d: duration +*/ +function easeOutCubic(t: number, b: number, c: number, d: number): number { + return c * ((t = t / d - 1) * t * t + 1) + b; +} + +export function animatedScrollTo( + element: Element, + to: number, + duration: number = 200, + callback: Element => void = noop +) { + const start = getScrollTop(element); + const change = to - start; + const increment = 10; + let currentTime = 0; + + function animateScroll() { + currentTime += increment; + const val = easeOutCubic(currentTime, start, change, duration); + scrollTo(element, val); + if (currentTime < duration) { + raf(animateScroll); + } else { + callback(element); + } + } + animateScroll(); +} + +// Scroll Into View +// ------------------------------ + +export function scrollIntoView( + menuEl: HTMLElement, + focusedEl: HTMLElement +): void { + const menuRect = menuEl.getBoundingClientRect(); + const focusedRect = focusedEl.getBoundingClientRect(); + const overScroll = focusedEl.offsetHeight / 3; + + if (focusedRect.bottom + overScroll > menuRect.bottom) { + scrollTo( + menuEl, + Math.min( + focusedEl.offsetTop + + focusedEl.clientHeight - + menuEl.offsetHeight + + overScroll, + menuEl.scrollHeight + ) + ); + } else if (focusedRect.top - overScroll < menuRect.top) { + scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0)); + } +} + +// ============================== +// Get bounding client object +// ============================== + +// cannot get keys using array notation with DOMRect +export function getBoundingClientObj(element: HTMLElement) { + const rect = element.getBoundingClientRect(); + return { + bottom: rect.bottom, + height: rect.height, + left: rect.left, + right: rect.right, + top: rect.top, + width: rect.width, + }; +} +export type RectType = { + left: number, + right: number, + bottom: number, + height: number, + width: number, +}; + +// ============================== +// String to Key (kebabify) +// ============================== + +export function toKey(str: string): string { + return str.replace(/\W/g, '-'); +} + +// ============================== +// Touch Capability Detector +// ============================== + +export function isTouchCapable() { + try { + document.createEvent('TouchEvent'); + return true; + } catch (e) { + return false; + } +} + +// ============================== +// Mobile Device Detector +// ============================== + +export function isMobileDevice() { + try { + return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( + navigator.userAgent + ); + } catch (e) { + return false; + } +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000000..3b953005bd --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,62 @@ +// @flow + +const path = require('path'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); + +// const webpack = require('webpack'); +require('dotenv').config(); + +module.exports = { + context: path.resolve(__dirname, 'docs'), + entry: { + index: './index.js', + }, + output: { + path: path.resolve(__dirname, 'docs/dist'), + filename: '[name].js', + publicPath: '/', + }, + devServer: { + port: 8000, + historyApiFallback: true, + }, + // devtool: 'source-map', + devtool: 'cheap-module-eval-source-map', + module: { + rules: [ + { + test: /\.js$/, + exclude: [/node_modules/], + use: [ + { + loader: 'babel-loader', + }, + ], + }, + { + test: /\.css$/, + use: [{ loader: 'style-loader' }, { loader: 'css-loader' }], + }, + ], + }, + resolve: { + alias: { + 'react-select': path.resolve(__dirname, 'src/index'), + }, + }, + plugins: [ + // new webpack.DefinePlugin({ + // // $FlowFixMe: This definitely exists here. + // 'process.env.CLIENT_ID': `'${process.env.CLIENT_ID}'`, + // // $FlowFixMe: This definitely exists here. + // 'process.env.CLIENT_SECRET': `'${process.env.CLIENT_SECRET}'`, + // }), + new HtmlWebpackPlugin({ + filename: 'index.html', + inject: false, + template: path.resolve(__dirname, 'docs/index.html'), + }), + new CopyWebpackPlugin(['_redirects', 'favicon.ico', 'index.css']), + ], +}; diff --git a/yarn.lock b/yarn.lock index 82273a9ae6..e492a70442 100644 --- a/yarn.lock +++ b/yarn.lock @@ -172,46 +172,6 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250" - integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - 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/core@^7.1.2": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a" - integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helpers" "^7.4.4" - "@babel/parser" "^7.4.5" - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.5" - "@babel/types" "^7.4.4" - 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-beta.56": version "7.0.0-beta.56" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.56.tgz#07d9c2f45990c453130e080eddcd252a9cbd8d66" @@ -234,17 +194,6 @@ source-map "^0.5.0" trim-right "^1.0.1" -"@babel/generator@^7.4.0", "@babel/generator@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041" - integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ== - dependencies: - "@babel/types" "^7.4.4" - jsesc "^2.5.1" - lodash "^4.17.11" - source-map "^0.5.0" - trim-right "^1.0.1" - "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -377,18 +326,6 @@ "@babel/types" "^7.2.2" lodash "^4.17.10" -"@babel/helper-module-transforms@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8" - integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/template" "^7.4.4" - "@babel/types" "^7.4.4" - lodash "^4.17.11" - "@babel/helper-optimise-call-expression@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" @@ -451,13 +388,6 @@ dependencies: "@babel/types" "^7.0.0" -"@babel/helper-split-export-declaration@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" - integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q== - dependencies: - "@babel/types" "^7.4.4" - "@babel/helper-wrap-function@^7.1.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" @@ -486,15 +416,6 @@ "@babel/traverse" "^7.1.5" "@babel/types" "^7.2.0" -"@babel/helpers@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5" - integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A== - dependencies: - "@babel/template" "^7.4.4" - "@babel/traverse" "^7.4.4" - "@babel/types" "^7.4.4" - "@babel/highlight@7.0.0-beta.46": version "7.0.0-beta.46" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e" @@ -532,16 +453,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489" integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA== -"@babel/parser@^7.1.0", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6" - integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w== - -"@babel/parser@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872" - integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew== - "@babel/plugin-proposal-async-generator-functions@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" @@ -620,7 +531,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.0.0" -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0": +"@babel/plugin-syntax-object-rest-spread@^7.2.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== @@ -764,15 +675,6 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/helper-simple-access" "^7.1.0" -"@babel/plugin-transform-modules-commonjs@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e" - integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw== - dependencies: - "@babel/helper-module-transforms" "^7.4.4" - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/helper-simple-access" "^7.1.0" - "@babel/plugin-transform-modules-systemjs@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068" @@ -852,16 +754,6 @@ dependencies: regenerator-transform "^0.13.3" -"@babel/plugin-transform-runtime@^7.2.0": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08" - integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/helper-plugin-utils" "^7.0.0" - resolve "^1.8.1" - semver "^5.5.1" - "@babel/plugin-transform-shorthand-properties@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" @@ -982,13 +874,6 @@ "@babel/plugin-transform-react-jsx-self" "^7.0.0" "@babel/plugin-transform-react-jsx-source" "^7.0.0" -"@babel/runtime@^7.4.3", "@babel/runtime@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.4.tgz#dc2e34982eb236803aa27a07fea6857af1b9171d" - integrity sha512-w0+uT71b6Yi7i5SE0co4NioIpSYS6lLiXvCzWzGSKvpK5vdQtCbICHMj+gbAKAOtxiV6HsVh/MBdaF9EQ6faSg== - dependencies: - regenerator-runtime "^0.13.2" - "@babel/template@7.0.0-beta.56": version "7.0.0-beta.56" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.56.tgz#a428197e0c9db142f8581cbfdcfa9289b0dd7fd7" @@ -1008,15 +893,6 @@ "@babel/parser" "^7.2.2" "@babel/types" "^7.2.2" -"@babel/template@^7.4.0", "@babel/template@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" - integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - "@babel/traverse@7.0.0-beta.56": version "7.0.0-beta.56" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.56.tgz#62fdfe69328cfaad414ef01844f5ab40e32f4ad0" @@ -1047,36 +923,6 @@ globals "^11.1.0" lodash "^4.17.10" -"@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8" - integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.4.4" - "@babel/types" "^7.4.4" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.11" - -"@babel/traverse@^7.4.5": - version "7.4.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216" - integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.4.4" - "@babel/helper-function-name" "^7.1.0" - "@babel/helper-split-export-declaration" "^7.4.4" - "@babel/parser" "^7.4.5" - "@babel/types" "^7.4.4" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.11" - "@babel/types@7.0.0-beta.32": version "7.0.0-beta.32" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.32.tgz#c317d0ecc89297b80bbcb2f50608e31f6452a5ff" @@ -1112,62 +958,6 @@ lodash "^4.17.10" to-fast-properties "^2.0.0" -"@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0" - integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ== - dependencies: - esutils "^2.0.2" - lodash "^4.17.11" - to-fast-properties "^2.0.0" - -"@changesets/cli@^1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@changesets/cli/-/cli-1.1.5.tgz#506d1af4ce16198f85b47fd2c84ee7439b839b9f" - integrity sha512-4UlGEXtggU0vhliIpm7zuBR1gIO5Im335fkmwAsnLTzQmvwhFOVcTgIdOg4RB6rCLmz9/rhi8BPXJ+e33jD6zw== - dependencies: - "@babel/runtime" "^7.4.4" - "@types/inquirer" "^6.0.3" - "@types/semver" "^6.0.0" - "@types/uuid" "^3.4.4" - bolt "^0.22.1" - boxen "^1.3.0" - chalk "^2.1.0" - cli-table "^0.3.1" - detect-indent "^6.0.0" - fs-extra "^7.0.1" - fuzzy "^0.1.3" - get-workspaces "^0.3.0" - globby "^9.2.0" - human-id "^1.0.2" - inquirer "^3.3.0" - inquirer-checkbox-plus-prompt "^1.0.1" - lodash.startcase "^4.4.0" - meow "^5.0.0" - outdent "^0.5.0" - pkg-dir "^4.1.0" - prettier "^1.14.3" - projector-spawn "^1.0.1" - semver "^5.4.1" - tty-table "^2.7.0" - uuid "^3.3.2" - -"@changesets/get-github-info@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@changesets/get-github-info/-/get-github-info-0.1.2.tgz#aa3581969f103c1e7468fadfcd69500a472e723e" - integrity sha512-Em6VL5uSOphezJrHI15GzfOaB1PAU+kFu/wvZQHHwQLS2W0ZgWR2ShbTMGnRDMcAH+XDcWEucAa9Lm+psmH32g== - dependencies: - dataloader "^1.4.0" - node-fetch "^2.5.0" - -"@cnakazawa/watch@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef" - integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - "@cypress/listr-verbose-renderer@0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#a77492f4b11dcc7c446a34b3e28721afd33c642a" @@ -1188,7 +978,6 @@ "@emotion/babel-utils@^0.6.4": version "0.6.10" resolved "https://registry.yarnpkg.com/@emotion/babel-utils/-/babel-utils-0.6.10.tgz#83dbf3dfa933fae9fc566e54fbb45f14674c6ccc" - integrity sha512-/fnkM/LTEp3jKe++T0KyTszVGWNKPNOUJfjNKLO17BzQ6QPxgbg3whayom1Qr2oLFH3V92tDymU+dT5q676uow== dependencies: "@emotion/hash" "^0.6.6" "@emotion/memoize" "^0.6.6" @@ -1197,41 +986,6 @@ find-root "^1.1.0" source-map "^0.7.2" -"@emotion/cache@^10.0.9": - version "10.0.9" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.9.tgz#e0c7b7a289f7530edcfad4dcf3858bd2e5700a6f" - integrity sha512-f7MblpE2xoimC4fCMZ9pivmsIn7hyWRIvY75owMDi8pdOSeh+w5tH3r4hBJv/LLrwiMM7cTQURqTPcYoL5pWnw== - dependencies: - "@emotion/sheet" "0.9.2" - "@emotion/stylis" "0.8.3" - "@emotion/utils" "0.11.1" - "@emotion/weak-memoize" "0.2.2" - -"@emotion/core@^10.0.9": - version "10.0.10" - resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.0.10.tgz#8d3114e5a2f8b178a7067c603a2937516f180b08" - integrity sha512-U1aE2cOWUscjc8ZJ3Cx32udOzLeRoJwGxBH93xQD850oQFpwPKZARzdUtdc9SByUOwzSFYxhDhrpXnV34FJmWg== - dependencies: - "@emotion/cache" "^10.0.9" - "@emotion/css" "^10.0.9" - "@emotion/serialize" "^0.11.6" - "@emotion/sheet" "0.9.2" - "@emotion/utils" "0.11.1" - -"@emotion/css@^10.0.9": - version "10.0.9" - resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.9.tgz#ea0df431965a308f6cb1d61386df8ad61e5befb5" - integrity sha512-jtHhUSWw+L7yxYgNtC+KJ3Ory90/jiAtpG1qT+gTQQ/RR5AMiigs9/lDHu/vnwljaq2S48FoKb/FZZMlJcC4bw== - dependencies: - "@emotion/serialize" "^0.11.6" - "@emotion/utils" "0.11.1" - babel-plugin-emotion "^10.0.9" - -"@emotion/hash@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.1.tgz#9833722341379fb7d67f06a4b00ab3c37913da53" - integrity sha512-OYpa/Sg+2GDX+jibUfpZVn1YqSVRpYmTLF2eyAfrFTIJSbwyIrc+YscayoykvaOME/wV4BV0Sa0yqdMrgse6mA== - "@emotion/hash@^0.6.2": version "0.6.2" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.6.2.tgz#4cfe6b57e251aa7f254750ddac7c449ff99c476f" @@ -1240,12 +994,6 @@ "@emotion/hash@^0.6.6": version "0.6.6" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.6.6.tgz#62266c5f0eac6941fece302abad69f2ee7e25e44" - integrity sha512-ojhgxzUHZ7am3D2jHkMzPpsBAiB005GF5YU4ea+8DNPybMk01JJUM9V9YRlF/GE95tcOm8DxQvWA2jq19bGalQ== - -"@emotion/memoize@0.7.1", "@emotion/memoize@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" - integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== "@emotion/memoize@^0.6.1": version "0.6.1" @@ -1256,37 +1004,15 @@ version "0.6.6" resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.6.6.tgz#004b98298d04c7ca3b4f50ca2035d4f60d2eed1b" -"@emotion/serialize@^0.11.6": - version "0.11.6" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.6.tgz#78be8b9ee9ff49e0196233ba6ec1c1768ba1e1fc" - integrity sha512-n4zVv2qGLmspF99jaEUwnMV0fnEGsyUMsC/8KZKUSUTZMYljHE+j+B6rSD8PIFtaUIhHaxCG2JawN6L+OgLN0Q== - dependencies: - "@emotion/hash" "0.7.1" - "@emotion/memoize" "0.7.1" - "@emotion/unitless" "0.7.3" - "@emotion/utils" "0.11.1" - csstype "^2.5.7" - "@emotion/serialize@^0.9.1": version "0.9.1" resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.9.1.tgz#a494982a6920730dba6303eb018220a2b629c145" - integrity sha512-zTuAFtyPvCctHBEL8KZ5lJuwBanGSutFEncqLn/m9T1a6a93smBStK+bZzcNPgj4QS8Rkw9VTwJGhRIUVO8zsQ== dependencies: "@emotion/hash" "^0.6.6" "@emotion/memoize" "^0.6.6" "@emotion/unitless" "^0.6.7" "@emotion/utils" "^0.8.2" -"@emotion/sheet@0.9.2": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.2.tgz#74e5c6b5e489a1ba30ab246ab5eedd96916487c4" - integrity sha512-pVBLzIbC/QCHDKJF2E82V2H/W/B004mDFQZiyo/MSR+VC4pV5JLG0TF/zgQDFvP3fZL/5RTPGEmXlYJBMUuJ+A== - -"@emotion/stylis@0.8.3": - version "0.8.3" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.3.tgz#3ca7e9bcb31b3cb4afbaeb66156d86ee85e23246" - integrity sha512-M3nMfJ6ndJMYloSIbYEBq6G3eqoYD41BpDOxreE8j0cb4fzz/5qvmqU9Mb2hzsXcCnIlGlWhS03PCzVGvTAe0Q== - "@emotion/stylis@^0.6.5": version "0.6.5" resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.6.5.tgz#3e1bb0e52307d66212bcd307e2cb4d079f2a0b6a" @@ -1295,12 +1021,6 @@ "@emotion/stylis@^0.7.0": version "0.7.1" resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.7.1.tgz#50f63225e712d99e2b2b39c19c70fff023793ca5" - integrity sha512-/SLmSIkN13M//53TtNxgxo57mcJk/UJIDFRKwOiLIBEyBHEcipgR6hNMQ/59Sl4VjCJ0Z/3zeAZyvnSLPG/1HQ== - -"@emotion/unitless@0.7.3": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.3.tgz#6310a047f12d21a1036fb031317219892440416f" - integrity sha512-4zAPlpDEh2VwXswwr/t8xGNDGg8RQiPxtxZ3qQEXyQsBV39ptTdESCjuBvGze1nLMVrxmTIKmnO/nAV8Tqjjzg== "@emotion/unitless@^0.6.2": version "0.6.2" @@ -1310,225 +1030,10 @@ "@emotion/unitless@^0.6.7": version "0.6.7" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.6.7.tgz#53e9f1892f725b194d5e6a1684a7b394df592397" - integrity sha512-Arj1hncvEVqQ2p7Ega08uHLr1JuRYBuO5cIvcA+WWEQ5+VmkOE3ZXzl04NbQxeQpWX78G7u6MqxKuNX3wvYZxg== - -"@emotion/utils@0.11.1": - version "0.11.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.1.tgz#8529b7412a6eb4b48bdf6e720cc1b8e6e1e17628" - integrity sha512-8M3VN0hetwhsJ8dH8VkVy7xo5/1VoBsDOk/T4SJOeXwTO1c4uIqVNx2qyecLFnnUWD5vvUqHQ1gASSeUN6zcTg== "@emotion/utils@^0.8.2": version "0.8.2" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.8.2.tgz#576ff7fb1230185b619a75d258cbc98f0867a8dc" - integrity sha512-rLu3wcBWH4P5q1CGoSSH/i9hrXs7SlbRLkoq9IGuoPYNGQvDJ3pt/wmOM+XgYjIDRMVIdkUWt0RsfzF50JfnCw== - -"@emotion/weak-memoize@0.2.2", "@emotion/weak-memoize@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.2.tgz#63985d3d8b02530e0869962f4da09142ee8e200e" - integrity sha512-n/VQ4mbfr81aqkx/XmVicOLjviMuy02eenSdJY33SVA7S2J42EU0P1H0mOogfYedb3wXA0d/LVtBrgTSm04WEA== - -"@jest/console@^24.7.1": - version "24.7.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.7.1.tgz#32a9e42535a97aedfe037e725bd67e954b459545" - integrity sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg== - dependencies: - "@jest/source-map" "^24.3.0" - chalk "^2.0.1" - slash "^2.0.0" - -"@jest/core@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b" - integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A== - dependencies: - "@jest/console" "^24.7.1" - "@jest/reporters" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - ansi-escapes "^3.0.0" - chalk "^2.0.1" - exit "^0.1.2" - graceful-fs "^4.1.15" - jest-changed-files "^24.8.0" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve-dependencies "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - jest-watcher "^24.8.0" - micromatch "^3.1.10" - p-each-series "^1.0.0" - pirates "^4.0.1" - realpath-native "^1.1.0" - rimraf "^2.5.4" - strip-ansi "^5.0.0" - -"@jest/environment@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac" - integrity sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw== - dependencies: - "@jest/fake-timers" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - -"@jest/fake-timers@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-24.8.0.tgz#2e5b80a4f78f284bcb4bd5714b8e10dd36a8d3d1" - integrity sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw== - dependencies: - "@jest/types" "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - -"@jest/reporters@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729" - integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw== - dependencies: - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.0.1" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^2.0.2" - istanbul-lib-instrument "^3.0.1" - istanbul-lib-report "^2.0.4" - istanbul-lib-source-maps "^3.0.1" - istanbul-reports "^2.1.1" - jest-haste-map "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - node-notifier "^5.2.1" - slash "^2.0.0" - source-map "^0.6.0" - string-length "^2.0.0" - -"@jest/source-map@^24.3.0": - version "24.3.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28" - integrity sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.1.15" - source-map "^0.6.0" - -"@jest/test-result@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.8.0.tgz#7675d0aaf9d2484caa65e048d9b467d160f8e9d3" - integrity sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng== - dependencies: - "@jest/console" "^24.7.1" - "@jest/types" "^24.8.0" - "@types/istanbul-lib-coverage" "^2.0.0" - -"@jest/test-sequencer@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz#2f993bcf6ef5eb4e65e8233a95a3320248cf994b" - integrity sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg== - dependencies: - "@jest/test-result" "^24.8.0" - jest-haste-map "^24.8.0" - jest-runner "^24.8.0" - jest-runtime "^24.8.0" - -"@jest/transform@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-24.8.0.tgz#628fb99dce4f9d254c6fd9341e3eea262e06fef5" - integrity sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^24.8.0" - babel-plugin-istanbul "^5.1.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.1.15" - jest-haste-map "^24.8.0" - jest-regex-util "^24.3.0" - jest-util "^24.8.0" - micromatch "^3.1.10" - realpath-native "^1.1.0" - slash "^2.0.0" - source-map "^0.6.1" - write-file-atomic "2.4.1" - -"@jest/types@^24.8.0": - version "24.8.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.8.0.tgz#f31e25948c58f0abd8c845ae26fcea1491dea7ad" - integrity sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^12.0.9" - -"@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" - -"@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== - -"@preconstruct/hook@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@preconstruct/hook/-/hook-0.0.1.tgz#79484f9dceabb970319cd03ec1d8eac71ec6eae5" - integrity sha512-cpr6LzI0OW1lZxmixkGNqC3KM8XzPFLX7bpj0uClt6sN7wXXc93gHK8YvAO7FqXxmBZKPF6e5KTJJtXISr+InA== - dependencies: - "@babel/core" "^7.1.2" - "@babel/plugin-transform-modules-commonjs" "^7.4.4" - "@babel/plugin-transform-runtime" "^7.2.0" - pirates "^4.0.1" - source-map-support "^0.5.12" - -"@types/babel__core@^7.1.0": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.1.tgz#ce9a9e5d92b7031421e1d0d74ae59f572ba48be6" - integrity sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.0.2.tgz#d2112a6b21fad600d7674274293c85dce0cb47fc" - integrity sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.6.tgz#328dd1a8fc4cfe3c8458be9477b219ea158fd7b2" - integrity sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw== - dependencies: - "@babel/types" "^7.3.0" "@types/blob-util@1.3.3": version "1.3.3" @@ -1563,53 +1068,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/inquirer@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-6.0.3.tgz#597b3c1aa4a575899841ab99bb4f1774d0b8c090" - integrity sha512-lBsdZScFMaFYYIE3Y6CWX22B9VeY2NerT1kyU2heTc3u/W6a+Om6Au2q0rMzBrzynN0l4QoABhI0cbNdyz6fDg== - dependencies: - "@types/through" "*" - rxjs "^6.4.0" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== - -"@types/istanbul-lib-report@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" - integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/jest@^23.0.2": - version "23.3.14" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-23.3.14.tgz#37daaf78069e7948520474c87b80092ea912520a" - integrity sha512-Q5hTcfdudEL2yOmluA1zaSyPbzWPmJ3XfSWeP3RyoYvS9hnje1ZyagrZOuQ6+1nQC1Gw+7gap3pLNL3xL6UBug== - "@types/jquery@*": version "3.3.1" resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.3.1.tgz#55758d44d422756d6329cbf54e6d41931d7ba28f" @@ -1625,11 +1083,6 @@ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.87.tgz#55f92183b048c2c64402afe472f8333f4e319a6b" integrity sha512-AqRC+aEF4N0LuNHtcjKtvF9OTfqZI0iaBoe3dA6m/W+/YZJBZjBmW/QIZ8fBeXC6cnytSY9tBoFBqZ9uSCeVsw== -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - "@types/minimatch@3.0.1": version "3.0.1" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.1.tgz#b683eb60be358304ef146f5775db4c0e3696a550" @@ -1641,26 +1094,9 @@ integrity sha512-k2tWTQU8G4+iSMvqKi0Q9IIsWAp/n8xzdZS4Q4YVIltApoMA00wFBFdlJnmoaK1/z7B0Cy0yPe6GgXteSmdUNw== "@types/node@*": - version "10.12.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" - integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== - -"@types/node@^12.0.3": - version "12.0.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.4.tgz#46832183115c904410c275e34cf9403992999c32" - integrity sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw== - -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/semver@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-6.0.0.tgz#86ba89f02a414e39c68d02b351872e4ed31bd773" - integrity sha512-OO0srjOGH99a4LUN2its3+r6CBYcplhJ466yLqs+zvAWgphCpS8hYZEZ797tRDP/QKcqTdb/YCN6ifASoAWkrQ== + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.0.0.tgz#c40f8e07dce607d3ef25a626b93a6a7cdcf97881" + integrity sha512-kctoM36XiNZT86a7tPsUje+Q/yl+dqELjtYApi0T5eOQ90Elhu0MI10rmYk44yEP4v1jdDvtjQ9DFtpRtHf2Bw== "@types/sinon-chai@2.7.29": version "2.7.29" @@ -1680,186 +1116,6 @@ resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-4.0.0.tgz#9a93ffa4ee1329e85166278a5ed99f81dc4c8362" integrity sha512-cuK4xM8Lg2wd8cxshcQa8RG4IK/xfyB6TNE6tNVvkrShR4xdrYgsV04q6Dp6v1Lp6biEFdzD8k8zg/ujQeiw+A== -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/through@*": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93" - integrity sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w== - dependencies: - "@types/node" "*" - -"@types/uuid@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-3.4.4.tgz#7af69360fa65ef0decb41fd150bf4ca5c0cefdf5" - integrity sha512-tPIgT0GUmdJQNSHxp0X2jnpQfBSTfGxUMc/2CXBU2mnyTFVYVa2ojpoQ74w0U2yn2vw3jnC640+77lkFFpdVDw== - dependencies: - "@types/node" "*" - -"@types/yargs@^12.0.2", "@types/yargs@^12.0.9": - version "12.0.12" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916" - integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw== - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@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" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@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== - abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -1878,10 +1134,12 @@ accepts@~1.3.4, accepts@~1.3.5: mime-types "~2.1.18" negotiator "0.6.1" -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-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + integrity sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ= + dependencies: + acorn "^4.0.3" acorn-globals@^4.1.0: version "4.1.0" @@ -1902,15 +1160,20 @@ acorn@^3.0.4: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= + acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" integrity sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ== -acorn@^6.0.5, acorn@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" - integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== +acorn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a" + integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg== agent-base@4, agent-base@^4.1.0: version "4.2.0" @@ -1926,11 +1189,6 @@ agentkeepalive@^3.3.0: dependencies: humanize-ms "^1.2.1" -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - ajv-keywords@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" @@ -1949,7 +1207,7 @@ ajv@^4.9.1: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: +ajv@^5.0.0, ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= @@ -1969,11 +1227,25 @@ ajv@^6.1.0: json-schema-traverse "^0.3.0" uri-js "^3.0.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" + repeat-string "^1.5.2" + alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -1981,11 +1253,6 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - ansi-escapes@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" @@ -1996,11 +1263,6 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== -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-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -2021,11 +1283,6 @@ ansi-regex@^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, ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - ansi-styles@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" @@ -2053,6 +1310,11 @@ any-promise@^1.3.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= +any-shell-escape@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/any-shell-escape/-/any-shell-escape-0.1.1.tgz#d55ab972244c71a9a5e1ab0879f30bf110806959" + integrity sha1-1Vq5ciRMcaml4asIefML8RCAaVk= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -2066,6 +1328,13 @@ app-root-path@^2.0.1: resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.0.1.tgz#cd62dcf8e4fd5a417efc664d2e5b10653c651b46" integrity sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y= +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + integrity sha1-126/jKlNJ24keja61EpLdKthGZE= + dependencies: + default-require-extensions "^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" @@ -2108,11 +1377,6 @@ arr-union@^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 "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -2141,7 +1405,7 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -array-union@^1.0.1, array-union@^1.0.2: +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= @@ -2163,15 +1427,6 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.1.tgz#812db8f02cad24d3fab65dd67eabe3b8903494a4" - integrity sha512-rVqIs330nLJvfC7JqYvEWwqVr5QjYF1ib02i3YJtR/fICO6527Tjpc/e4Mvmxh3GIePPreRXMdaGyC99YphWEw== - dependencies: - define-properties "^1.1.2" - es-abstract "^1.10.0" - function-bind "^1.1.1" - arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -2236,11 +1491,6 @@ async-each@^1.0.0: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" integrity sha1-GdOGodntxufByF04iu28xW0zYC0= -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - async-limiter@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" @@ -2253,14 +1503,14 @@ async@2.1.4: dependencies: lodash "^4.14.0" -async@2.6.0: +async@2.6.0, async@^2.1.2, async@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" integrity sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw== dependencies: lodash "^4.14.0" -async@^1.5.2: +async@^1.4.0, async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= @@ -2275,11 +1525,6 @@ atob@^2.0.0: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.0.tgz#ab2b150e51d7b122b9efc8d7340c06b6c41076bc" integrity sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw== -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== - autoprefixer@^6.3.1: version "6.7.7" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" @@ -2339,7 +1584,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.25.0, babel-core@^6.26.0: +babel-core@^6.0.0, babel-core@^6.25.0, babel-core@^6.26.0: version "6.26.2" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.2.tgz#b67a120521dcd6baf1a2ecceeceb595e223da06c" integrity sha512-rFKFnHY8sbRSqja2O5eTx0z0Na5hukdtsFt7X9xdBFXMurrJ5YoY78Y/2/EuNZIaDQKEJSfxSMePfsymxt0CZg== @@ -2364,6 +1609,30 @@ babel-core@^6.25.0, babel-core@^6.26.0: slash "^1.0.0" source-map "^0.5.7" +babel-core@^6.26.3: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + babel-core@^7.0.0-bridge.0: version "7.0.0-bridge.0" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" @@ -2480,19 +1749,6 @@ babel-jest@^23.6.0: babel-plugin-istanbul "^4.1.6" babel-preset-jest "^23.2.0" -babel-jest@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-24.8.0.tgz#5c15ff2b28e20b0f45df43fe6b7f2aae93dba589" - integrity sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw== - dependencies: - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^5.1.0" - babel-preset-jest "^24.6.0" - chalk "^2.4.2" - slash "^2.0.0" - babel-loader@^8.0.0: version "8.0.5" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.5.tgz#225322d7509c2157655840bba52e46b6c2f2fe33" @@ -2517,21 +1773,23 @@ babel-normalize-comments@^1.0.1: dependencies: babel-flow-types "^1.2.3" -babel-plugin-emotion@^10.0.9: - version "10.0.9" - resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-10.0.9.tgz#04a0404d5a4084d5296357a393d344c0f8303ae4" - integrity sha512-IfWP12e9/wHtWHxVTzD692Nbcmrmcz2tip7acp6YUqtrP7slAyr5B+69hyZ8jd55GsyNSZwryNnmuDEVe0j+7w== +babel-plugin-emotion@9.2.10: + version "9.2.10" + resolved "https://registry.yarnpkg.com/babel-plugin-emotion/-/babel-plugin-emotion-9.2.10.tgz#983c288106cece7ce761df0513683ef0d241c466" dependencies: "@babel/helper-module-imports" "^7.0.0" - "@emotion/hash" "0.7.1" - "@emotion/memoize" "0.7.1" - "@emotion/serialize" "^0.11.6" + "@emotion/babel-utils" "^0.6.4" + "@emotion/hash" "^0.6.2" + "@emotion/memoize" "^0.6.1" + "@emotion/stylis" "^0.7.0" + babel-core "^6.26.3" babel-plugin-macros "^2.0.0" babel-plugin-syntax-jsx "^6.18.0" convert-source-map "^1.5.0" - escape-string-regexp "^1.0.5" find-root "^1.1.0" + mkdirp "^0.5.1" source-map "^0.5.7" + touch "^2.0.1" babel-plugin-emotion@^9.1.2: version "9.1.2" @@ -2574,31 +1832,15 @@ babel-plugin-istanbul@^4.1.6: integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ== 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.4" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz#841d16b9a58eeb407a0ddce622ba02fe87a752ba" - integrity sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ== - dependencies: - find-up "^3.0.0" - istanbul-lib-instrument "^3.3.0" - test-exclude "^5.2.3" + find-up "^2.1.0" + istanbul-lib-instrument "^1.10.1" + test-exclude "^4.2.1" babel-plugin-jest-hoist@^23.2.0: version "23.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167" integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc= -babel-plugin-jest-hoist@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz#f7f7f7ad150ee96d7a5e8e2c5da8319579e78019" - integrity sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w== - dependencies: - "@types/babel__traverse" "^7.0.6" - babel-plugin-macros@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.2.0.tgz#31fc16748d6480697a517f692dc4421cb7bff0cc" @@ -2636,14 +1878,6 @@ 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.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz#66f06136eefce87797539c0d63f1769cc3915984" - integrity sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw== - dependencies: - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^24.6.0" - babel-react-components@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/babel-react-components/-/babel-react-components-1.1.0.tgz#3683490747259ea41cef734ceb9fc6098bc5dcd2" @@ -2662,7 +1896,7 @@ babel-register@^6.26.0: mkdirp "^0.5.1" source-map-support "^0.4.15" -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.25.0, babel-runtime@^6.26.0: +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= @@ -2681,7 +1915,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.18.0, babel-traverse@^6.26.0: +babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= @@ -2703,7 +1937,7 @@ babel-type-scopes@^1.1.0: dependencies: babel-flow-types "^1.2.1" -babel-types@^6.18.0, babel-types@^6.24.1, babel-types@^6.26.0: +babel-types@^6.0.0, babel-types@^6.18.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" integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= @@ -2778,11 +2012,6 @@ big.js@^3.1.3: resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" @@ -2793,11 +2022,6 @@ binaryextensions@2: resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" integrity sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA== -bindings@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11" - integrity sha1-FK1hE4EtLTfXLme0ystLtyZQXxE= - bl@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" @@ -2818,87 +2042,31 @@ bluebird@3.5.0: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" integrity sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw= -bluebird@^3.5.0, bluebird@^3.5.1: +bluebird@^3.4.7, bluebird@^3.5.0, bluebird@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== -bluebird@^3.5.3: - version "3.5.4" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" - integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -body-parser@1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= +body-parser@1.18.2: + version "1.18.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.2.tgz#87678a19d84b47d859b83199bd59bce222b10454" + integrity sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= dependencies: bytes "3.0.0" content-type "~1.0.4" debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" + depd "~1.1.1" + http-errors "~1.6.2" + iconv-lite "0.4.19" on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -bolt-check@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/bolt-check/-/bolt-check-0.3.0.tgz#f4f29efe4c5316e3b2c9a750552d2d4fa13b51a1" - integrity sha512-fXLKD3YzXeBsJcZOJxzbw074RpAcwBWcdYCIO1N8hmFbR5zY6dR3v0iYJiG/YHOgsmCYUHGmmanVzCdT3aa9pA== - dependencies: - "@babel/runtime" "^7.4.4" - chalk "^2.1.0" - detect-indent "^6.0.0" - fs-extra "^7.0.1" - get-workspaces "^0.3.1" - meow "^5.0.0" - semver "^5.4.1" - -bolt@^0.22.1: - version "0.22.6" - resolved "https://registry.yarnpkg.com/bolt/-/bolt-0.22.6.tgz#3bdafdb98679828b6153ac175c946c2cf740b736" - integrity sha512-TzA6o5G1nSg5IdFKHiRVDKfXrv77usg9kAV/owLNbtDJWzdjBpWK2qwoB3g5HBGTPXEr1iPCVfBs/q1L1JhW3w== - dependencies: - array-includes "^3.0.3" - babel-runtime "^6.25.0" - chalk "^2.0.1" - chunkd "^1.0.0" - ci-parallel-vars "^1.0.0" - clean-stack "^1.3.0" - cmd-shim "^2.0.2" - cross-spawn "^5.1.0" - detect-indent "^5.0.0" - find-up "^2.1.0" - globby "^6.1.0" - inquirer "3.3.0" - is-glob "^4.0.0" - make-dir "^1.0.0" - meow "^4.0.0" - minimatch "^3.0.4" - multimatch "^2.1.0" - p-limit "^1.1.0" - parse-json "^2.2.0" - path-is-inside "^1.0.2" - pkg-up "^2.0.0" - project-bin-path "^1.1.0" - read-cmd-shim "^1.0.1" - read-pkg "^2.0.0" - rimraf "^2.6.1" - semver "^5.4.1" - slash "^1.0.0" - sort-object "^3.0.2" - task-graph-runner "^1.0.1" - temp-write "^3.4.0" - typeable-promisify "^2.0.1" - yarn "^1.9.4" + qs "6.5.1" + raw-body "2.3.2" + type-is "~1.6.15" bonjour@^3.5.0: version "3.5.0" @@ -2938,7 +2106,7 @@ boom@5.x.x: dependencies: hoek "4.x.x" -boxen@^1.2.1, boxen@^1.3.0: +boxen@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== @@ -2968,7 +2136,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.2: +braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -2984,13 +2152,6 @@ braces@^2.3.0, braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -breakword@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/breakword/-/breakword-1.0.3.tgz#71e091bbb78bb4ef003cf3ed2b2e062c6927f7dd" - integrity sha1-ceCRu7eLtO8APPPtKy4GLGkn990= - dependencies: - wcwidth "^1.0.1" - brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -3165,10 +2326,10 @@ builtin-modules@^1.0.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -builtin-modules@^3.0.0, builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== +builtin-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" @@ -3201,22 +2362,7 @@ bytes@3.0.0, bytes@^3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= -bytewise-core@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" - integrity sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI= - dependencies: - typewise-core "^1.2" - -bytewise@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" - integrity sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= - dependencies: - bytewise-core "^1.2.2" - typewise "^1.0.3" - -cacache@^10.0.0: +cacache@^10.0.0, cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" integrity sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA== @@ -3235,26 +2381,6 @@ cacache@^10.0.0: unique-filename "^1.1.0" y18n "^4.0.0" -cacache@^11.0.2, 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" - cacache@^9.2.9: version "9.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-9.3.0.tgz#9cd58f2dd0b8c8cacf685b7067b416d6d3cf9db1" @@ -3289,11 +2415,6 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -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-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -3311,11 +2432,6 @@ callsites@^2.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - camel-case@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" @@ -3324,14 +2440,23 @@ camel-case@3.0.x: no-case "^2.2.0" upper-case "^1.1.1" -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= +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" + camelcase "^2.0.0" + map-obj "^1.0.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@^3.0.0: version "3.0.0" @@ -3343,11 +2468,6 @@ camelcase@^4.0.0, camelcase@^4.1.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - caniuse-api@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" @@ -3368,13 +2488,6 @@ caniuse-lite@^1.0.30000928: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000928.tgz#805e828dc72b06498e3683a32e61c7507fd67b88" integrity sha512-aSpMWRXL6ZXNnzm8hgE4QDLibG5pVJ2Ujzsuj3icazlIkxXkPXtL+BWnMx6FBkWmkZgBHGUxPZQvrbRw2ZTxhg== -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" @@ -3390,6 +2503,14 @@ caseless@~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" + chalk@0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" @@ -3430,25 +2551,11 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.3.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= -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-more-types@2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" @@ -3466,7 +2573,7 @@ cheerio@^1.0.0-rc.2: lodash "^4.15.0" parse5 "^3.0.1" -chokidar@^2.0.2: +chokidar@^2.0.0, chokidar@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.3.tgz#dcbd4f6cbb2a55b4799ba8a840ac527e5f4b1176" integrity sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg== @@ -3505,47 +2612,16 @@ chokidar@^2.0.3: optionalDependencies: fsevents "^1.2.2" -chokidar@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== - 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.1" - optionalDependencies: - fsevents "^1.2.7" - chownr@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" integrity sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE= -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== - chroma-js@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-1.3.6.tgz#22dd7220ef6b55dcfcb8ef92982baaf55dced45d" integrity sha512-UGTgpHKEvDspZHVLEaYr6DXa3/eA+9u2FYL69OO62WSuIeKj+6z3bwN0Uyfn2YflSD+7Z3SJOehNbrNCFkGGnQ== -chrome-trace-event@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48" - integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A== - dependencies: - tslib "^1.9.0" - chrono-node@^1.3.5: version "1.3.5" resolved "https://registry.yarnpkg.com/chrono-node/-/chrono-node-1.3.5.tgz#a2495298a32da82bcc01ad9be7d77efa5e244122" @@ -3553,11 +2629,6 @@ chrono-node@^1.3.5: dependencies: moment "^2.10.3" -chunkd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/chunkd/-/chunkd-1.0.0.tgz#4ead4a3704bcce510c4bb4d4a8be30c557836dd1" - integrity sha512-xx3Pb5VF9QaqCotolyZ1ywFBgyuJmu6+9dLiqBxgelEse9Xsr3yUlpoX3O4Oh11M00GT2kYMsRByTKIMJW2Lkg== - ci-env@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-env/-/ci-env-1.6.0.tgz#6b75e90a4391462cc7ec5146b94d6fa4a890a041" @@ -3568,16 +2639,6 @@ ci-info@^1.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.3.tgz#710193264bb05c77b8c90d02f5aaf22216a667b2" integrity sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg== -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== - -ci-parallel-vars@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ci-parallel-vars/-/ci-parallel-vars-1.0.0.tgz#af97729ed1c7381911ca37bcea263d62638701b3" - integrity sha512-u6dx20FBXm+apMi+5x7UVm6EH7BL1gc4XrcnQewjcB7HWRcor/V5qWc3RG2HwpgDJ26gIi2DSEu3B7sXynAw/g== - 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" @@ -3620,11 +2681,6 @@ clean-css@4.1.x: dependencies: source-map "0.5.x" -clean-stack@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" - integrity sha1-noIVAa6XmYbEax1m0tQy2y/UrjE= - cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" @@ -3654,13 +2710,6 @@ cli-spinners@^1.0.1: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== -cli-table@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM= - dependencies: - colors "1.0.3" - cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -3692,6 +2741,24 @@ clipboard@^2.0.0: select "^1.1.2" tiny-emitter "^2.0.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" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + cliui@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" @@ -3706,14 +2773,6 @@ clone@^1.0.2: 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" - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3833,10 +2892,10 @@ colormin@^1.0.5: css-color-names "0.0.4" has "^1.0.1" -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= +colors@0.5.x: + version "0.5.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" + integrity sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q= colors@~1.1.2: version "1.1.2" @@ -3857,11 +2916,6 @@ comma-separated-tokens@^1.0.0: dependencies: trim "0.0.1" -command-exists@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" - integrity sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw== - commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" @@ -3877,15 +2931,15 @@ commander@2.6.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" integrity sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0= -commander@^2.19.0, commander@^2.8.1: +commander@^2.8.1: version "2.19.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== -commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== +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== common-tags@1.4.0: version "1.4.0" @@ -3931,24 +2985,24 @@ component-emitter@^1.2.1: resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= -compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== +compressible@~2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9" + integrity sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k= dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.33.0 < 2" -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== +compression@^1.5.2: + version "1.7.2" + resolved "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" + integrity sha1-qv+81qr4VLROuygDU9WtFlH1mmk= dependencies: - accepts "~1.3.5" + accepts "~1.3.4" bytes "3.0.0" - compressible "~2.0.16" + compressible "~2.0.13" debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" + on-headers "~1.0.1" + safe-buffer "5.1.1" vary "~1.1.2" concat-map@0.0.1: @@ -3975,7 +3029,7 @@ concat-stream@^1.5.0, concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -concurrently@^3.5.1: +concurrently@^3.4.0, concurrently@^3.5.1: version "3.5.1" resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.5.1.tgz#ee8b60018bbe86b02df13e5249453c6ececd2521" integrity sha512-689HrwGw8Rbk1xtV9C4dY6TPJAvIYZbRbnKSAtfJ7tHqICFGoZ0PCWYjxfmerRyxBG0o3sbG3pe7N8vqPwIHuQ== @@ -4001,10 +3055,10 @@ configstore@^3.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +connect-history-api-fallback@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a" + integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo= console-browserify@^1.1.0: version "1.1.0" @@ -4065,23 +3119,19 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.3.tgz#2179e3c8fd69f13afe74da338896f1f01a875b5c" - integrity sha512-PlZRs9CUMnAVylZq+vg2Juew662jWtwOXOqH4lbQD9ZFhRG9R7tVStOgHt21CBGVq7k5yIJaz8TXDLSjV+Lj8Q== +copy-webpack-plugin@^4.3.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz#fc4f68f4add837cc5e13d111b20715793225d29c" + integrity sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ== dependencies: - cacache "^11.3.2" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" + cacache "^10.0.4" + find-cache-dir "^1.0.0" globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" + is-glob "^4.0.0" + loader-utils "^1.1.0" minimatch "^3.0.4" - normalize-path "^3.0.0" - p-limit "^2.2.0" - schema-utils "^1.0.0" - serialize-javascript "^1.7.0" - webpack-log "^2.0.0" + p-limit "^1.0.0" + serialize-javascript "^1.4.0" core-js@^1.0.0: version "1.2.7" @@ -4124,6 +3174,39 @@ coveralls@^2.11.12: minimist "1.2.0" request "2.79.0" +cp-file@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-3.2.0.tgz#6f83616254624f0ad58aa4aa8d076f026be7e188" + integrity sha1-b4NhYlRiTwrViqSqjQdvAmvn4Yg= + dependencies: + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nested-error-stacks "^1.0.1" + object-assign "^4.0.1" + pify "^2.3.0" + pinkie-promise "^2.0.0" + readable-stream "^2.1.4" + +cpy-cli@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cpy-cli/-/cpy-cli-1.0.1.tgz#67fb5a4a2dec28ca8abff375de4b9e71f6a7561c" + integrity sha1-Z/taSi3sKMqKv/N13kuecfanVhw= + dependencies: + cpy "^4.0.0" + meow "^3.6.0" + +cpy@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cpy/-/cpy-4.0.1.tgz#b67267eba2f3960ba06a5a61ac94033422833424" + integrity sha1-tnJn66LzlgugalphrJQDNCKDNCQ= + dependencies: + cp-file "^3.1.0" + globby "^4.0.0" + meow "^3.6.0" + nested-error-stacks "^1.0.0" + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + create-ecdh@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.1.tgz#44223dfed533193ba5ba54e0df5709b89acf1f82" @@ -4187,6 +3270,14 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-env@^3.1.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-3.2.4.tgz#9e0585f277864ed421ce756f81a980ff0d698aba" + integrity sha1-ngWF8neGTtQhznVvgamA/w1piro= + dependencies: + cross-spawn "^5.1.0" + is-windows "^1.0.0" + cross-env@^5.1.3: version "5.1.4" resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.1.4.tgz#f61c14291f7cc653bb86457002ea80a04699d022" @@ -4195,14 +3286,6 @@ cross-env@^5.1.3: cross-spawn "^5.1.0" is-windows "^1.0.0" -cross-spawn@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" - integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -4212,17 +3295,6 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -4318,19 +3390,9 @@ css-to-react-native@^2.0.3: postcss-value-parser "^3.3.0" css-what@2.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d" - integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ== - -css@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" + integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0= cssesc@^0.1.0: version "0.1.0" @@ -4396,41 +3458,9 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": cssom "0.3.x" csstype@^2.5.2: - version "2.6.4" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.4.tgz#d585a6062096e324e7187f80e04f92bd0f00e37f" - integrity sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg== - -csstype@^2.5.7: - version "2.6.1" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.1.tgz#4cfbf637a577497036ebcd7e32647ef19a0b8076" - integrity sha512-wv7IRqCGsL7WGKB8gPvrl+++HlFM9kxAM6jL1EXNPNTshEJYilMkbfS2SnuHha77uosp/YVK0wAp2jmlBzn1tg== - -csv-generate@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-2.2.2.tgz#c37808c5f3ead2deec940794073dd32d492adfd1" - integrity sha512-ETG8JGG0xOt2f1JzxrAcQONVc4+7srUdXeyLnow60ntBr+qiNCFTqi+ME6g0vZ4hMCbrwNrDPJPOYVznAeDDHQ== - -csv-parse@^3.1.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-3.2.0.tgz#9043b5921e7ecd5e3110947df1ef00d290dbeca7" - integrity sha512-1IBQ7PYHc5h6AXS4nyGsmicttbpUbNvlsgKxhvouh+kRaVug8xBWSiIeWdbPUQgjKG88hEGYjdU29fX73mo+6Q== - -csv-stringify@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-4.3.1.tgz#7bee36f746ef555dd481a735a9e2938965f8478b" - integrity sha512-VRjPYIUzex5kfbsOY7LaJcNE2qMWGQQAanb3/Vv85WbOgA+dAfDNfwntRvv335icJgGYrnTX403WxJxRVpLDFA== - dependencies: - lodash.get "~4.4.2" - -csv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/csv/-/csv-4.0.0.tgz#c7de44b9a0fd47f7a10db24064519f642a7ce92d" - integrity sha512-rj3+HMMIKskeiipg0VkFSx7o8FhrNSfIb1nLT6AkJ0gx7mdGU5JsJGv4tmk0vl1jV/h/TfWJOwh1tpbbhVqNKA== - dependencies: - csv-generate "^2.2.2" - csv-parse "^3.1.2" - csv-stringify "^4.3.1" - stream-transform "^1.0.7" + version "2.6.0" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.0.tgz#6cf7b2fa7fc32aab3d746802c244d4eda71371a2" + integrity sha512-by8hi8BlLbowQq0qtkx54d9aN73R9oUW20HISpka5kmgsR9F7nnxgfsemuR2sdCKZh+CDNf5egW9UZMm4mgJRg== currently-unhandled@^0.4.1: version "0.4.1" @@ -4493,6 +3523,13 @@ cypress@^1.4.1: url "0.11.0" yauzl "2.8.0" +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= + dependencies: + es5-ext "^0.10.9" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -4509,11 +3546,6 @@ data-urls@^1.0.0: whatwg-mimetype "^2.0.0" whatwg-url "^6.4.0" -dataloader@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" - integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== - datauri@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/datauri/-/datauri-1.1.0.tgz#c6184ff6b928ede4e41ccc23ab954c7839c4fb39" @@ -4533,15 +3565,7 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= -deasync@^0.1.14: - version "0.1.15" - resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.15.tgz#788c4bbe6d32521233b28d23936de1bbadd2e112" - integrity sha512-pxMaCYu8cQIbGkA4Y1R0PLSooPIpH1WgFBLeJ+zLxQgHfkZG86ViJSmZmONSjZJ/R3NjwkMcIWZAzpLB2G9/CA== - dependencies: - bindings "~1.2.1" - node-addon-api "^1.6.0" - -debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, 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== @@ -4555,29 +3579,14 @@ debug@3.1.0, debug@^3.1.0: dependencies: ms "2.0.0" -debug@^3.2.5: - 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.1.0, debug@^4.1.1: +debug@^4.1.0: 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" -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" - -decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -4619,27 +3628,20 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.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= +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" + integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg= dependencies: - clone "^1.0.2" + strip-bom "^2.0.0" -define-properties@^1.1.2, define-properties@^1.1.3: - 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== +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + integrity sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ= dependencies: - object-keys "^1.0.12" + foreach "^2.0.5" + object-keys "^1.0.8" define-property@^0.2.5: version "0.2.5" @@ -4693,19 +3695,6 @@ del@^3.0.0: pify "^3.0.0" rimraf "^2.2.8" -del@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -4721,7 +3710,12 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@~1.1.2: +depd@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= + +depd@~1.1.1, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -4739,11 +3733,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -4751,16 +3740,6 @@ detect-indent@^4.0.0: dependencies: repeating "^2.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-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== - detect-libc@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-0.2.0.tgz#47fdf567348a17ec25fcbf0b9e446348a76f9fb5" @@ -4776,26 +3755,16 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -diff-sequences@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.3.0.tgz#0f20e8a1df1abddaf4d9c226680952e64118b975" - integrity sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw== +detect-node@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.3.tgz#a2033c09cc8e158d37748fbde7507832bd6ce127" + integrity sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc= diff@^3.2.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== -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 "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -4805,7 +3774,7 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@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== @@ -4813,13 +3782,6 @@ dir-glob@2.0.0, dir-glob@^2.0.0: arrify "^1.0.1" path-type "^3.0.0" -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" @@ -4878,9 +3840,9 @@ domain-browser@^1.1.1: integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== domelementtype@1, domelementtype@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI= domelementtype@~1.1.1: version "1.1.3" @@ -4902,9 +3864,9 @@ domhandler@2.1: domelementtype "1" domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + version "2.4.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" + integrity sha1-iS5HAAqZvlW783dP/qBWHYh5wlk= dependencies: domelementtype "1" @@ -4938,17 +3900,17 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dotenv@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" - integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== +dotenv@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" + integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== 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: +duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= @@ -5048,47 +4010,42 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" + integrity sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24= dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" - tapable "^1.0.0" - -entities@^1.1.1, entities@~1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + object-assign "^4.0.1" + tapable "^0.2.7" -"entities@~ 1.1.1": +entities@^1.1.1, "entities@~ 1.1.1", entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA= enzyme-adapter-react-16@^1.1.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.7.1.tgz#c37c4cb0fd75e88a063154a7a88096474914496a" - integrity sha512-OQXKgfHWyHN3sFu2nKj3mhgRcqIPIJX6aOzq5AHVFES4R9Dw/vCBZFMPyaG81g2AZ5DogVh39P3MMNUbqNLTcw== + version "1.1.1" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.1.tgz#a8f4278b47e082fbca14f5bfb1ee50ee650717b4" + integrity sha512-kC8pAtU2Jk3OJ0EG8Y2813dg9Ol0TXi7UNxHzHiWs30Jo/hj7alc//G1YpKUsPP1oKl9X+Lkx+WlGJpPYA+nvw== dependencies: - enzyme-adapter-utils "^1.9.0" - function.prototype.name "^1.1.0" - object.assign "^4.1.0" + enzyme-adapter-utils "^1.3.0" + lodash "^4.17.4" + object.assign "^4.0.4" object.values "^1.0.4" - prop-types "^15.6.2" - react-is "^16.6.1" + prop-types "^15.6.0" + react-reconciler "^0.7.0" react-test-renderer "^16.0.0-0" -enzyme-adapter-utils@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.9.0.tgz#3997c20f3387fdcd932b155b3740829ea10aa86c" - integrity sha512-uMe4xw4l/Iloh2Fz+EO23XUYMEQXj5k/5ioLUXCNOUCI8Dml5XQMO9+QwUq962hBsY5qftfHHns+d990byWHvg== +enzyme-adapter-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.3.0.tgz#d6c85756826c257a8544d362cc7a67e97ea698c7" + integrity sha512-vVXSt6uDv230DIv+ebCG66T1Pm36Kv+m74L1TrF4kaE7e1V7Q/LcxO0QRkajk5cA6R3uu9wJf5h13wOTezTbjA== dependencies: - function.prototype.name "^1.1.0" - object.assign "^4.1.0" - prop-types "^15.6.2" - semver "^5.6.0" + lodash "^4.17.4" + object.assign "^4.0.4" + prop-types "^15.6.0" enzyme-to-json@^3.3.0: version "3.3.3" @@ -5097,37 +4054,34 @@ enzyme-to-json@^3.3.0: dependencies: lodash "^4.17.4" -enzyme@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.8.0.tgz#646d2d5d0798cb98fdec39afcee8a53237b47ad5" - integrity sha512-bfsWo5nHyZm1O1vnIsbwdfhU989jk+squU9NKvB+Puwo5j6/Wg9pN5CO0YJelm98Dao3NPjkDZk+vvgwpMwYxw== +enzyme@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.3.0.tgz#0971abd167f2d4bf3f5bd508229e1c4b6dc50479" + integrity sha512-l8csyPyLmtxskTz6pX9W8eDOyH1ckEtDttXk/vlFWCjv00SkjTjtoUrogqp4yEvMyneU9dUJoOLnqFoiHb8IHA== dependencies: - array.prototype.flat "^1.2.1" cheerio "^1.0.0-rc.2" - function.prototype.name "^1.1.0" - has "^1.0.3" + function.prototype.name "^1.0.3" + has "^1.0.1" is-boolean-object "^1.0.0" - is-callable "^1.1.4" + is-callable "^1.1.3" is-number-object "^1.0.3" is-string "^1.0.4" is-subset "^0.1.1" - lodash.escape "^4.0.1" - lodash.isequal "^4.5.0" - object-inspect "^1.6.0" + lodash "^4.17.4" + object-inspect "^1.5.0" object-is "^1.0.1" object.assign "^4.1.0" object.entries "^1.0.4" object.values "^1.0.4" raf "^3.4.0" rst-selector-parser "^2.2.3" - string.prototype.trim "^1.1.2" 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: +errno@^0.1.3: version "0.1.7" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== @@ -5141,19 +4095,7 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.10.0, es-abstract@^1.12.0, es-abstract@^1.5.0: - 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-abstract@^1.5.1, es-abstract@^1.7.0: +es-abstract@^1.5.1, es-abstract@^1.6.1, es-abstract@^1.7.0: version "1.11.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" integrity sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA== @@ -5164,14 +4106,44 @@ es-abstract@^1.5.1, es-abstract@^1.7.0: is-callable "^1.1.3" is-regex "^1.0.4" -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== +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + integrity sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0= dependencies: - is-callable "^1.1.4" + is-callable "^1.1.1" is-date-object "^1.0.1" - is-symbol "^1.0.2" + is-symbol "^1.0.1" + +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.42" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.42.tgz#8c07dd33af04d5dcd1310b5cef13bea63a89ba8d" + integrity sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.1" + next-tick "1" + +es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + integrity sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" es6-promise@^4.0.3: version "4.2.4" @@ -5185,6 +4157,35 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc= + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + integrity sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8= + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -5195,6 +4196,18 @@ escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2, escape-string-regexp@^ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escodegen@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589" + integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escodegen@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" @@ -5207,6 +4220,16 @@ escodegen@^1.9.0: optionalDependencies: source-map "~0.6.1" +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + integrity sha1-4Bl16BJ4GhY6ba392AOY3GTIicM= + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + eslint-plugin-react@^7.3.0: version "7.7.0" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz#f606c719dbd8a1a2b3d25c16299813878cca0160" @@ -5225,14 +4248,6 @@ eslint-scope@3.7.1, eslint-scope@^3.7.1: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" @@ -5324,10 +4339,10 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= -estree-walker@^0.6.0, estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== +estree-walker@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" + integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" @@ -5339,6 +4354,27 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + +event-stream@~3.3.0: + version "3.3.4" + resolved "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE= + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + eventemitter3@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163" @@ -5349,12 +4385,12 @@ events@^1.0.0: resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= dependencies: - original "^1.0.0" + original ">=0.0.5" evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -5364,10 +4400,12 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -exec-sh@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" - integrity sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg== +exec-sh@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + integrity sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg== + dependencies: + merge "^1.1.3" execa@^0.7.0: version "0.7.0" @@ -5395,19 +4433,6 @@ execa@^0.9.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - exenv@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" @@ -5462,13 +4487,6 @@ expand-tilde@^1.2.2: dependencies: os-homedir "^1.0.1" -expand-tilde@^2.0.0, 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@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" @@ -5481,26 +4499,26 @@ expect@^22.4.3: jest-message-util "^22.4.3" jest-regex-util "^22.4.3" -expect@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-24.8.0.tgz#471f8ec256b7b6129ca2524b2a62f030df38718d" - integrity sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA== +expect@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98" + integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w== dependencies: - "@jest/types" "^24.8.0" ansi-styles "^3.2.0" - jest-get-type "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-regex-util "^24.3.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" -express@^4.16.4: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== +express@^4.16.2: + version "4.16.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.16.3.tgz#6af8a502350db3246ecc4becf6b5a34d22f7ed53" + integrity sha1-avilAjUNsyRuzEvs9rWjTSL37VM= dependencies: accepts "~1.3.5" array-flatten "1.1.1" - body-parser "1.18.3" + body-parser "1.18.2" content-disposition "0.5.2" content-type "~1.0.4" cookie "0.3.1" @@ -5517,10 +4535,10 @@ express@^4.16.4: on-finished "~2.3.0" parseurl "~1.3.2" path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" + proxy-addr "~2.0.3" + qs "6.5.1" range-parser "~1.2.0" - safe-buffer "5.1.2" + safe-buffer "5.1.1" send "0.16.2" serve-static "1.13.2" setprototypeof "1.1.0" @@ -5549,7 +4567,7 @@ extend@~3.0.0, extend@~3.0.1: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" integrity sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ= -external-editor@^2.0.4, external-editor@^2.1.0: +external-editor@^2.0.4: version "2.2.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== @@ -5558,15 +4576,6 @@ external-editor@^2.0.4, external-editor@^2.1.0: iconv-lite "^0.4.17" tmp "^0.0.33" -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" - tmp "^0.0.33" - extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -5642,23 +4651,6 @@ fast-deep-equal@^1.0.0: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= -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, fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -5681,7 +4673,7 @@ faye-websocket@^0.10.0: dependencies: websocket-driver ">=0.5.1" -faye-websocket@~0.11.1: +faye-websocket@~0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38" integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg= @@ -5695,20 +4687,7 @@ fb-watchman@^2.0.0: dependencies: bser "^2.0.0" -fbjs@^0.8.16: - version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - -fbjs@^0.8.5: +fbjs@^0.8.16, fbjs@^0.8.5: version "0.8.16" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" integrity sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s= @@ -5728,11 +4707,6 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" -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@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -5761,11 +4735,24 @@ file-name@^0.1.0: resolved "https://registry.yarnpkg.com/file-name/-/file-name-0.1.0.tgz#12b122f120f9c34dbc176c1ab81a548aced6def7" integrity sha1-ErEi8SD5w028F2wauBpUis7W3vc= +file-type@^3.6.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= +fileset@^2.0.2: + 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" + filesize@^3.6.1: version "3.6.1" resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" @@ -5805,6 +4792,15 @@ finalhandler@1.1.1: statuses "~1.4.0" unpipe "~1.0.0" +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + find-cache-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d" @@ -5814,15 +4810,6 @@ find-cache-dir@^2.0.0: make-dir "^1.0.0" pkg-dir "^3.0.0" -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - find-file-up@^0.1.2: version "0.1.3" resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" @@ -5870,23 +4857,6 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.0.0.tgz#c367f8024de92efb75f2d4906536d24682065c3a" - integrity sha512-zoH7ZWPkRdgwYCDVoQTzqjG8JSPANhtvLhh4KVUHyKnaUJJrNeFmWIkTcNuJmR3GLMEmGYEf2S2bjgx26JTF+Q== - dependencies: - locate-path "^5.0.0" - -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" @@ -5946,6 +4916,11 @@ for-own@^0.1.4: dependencies: for-in "^1.0.1" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -5994,6 +4969,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + fs-constants@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" @@ -6031,15 +5011,6 @@ fs-extra@^4.0.2: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^7.0.0, fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-minipass@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" @@ -6067,7 +5038,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.1.2: +fsevents@^1.1.1, fsevents@^1.1.2: version "1.2.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.2.tgz#4f598f0f69b273188ef4a62ca4e9e08ace314bbf" integrity sha512-iownA+hC4uHFp+7gwP/y5SzaiUo7m2vpa0dhpzw8YuKtiZsz7cIXsFbXpLEeBM6WuCQyw1MH4RRe6XI8GFUctQ== @@ -6083,14 +5054,6 @@ fsevents@^1.2.2: nan "^2.9.2" node-pre-gyp "^0.10.0" -fsevents@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.8.tgz#57ea5320f762cd4696e5e8e87120eccc8b11cacf" - integrity sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA== - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.12.0" - fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" @@ -6101,12 +5064,12 @@ fstream@^1.0.0, fstream@^1.0.2: mkdirp ">=0.5 0" rimraf "2" -function-bind@^1.0.2, function-bind@^1.1.1: +function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.0: +function.prototype.name@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.0.tgz#8bd763cc0af860a859cc5d49384d74b932cd2327" integrity sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg== @@ -6120,11 +5083,6 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -fuzzy@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" - integrity sha1-THbsL/CsGjap3M+aAN+GIweNTtg= - gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -6166,39 +5124,26 @@ get-own-enumerable-property-symbols@^2.0.1: resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-2.0.1.tgz#5c4ad87f2834c4b9b4e84549dc1e0650fb38c24b" integrity sha512-TtY/sbOemiMKPRUDDanGCSgBYe7Mf0vbRsWnBZ+9yghpZ1MvcpSpuZFjHdEeY/LZjZy0vdLjS77L6HosisFiug== +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@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g= + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= -get-stream@^4.0.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.2, get-value@^2.0.3, get-value@^2.0.6: +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= -get-workspaces@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/get-workspaces/-/get-workspaces-0.3.0.tgz#6352c6cd32c9627cab81f5d33a2fa752515b7550" - integrity sha512-H1BcqsiZ7kIlx/ZLNkCUUAc9JqLF3cU8DR6iAYFVaXQa0iRZL3Mw+gnLVktzlmPWikp1u99oZSodrXQOIsypvQ== - dependencies: - fs-extra "^7.0.1" - globby "^9.2.0" - -get-workspaces@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/get-workspaces/-/get-workspaces-0.3.1.tgz#8e0dc3ea8077725a84d2194be37410c011538536" - integrity sha512-TBP1EQTBfEfxn0irOdTYf9nvYefi4hrEJb9Cp7p81xFrKUEq16Mypa8C5459B5IjADujRYnCwWu59zhSobw1fg== - dependencies: - fs-extra "^7.0.1" - globby "^9.2.0" - getos@2.8.4: version "2.8.4" resolved "https://registry.yarnpkg.com/getos/-/getos-2.8.4.tgz#7b8603d3619c28e38cb0fe7a4f63c3acb80d5163" @@ -6292,11 +5237,6 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -6309,7 +5249,18 @@ glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.3: +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== @@ -6336,15 +5287,6 @@ global-modules@^0.2.3: global-prefix "^0.1.4" is-windows "^0.2.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - global-prefix@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" @@ -6355,17 +5297,6 @@ global-prefix@^0.1.4: is-windows "^0.2.0" which "^1.2.12" -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - globals@^11.0.1, globals@^11.1.0: version "11.4.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.4.0.tgz#b85c793349561c16076a3c13549238a27945f1bc" @@ -6376,6 +5307,18 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globby@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-4.1.0.tgz#080f54549ec1b82a6c60e631fc82e1211dbe95f8" + integrity sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg= + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^6.0.1" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -6411,33 +5354,6 @@ globby@^7.1.1: pify "^3.0.0" slash "^1.0.0" -globby@^8.0.1: - 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" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" @@ -6467,11 +5383,6 @@ graceful-fs@4.1.11, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg= -graceful-fs@^4.1.15: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -6485,21 +5396,21 @@ gzip-size@^4.0.0: duplexer "^0.1.1" pify "^3.0.0" -handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== +handle-thing@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" + integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= -handlebars@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== +handlebars@^4.0.3: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + integrity sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw= dependencies: - neo-async "^2.6.0" + async "^1.4.0" optimist "^0.6.1" - source-map "^0.6.1" + source-map "^0.4.4" optionalDependencies: - uglify-js "^3.1.4" + uglify-js "^2.6" har-schema@^1.0.5: version "1.0.5" @@ -6607,12 +5518,12 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -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== +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + integrity sha1-hGFzP1OLCDfJNh45qauelwTcLyg= dependencies: - function-bind "^1.1.1" + function-bind "^1.0.2" hash-base@^3.0.0: version "3.0.4" @@ -6726,13 +5637,6 @@ homedir-polyfill@^1.0.0: dependencies: parse-passwd "^1.0.0" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4, hosted-git-info@^2.4.2: version "2.6.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" @@ -6760,7 +5664,7 @@ html-encoding-sniffer@^1.0.2: dependencies: whatwg-encoding "^1.0.1" -html-entities@^1.2.1: +html-entities@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= @@ -6778,30 +5682,29 @@ html-minifier@^3.2.3: relateurl "0.2.x" uglify-js "3.3.x" -html-webpack-plugin@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= +html-webpack-plugin@^2.30.1: + version "2.30.1" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.30.1.tgz#7f9c421b7ea91ec460f56527d78df484ee7537d5" + integrity sha1-f5xCG36pHsRg9WUn1430hO51N9U= dependencies: + bluebird "^3.4.7" html-minifier "^3.2.3" loader-utils "^0.2.16" lodash "^4.17.3" pretty-error "^2.0.2" - tapable "^1.0.0" toposort "^1.0.0" - util.promisify "1.0.0" htmlparser2@^3.9.1: - version "3.10.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464" - integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ== + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg= dependencies: domelementtype "^1.3.0" domhandler "^2.3.0" domutils "^1.5.1" entities "^1.1.1" inherits "^2.0.1" - readable-stream "^3.0.6" + readable-stream "^2.0.2" htmlparser2@~3.3.0: version "3.3.0" @@ -6823,7 +5726,17 @@ http-deceiver@^1.2.7: resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: +http-errors@1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" + integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= + dependencies: + depd "1.1.1" + inherits "2.0.3" + setprototypeof "1.0.3" + statuses ">= 1.3.1 < 2" + +http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= @@ -6846,17 +5759,17 @@ http-proxy-agent@^2.0.0: agent-base "4" debug "3.1.0" -http-proxy-middleware@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== +http-proxy-middleware@~0.17.4: + version "0.17.4" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz#642e8848851d66f09d4f124912846dbaeb41b833" + integrity sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM= dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" + http-proxy "^1.16.2" + is-glob "^3.1.0" + lodash "^4.17.2" + micromatch "^2.3.11" -http-proxy@^1.17.0: +http-proxy@^1.16.2: version "1.17.0" resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g== @@ -6896,11 +5809,6 @@ https-proxy-agent@^2.1.0: agent-base "^4.1.0" debug "^3.1.0" -human-id@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/human-id/-/human-id-1.0.2.tgz#e654d4b2b0d8b07e45da9f6020d8af17ec0a5df3" - integrity sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw== - humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -6927,27 +5835,13 @@ iconv-lite@0.4.19: resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.4.17, iconv-lite@^0.4.4: +iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.21" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.21.tgz#c47f8733d02171189ebc4a400f3218d348094798" integrity sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw== dependencies: safer-buffer "^2.1.0" -iconv-lite@^0.4.24, 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" - icss-replace-symbols@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" @@ -6982,11 +5876,6 @@ ignore@^3.3.3, ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" integrity sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg== -ignore@^4.0.3: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - iltorb@^1.0.9: version "1.3.10" resolved "https://registry.yarnpkg.com/iltorb/-/iltorb-1.3.10.tgz#a0d9e4e7d52bf510741442236cbe0cc4230fc9f8" @@ -7007,12 +5896,12 @@ import-lazy@^2.1.0: resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= -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== +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 "^3.0.0" + pkg-dir "^2.0.0" resolve-cwd "^2.0.0" imurmurhash@^0.1.4: @@ -7065,17 +5954,7 @@ ini@^1.3.3, ini@^1.3.4, ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer-checkbox-plus-prompt@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/inquirer-checkbox-plus-prompt/-/inquirer-checkbox-plus-prompt-1.0.1.tgz#54ff1ed09777a103538562276b5cf4521a31d16d" - integrity sha1-VP8e0Jd3oQNThWIna1z0Uhox0W0= - dependencies: - cli-cursor "^2.1.0" - figures "^2.0.0" - inquirer "^5.1.0" - lodash "^4.17.5" - -inquirer@3.3.0, inquirer@^3.0.6, inquirer@^3.1.1, inquirer@^3.3.0: +inquirer@^3.0.6, inquirer@^3.1.1: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== @@ -7095,68 +5974,17 @@ inquirer@3.3.0, inquirer@^3.0.6, inquirer@^3.1.1, inquirer@^3.3.0: strip-ansi "^4.0.0" through "^2.3.6" -inquirer@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" - integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.1.0" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^5.5.2" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^6.2.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" - integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.11" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -install-packages@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/install-packages/-/install-packages-0.2.5.tgz#b50bfe3c2a36081850ba0d8c661fa6f11caeaa9e" - integrity sha512-K+rnxKcem/Aa5+FPInrjoGLbsalo41ELmxay9sGpDvaFjGglbEGOaB/NefquzWGzMxPfJoaep7cYd0OEG9AOsA== - dependencies: - chalk "^2.3.2" - command-exists "^1.2.6" - cross-spawn "^4.0.2" - joycon "^2.1.1" - parse-package-name "^0.1.0" - resolve "^1.7.1" - -internal-ip@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== +internal-ip@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c" + integrity sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w= dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" + meow "^3.3.0" -interpret@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== +interpret@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" + integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: version "2.2.4" @@ -7165,25 +5993,20 @@ invariant@^2.2.1, invariant@^2.2.2, invariant@^2.2.4: dependencies: loose-envify "^1.0.0" -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-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= +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= ip@^1.1.0, ip@^1.1.4, 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.9.0, ipaddr.js@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== +ipaddr.js@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.6.0.tgz#e3fa357b773da619f26e95f049d055c72796f86b" + integrity sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs= is-absolute-url@^2.0.0: version "2.1.0" @@ -7233,10 +6056,10 @@ is-builtin-module@^1.0.0: dependencies: builtin-modules "^1.0.0" -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-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + integrity sha1-hut1OSgF3cM69xySoO7fdO52BLI= is-ci@1.0.10: version "1.0.10" @@ -7252,13 +6075,6 @@ is-ci@^1.0.10: dependencies: ci-info "^1.0.0" -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - is-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" @@ -7359,11 +6175,6 @@ is-generator-fn@^1.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go= -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - is-glob@^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" @@ -7385,13 +6196,6 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" -is-glob@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - is-installed-globally@0.1.0, is-installed-globally@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" @@ -7455,6 +6259,11 @@ is-obj@^1.0.0, is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + is-observable@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" @@ -7474,11 +6283,6 @@ is-path-cwd@^1.0.0: resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= -is-path-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c" - integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw== - is-path-in-cwd@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" @@ -7486,13 +6290,6 @@ is-path-in-cwd@^1.0.0: dependencies: is-path-inside "^1.0.0" -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - is-path-inside@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" @@ -7500,13 +6297,6 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - 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" @@ -7544,13 +6334,6 @@ is-redirect@^1.0.0: resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= -is-reference@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.2.tgz#01cf91517d21db66a34642287ed6e70d53dcbe5c" - integrity sha512-Kn5g8c7XHKejFOpTf2QN9YjiHHKl5xRj+2uAZf9iM2//nkBNi/NNeB5JMoun28nEaUVHyPUzqzhfRlfAirEjXg== - dependencies: - "@types/estree" "0.0.39" - is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -7595,12 +6378,10 @@ is-svg@^2.0.0: dependencies: html-comment-regex "^1.1.0" -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-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + integrity sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI= is-typedarray@~1.0.0: version "1.0.0" @@ -7617,7 +6398,7 @@ is-windows@^0.2.0: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= -is-windows@^1.0.0, is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.0, 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== @@ -7675,15 +6456,39 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +istanbul-api@^1.3.1: + version "1.3.7" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa" + integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA== + 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-lib-coverage@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" integrity sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A== -istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" - integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== +istanbul-lib-coverage@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== + +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" + integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw== + dependencies: + append-transform "^0.4.0" istanbul-lib-instrument@^1.10.1: version "1.10.1" @@ -7698,45 +6503,57 @@ istanbul-lib-instrument@^1.10.1: istanbul-lib-coverage "^1.2.0" semver "^5.3.0" -istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630" - integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA== - dependencies: - "@babel/generator" "^7.4.0" - "@babel/parser" "^7.4.3" - "@babel/template" "^7.4.0" - "@babel/traverse" "^7.4.3" - "@babel/types" "^7.4.0" - istanbul-lib-coverage "^2.0.5" - semver "^6.0.0" - -istanbul-lib-report@^2.0.4: - version "2.0.8" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33" - integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ== - dependencies: - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - supports-color "^6.1.0" - -istanbul-lib-source-maps@^3.0.1: - version "3.0.6" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" - integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== +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" + integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A== dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^2.0.5" - make-dir "^2.1.0" - rimraf "^2.6.3" - source-map "^0.6.1" + 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-reports@^2.1.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.4.tgz#4e0d0ddf0f0ad5b49a314069d31b4f06afe49ad3" - integrity sha512-QCHGyZEK0bfi9GR215QSm+NJwFKEShbtc7tfbUdLAEzn3kKhLDDZqvljn8rPZM9v8CEOhzL1nlYoO4r1ryl67w== +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" + integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== + dependencies: + istanbul-lib-coverage "^1.2.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" + integrity sha512-UzuK0g1wyQijiaYQxj/CdNycFhAd2TLtO2obKQMTZrZ1jzEMRY3rvpASEKkaxbRR6brvdovfA03znPa/pXcejg== + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.2.0" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +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" + integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg== + 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-reports@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" + integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== dependencies: - handlebars "^4.1.2" + handlebars "^4.0.3" istextorbinary@^2.2.1: version "2.2.1" @@ -7747,33 +6564,54 @@ istextorbinary@^2.2.1: editions "^1.3.3" textextensions "2" -jest-changed-files@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b" - integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug== +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" + integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA== dependencies: - "@jest/types" "^24.8.0" - execa "^1.0.0" throat "^4.0.0" -jest-cli@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989" - integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA== +jest-cli@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4" + integrity sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ== dependencies: - "@jest/core" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + ansi-escapes "^3.0.0" chalk "^2.0.1" exit "^0.1.2" - import-local "^2.0.0" - is-ci "^2.0.0" - jest-config "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - prompts "^2.0.1" - realpath-native "^1.1.0" - yargs "^12.0.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-config@^22.4.3: version "22.4.3" @@ -7792,28 +6630,25 @@ jest-config@^22.4.3: jest-validate "^22.4.3" pretty-format "^22.4.3" -jest-config@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f" - integrity sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw== +jest-config@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d" + integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ== dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^24.8.0" - "@jest/types" "^24.8.0" - babel-jest "^24.8.0" + babel-core "^6.0.0" + babel-jest "^23.6.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^24.8.0" - jest-environment-node "^24.8.0" - jest-get-type "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - micromatch "^3.1.10" - pretty-format "^24.8.0" - realpath-native "^1.1.0" + 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-diff@^22.4.3: version "22.4.3" @@ -7825,43 +6660,30 @@ jest-diff@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" -jest-diff@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.8.0.tgz#146435e7d1e3ffdf293d53ff97e193f1d1546172" - integrity sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g== +jest-diff@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d" + integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g== dependencies: chalk "^2.0.1" - diff-sequences "^24.3.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" + diff "^3.2.0" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" -jest-docblock@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.3.0.tgz#b9c32dac70f72e4464520d2ba4aec02ab14db5dd" - integrity sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg== +jest-docblock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7" + integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c= dependencies: detect-newline "^2.1.0" -jest-each@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-24.8.0.tgz#a05fd2bf94ddc0b1da66c6d13ec2457f35e52775" - integrity sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA== +jest-each@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575" + integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg== dependencies: - "@jest/types" "^24.8.0" chalk "^2.0.1" - jest-get-type "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - -jest-emotion@^10.0.11: - version "10.0.11" - resolved "https://registry.yarnpkg.com/jest-emotion/-/jest-emotion-10.0.11.tgz#7d75e2675f36c4c8a30333e5b8e405f11c1a0638" - integrity sha512-gSlcRwDq5A6RCK+9vnQ3was3W3wTcQ1Jl+MbS6A4F9yvhT+YKHC4T1W7l+iqmGGNGiqFtJ7nXL6f0Q0En6o2ew== - dependencies: - "@babel/runtime" "^7.4.3" - "@types/jest" "^23.0.2" - chalk "^2.4.1" - css "^2.2.1" + pretty-format "^23.6.0" jest-environment-jsdom@^22.4.3: version "22.4.3" @@ -7872,16 +6694,13 @@ jest-environment-jsdom@^22.4.3: jest-util "^22.4.3" jsdom "^11.5.1" -jest-environment-jsdom@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz#300f6949a146cabe1c9357ad9e9ecf9f43f38857" - integrity sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ== +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" + integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM= dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" + jest-mock "^23.2.0" + jest-util "^23.4.0" jsdom "^11.5.1" jest-environment-node@^22.4.3: @@ -7892,45 +6711,32 @@ jest-environment-node@^22.4.3: jest-mock "^22.4.3" jest-util "^22.4.3" -jest-environment-node@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-24.8.0.tgz#d3f726ba8bc53087a60e7a84ca08883a4c892231" - integrity sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q== +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" + integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA= dependencies: - "@jest/environment" "^24.8.0" - "@jest/fake-timers" "^24.8.0" - "@jest/types" "^24.8.0" - jest-mock "^24.8.0" - jest-util "^24.8.0" + jest-mock "^23.2.0" + jest-util "^23.4.0" -jest-get-type@^22.4.3: +jest-get-type@^22.1.0, jest-get-type@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w== -jest-get-type@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.8.0.tgz#a7440de30b651f5a70ea3ed7ff073a32dfe646fc" - integrity sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ== - -jest-haste-map@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-24.8.0.tgz#51794182d877b3ddfd6e6d23920e3fe72f305800" - integrity sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ== +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" + integrity sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg== dependencies: - "@jest/types" "^24.8.0" - anymatch "^2.0.0" fb-watchman "^2.0.0" - graceful-fs "^4.1.15" + graceful-fs "^4.1.11" invariant "^2.2.4" - jest-serializer "^24.4.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" - micromatch "^3.1.10" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^1.2.7" + jest-docblock "^23.2.0" + jest-serializer "^23.0.1" + jest-worker "^23.2.0" + micromatch "^2.3.11" + sane "^2.0.0" jest-in-case@^1.0.2: version "1.0.2" @@ -7954,34 +6760,30 @@ jest-jasmine2@^22.4.3: jest-util "^22.4.3" source-map-support "^0.5.0" -jest-jasmine2@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz#a9c7e14c83dd77d8b15e820549ce8987cc8cd898" - integrity sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong== +jest-jasmine2@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0" + integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ== dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" + babel-traverse "^6.0.0" chalk "^2.0.1" co "^4.6.0" - expect "^24.8.0" - is-generator-fn "^2.0.0" - jest-each "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-runtime "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - pretty-format "^24.8.0" - throat "^4.0.0" - -jest-leak-detector@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz#c0086384e1f650c2d8348095df769f29b48e6980" - integrity sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g== + 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-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" + integrity sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg== dependencies: - pretty-format "^24.8.0" + pretty-format "^23.6.0" jest-matcher-utils@^22.4.3: version "22.4.3" @@ -7992,15 +6794,14 @@ jest-matcher-utils@^22.4.3: jest-get-type "^22.4.3" pretty-format "^22.4.3" -jest-matcher-utils@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495" - integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw== +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" + integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog== dependencies: chalk "^2.0.1" - jest-diff "^24.8.0" - jest-get-type "^24.8.0" - pretty-format "^24.8.0" + jest-get-type "^22.1.0" + pretty-format "^23.6.0" jest-message-util@^22.4.3: version "22.4.3" @@ -8013,18 +6814,15 @@ jest-message-util@^22.4.3: slash "^1.0.0" stack-utils "^1.0.1" -jest-message-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.8.0.tgz#0d6891e72a4beacc0292b638685df42e28d6218b" - integrity sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g== +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" + integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8= dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/stack-utils" "^1.0.1" + "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" - micromatch "^3.1.10" - slash "^2.0.0" + micromatch "^2.3.11" + slash "^1.0.0" stack-utils "^1.0.1" jest-mock@^22.4.3: @@ -8032,36 +6830,28 @@ jest-mock@^22.4.3: resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" integrity sha512-+4R6mH5M1G4NK16CKg9N1DtCaFmuxhcIqF4lQK/Q1CIotqMs/XBemfpDPeVZBFow6iyUNu6EBT9ugdNOTT5o5Q== -jest-mock@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-24.8.0.tgz#2f9d14d37699e863f1febf4e4d5a33b7fdbbde56" - integrity sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A== - dependencies: - "@jest/types" "^24.8.0" - -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== +jest-mock@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134" + integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ= jest-regex-util@^22.4.3: version "22.4.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" integrity sha512-LFg1gWr3QinIjb8j833bq7jtQopiwdAs67OGfkPrvy7uNUbVMfTXXcOKXJaeY5GgjobELkKvKENqq1xrUectWg== -jest-regex-util@^24.3.0: - version "24.3.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36" - integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg== +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" + integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U= -jest-resolve-dependencies@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0" - integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw== +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" + integrity sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA== dependencies: - "@jest/types" "^24.8.0" - jest-regex-util "^24.3.0" - jest-snapshot "^24.8.0" + jest-regex-util "^23.3.0" + jest-snapshot "^23.6.0" jest-resolve@^22.4.3: version "22.4.3" @@ -8071,75 +6861,65 @@ jest-resolve@^22.4.3: browser-resolve "^1.11.2" chalk "^2.0.1" -jest-resolve@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f" - integrity sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw== +jest-resolve@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae" + integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA== dependencies: - "@jest/types" "^24.8.0" browser-resolve "^1.11.3" chalk "^2.0.1" - jest-pnp-resolver "^1.2.1" - realpath-native "^1.1.0" - -jest-runner@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-24.8.0.tgz#4f9ae07b767db27b740d7deffad0cf67ccb4c5bb" - integrity sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - chalk "^2.4.2" + 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" + integrity sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA== + dependencies: exit "^0.1.2" - graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-docblock "^24.3.0" - jest-haste-map "^24.8.0" - jest-jasmine2 "^24.8.0" - jest-leak-detector "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" - jest-runtime "^24.8.0" - jest-util "^24.8.0" - jest-worker "^24.6.0" + 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-runtime@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-24.8.0.tgz#05f94d5b05c21f6dc54e427cd2e4980923350620" - integrity sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA== - dependencies: - "@jest/console" "^24.7.1" - "@jest/environment" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/transform" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.2" +jest-runtime@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082" + integrity sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw== + 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" - glob "^7.1.3" - graceful-fs "^4.1.15" - jest-config "^24.8.0" - jest-haste-map "^24.8.0" - jest-message-util "^24.8.0" - jest-mock "^24.8.0" - jest-regex-util "^24.3.0" - jest-resolve "^24.8.0" - jest-snapshot "^24.8.0" - jest-util "^24.8.0" - jest-validate "^24.8.0" - realpath-native "^1.1.0" - slash "^2.0.0" - strip-bom "^3.0.0" - yargs "^12.0.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-serializer@^24.4.0: - version "24.4.0" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-24.4.0.tgz#f70c5918c8ea9235ccb1276d232e459080588db3" - integrity sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q== +jest-serializer@^23.0.1: + version "23.0.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165" + integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU= jest-snapshot@^22.4.3: version "22.4.3" @@ -8153,22 +6933,20 @@ jest-snapshot@^22.4.3: natural-compare "^1.4.0" pretty-format "^22.4.3" -jest-snapshot@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-24.8.0.tgz#3bec6a59da2ff7bc7d097a853fb67f9d415cb7c6" - integrity sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg== +jest-snapshot@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a" + integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg== dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^24.8.0" + babel-types "^6.0.0" chalk "^2.0.1" - expect "^24.8.0" - jest-diff "^24.8.0" - jest-matcher-utils "^24.8.0" - jest-message-util "^24.8.0" - jest-resolve "^24.8.0" + 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 "^24.8.0" + pretty-format "^23.6.0" semver "^5.5.0" jest-util@^22.4.3: @@ -8184,22 +6962,18 @@ jest-util@^22.4.3: mkdirp "^0.5.1" source-map "^0.6.0" -jest-util@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-24.8.0.tgz#41f0e945da11df44cc76d64ffb915d0716f46cd1" - integrity sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA== - dependencies: - "@jest/console" "^24.7.1" - "@jest/fake-timers" "^24.8.0" - "@jest/source-map" "^24.3.0" - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - callsites "^3.0.0" +jest-util@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561" + integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE= + dependencies: + callsites "^2.0.0" chalk "^2.0.1" - graceful-fs "^4.1.15" - is-ci "^2.0.0" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + jest-message-util "^23.4.0" mkdirp "^0.5.1" - slash "^2.0.0" + slash "^1.0.0" source-map "^0.6.0" jest-validate@^22.4.0, jest-validate@^22.4.3: @@ -8213,59 +6987,47 @@ jest-validate@^22.4.0, jest-validate@^22.4.3: leven "^2.1.0" pretty-format "^22.4.3" -jest-validate@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-24.8.0.tgz#624c41533e6dfe356ffadc6e2423a35c2d3b4849" - integrity sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA== +jest-validate@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474" + integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A== dependencies: - "@jest/types" "^24.8.0" - camelcase "^5.0.0" chalk "^2.0.1" - jest-get-type "^24.8.0" + jest-get-type "^22.1.0" leven "^2.1.0" - pretty-format "^24.8.0" + pretty-format "^23.6.0" -jest-watcher@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4" - integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw== +jest-watcher@^23.4.0: + version "23.4.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c" + integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw= dependencies: - "@jest/test-result" "^24.8.0" - "@jest/types" "^24.8.0" - "@types/yargs" "^12.0.9" ansi-escapes "^3.0.0" chalk "^2.0.1" - jest-util "^24.8.0" string-length "^2.0.0" -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== +jest-worker@^23.2.0: + version "23.2.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9" + integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk= dependencies: merge-stream "^1.0.1" - supports-color "^6.1.0" -jest-worker@^24.6.0: - version "24.6.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3" - integrity sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ== +jest-worker@^24.0.0-alpha.9: + version "24.0.0-alpha.12" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.0.0-alpha.12.tgz#b7ca1fb774b4eddc342768b7a63d89be5e6a762f" + integrity sha512-BzGiUwc2LPyrvOuCMqdiLqWU78C+lHbHI/hcJgWonTda0RS7aCcrgSJx5t9+56U9rzMMxDC75S9khJ0oi3fYQA== dependencies: merge-stream "^1.0.1" - supports-color "^6.1.0" + supports-color "^5.5.0" -jest@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081" - integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg== +jest@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d" + integrity sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw== dependencies: - import-local "^2.0.0" - jest-cli "^24.8.0" - -joycon@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" - integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ== + import-local "^1.0.0" + jest-cli "^23.6.0" js-base64@^2.1.9: version "2.4.3" @@ -8282,7 +7044,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^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== @@ -8295,7 +7057,7 @@ js-yaml@3.6.1: argparse "^1.0.7" esprima "^2.6.0" -js-yaml@^3.9.0, js-yaml@^3.9.1: +js-yaml@^3.7.0, js-yaml@^3.9.0, js-yaml@^3.9.1: version "3.11.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" integrity sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw== @@ -8363,7 +7125,12 @@ jsesc@~0.5.0: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= -json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== + +json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: 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== @@ -8405,13 +7172,6 @@ json5@^0.5.0, json5@^0.5.1: resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - json5@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" @@ -8460,10 +7220,10 @@ jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== +killable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.0.tgz#da8b84bd47de5395878f95d64d02f2449fe05e6b" + integrity sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms= kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -8494,10 +7254,10 @@ kind2string@^0.5.1: resolved "https://registry.yarnpkg.com/kind2string/-/kind2string-0.5.1.tgz#d4e7ec66316d1ecd5350cb86c70324b1c2e270e3" integrity sha512-5Dqfq9mqaBzwi4GwDJT8u+bkEWJT//2CixBJzzQXTiFZF0AzCXl5m9AJC0zQiJaaIz6Je/D4GtTXBMTDOWjCVA== -kleur@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300" + integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ== latest-version@^3.0.0: version "3.1.0" @@ -8506,22 +7266,27 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" +lave@^1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/lave/-/lave-1.1.10.tgz#062207652c5502d7c6ff096c9de3995401f634d5" + integrity sha1-BiIHZSxVAtfG/wlsneOZVAH2NNU= + lazy-ass@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= -lazy-cache@^1.0.4: +lazy-cache@^1.0.3, lazy-cache@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== +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 "^2.0.0" + invert-kv "^1.0.0" lcov-parse@0.0.10: version "0.0.10" @@ -8717,15 +7482,6 @@ loader-utils@^1.0.2, loader-utils@^1.1.0: emojis-list "^2.0.0" json5 "^0.5.0" -loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -8742,13 +7498,6 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -8764,31 +7513,11 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= -lodash.escape@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" - integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= - lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= -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.isempty@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= - lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -8804,11 +7533,6 @@ lodash.merge@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== -lodash.omitby@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.omitby/-/lodash.omitby-4.6.0.tgz#5c15ff4754ad555016b53c041311e8f079204791" - integrity sha1-XBX/R1StVVAWtTwEExHo8HkgR5E= - lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" @@ -8819,11 +7543,6 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" - integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg= - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -8834,12 +7553,12 @@ lodash@4.17.4: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" integrity sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= -lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.3, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.1: +lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.1: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" integrity sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg== -lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4: +lodash@^4.17.10: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" @@ -8870,19 +7589,17 @@ log-update@^1.0.2: ansi-escapes "^1.0.0" cli-cursor "^1.0.2" -loglevel@^1.6.1: +loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po= -loose-envify@^1.0.0, loose-envify@^1.1.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" +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.2.0, loose-envify@^1.3.1: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" integrity sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg= @@ -8922,13 +7639,6 @@ lru-cache@^4.0.1, lru-cache@^4.1.1: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lz-string@^1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" @@ -8939,12 +7649,12 @@ macaddress@^0.2.8: resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12" integrity sha1-WQTcU3w57G2+/q6QIycTX6hRHxI= -magic-string@^0.25.1, magic-string@^0.25.2: - version "0.25.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.2.tgz#139c3a729515ec55e96e69e82a11fe890a293ad9" - integrity sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg== +magic-string@^0.25.1: + version "0.25.1" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e" + integrity sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg== dependencies: - sourcemap-codec "^1.4.4" + sourcemap-codec "^1.4.1" make-dir@^1.0.0: version "1.2.0" @@ -8953,14 +7663,6 @@ make-dir@^1.0.0: dependencies: pify "^3.0.0" -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - make-fetch-happen@^2.4.13: version "2.6.0" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-2.6.0.tgz#8474aa52198f6b1ae4f3094c04e8370d35ea8a38" @@ -8985,32 +7687,25 @@ makeerror@1.0.x: 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" +manage-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/manage-path/-/manage-path-2.0.0.tgz#f4cf8457b926eeee2a83b173501414bc76eb9597" + integrity sha1-9M+EV7km7u4qg7FzUBQUvHbrlZc= 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.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-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ= map-visit@^1.0.0: version "1.0.0" @@ -9042,21 +7737,19 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== +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: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" + mimic-fn "^1.0.0" memoize-one@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.0.tgz#d55007dffefb8de7546659a1722a5d42e128286e" integrity sha512-7g0+ejkOaI9w5x6LvQwmj68kUj6rxROywPSCqmclG/HBacmFnZqhVscQ8kovkn9FBCNJmOz6SY42+jnvZzDWdw== -memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: +memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= @@ -9064,35 +7757,21 @@ memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1: errno "^0.1.3" readable-stream "^2.0.1" -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== +meow@^3.3.0, meow@^3.6.0, meow@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" + camelcase-keys "^2.0.0" + decamelize "^1.1.2" loud-rejection "^1.0.0" + map-obj "^1.0.1" minimist "^1.1.3" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" merge-descriptors@1.0.1: version "1.0.1" @@ -9106,10 +7785,10 @@ merge-stream@^1.0.1: 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.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + integrity sha1-dTHjnUlJwoGma4xabgJl6LBYlNo= methods@~1.1.2: version "1.1.2" @@ -9135,7 +7814,7 @@ micromatch@^2.3.11: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: +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== @@ -9162,12 +7841,7 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.40.0 < 2": - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - -mime-db@~1.33.0: +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== @@ -9184,10 +7858,10 @@ mime@1.4.1: resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== -mime@^2.3.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.2.tgz#ce5229a5e99ffc313abac806b482c10e7ba6ac78" - integrity sha512-zJBfZDkwRu+j3Pdd2aHsR5GfH2jIWhmL1ZzBoc+X+3JEti2hbArWcyJ+1laC1D2/U/W1a/+Cegj0/OnEU2ybjg== +mime@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mimer@^0.3.2: version "0.3.2" @@ -9199,11 +7873,6 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - mimic-response@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" @@ -9219,21 +7888,13 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4: +"minimatch@2 || 3", 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" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -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 "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -9296,22 +7957,6 @@ mississippi@^2.0.0: stream-each "^1.1.0" through2 "^2.0.0" -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - mixin-deep@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" @@ -9339,11 +7984,6 @@ moment@^2.10.3, moment@^2.20.1: resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" integrity sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ== -moo@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e" - integrity sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw== - move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -9379,26 +8019,11 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -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: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.12.1: - version "2.13.2" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" - integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== - nan@^2.6.2, nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -9427,13 +8052,17 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +ncp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= + nearley@^2.7.10: - version "2.16.0" - resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.16.0.tgz#77c297d041941d268290ec84b739d0ee297e83a7" - integrity sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg== + version "2.13.0" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.13.0.tgz#6e7b0f4e68bfc3e74c99eaef2eda39e513143439" + integrity sha512-ioYYogSaZhFlCpRizQgY3UT3G1qFXmHGY/5ozoFE3dMfiCRAeJfh+IPE3/eh9gCZvqLhPCWb4bLt7Bqzo+1mLQ== dependencies: - commander "^2.19.0" - moo "^0.4.3" + nomnom "~1.6.2" railroad-diagrams "^1.0.0" randexp "0.4.6" semver "^5.4.1" @@ -9466,15 +8095,17 @@ neo-async@^2.5.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" integrity sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA== -neo-async@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" - integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== +nested-error-stacks@^1.0.0, nested-error-stacks@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-1.0.2.tgz#19f619591519f096769a5ba9a86e6eeec823c3cf" + integrity sha1-GfYZWRUZ8JZ2mlupqG5u7sgjw88= + dependencies: + inherits "~2.0.1" -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +next-tick@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= no-case@^2.2.0: version "2.3.2" @@ -9490,11 +8121,6 @@ node-abi@^2.2.0: dependencies: semver "^5.4.1" -node-addon-api@^1.6.0: - version "1.6.3" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.6.3.tgz#3998d4593e2dca2ea82114670a4eb003386a9fe1" - integrity sha512-FXWH6mqjWgU8ewuahp4spec8LkroFZK2NicOv6bNwZC3kcwZUI8LeZdG80UzTSLLhK4T7MsgNwlYDVRlDdfTDg== - 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" @@ -9512,15 +8138,10 @@ node-fetch@^1.0.1, node-fetch@^1.7.1: encoding "^0.1.11" is-stream "^1.0.1" -node-fetch@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.5.0.tgz#8028c49fc1191bba56a07adc6e2a954644a48501" - integrity sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw== - -node-forge@0.7.5: - version "0.7.5" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" - integrity sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ== +node-forge@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.1.tgz#9da611ea08982f4b94206b3beb4cc9665f20c300" + integrity sha1-naYR6giYL0uUIGs760zJZl8gwwA= node-gyp@^3.6.2: version "3.6.2" @@ -9575,11 +8196,6 @@ 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.2.1" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" @@ -9593,23 +8209,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" - 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" - -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -9645,6 +8245,14 @@ node-releases@^1.1.3: dependencies: semver "^5.3.0" +nomnom@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" + integrity sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE= + dependencies: + colors "0.5.x" + underscore "~1.4.4" + noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" @@ -9694,11 +8302,6 @@ normalize-path@^2.0.1, normalize-path@^2.1.1: 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-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" @@ -9778,10 +8381,44 @@ npm-which@^3.0.1: gauge "~2.7.3" set-blocking "~2.0.0" +nps-utils@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/nps-utils/-/nps-utils-1.5.0.tgz#d20b5848dd20622d4d51c955c8b1790348b57686" + integrity sha1-0gtYSN0gYi1NUclVyLF5A0i1doY= + dependencies: + any-shell-escape "^0.1.1" + common-tags "^1.4.0" + concurrently "^3.4.0" + cpy-cli "^1.0.1" + cross-env "^3.1.4" + is-windows "^1.0.0" + mkdirp "^0.5.1" + ncp "2.0.0" + opn-cli "^3.1.0" + rimraf "^2.6.1" + +nps@^5.7.1: + version "5.9.0" + resolved "https://registry.yarnpkg.com/nps/-/nps-5.9.0.tgz#432d781b98d7ffc497b0cb4f478873dd958d89ff" + integrity sha512-bBqov3hZMhcZ2/XAEftF/ulj7IzTedZmRYGGlw5xLU/E+Ep9tmPpu0cUj9B/Hai6uZNp5xXlcWl/3WK62+roUQ== + dependencies: + arrify "^1.0.1" + chalk "^2.0.1" + common-tags "^1.4.0" + find-up "^2.1.0" + js-yaml "^3.9.0" + lodash "^4.17.4" + manage-path "^2.0.0" + prefix-matches "^1.0.1" + readline-sync "^1.4.7" + spawn-command-with-kill "^1.0.0" + type-detect "^4.0.3" + yargs "^8.0.2" + nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + version "1.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" + integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ= dependencies: boolbase "~1.0.0" @@ -9819,20 +8456,20 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" - integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== +object-inspect@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.5.0.tgz#9d876c11e40f485c79215670281b767488f9bfe3" + integrity sha512-UmOFbHbwvv+XHj7BerrhVq+knjceBdkvU5AriwLMvhv2qi+e7DJzxfBeFpILEjVzCp+xA+W/pIf06RGPWlZNfw== object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= -object-keys@^1.0.11, object-keys@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2" - integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== +object-keys@^1.0.11, object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + integrity sha1-xUYBd4rVYPEULODgG8yotW0TQm0= object-visit@^1.0.0: version "1.0.1" @@ -9841,7 +8478,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.1.0: +object.assign@^4.0.4, object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -9852,14 +8489,14 @@ object.assign@^4.1.0: object-keys "^1.0.11" object.entries@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519" - integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.0.4.tgz#1bf9a4dd2288f5b33f3a993d257661f05d161a5f" + integrity sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8= dependencies: - define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" object.getownpropertydescriptors@^2.0.3: version "2.0.3" @@ -9885,16 +8522,16 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a" + integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo= dependencies: - define-properties "^1.1.3" - es-abstract "^1.12.0" - function-bind "^1.1.1" - has "^1.0.3" + define-properties "^1.1.2" + es-abstract "^1.6.1" + function-bind "^1.1.0" + has "^1.0.1" -obuf@^1.0.0, obuf@^1.1.2: +obuf@^1.0.0, obuf@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== @@ -9906,10 +8543,10 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== +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.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -9930,6 +8567,25 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opn-cli@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/opn-cli/-/opn-cli-3.1.0.tgz#f819ae6cae0b411bd0149b8560fe6c88adad20f8" + integrity sha1-+BmubK4LQRvQFJuFYP5siK2tIPg= + dependencies: + file-type "^3.6.0" + get-stdin "^5.0.1" + meow "^3.7.0" + opn "^4.0.0" + temp-write "^2.1.0" + +opn@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + integrity sha1-erwi5kTf9jsKltWrfyeQwPAavJU= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + opn@^5.1.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" @@ -9937,13 +8593,6 @@ opn@^5.1.0: dependencies: is-wsl "^1.1.0" -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - 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" @@ -9984,12 +8633,12 @@ ora@^1.3.0: cli-spinners "^1.0.1" log-symbols "^2.1.0" -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== +original@>=0.0.5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" + integrity sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs= dependencies: - url-parse "^1.4.3" + url-parse "1.0.x" os-browserify@^0.3.0: version "0.3.0" @@ -10001,14 +8650,21 @@ os-homedir@^1.0.0, os-homedir@^1.0.1: resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -os-locale@^3.0.0: - 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== +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +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 "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: version "1.0.2" @@ -10023,11 +8679,6 @@ osenv@0, osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" -outdent@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.5.0.tgz#9e10982fdc41492bb473ad13840d22f9655be2ff" - integrity sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q== - output-file-sync@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-2.0.1.tgz#f53118282f5f553c2799541792b723a4c71430c0" @@ -10037,29 +8688,12 @@ output-file-sync@^2.0.0: is-plain-obj "^1.1.0" mkdirp "^0.5.1" -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" - 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" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: +p-limit@^1.0.0, p-limit@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" integrity sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng== @@ -10073,13 +8707,6 @@ p-limit@^2.0.0: dependencies: p-try "^2.0.0" -p-limit@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" - integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== - 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" @@ -10094,28 +8721,11 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-reduce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - 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" @@ -10237,11 +8847,6 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-package-name@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/parse-package-name/-/parse-package-name-0.1.0.tgz#3f44dd838feb4c2be4bf318bae4477d7706bade4" - integrity sha1-P0Tdg4/rTCvkvzGLrkR313BrreQ= - parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -10301,7 +8906,7 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2: resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= -path-key@^2.0.0, path-key@^2.0.1: +path-key@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= @@ -10351,6 +8956,13 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + pbkdf2@^3.0.3: version "3.0.16" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" @@ -10377,7 +8989,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pify@^2.0.0: +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -10387,11 +8999,6 @@ pify@^3.0.0: resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -10404,12 +9011,12 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== +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: - node-modules-regexp "^1.0.0" + find-up "^2.1.0" pkg-dir@^3.0.0: version "3.0.0" @@ -10418,20 +9025,6 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - please-upgrade-node@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.0.2.tgz#7b9eaeca35aa4a43d6ebdfd10616c042f9a83acc" @@ -10449,10 +9042,10 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -portfinder@^1.0.20: - version "1.0.20" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a" - integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw== +portfinder@^1.0.9: + version "1.0.13" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9" + integrity sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek= dependencies: async "^1.5.2" debug "^2.2.0" @@ -10764,47 +9357,13 @@ prebuild-install@^2.3.0: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" -preconstruct@^0.0.76: - version "0.0.76" - resolved "https://registry.yarnpkg.com/preconstruct/-/preconstruct-0.0.76.tgz#13be36761c8a9da72745e7c946a8386ddb716979" - integrity sha512-eFDLxwaNlO6JZCT716rFEHLX6dPLTT1qk45uG/xofbXQeP2SqaPWRY7UFdtunNDZ7OyT6mbETcZjTwUsUNsezQ== +prefix-matches@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prefix-matches/-/prefix-matches-1.0.1.tgz#02e34ce27f33af48e68bbfce2aac2a004bc2b76c" + integrity sha1-AuNM4n8zr0jmi7/OKqwqAEvCt2w= dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.1.2" - "@babel/plugin-transform-runtime" "^7.2.0" - "@emotion/memoize" "^0.7.1" - "@emotion/weak-memoize" "^0.2.2" - "@preconstruct/hook" "^0.0.1" - builtin-modules "^3.0.0" - chalk "^2.3.2" - dataloader "^1.4.0" - deasync "^0.1.14" - del "^3.0.0" - diff "^4.0.1" - fast-deep-equal "^2.0.1" - fs-extra "^7.0.0" - globby "^8.0.1" - inquirer "^6.2.0" - install-packages "^0.2.5" - jest-worker "24.0.0" - lodash.isempty "^4.4.0" - lodash.omitby "^4.6.0" - magic-string "^0.25.1" - meow "^5.0.0" - ms "^2.1.1" - p-limit "^2.0.0" - quick-lru "^4.0.0" - resolve "^1.10.0" - resolve-from "^4.0.0" - rollup "^1.12.2" - rollup-plugin-alias "^1.5.1" - rollup-plugin-commonjs "^10.0.0" - rollup-plugin-node-resolve "^5.0.0" - rollup-plugin-replace "^2.2.0" - rollup-pluginutils "^2.7.1" - sarcastic "^1.5.0" - terser "^3.14.1" - xxhash-wasm "^0.3.1" + is-object "^1.0.1" + starts-with "^1.0.2" prelude-ls@~1.1.2: version "1.1.2" @@ -10821,11 +9380,6 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= -prettier@^1.14.3: - version "1.17.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.0.tgz#53b303676eed22cc14a9f0cec09b477b3026c008" - integrity sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw== - pretty-error@^2.0.2: version "2.1.1" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" @@ -10856,15 +9410,13 @@ pretty-format@^22.4.3: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^24.8.0: - version "24.8.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.8.0.tgz#8dae7044f58db7cb8be245383b565a963e3c27f2" - integrity sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw== +pretty-format@^23.6.0: + version "23.6.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" + integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== dependencies: - "@jest/types" "^24.8.0" - ansi-regex "^4.0.0" + ansi-regex "^3.0.0" ansi-styles "^3.2.0" - react-is "^16.8.4" pretty-proptypes@^0.5.0: version "0.5.0" @@ -10921,20 +9473,6 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" integrity sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8= -project-bin-path@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/project-bin-path/-/project-bin-path-1.1.1.tgz#7a8b3817f54c41a14cd5a6e904ca5400c34fc17b" - integrity sha512-PL6otyI6ZUnraSi801zwPYRfo+FkPKTvjj5iD9LIVDPo9GLW508K54uUvcS06aLMWyvRdEU6VURT2JhGEfU8/A== - dependencies: - find-up "^2.1.0" - -projector-spawn@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/projector-spawn/-/projector-spawn-1.0.1.tgz#0849a9a54d5a76a9293d8240b4374417653312cb" - integrity sha1-CEmppU1adqkpPYJAtDdEF2UzEss= - dependencies: - cross-spawn "^5.1.0" - promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -10955,13 +9493,13 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prompts@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.0.4.tgz#179f9d4db3128b9933aa35f93a800d8fce76a682" - integrity sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA== +prompts@^0.1.9: + version "0.1.14" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2" + integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w== dependencies: - kleur "^3.0.2" - sisteransi "^1.0.0" + kleur "^2.0.1" + sisteransi "^0.1.1" prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1: version "15.6.1" @@ -10972,14 +9510,6 @@ prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, loose-envify "^1.3.1" object-assign "^4.1.1" -prop-types@^15.6.2: - version "15.6.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.2.tgz#05d5ca77b4453e985d60fc7ff8c859094a497102" - integrity sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ== - dependencies: - loose-envify "^1.3.1" - object-assign "^4.1.1" - property-information@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/property-information/-/property-information-3.2.0.tgz#fd1483c8fbac61808f5fe359e7693a1f48a58331" @@ -10992,19 +9522,26 @@ protoduck@^4.0.0: dependencies: genfun "^4.0.1" -proxy-addr@~2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== +proxy-addr@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.3.tgz#355f262505a621646b3130a728eb647e22055341" + integrity sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ== dependencies: forwarded "~0.1.2" - ipaddr.js "1.9.0" + ipaddr.js "1.6.0" prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= +ps-tree@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.1.0.tgz#b421b24140d6203f1ed3c76996b4427b08e8c014" + integrity sha1-tCGyQUDWID8e08dplrRCewjowBQ= + dependencies: + event-stream "~3.3.0" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -11037,14 +9574,6 @@ pump@^2.0.0, pump@^2.0.1: end-of-stream "^1.1.0" once "^1.3.1" -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pumpify@^1.3.3: version "1.4.0" resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.4.0.tgz#80b7c5df7e24153d03f0e7ac8a05a5d068bd07fb" @@ -11074,10 +9603,10 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +qs@6.5.1, qs@~6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== qs@~6.3.0: version "6.3.2" @@ -11089,11 +9618,6 @@ qs@~6.4.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM= -qs@~6.5.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" - integrity sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== - query-string@^4.1.0: version "4.3.4" resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" @@ -11112,20 +9636,15 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== - -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= +querystringify@0.0.x: + version "0.0.4" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" + integrity sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw= -quick-lru@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +querystringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" + integrity sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw== raf-schd@^2.1.0: version "2.1.1" @@ -11185,23 +9704,20 @@ range-parser@^1.0.3, range-parser@~1.2.0: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== +raw-body@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" + integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= dependencies: bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" + http-errors "1.6.2" + iconv-lite "0.4.19" unpipe "1.0.0" -raw-loader@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-2.0.0.tgz#e2813d9e1e3f80d1bbade5ad082e809679e20c26" - integrity sha512-kZnO5MoIyrojfrPWqrhFNLZemIAX8edMOCp++yC5RKxzFB3m92DqKNhKlU6+FvpOhWtvyh3jOaD7J6/9tpdIKg== - dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" +raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: version "1.2.6" @@ -11263,21 +9779,11 @@ react-input-autosize@^2.2.1: dependencies: prop-types "^15.5.8" -react-is@^16.3.1: +react-is@^16.3.1, react-is@^16.3.2: version "16.3.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.3.2.tgz#f4d3d0e2f5fbb6ac46450641eb2e25bf05d36b22" integrity sha512-ybEM7YOr4yBgFd6w8dJqwxegqZGJNBZl6U27HnGKuTZmDvVrD5quWOK/wAnMywiZzW+Qsk+l4X2c70+thp/A8Q== -react-is@^16.6.1, react-is@^16.7.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.7.0.tgz#c1bd21c64f1f1364c6f70695ec02d69392f41bfa" - integrity sha512-Z0VRQdF4NPDoI0tsXVMLkJLiwEBa+RP66g0xDHxgxysxSoCUccSten4RTF/UFvZF1dZvZ9Zu1sx+MDXwcOR34g== - -react-is@^16.8.4: - version "16.8.6" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" - integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== - react-markings@^1.2.0, react-markings@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/react-markings/-/react-markings-1.3.0.tgz#7bb6826013bfc4fb37dc511a8ba2e578d9b4c284" @@ -11291,6 +9797,16 @@ react-node-resolver@^1.0.1: resolved "https://registry.yarnpkg.com/react-node-resolver/-/react-node-resolver-1.0.1.tgz#1798a729c0e218bf2f0e8ddf79c550d4af61d83a" integrity sha1-F5inKcDiGL8vDo3fecVQ1K9h2Do= +react-reconciler@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.7.0.tgz#9614894103e5f138deeeb5eabaf3ee80eb1d026d" + integrity sha512-50JwZ3yNyMS8fchN+jjWEJOH3Oze7UmhxeoJLn2j6f3NjpfCRbcmih83XTWmzqtar/ivd5f7tvQhvvhism2fgg== + dependencies: + fbjs "^0.8.16" + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.0" + react-router-dom@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-4.2.2.tgz#c8a81df3adc58bba8a76782e946cbd4eae649b8d" @@ -11336,14 +9852,14 @@ react-syntax-highlighter@^7.0.1: refractor "^2.0.0" react-test-renderer@^16.0.0-0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.7.0.tgz#1ca96c2b450ab47c36ba92cd8c03fcefc52ea01c" - integrity sha512-tFbhSjknSQ6+ttzmuGdv+SjQfmvGcq3PFKyPItohwhhOBmRoTf1We3Mlt3rJtIn85mjPXOkKV+TaKK4irvk9Yg== + version "16.3.2" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.3.2.tgz#3d1ed74fda8db42521fdf03328e933312214749a" + integrity sha512-lL8WHIpCTMdSe+CRkt0rfMxBkJFyhVrpdQ54BaJRIrXf9aVmbeHbRA8GFRpTvohPN5tPzMabmrzW2PUfWCfWwQ== dependencies: + fbjs "^0.8.16" object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.7.0" - scheduler "^0.12.0" + prop-types "^15.6.0" + react-is "^16.3.2" react-transition-group@^2.2.1: version "2.3.1" @@ -11364,13 +9880,6 @@ react@^16.2.0: object-assign "^4.1.1" prop-types "^15.6.0" -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-file-async@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-file-async/-/read-file-async-1.0.0.tgz#118fd0b8d0f76dc95cbb658e72ea6f107210deae" @@ -11387,6 +9896,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -11395,14 +9912,6 @@ 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" @@ -11430,7 +9939,7 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -"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.3, readable-stream@^2.3.5: +"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.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -11453,15 +9962,6 @@ readable-stream@1.0: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^3.0.6: - 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" - readdirp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" @@ -11472,29 +9972,25 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" +readline-sync@^1.4.7: + 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.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" - integrity sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA== +realpath-native@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" + integrity sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ== dependencies: util.promisify "^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= +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 "^3.0.0" - strip-indent "^2.0.0" + indent-string "^2.1.0" + strip-indent "^1.0.1" reduce-css-calc@^1.2.6: version "1.3.0" @@ -11547,11 +10043,6 @@ regenerator-runtime@^0.12.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== -regenerator-runtime@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447" - integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA== - regenerator-transform@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" @@ -11811,11 +10302,6 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -11824,7 +10310,7 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" -requires-port@^1.0.0: +requires-port@1.0.x, requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= @@ -11852,14 +10338,6 @@ resolve-dir@^0.1.0: expand-tilde "^1.2.2" global-modules "^0.2.3" -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" @@ -11870,11 +10348,6 @@ resolve-from@^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-pathname@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" @@ -11890,13 +10363,6 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.10.0, resolve@^1.10.1, resolve@^1.7.1, resolve@^1.8.1: - version "1.11.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232" - integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw== - dependencies: - path-parse "^1.0.6" - resolve@^1.3.2, resolve@^1.3.3: version "1.7.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" @@ -11904,6 +10370,13 @@ resolve@^1.3.2, resolve@^1.3.3: dependencies: path-parse "^1.0.5" +resolve@^1.8.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06" + integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ== + dependencies: + path-parse "^1.0.6" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -11930,6 +10403,13 @@ retry@^0.10.0: resolved "https://registry.yarnpkg.com/retry/-/retry-0.10.1.tgz#e76388d217992c252750241d3d3956fed98d8ff4" integrity sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q= +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.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" @@ -11937,13 +10417,6 @@ rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, 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" @@ -11952,58 +10425,60 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-alias@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-alias/-/rollup-plugin-alias-1.5.1.tgz#80cce3a967befda5b09c86abc14a043a78035b46" - integrity sha512-pQTYBRNfLedoVOO7AYHNegIavEIp4jKTga5jUi1r//KYgHKGWgG4qJXYhbcWKt2k1FwGlR5wCYoY+IFkme0t4A== +rollup-plugin-babel@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.2.tgz#8c0e1bd7aa9826e90769cf76895007098ffd1413" + integrity sha512-KfnizE258L/4enADKX61ozfwGHoqYauvoofghFJBhFnpH9Sb9dNPpWg8QHOaAfVASUYV8w0mCx430i9z0LJoJg== dependencies: - slash "^2.0.0" + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.3.0" -rollup-plugin-commonjs@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.0.0.tgz#58901ebe7ca44c2a03f0056de9bf9eb4a2dc8990" - integrity sha512-B8MoX5GRpj3kW4+YaFO/di2JsZkBxNjVmZ9LWjUoTAjq8N9wc7HObMXPsrvolVV9JXVtYSscflXM14A19dXPNQ== +rollup-plugin-commonjs@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz#4604e25069e0c78a09e08faa95dc32dec27f7c89" + integrity sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA== dependencies: - estree-walker "^0.6.0" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.10.1" - rollup-pluginutils "^2.7.0" + estree-walker "^0.5.2" + magic-string "^0.25.1" + resolve "^1.8.1" + rollup-pluginutils "^2.3.3" -rollup-plugin-node-resolve@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.0.0.tgz#754abf4841ed4bab2241551cba0a11d04c57f290" - integrity sha512-JUFr7DkFps3div9DYwpSg0O+s8zuSSRASUZUVNx6h6zhw2m8vcpToeS68JDPsFbmisMVSMYK0IxftngCRv7M9Q== +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: - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" + builtin-modules "^3.0.0" is-module "^1.0.0" - resolve "^1.10.1" - rollup-pluginutils "^2.7.0" + resolve "^1.8.1" -rollup-plugin-replace@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz#f41ae5372e11e7a217cde349c8b5d5fd115e70e3" - integrity sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA== +rollup-plugin-terser@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-4.0.2.tgz#78936d182ae7c4ecb313403ff5d5faad1b69e2aa" + integrity sha512-M2vY7NPMa3N77/avJSJyBva4nyBTiUM0kgMoWwEAeo2Edl3MW/GoM0069FzVrfMYP3xDqcVrDbaIOqVaBD8lHQ== dependencies: - magic-string "^0.25.2" - rollup-pluginutils "^2.6.0" + "@babel/code-frame" "^7.0.0" + escodegen "^1.11.0" + jest-worker "^24.0.0-alpha.9" + lave "^1.1.10" + terser "^3.14.1" -rollup-pluginutils@^2.6.0, rollup-pluginutils@^2.7.0, rollup-pluginutils@^2.7.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.0.tgz#d7ece1502958a35748a74080c7ac5e95681bcbe9" - integrity sha512-8TomM64VQH6w+13lemFHX5sZYxLCxHhf9gzdRUEFNXH3Z+0CDYy7Grzqa6YUbZc0GIrfbWoD5GXZ3o5Teqh9ew== +rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" + integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA== dependencies: - estree-walker "^0.6.1" + estree-walker "^0.5.2" + micromatch "^2.3.11" -rollup@^1.12.2: - version "1.13.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.13.0.tgz#8313fc6d9762e28301b4b89cc0a56233659a67b6" - integrity sha512-pW4G4cQmtEmbg4/CoFYc2AYeKiGpMAVak7kFpch1UJnYkXMn/34L8cD0kxkmjJNpJ/NagOHVdCwdkbtCEuDEww== +rollup@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.1.2.tgz#8d094b85683b810d0c05a16bd7618cf70d48eba7" + integrity sha512-OkdMxqMl8pWoQc5D8y1cIinYQPPLV8ZkfLgCzL6SytXeNA2P7UHynEQXI9tYxuAjAMsSyvRaWnyJDLHMxq0XAg== dependencies: "@types/estree" "0.0.39" - "@types/node" "^12.0.3" - acorn "^6.1.1" + "@types/node" "*" + acorn "^6.0.5" rst-selector-parser@^2.2.3: version "2.2.3" @@ -12013,11 +10488,6 @@ rst-selector-parser@^2.2.3: lodash.flattendeep "^4.4.0" nearley "^2.7.10" -rsvp@^4.8.4: - version "4.8.4" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.4.tgz#b50e6b34583f3dd89329a2f23a8a2be072845911" - integrity sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA== - run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -12056,21 +10526,12 @@ rxjs@^5.0.0-beta.11, rxjs@^5.4.2: dependencies: symbol-observable "1.0.1" -rxjs@^5.5.2: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - -rxjs@^6.4.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" - integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== - dependencies: - tslib "^1.9.0" +safe-buffer@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== -safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== @@ -12082,52 +10543,37 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", 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" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== +sane@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.0.tgz#6359cd676f5efd9988b264d8ce3b827dd6b27bec" + integrity sha512-glfKd7YH4UCrh/7dD+UESsr8ylKWRE7UQPoXuz28FgmcF0ViJQhCTCCZHICRKxf8G8O1KdLEn20dcICK54c7ew== dependencies: - "@cnakazawa/watch" "^1.0.3" anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" + exec-sh "^0.2.0" fb-watchman "^2.0.0" micromatch "^3.1.4" minimist "^1.1.1" walker "~1.0.5" - -sarcastic@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sarcastic/-/sarcastic-1.5.0.tgz#1e87e75bb64e856d3f34d1f5a391c3abecf8c7c1" - integrity sha512-j7zmeNbABvOGXzt11WIm7nITPJ0exX/IL0sV9GZHNSsrFEjadfK5Z3GfBEelc6/VoEp17i/JEw3UuzyJNvgZNw== + watch "~0.18.0" + optionalDependencies: + fsevents "^1.1.1" sax@^1.2.4, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.12.0.tgz#8ab17699939c0aedc5a196a657743c496538647b" - integrity sha512-t7MBR28Akcp4Jm+QoR63XgAi9YgCUmgvDHqf5otgAj4QvdoBE4ImCX0ffehefePPG+aitiYHp0g/mW6s4Tp+dw== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8= dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" + ajv "^5.0.0" select-hose@^2.0.0: version "2.0.0" @@ -12139,12 +10585,12 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -selfsigned@^1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" - integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw== +selfsigned@^1.9.1: + version "1.10.2" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.2.tgz#b4449580d99929b65b10a48389301a6592088758" + integrity sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g= dependencies: - node-forge "0.7.5" + node-forge "0.7.1" semver-compare@^1.0.0: version "1.0.0" @@ -12158,26 +10604,11 @@ semver-diff@^2.0.0: dependencies: semver "^5.0.3" -"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== -semver@^5.4.1, semver@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004" - integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== - -semver@^5.5.1: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - -semver@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.0.0.tgz#05e359ee571e5ad7ed641a6eec1e547ba52dea65" - integrity sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ== - semver@~5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" @@ -12207,12 +10638,7 @@ serialize-javascript@^1.4.0: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ== -serialize-javascript@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65" - integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA== - -serve-index@^1.9.1: +serve-index@^1.7.2: version "1.9.1" resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= @@ -12270,6 +10696,11 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= +setprototypeof@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" + integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -12329,10 +10760,10 @@ simple-get@^2.7.0: once "^1.3.1" simple-concat "^1.0.0" -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== +sisteransi@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce" + integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g== slash@^1.0.0: version "1.0.0" @@ -12361,15 +10792,6 @@ smart-buffer@^1.0.13: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-1.1.15.tgz#7f114b5b65fab3e2a35aa775bb12f0d1c649bf16" integrity sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY= -smartwrap@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-1.0.11.tgz#ee8f85878bfac89c1fa4da33e0877f729a8e2a74" - integrity sha512-Pa/Vl0SjKM0Lf1ovLsRIUhXwS2nJbir0dmfQyEq696NeEpbAyduIVPTfjcnTbpM4IepUh6LvQMbApfXXccmviQ== - dependencies: - breakword "^1.0.3" - wcwidth "^1.0.1" - yargs "^12.0.5" - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -12414,17 +10836,17 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -sockjs-client@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" - integrity sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg== +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + integrity sha1-W6vjhrd15M8U51IJEUUmVAFsixI= dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" json3 "^3.3.2" - url-parse "^1.4.3" + url-parse "^1.1.8" sockjs@0.3.19: version "0.3.19" @@ -12450,16 +10872,6 @@ socks@^1.1.10: ip "^1.1.4" smart-buffer "^1.0.13" -sort-asc@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/sort-asc/-/sort-asc-0.2.0.tgz#00a49e947bc25d510bfde2cbb8dffda9f50eb2fc" - integrity sha1-AKSelHvCXVEL/eLLuN/9qfUOsvw= - -sort-desc@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/sort-desc/-/sort-desc-0.2.0.tgz#280c1bdafc6577887cedbad1ed2e41c037976646" - integrity sha1-KAwb2vxld4h87brR7S5BwDeXZkY= - sort-keys@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" @@ -12467,18 +10879,6 @@ sort-keys@^1.0.0: dependencies: is-plain-obj "^1.0.0" -sort-object@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/sort-object/-/sort-object-3.0.2.tgz#daf2b693f611f7dd2a21b82b805e4eac230f755e" - integrity sha1-2vK2k/YR990qIbgrgF5OrCMPdV4= - dependencies: - bytewise "^1.1.0" - get-value "^2.0.2" - is-extendable "^0.1.1" - sort-asc "^0.2.0" - sort-desc "^0.2.0" - union-value "^0.2.3" - source-list-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" @@ -12495,17 +10895,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-resolve@^0.5.2: - 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" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" @@ -12521,14 +10910,6 @@ source-map-support@^0.5.0: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.12, source-map-support@~0.5.10: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - 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" @@ -12537,16 +10918,31 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" +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-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.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7, source-map@~0.5.1: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= +source-map@^0.4.4: + version "0.4.4" + 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.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -12556,7 +10952,7 @@ source-map@^0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" -sourcemap-codec@^1.4.4: +sourcemap-codec@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f" integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg== @@ -12568,6 +10964,14 @@ space-separated-tokens@^1.0.0: dependencies: trim "0.0.1" +spawn-command-with-kill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/spawn-command-with-kill/-/spawn-command-with-kill-1.0.0.tgz#803ad79f2f56e44dd926183768aac2faec7d0ce6" + integrity sha1-gDrXny9W5E3ZJhg3aKrC+ux9DOY= + dependencies: + ps-tree "^1.1.0" + spawn-command "^0.0.2-1" + spawn-command@^0.0.2-1: version "0.0.2-1" resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" @@ -12599,28 +11003,30 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" integrity sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA== -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== +spdy-transport@^2.0.18: + version "2.1.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.0.tgz#4bbb15aaffed0beefdd56ad61dbdc8ba3e2cb7a1" + integrity sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g== dependencies: - debug "^4.1.0" - detect-node "^2.0.4" + debug "^2.6.8" + detect-node "^2.0.3" hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" + obuf "^1.1.1" + readable-stream "^2.2.9" + safe-buffer "^5.0.1" + wbuf "^1.7.2" -spdy@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52" - integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q== +spdy@^3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" + integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" + debug "^2.6.8" + handle-thing "^1.2.5" http-deceiver "^1.2.7" + safe-buffer "^5.0.1" select-hose "^2.0.0" - spdy-transport "^3.0.0" + spdy-transport "^2.0.18" split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -12629,6 +11035,13 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= + 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" @@ -12663,13 +11076,6 @@ ssri@^5.0.0, ssri@^5.2.4: dependencies: safe-buffer "^5.1.1" -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - stack-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" @@ -12680,6 +11086,11 @@ staged-git-files@1.1.1: resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.1.tgz#37c2218ef0d6d26178b1310719309a16a59f8f7b" integrity sha512-H89UNKr1rQJvI1c/PIR3kiAMBV23yvR7LItZiV74HWZwzt7f3YHuujJ9nJZlt58WlFox7XQsOahexwk7nTe69A== +starts-with@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/starts-with/-/starts-with-1.0.2.tgz#16793a729d89d4cf3d4fb2eda2f908ae357f196f" + integrity sha1-Fnk6cp2J1M89T7LtovkIrjV/GW8= + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -12688,7 +11099,7 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -12711,6 +11122,13 @@ stream-browserify@^2.0.1: inherits "~2.0.1" readable-stream "^2.0.2" +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ= + dependencies: + duplexer "~0.1.1" + stream-each@^1.1.0: version "1.2.2" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" @@ -12747,11 +11165,6 @@ stream-to-observable@^0.2.0: dependencies: any-observable "^0.2.0" -stream-transform@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-1.0.8.tgz#54f721122d310eca855a16c97939881ab5bbb76c" - integrity sha512-1q+dL790Ps0NV33rISMq9OLtfDA9KMJZdo1PHZXE85orrWsM4FAh8CVyAOTHO0rhyeM138KNPngBPrx33bFsxw== - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -12792,15 +11205,6 @@ string.prototype.repeat@^0.2.0: resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" integrity sha1-q6Nt4I3O5qWjN9SbLqHaGyj8Ds8= -string.prototype.trim@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" - integrity sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo= - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" - string_decoder@^1.0.0, string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -12808,13 +11212,6 @@ string_decoder@^1.0.0, string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -string_decoder@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" - integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== - dependencies: - safe-buffer "~5.1.0" - string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" @@ -12855,12 +11252,10 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" +strip-bom@3.0.0, 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-bom@^2.0.0: version "2.0.0" @@ -12869,16 +11264,18 @@ strip-bom@^2.0.0: 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 "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" @@ -12889,13 +11286,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -style-loader@^0.23.1: - version "0.23.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" - integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== +style-loader@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.19.1.tgz#591ffc80bcefe268b77c5d9ebc0505d772619f85" + integrity sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og== dependencies: - loader-utils "^1.1.0" - schema-utils "^1.0.0" + loader-utils "^1.0.2" + schema-utils "^0.3.0" "styled-components@1.4.6 - 3": version "3.2.6" @@ -12940,21 +11337,21 @@ supports-color@^2.0.0: resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -supports-color@^3.2.3: +supports-color@^3.1.2, supports-color@^3.2.3: 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" -supports-color@^4.0.0: +supports-color@^4.0.0, supports-color@^4.2.1: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= dependencies: has-flag "^2.0.0" -supports-color@^5.3.0: +supports-color@^5.1.0, supports-color@^5.3.0: version "5.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== @@ -12968,13 +11365,6 @@ supports-color@^5.5.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - svgo@^0.7.0: version "0.7.2" resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" @@ -13020,10 +11410,10 @@ table@4.0.2: slice-ansi "1.0.0" string-width "^2.1.1" -tapable@^1.0.0, tapable@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== +tapable@^0.2.7: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" + integrity sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI= tar-fs@^1.13.0, tar-fs@^1.15.3: version "1.16.0" @@ -13070,29 +11460,17 @@ tar@^4: safe-buffer "^5.1.1" yallist "^3.0.2" -task-graph-runner@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/task-graph-runner/-/task-graph-runner-1.0.2.tgz#dfc73e4f92d74b974a854ccd3b2a8c7f1fbf4137" - integrity sha512-ua9VE+cJ4LVT1TcSl31vFi50NaPFFyAUdjsqpXuooe8AZm1nBP443swgNRjA3CxatSZKtP6vacErIbClMSCmTA== - dependencies: - array-includes "^3.0.3" - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -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= +temp-write@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-2.1.0.tgz#59890918e0ef09d548aaa342f4bd3409d8404e96" + integrity sha1-WYkJGODvCdVIqqNC9L00CdhATpY= dependencies: graceful-fs "^4.1.2" - is-stream "^1.1.0" - make-dir "^1.0.0" - pify "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.0.1" + mkdirp "^0.5.0" + os-tmpdir "^1.0.0" + pify "^2.2.0" + pinkie-promise "^2.0.0" + uuid "^2.0.1" term-size@^1.2.0: version "1.2.0" @@ -13101,28 +11479,14 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -terser-webpack-plugin@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.2.3.tgz#3f98bc902fac3e5d0de730869f50668561262ec8" - integrity sha512-GOK7q85oAb/5kE12fMuLdn2btOS9OBZn4VsecpHDywoUC/jLhSAKOiYo0ezx7ss2EXPMzyEWFoE0s1WLE+4+oA== - dependencies: - cacache "^11.0.2" - find-cache-dir "^2.0.0" - schema-utils "^1.0.0" - serialize-javascript "^1.4.0" - source-map "^0.6.1" - terser "^3.16.1" - webpack-sources "^1.1.0" - worker-farm "^1.5.2" - -terser@^3.14.1, terser@^3.16.1: - version "3.17.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" - integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== +terser@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.1.tgz#cc4764014af570bc79c79742358bd46926018a32" + integrity sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw== dependencies: - commander "^2.19.0" + commander "~2.17.1" source-map "~0.6.1" - source-map-support "~0.5.10" + source-map-support "~0.5.6" test-exclude@^4.2.1: version "4.2.1" @@ -13135,16 +11499,6 @@ test-exclude@^4.2.1: read-pkg-up "^1.0.1" require-main-filename "^1.0.1" -test-exclude@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" - integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== - dependencies: - glob "^7.1.3" - minimatch "^3.0.4" - read-pkg-up "^4.0.0" - require-main-filename "^2.0.0" - text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -13173,7 +11527,7 @@ through2@^2.0.0: readable-stream "^2.1.5" xtend "~4.0.1" -through@^2.3.6: +through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -13183,6 +11537,11 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.0.2.tgz#a862e018e3fb1ea2ec3fce5d55605cf57f247371" integrity sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E= +time-stamp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" + integrity sha1-lcakRTDhW6jW9KPsuMOj+sRto1c= + timed-out@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -13279,7 +11638,6 @@ touch@^1.0.0: touch@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/touch/-/touch-2.0.2.tgz#ca0b2a3ae3211246a61b16ba9e6cbf1596287164" - integrity sha512-qjNtvsFXTRq7IuMLweVgFxmEuQ6gLbRs2jQxL80TtZ31dEKWYIxRXquij6w6VimyDek5hD3PytljHmEtAs2u0A== dependencies: nopt "~1.0.10" @@ -13302,10 +11660,10 @@ tree-kill@^1.1.0: resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.0.tgz#5846786237b4239014f05db156b643212d4c6f36" integrity sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg== -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-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-right@^1.0.1: version "1.0.1" @@ -13317,28 +11675,11 @@ trim@0.0.1: resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= -tslib@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" - integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= -tty-table@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-2.7.0.tgz#0e03b37435a040a9ed8f783a9bbc9a9660921e9f" - integrity sha512-IQzLfPbNRe7ELd3leSE5mtgjaPHrvOmeAmh+bbUyoZq5sWU8o8wpmaqCyAMAoIJSNXREX2EuWvOqM5jYTUnkTA== - dependencies: - chalk "^2.4.2" - csv "^4.0.0" - smartwrap "^1.0.11" - strip-ansi "^5.0.0" - wcwidth "^1.0.1" - yargs "^12.0.5" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -13363,7 +11704,12 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-is@~1.6.16: +type-detect@^4.0.3: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-is@~1.6.15, type-is@~1.6.16: version "1.6.16" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== @@ -13378,34 +11724,15 @@ typeable-promisify@^1.0.1: dependencies: any-promise "^1.3.0" -typeable-promisify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/typeable-promisify/-/typeable-promisify-2.0.1.tgz#1baee82abaf13280198eb11e98589c881a6bd80d" - integrity sha1-G67oKrrxMoAZjrEemFiciBpr2A0= - dependencies: - any-promise "^1.3.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typewise-core@^1.2, typewise-core@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" - integrity sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU= - -typewise@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" - integrity sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE= - dependencies: - typewise-core "^1.2.0" - -ua-parser-js@^0.7.18, ua-parser-js@^0.7.9: - version "0.7.19" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b" - integrity sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ== +ua-parser-js@^0.7.9: + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + integrity sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g== uglify-js@3.3.x: version "3.3.22" @@ -13415,13 +11742,34 @@ uglify-js@3.3.x: commander "~2.15.0" source-map "~0.6.1" -uglify-js@^3.1.4: - version "3.5.11" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.11.tgz#833442c0aa29b3a7d34344c7c63adaa3f3504f6a" - integrity sha512-izPJg8RsSyqxbdnqX36ExpbH3K7tDBsAU/VfNv89VkMFy3z39zFjunQGsSHOlGlyIfGLGprGeosgQno3bo2/Kg== +uglify-js@^2.6, uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= dependencies: - commander "~2.20.0" - source-map "~0.6.1" + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +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= + +uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" + integrity sha1-uVH0q7a9YX5m9j64kUmOORdj4wk= + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + +underscore@~1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" + integrity sha1-YaajIBBiKvoHljvzJSA88SI51gQ= unfetch@^3.0.0: version "3.0.0" @@ -13451,16 +11799,6 @@ unicode-property-aliases-ecmascript@^1.0.4: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== -union-value@^0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-0.2.4.tgz#7375152786679057e7b37aa676e83468fc0274f0" - integrity sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" @@ -13495,13 +11833,6 @@ unique-filename@^1.1.0: dependencies: unique-slug "^2.0.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.0" resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.0.tgz#db6676e7c7cc0629878ff196097c78855ae9f4ab" @@ -13544,11 +11875,6 @@ upath@^1.0.0, upath@^1.0.5: resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd" integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== -upath@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" - integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q== - update-notifier@^2.2.0: version "2.5.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" @@ -13589,12 +11915,20 @@ url-parse-lax@^1.0.0: dependencies: prepend-http "^1.0.1" -url-parse@^1.4.3: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== +url-parse@1.0.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b" + integrity sha1-CFSGBCKv3P7+tsllxmLUgAFpkns= + dependencies: + querystringify "0.0.x" + requires-port "1.0.x" + +url-parse@^1.1.8: + version "1.4.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.0.tgz#6bfdaad60098c7fe06f623e42b22de62de0d3d75" + integrity sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg== dependencies: - querystringify "^2.1.1" + querystringify "^2.0.0" requires-port "^1.0.0" url@0.11.0, url@^0.11.0: @@ -13612,12 +11946,12 @@ use@^3.1.0: dependencies: kind-of "^6.0.2" -util-deprecate@^1.0.1, util-deprecate@~1.0.1: +util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0, util.promisify@^1.0.0: +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== @@ -13647,21 +11981,16 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= +uuid@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" + integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= + uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" integrity sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA== -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== - -v8-compile-cache@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c" - integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw== - validate-npm-package-license@^3.0.1: version "3.0.3" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" @@ -13715,7 +12044,7 @@ w3c-hr-time@^1.0.1: dependencies: browser-process-hrtime "^0.1.2" -walker@^1.0.7, walker@~1.0.5: +walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= @@ -13729,7 +12058,15 @@ warning@^3.0.0: dependencies: loose-envify "^1.0.0" -watchpack@^1.5.0: +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" + +watchpack@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== @@ -13738,133 +12075,97 @@ watchpack@^1.5.0: graceful-fs "^4.1.2" neo-async "^2.5.0" -wbuf@^1.1.0, wbuf@^1.7.3: +wbuf@^1.1.0, wbuf@^1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== -webpack-cli@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.1.tgz#98b0499c7138ba9ece8898bd99c4f007db59909d" - integrity sha512-c2inFU7SM0IttEgF7fK6AaUsbBnORRzminvbyRKS+NlbQHVZdCtzKBlavRL5359bFsywXGRAItA5di/IruC8mg== - dependencies: - chalk "^2.4.1" - cross-spawn "^6.0.5" - enhanced-resolve "^4.1.0" - findup-sync "^2.0.0" - global-modules "^1.0.0" - import-local "^2.0.0" - interpret "^1.1.0" - loader-utils "^1.1.0" - supports-color "^5.5.0" - v8-compile-cache "^2.0.2" - yargs "^12.0.5" - -webpack-dev-middleware@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.6.2.tgz#f37a27ad7c09cd7dc67cd97655413abaa1f55942" - integrity sha512-A47I5SX60IkHrMmZUlB0ZKSWi29TZTcPz7cha1Z75yYOsgWh/1AcPmQEbC8ZIbU3A1ytSv1PMU0PyPz2Lmz2jg== +webpack-dev-middleware@1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e" + integrity sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A== dependencies: - memory-fs "^0.4.1" - mime "^2.3.1" + memory-fs "~0.4.1" + mime "^1.5.0" + path-is-absolute "^1.0.0" range-parser "^1.0.3" - webpack-log "^2.0.0" + time-stamp "^2.0.0" -webpack-dev-server@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.3.1.tgz#7046e49ded5c1255a82c5d942bcdda552b72a62d" - integrity sha512-jY09LikOyGZrxVTXK0mgIq9y2IhCoJ05848dKZqX1gAGLU1YDqgpOT71+W53JH/wI4v6ky4hm+KvSyW14JEs5A== +webpack-dev-server@^2.9.7: + version "2.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.11.2.tgz#1f4f4c78bf1895378f376815910812daf79a216f" + integrity sha512-zrPoX97bx47vZiAXfDrkw8pe9QjJ+lunQl3dypojyWwWr1M5I2h0VSrMPfTjopHQPRNn+NqfjcMmhoLcUJe2gA== dependencies: ansi-html "0.0.7" + array-includes "^3.0.3" bonjour "^3.5.0" - chokidar "^2.1.5" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.0" - express "^4.16.4" - html-entities "^1.2.1" - http-proxy-middleware "^0.19.1" - import-local "^2.0.0" - internal-ip "^4.2.0" + chokidar "^2.0.0" + compression "^1.5.2" + connect-history-api-fallback "^1.3.0" + debug "^3.1.0" + del "^3.0.0" + express "^4.16.2" + html-entities "^1.2.0" + http-proxy-middleware "~0.17.4" + import-local "^1.0.0" + internal-ip "1.2.0" ip "^1.1.5" - killable "^1.0.1" - loglevel "^1.6.1" - opn "^5.5.0" - portfinder "^1.0.20" - schema-utils "^1.0.0" - selfsigned "^1.10.4" - semver "^6.0.0" - serve-index "^1.9.1" + killable "^1.0.0" + loglevel "^1.4.1" + opn "^5.1.0" + portfinder "^1.0.9" + selfsigned "^1.9.1" + serve-index "^1.7.2" sockjs "0.3.19" - sockjs-client "1.3.0" - spdy "^4.0.0" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.6.2" - webpack-log "^2.0.0" - yargs "12.0.5" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" + sockjs-client "1.1.4" + spdy "^3.4.1" + strip-ansi "^3.0.0" + supports-color "^5.1.0" + webpack-dev-middleware "1.12.2" + yargs "6.6.0" -webpack-sources@^1.1.0, webpack-sources@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.3.0.tgz#2a28dcb9f1f45fe960d8f1493252b5ee6530fa85" - integrity sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA== +webpack-sources@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" + integrity sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw== dependencies: source-list-map "^2.0.0" source-map "~0.6.1" -webpack@^4.30.0: - version "4.30.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.30.0.tgz#aca76ef75630a22c49fcc235b39b4c57591d33a9" - integrity sha512-4hgvO2YbAFUhyTdlR4FNyt2+YaYBYHavyzjCMbZzgglo02rlKi/pcsEzwCuCpsn1ryzIl1cq/u8ArIKu8JBYMg== +webpack@^3.10.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894" + integrity sha512-3kOFejWqj5ISpJk4Qj/V7w98h9Vl52wak3CLiw/cDOfbVTq7FeoZ0SdoHHY9PYlHr50ZS42OfvzE2vB4nncKQg== dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.0.5" - acorn-dynamic-import "^4.0.0" + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" ajv "^6.1.0" ajv-keywords "^3.1.0" - chrome-trace-event "^1.0.0" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.0" - json-parse-better-errors "^1.0.2" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" loader-runner "^2.3.0" loader-utils "^1.1.0" memory-fs "~0.4.1" - micromatch "^3.1.8" mkdirp "~0.5.0" - neo-async "^2.5.0" node-libs-browser "^2.0.0" - schema-utils "^1.0.0" - tapable "^1.1.0" - terser-webpack-plugin "^1.1.0" - watchpack "^1.5.0" - webpack-sources "^1.3.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" websocket-driver@>=0.5.1: version "0.7.0" @@ -13887,9 +12188,9 @@ whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: iconv-lite "0.4.19" whatwg-fetch@>=0.10.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== whatwg-mimetype@^2.0.0, whatwg-mimetype@^2.1.0: version "2.1.0" @@ -13910,6 +12211,11 @@ whet.extend@~0.9.9: resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -13927,13 +12233,6 @@ which@1, which@^1.2.10, which@^1.2.12, which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" -which@^1.2.14: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" @@ -13948,6 +12247,16 @@ widest-line@^2.0.0: 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= + +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@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" @@ -13958,13 +12267,6 @@ wordwrap@~1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -worker-farm@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0" - integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ== - dependencies: - errno "~0.1.7" - wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -13978,16 +12280,7 @@ wrappy@1: 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" - 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.0.0, write-file-atomic@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA== @@ -14031,17 +12324,12 @@ xtend@^4.0.0, xtend@~4.0.1: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= -xxhash-wasm@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.3.1.tgz#2b8a7dbd9647d36a7eba8fd867cef08edab03394" - integrity sha512-amhCgCYQfhiQFvYjn6kvk4jmY1NXBn5MKdsS0jvxofmHFo77CBrXuV46NYeXACC3qTleugHYg7kNpeFnIA+R8Q== - 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: +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== @@ -14056,43 +12344,92 @@ yallist@^3.0.0, yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k= -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + integrity sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw= + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k= + 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" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= dependencies: camelcase "^4.1.0" -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== +yargs@6.6.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + integrity sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg= dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" -yargs@12.0.5, yargs@^12.0.2, yargs@^12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== +yargs@^11.0.0: + version "11.1.0" + 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.2.0" - find-up "^3.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 "^9.0.2" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A= + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" get-caller-file "^1.0.1" - os-locale "^3.0.0" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" require-directory "^2.1.1" require-main-filename "^1.0.1" set-blocking "^2.0.0" string-width "^2.0.0" which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" + y18n "^3.2.1" + yargs-parser "^7.0.0" -yarn@^1.9.4: - version "1.15.2" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.15.2.tgz#7a064ca81ca34235f16376ad2f796ed432f9e285" - integrity sha512-DhqaGe2FcYKduO42d2hByXk7y8k2k42H3uzYdWBMTvcNcgWKx7xCkJWsVAQikXvaEQN2GyJNrz8CboqUmaBRrw== +yargs@~3.10.0: + version "3.10.0" + 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" + decamelize "^1.0.0" + window-size "0.1.0" yauzl@2.4.1: version "2.4.1"