├── .circleci └── config.yml ├── .gitignore ├── .yarnrc ├── CHANGELOG.md ├── LICENSE ├── README.md ├── index.js ├── package.json └── yarn.lock /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # Javascript Node CircleCI 2.0 configuration file 2 | # 3 | # Check https://circleci.com/docs/2.0/language-javascript/ for more details 4 | # 5 | version: 2 6 | jobs: 7 | build: 8 | docker: 9 | # specify the version you desire here 10 | - image: circleci/node:9 11 | 12 | # Specify service dependencies here if necessary 13 | # CircleCI maintains a library of pre-built images 14 | # documented at https://circleci.com/docs/2.0/circleci-images/ 15 | # - image: circleci/mongo:3.4.4 16 | 17 | working_directory: ~/repo 18 | 19 | steps: 20 | - checkout 21 | 22 | # Download and cache dependencies 23 | - restore_cache: 24 | keys: 25 | - v1-dependencies-{{ .Branch }}-{{ checksum "yarn.lock" }} 26 | # fallback to using the latest cache if no exact match is found 27 | - v1-dependencies-{{ .Branch }}- 28 | - v1-dependencies- 29 | 30 | - run: yarn install 31 | 32 | - save_cache: 33 | paths: 34 | - node_modules 35 | key: v1-dependencies-{{ checksum "yarn.lock" }} 36 | 37 | # run tests! 38 | - run: yarn test 39 | 40 | deploy: 41 | docker: 42 | # specify the version you desire here 43 | - image: circleci/node:9 44 | steps: 45 | - checkout 46 | - run: 47 | name: Setup NPM 48 | command: echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc 49 | 50 | - run: 51 | name: Push to NPM 52 | command: npm publish 53 | 54 | workflows: 55 | version: 2 56 | build-and-deploy: 57 | jobs: 58 | - build: 59 | filters: 60 | tags: 61 | only: /.*/ 62 | - deploy: 63 | requires: 64 | - build 65 | filters: 66 | tags: 67 | only: /^v\d+\.\d+\.\d+$/ 68 | branches: 69 | ignore: /.*/ 70 | 71 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # dependencies 3 | node_modules 4 | 5 | # logs 6 | npm-debug.log 7 | 8 | 9 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | save-exact true 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 4 | 5 | 6 | ## [2.1.5](https://github.com/chabou/hyper-pane/compare/v2.1.4...v2.1.5) (2019-07-31) 7 | 8 | 9 | ### Bug Fixes 10 | 11 | * **dep:** bump lodash.merge from 4.6.0 to 4.6.2 ([#52](https://github.com/chabou/hyper-pane/issues/52)) ([5e33fe9](https://github.com/chabou/hyper-pane/commit/5e33fe9)) 12 | 13 | 14 | 15 | 16 | ## [2.1.4](https://github.com/chabou/hyper-pane/compare/v2.1.3...v2.1.4) (2019-01-27) 17 | 18 | 19 | ### Bug Fixes 20 | 21 | * **maximize:** fix invisible data in other panes ([7f0c766](https://github.com/chabou/hyper-pane/commit/7f0c766)), closes [#41](https://github.com/chabou/hyper-pane/issues/41) 22 | 23 | 24 | 25 | 26 | ## [2.1.3](https://github.com/chabou/hyper-pane/compare/v2.1.2...v2.1.3) (2018-06-03) 27 | 28 | 29 | ### Bug Fixes 30 | 31 | * onDecorated chain was broken ([#28](https://github.com/chabou/hyper-pane/issues/28)) ([f9c5387](https://github.com/chabou/hyper-pane/commit/f9c5387)) 32 | 33 | 34 | 35 | 36 | ## [2.1.2](https://github.com/chabou/hyper-pane/compare/v2.1.1...v2.1.2) (2018-05-23) 37 | 38 | 39 | ### Bug Fixes 40 | 41 | * **maximize:** fix unmaximize regression ([b0de17f](https://github.com/chabou/hyper-pane/commit/b0de17f)) 42 | 43 | 44 | 45 | 46 | ## [2.1.1](https://github.com/chabou/hyper-pane/compare/v2.1.0...v2.1.1) (2018-05-23) 47 | 48 | 49 | ### Bug Fixes 50 | 51 | * prevent maximize if there is only one pane ([965bb3b](https://github.com/chabou/hyper-pane/commit/965bb3b)), closes [#27](https://github.com/chabou/hyper-pane/issues/27) 52 | 53 | 54 | 55 | 56 | # [2.1.0](https://github.com/chabou/hyper-pane/compare/v2.0.0...v2.1.0) (2018-04-24) 57 | 58 | 59 | ### Features 60 | 61 | * dim inactive panes ([75aba86](https://github.com/chabou/hyper-pane/commit/75aba86)), closes [#24](https://github.com/chabou/hyper-pane/issues/24) 62 | 63 | 64 | 65 | 66 | ## [1.3.4](https://github.com/chabou/hyper-pane/compare/v1.3.3...v1.3.4) (2018-03-08) 67 | 68 | 69 | 70 | # Change Log 71 | 72 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. 73 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 CHaBou 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hyper-pane 2 | [![CI Status](https://circleci.com/gh/chabou/hyper-pane.svg?style=shield)](https://circleci.com/gh/chabou/hyper-pane) 3 | [![NPM version](https://badge.fury.io/js/hyper-pane.svg)](https://www.npmjs.com/package/hyper-pane) 4 | ![Downloads](https://img.shields.io/npm/dm/hyper-pane.svg?style=flat) 5 | [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) 6 | 7 | Extension for Hyper.app to enhance pane navigation. Navigate through panes with arrows, jump directly to a specific pane with digit, change focus on mouse hover or temporarily maximize a pane. 8 | 9 | Navigation with arrows: 10 | ![hyper-pane](https://cloud.githubusercontent.com/assets/4137761/22717106/844a9c5c-ed99-11e6-8e88-8c71a8cbbd5a.gif) 11 | 12 | 13 | Maximize pane: 14 | ![hyper-pane-maximize](https://cloud.githubusercontent.com/assets/4137761/24831980/a0f2e86a-1ca5-11e7-80f5-f6a986863546.gif) 15 | 16 | Inspired by https://github.com/iamstarkov/hyper-panes-iterm2-hotkeys 17 | 18 | ## Install 19 | 20 | To install, execute: 21 | ``` 22 | hyper i hyper-pane 23 | ``` 24 | 25 | Or edit `~/.hyper.js` manually and add `"hyper-pane"` to `plugins`: 26 | 27 | ``` 28 | plugins: [ 29 | "hyper-pane", 30 | ], 31 | ``` 32 | 33 | ## Configuration 34 | 35 | ### Default configuration: 36 | ``` js 37 | module.exports = { 38 | config: { 39 | // other configs... 40 | paneNavigation: { 41 | debug: false, 42 | hotkeys: { 43 | navigation: { 44 | up: 'ctrl+alt+up', 45 | down: 'ctrl+alt+down', 46 | left: 'ctrl+alt+left', 47 | right: 'ctrl+alt+right' 48 | }, 49 | jump_prefix: 'ctrl+alt', // completed with 1-9 digits 50 | permutation_modifier: 'shift', // Added to jump and navigation hotkeys for pane permutation 51 | maximize: 'meta+enter' 52 | }, 53 | showIndicators: true, // Show pane number 54 | indicatorPrefix: '^⌥', // Will be completed with pane number 55 | indicatorStyle: { // Added to indicator
56 | position: 'absolute', 57 | top: 0, 58 | left: 0, 59 | fontSize: '10px' 60 | }, 61 | focusOnMouseHover: false, 62 | inactivePaneOpacity: 0.6 // Set to 1 to disable inactive panes dimming 63 | } 64 | } 65 | //... 66 | }; 67 | ``` 68 | ### Supported keys 69 | For modifier keys you can use `shift`, `ctrl`, `alt`, or `meta`. You can substitute `option` for `alt` and `command` for `meta`. 70 | 71 | Other special keys are `backspace`, `tab`, `enter`, `return`, `capslock`, `esc`, `escape`, `space`, `pageup`, `pagedown`, `end`, `home`, `left`, `up`, `right`, `down`, `ins`, `del`, and `plus`. 72 | 73 | Any other key you should be able to reference by name like `a`, `/`, `$`, `*`, or `=`. 74 | 75 | **⚠ Warning**: Use `ctrl+alt` or `cmd+alt` modifier only with arrow and digit key. Otherwise, shortcut will not be detected by Hyper. 76 | 77 | ## Usage 78 | ### Navigation with arrows 79 | 80 | Use `ctrl+alt+` (or your configured hotkeys) to navigate to a neighbor pane. 81 | 82 | ### Jump with digit 83 | 84 | Use `ctrl+alt+<1-9>` (or your configured hotkeys) to jump directly to a numbered pane. 85 | Panes are ordered "first child descendent" and `9` is reserved to the last pane. 86 | 87 | Hotkey indicators are displayed on top left corner of each pane from 2 panes opened. 88 | You can change its content, its style or hide them completly. 89 | 90 | ### Pane permutation 91 | 92 | Adding `shift` key (or your configured key) to previous hotkeys cause a pane switching. 93 | 94 | ### Focus on mouse hover 95 | 96 | Set `config.paneNavigation.focusOnMouseHover` to `true` and focus will change when mouse cursor enters into an another pane. 97 | 98 | ### Maximize a pane 99 | 100 | You can temporarily maximize pane with `meta+enter` (or your configured key) and restore it with the same key. 101 | You can have one maximized pane per tab. 102 | 103 | ### Dim inactive panes 104 | 105 | By default, inactive panes are dimmed (opacity: 0.6). 106 | You can disable this by setting `inactivePaneOpacity` to `1`. 107 | 108 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const merge = require('lodash.merge'); 2 | 3 | const defaultConfig = { 4 | debug: false, 5 | hotkeys: { 6 | navigation: { 7 | up: 'ctrl+alt+up', 8 | down: 'ctrl+alt+down', 9 | left: 'ctrl+alt+left', 10 | right: 'ctrl+alt+right' 11 | }, 12 | jump_prefix: 'ctrl+alt', 13 | permutation_modifier: 'shift', 14 | maximize: 'cmd+enter' 15 | }, 16 | showIndicators: true, 17 | indicatorPrefix: '^⌥', 18 | indicatorStyle: { 19 | position: 'absolute', 20 | top: 0, 21 | left: 0, 22 | fontSize: '10px' 23 | }, 24 | focusOnMouseHover: false, 25 | inactivePaneOpacity: 0.8 26 | }; 27 | 28 | let config = defaultConfig; 29 | 30 | const debug = function() { 31 | if (config.debug) { 32 | [].unshift.call(arguments, '|HYPER-PANE|'); 33 | //eslint-disable-next-line no-console 34 | console.log.apply(this, arguments); 35 | } 36 | }; 37 | 38 | /** 39 | * Duplicate Hyper code 40 | */ 41 | 42 | const SESSION_SET_ACTIVE = 'SESSION_SET_ACTIVE'; 43 | const SESSION_ADD = 'SESSION_ADD'; 44 | const TERM_GROUP_RESIZE = 'TERM_GROUP_RESIZE'; 45 | const TERM_GROUP_EXIT = 'TERM_GROUP_EXIT'; 46 | const DIRECTION = { 47 | HORIZONTAL: 'HORIZONTAL', 48 | VERTICAL: 'VERTICAL' 49 | }; 50 | 51 | function getRootGroups(termGroups) { 52 | return Object.keys(termGroups) 53 | .map(uid => termGroups[uid]) 54 | .filter(({parentUid}) => !parentUid); 55 | } 56 | 57 | // Find all sessions that are below the given 58 | // termGroup uid in the hierarchy: 59 | function findChildSessions(termGroups, uid) { 60 | const group = termGroups[uid]; 61 | if (group.sessionUid) { 62 | return [uid]; 63 | } 64 | 65 | return group.children.reduce((total, childUid) => total.concat(findChildSessions(termGroups, childUid)), []); 66 | } 67 | 68 | const setActiveSession = (uid, focusPoint) => { 69 | return dispatch => { 70 | dispatch({ 71 | type: SESSION_SET_ACTIVE, 72 | uid, 73 | focusPoint 74 | }); 75 | }; 76 | }; 77 | 78 | function findBySession(termGroupState, sessionUid) { 79 | const {termGroups} = termGroupState; 80 | return Object.keys(termGroups) 81 | .map(uid => termGroups[uid]) 82 | .find(group => group.sessionUid === sessionUid); 83 | } 84 | 85 | /** 86 | * Plugin Code 87 | */ 88 | // Action types 89 | const UI_MOVE_TO_PANE = 'UI_MOVE_TO_PANE'; 90 | const UI_MOVE_UP_PANE = 'UI_MOVE_UP_PANE'; 91 | const UI_MOVE_DOWN_PANE = 'UI_MOVE_DOWN_PANE'; 92 | const UI_MOVE_LEFT_PANE = 'UI_MOVE_LEFT_PANE'; 93 | const UI_MOVE_RIGHT_PANE = 'UI_MOVE_RIGHT_PANE'; 94 | const UI_SWITCH_SESSIONS = 'UI_SWITCH_SESSIONS'; 95 | 96 | const navigationActionMap = { 97 | up: UI_MOVE_UP_PANE, 98 | down: UI_MOVE_DOWN_PANE, 99 | left: UI_MOVE_LEFT_PANE, 100 | right: UI_MOVE_RIGHT_PANE 101 | }; 102 | 103 | // Others 104 | const ROOT_FRAME = { 105 | x: 0, 106 | y: 0, 107 | w: 1, 108 | h: 1 109 | }; 110 | 111 | const hiddenTerms = {}; 112 | 113 | // For each rootGroup, it sorts its children 114 | function getSortedSessionGroups(termGroups) { 115 | return getRootGroups(termGroups).reduce( 116 | (result, {uid}) => Object.assign(result, {[uid]: findChildSessions(termGroups, uid)}), 117 | {} 118 | ); 119 | } 120 | 121 | const onMoveToPane = dispatch => (index, doSwitch) => { 122 | dispatch((dispatch_, getState) => { 123 | dispatch_({ 124 | type: UI_MOVE_TO_PANE, 125 | index, 126 | effect() { 127 | const {sessions, termGroups} = getState(); 128 | const rootGroupUid = termGroups.activeRootGroup; 129 | const sortedSessionGroups = findChildSessions(termGroups.termGroups, rootGroupUid); 130 | const uid = 131 | index > sortedSessionGroups.length 132 | ? null 133 | : index === 9 ? sortedSessionGroups[sortedSessionGroups.length - 1] : sortedSessionGroups[index - 1]; 134 | if (uid === null) { 135 | debug('ignoring inexistent index', index); 136 | return; 137 | } 138 | const nextSessionUid = termGroups.termGroups[uid].sessionUid; 139 | if (sessions.activeUid === nextSessionUid) { 140 | debug('ignoring same uid'); 141 | } else { 142 | if (doSwitch) { 143 | const activeSessionUid = sessions.activeUid; 144 | dispatch_({ 145 | type: UI_SWITCH_SESSIONS, 146 | from: activeSessionUid, 147 | to: nextSessionUid 148 | }); 149 | } else { 150 | dispatch_(setActiveSession(nextSessionUid)); 151 | } 152 | } 153 | } 154 | }); 155 | }); 156 | }; 157 | 158 | const onMoveToDirectionPane = dispatch => (type, doSwitch) => { 159 | dispatch((dispatch_, getState) => { 160 | dispatch_({ 161 | type, 162 | effect() { 163 | const {sessions, termGroups, ui} = getState(); 164 | const termGroup = findBySession(termGroups, sessions.activeUid); 165 | debug('Move Pane', type, termGroup.uid); 166 | const focusPoint = 167 | ui.paneNavigation && ui.paneNavigation.focusPoint 168 | ? ui.paneNavigation.focusPoint.asMutable() 169 | : { 170 | x: termGroup.frame.x + termGroup.frame.w / 2, 171 | y: termGroup.frame.y + termGroup.frame.h / 2 172 | }; 173 | 174 | const isHorzontal = type === UI_MOVE_RIGHT_PANE || type === UI_MOVE_LEFT_PANE; 175 | const coord = isHorzontal ? 'x' : 'y'; 176 | const dimension = isHorzontal ? 'w' : 'h'; 177 | const focusPointCoord = isHorzontal ? 'y' : 'x'; 178 | const focusPointDimension = isHorzontal ? 'h' : 'w'; 179 | const invert = type === UI_MOVE_LEFT_PANE || type === UI_MOVE_UP_PANE; 180 | 181 | const rootGroupUid = termGroups.activeRootGroup; 182 | const sortedSessionGroups = findChildSessions(termGroups.termGroups, rootGroupUid); 183 | const nextTermGroup = sortedSessionGroups.map(uid => termGroups.termGroups[uid]).find(candidate => { 184 | if (!candidate.sessionUid) { 185 | return false; 186 | } 187 | //debug('Testing candidate', candidate); 188 | const first = invert ? candidate : termGroup; 189 | const second = invert ? termGroup : candidate; 190 | //debug(first.frame[coord], '+', first.frame[dimension], '-', second.frame[coord]); 191 | return ( 192 | first.frame[coord] + first.frame[dimension] - second.frame[coord] < Number.EPSILON && 193 | first.frame[coord] + first.frame[dimension] - second.frame[coord] > -Number.EPSILON && 194 | focusPoint[focusPointCoord] >= candidate.frame[focusPointCoord] && 195 | focusPoint[focusPointCoord] <= candidate.frame[focusPointCoord] + candidate.frame[focusPointDimension] 196 | ); 197 | }); 198 | 199 | debug('nextTermGroup', nextTermGroup); 200 | if (nextTermGroup) { 201 | if (doSwitch) { 202 | const activeSessionUid = sessions.activeUid; 203 | dispatch_({ 204 | type: UI_SWITCH_SESSIONS, 205 | from: activeSessionUid, 206 | to: nextTermGroup.sessionUid 207 | }); 208 | } else { 209 | focusPoint[coord] = nextTermGroup.frame[coord] + nextTermGroup.frame[dimension] / 2; 210 | // If next Pane border is included in current pane border, we can move opposite focusPoint coord accordly 211 | if ( 212 | nextTermGroup.frame[focusPointCoord] > termGroup.frame[focusPointCoord] && 213 | nextTermGroup.frame[focusPointDimension] < termGroup.frame[focusPointDimension] 214 | ) { 215 | focusPoint[focusPointCoord] = 216 | nextTermGroup.frame[focusPointCoord] + nextTermGroup.frame[focusPointDimension] / 2; 217 | } 218 | dispatch_(setActiveSession(nextTermGroup.sessionUid, focusPoint)); 219 | } 220 | } 221 | } 222 | }); 223 | }); 224 | }; 225 | 226 | const updateChildrenFrames = (state, groupUid) => { 227 | debug('updateChildrenFrames: call on', groupUid); 228 | if (!groupUid) { 229 | debug('WARNING: undefined groupUid'); 230 | return state; 231 | } 232 | const group = state.termGroups[groupUid]; 233 | if (!group) { 234 | debug('WARNING: undefined group for groupUid', groupUid); 235 | return state; 236 | } 237 | 238 | if (group.sessionUid && group.parentUid) { 239 | debug('updateChildrenFrames: sessionUid found, skipping', group.sessionUid); 240 | return state; 241 | } 242 | if (group.children.length === 0) { 243 | debug('updateChildrenFrames: no children found, skipping', group.sessionUid); 244 | if (!group.parentUid) { 245 | state = state.setIn(['termGroups', group.uid, 'frame'], ROOT_FRAME); 246 | } 247 | return state; 248 | } 249 | const originProp = group.direction === DIRECTION.HORIZONTAL ? 'y' : 'x'; 250 | const sizeProp = group.direction === DIRECTION.HORIZONTAL ? 'h' : 'w'; 251 | 252 | let currentOrigin = group.frame[originProp]; 253 | for (let i = 0; i < group.children.length; i++) { 254 | debug('dealing child', group.children[i]); 255 | const child = state.termGroups[group.children[i]]; 256 | const size = group.frame[sizeProp] * (group.sizes ? group.sizes[i] : 1 / group.children.length); 257 | debug('Setting frame for', child, currentOrigin, size); 258 | const frame = group.frame.asMutable(); 259 | frame[originProp] = currentOrigin; 260 | frame[sizeProp] = size; 261 | 262 | state = state.setIn(['termGroups', child.uid, 'frame'], frame); 263 | 264 | state = updateChildrenFrames(state, child.uid); 265 | 266 | currentOrigin += size; 267 | } 268 | 269 | return state; 270 | }; 271 | 272 | const onMaximizePane = dispatch => () => { 273 | debug('onMaximizePane'); 274 | dispatch((dispatch_, getState) => { 275 | const {sessions, termGroups} = getState(); 276 | const termGroup = findBySession(termGroups, sessions.activeUid); 277 | if (!termGroup) { 278 | debug('No termGroup found for active Session'); 279 | return; 280 | } 281 | dispatch_({ 282 | type: 'UI_MAXIMIZE_PANE', 283 | uid: termGroup.uid 284 | }); 285 | }); 286 | }; 287 | 288 | /** 289 | * Plugin bindings 290 | */ 291 | 292 | exports.decorateConfig = mainConfig => { 293 | if (mainConfig.paneNavigation) { 294 | config = merge(JSON.parse(JSON.stringify(defaultConfig)), mainConfig.paneNavigation); 295 | } 296 | if (config.inactivePaneOpacity < 1) { 297 | mainConfig.css += ` 298 | .term_fit:not(.term_term):not(.term_wrapper):not(.term_active) { 299 | opacity: ${config.inactivePaneOpacity}; 300 | } 301 | .term_fit.term_active { 302 | opacity: 1; 303 | transition: opacity 0.06s ease-in-out; 304 | will-change: opacity; 305 | } 306 | `; 307 | } 308 | debug('Decorated config', mainConfig); 309 | return mainConfig; 310 | }; 311 | 312 | exports.middleware = store => next => action => { 313 | switch (action.type) { 314 | case 'CONFIG_LOAD': 315 | case 'CONFIG_RELOAD': 316 | if (action.config.paneNavigation) { 317 | config = merge(JSON.parse(JSON.stringify(defaultConfig)), action.config.paneNavigation); 318 | } 319 | break; 320 | case 'SESSION_ADD': 321 | { 322 | const {termGroups} = store.getState(); 323 | if (termGroups.maximizeSave && termGroups.maximizeSave[termGroups.activeRootGroup]) { 324 | // Current Pane is maximized, restore it before adding a potential split 325 | store.dispatch({ 326 | type: 'UI_MAXIMIZE_PANE', 327 | uid: termGroups.activeRootGroup 328 | }); 329 | } 330 | } 331 | break; 332 | case 'SESSION_PTY_DATA': { 333 | // Hyper doesn't send data if Term is unmounted 334 | const term = hiddenTerms[action.uid]; 335 | if (term) { 336 | term.write(action.data); 337 | } 338 | break; 339 | } 340 | } 341 | return next(action); 342 | }; 343 | 344 | exports.reduceTermGroups = (state, action) => { 345 | switch (action.type) { 346 | case 'UI_MAXIMIZE_PANE': 347 | { 348 | if (!state.maximizeSave || !state.maximizeSave[action.uid]) { 349 | // Maximize 350 | debug('Maximizing', action.uid); 351 | const {parentUid, sessionUid} = state.termGroups[action.uid]; 352 | if (!parentUid) { 353 | debug('No parent for this session, maximize discarded'); 354 | break; 355 | } 356 | state = state.setIn(['maximizeSave', action.uid], { 357 | activeRootGroup: state.activeRootGroup, 358 | parentUid, 359 | sessionUid 360 | }); 361 | state = state.setIn(['termGroups', action.uid, 'parentUid'], null); 362 | state = state.setIn(['termGroups', state.activeRootGroup, 'parentUid'], 'fakeParent'); // fake parentUid to prevent getRootGroups selector to include it 363 | state = state.setIn(['activeSessions', action.uid], sessionUid); 364 | state = state.set('activeSessions', state.activeSessions.without(state.activeRootGroup)); 365 | state = state.set('activeRootGroup', action.uid); 366 | } else { 367 | // Restore 368 | debug('Restoring', action.uid); 369 | const {activeRootGroup, parentUid, sessionUid} = state.maximizeSave[action.uid]; 370 | state = state.setIn(['termGroups', action.uid, 'parentUid'], parentUid); 371 | state = state.setIn(['termGroups', activeRootGroup, 'parentUid'], null); 372 | state = state.setIn(['activeSessions', activeRootGroup], sessionUid); 373 | state = state.set('activeSessions', state.activeSessions.without(action.uid)); 374 | state = state.set('activeRootGroup', activeRootGroup); 375 | state = state.set('maximizeSave', state.maximizeSave.without(action.uid)); 376 | } 377 | } 378 | break; 379 | case 'UI_SWITCH_SESSIONS': { 380 | const fromTermGroupUid = findBySession(state, action.from).uid; 381 | const toTermGroupUid = findBySession(state, action.to).uid; 382 | if (!fromTermGroupUid || !toTermGroupUid) { 383 | return state; 384 | } 385 | debug('Switching sessions for termGroups', fromTermGroupUid, toTermGroupUid); 386 | state = state 387 | .setIn(['termGroups', fromTermGroupUid, 'sessionUid'], action.to) 388 | .setIn(['termGroups', toTermGroupUid, 'sessionUid'], action.from); 389 | break; 390 | } 391 | case SESSION_ADD: 392 | if (!state.activeRootGroup) { 393 | break; 394 | } 395 | state = updateChildrenFrames(state, state.activeRootGroup); 396 | break; 397 | case TERM_GROUP_RESIZE: 398 | case TERM_GROUP_EXIT: { 399 | if (!state.activeRootGroup) { 400 | break; 401 | } 402 | let rootGroupUid = state.activeRootGroup; 403 | if (!state.termGroups[rootGroupUid]) { 404 | // This should not happen but it's a protection: See https://github.com/chabou/hyper-pane/issues/3 405 | rootGroupUid = state.activeTermGroup; 406 | } 407 | state = updateChildrenFrames(state, rootGroupUid); 408 | break; 409 | } 410 | } 411 | 412 | return state; 413 | }; 414 | 415 | exports.reduceUI = (state, action) => { 416 | switch (action.type) { 417 | case SESSION_SET_ACTIVE: 418 | state = state.setIn(['paneNavigation', 'focusPoint'], action.focusPoint); 419 | break; 420 | } 421 | return state; 422 | }; 423 | 424 | exports.mapTermsState = (state, map) => { 425 | const sortedSessionGroups = getSortedSessionGroups(state.termGroups.termGroups); 426 | const maximizedTermGroups = state.termGroups.maximizeSave; 427 | return Object.assign({}, map, {sortedSessionGroups, maximizedTermGroups}); 428 | }; 429 | 430 | exports.getTermGroupProps = (uid, parentProps, props) => { 431 | const {sortedSessionGroups, activeRootGroup, maximizedTermGroups} = parentProps; 432 | if (sortedSessionGroups[activeRootGroup]) { 433 | props = Object.assign(props, { 434 | sortedSessionGroups: sortedSessionGroups[activeRootGroup] 435 | }); 436 | } 437 | props = Object.assign(props, { 438 | isMaximized: !!(maximizedTermGroups && maximizedTermGroups[uid]) 439 | }); 440 | return props; 441 | }; 442 | 443 | exports.getTermProps = (uid, parentProps, props) => { 444 | const {termGroup, sortedSessionGroups, isMaximized} = parentProps; 445 | if (!sortedSessionGroups) { 446 | return props; 447 | } 448 | const index = sortedSessionGroups.indexOf(termGroup.uid); 449 | // Only 1-9 keys are used and if there is more than 9 terms, number 9 is reserved to the last term 450 | let termShorcutNum = 0; 451 | if (sortedSessionGroups.length === 1) { 452 | termShorcutNum = 0; 453 | } else if (index < 8) { 454 | termShorcutNum = index + 1; 455 | } else if (index === sortedSessionGroups.length - 1) { 456 | termShorcutNum = 9; 457 | } 458 | 459 | //debug('Setting Shortcutnum', termShorcutNum, 'to Term', uid); 460 | return Object.assign({}, props, {termShorcutNum, isMaximized}); 461 | }; 462 | 463 | exports.mapTermsDispatch = (dispatch, map) => { 464 | map.onMoveToPane = onMoveToPane(dispatch); 465 | //map.onSwitchWithActiveSession = onSwitchWithActiveSession(dispatch); 466 | map.onMoveToDirectionPane = onMoveToDirectionPane(dispatch); 467 | map.onMaximizePane = onMaximizePane(dispatch); 468 | return map; 469 | }; 470 | 471 | exports.decorateKeymaps = keymaps => { 472 | const keys = {}; 473 | const jump_prefix = config.hotkeys.jump_prefix ? config.hotkeys.jump_prefix.toLowerCase() : ''; 474 | const permutation_modifier = config.hotkeys.permutation_modifier 475 | ? config.hotkeys.permutation_modifier.toLowerCase() 476 | : ''; 477 | let shortcut; 478 | let name; 479 | 480 | if (jump_prefix && jump_prefix.length) { 481 | ['1', '2', '3', '4', '5', '6', '7', '8', '9'].forEach(num => { 482 | shortcut = `${jump_prefix}+${num}`; 483 | name = `pane:move_${num}`; 484 | keys[name] = shortcut; 485 | if (permutation_modifier && permutation_modifier.length) { 486 | shortcut = `${permutation_modifier}+${shortcut}`; 487 | name = `pane:switch_${num}`; 488 | keys[name] = shortcut; 489 | } 490 | }); 491 | } 492 | 493 | Object.keys(config.hotkeys.navigation).forEach(direction => { 494 | const key = config.hotkeys.navigation[direction].toLowerCase(); 495 | const actionType = navigationActionMap[direction]; 496 | 497 | if (key && key.length && actionType && actionType.length) { 498 | shortcut = key; 499 | name = `pane:move_${direction}`; 500 | keys[name] = shortcut; 501 | if (permutation_modifier && permutation_modifier.length) { 502 | shortcut = `${permutation_modifier}+${key}`; 503 | name = `pane:switch_${direction}`; 504 | keys[name] = shortcut; 505 | } 506 | } 507 | }); 508 | 509 | const maximize = config.hotkeys.maximize ? config.hotkeys.maximize.toLowerCase() : ''; 510 | if (maximize.length) { 511 | shortcut = maximize; 512 | name = 'pane:maximize'; 513 | keys[name] = shortcut; 514 | } 515 | 516 | debug('Extend keymaps with', keys); 517 | return Object.assign({}, keymaps, keys); 518 | }; 519 | 520 | exports.decorateTerms = (Terms, {React}) => { 521 | return class extends React.Component { 522 | constructor(props, context) { 523 | super(props, context); 524 | this.handleFocusActive = this.handleFocusActive.bind(this); 525 | this.onDecorated = this.onDecorated.bind(this); 526 | } 527 | 528 | handleFocusActive() { 529 | if (!this.terms.getActiveTerm) { 530 | return; 531 | } 532 | const term = this.terms.getActiveTerm(); 533 | if (term) { 534 | term.focus(); 535 | } 536 | } 537 | 538 | generateCommands() { 539 | let name; 540 | let handler; 541 | let commands = ['1', '2', '3', '4', '5', '6', '7', '8', '9'].reduce((commands_, num) => { 542 | name = `pane:move_${num}`; 543 | handler = e => { 544 | this.props.onMoveToPane(num); 545 | e.preventDefault(); 546 | }; 547 | commands_[name] = handler; 548 | 549 | name = `pane:switch_${num}`; 550 | handler = e => { 551 | this.props.onMoveToPane(num, true); 552 | e.preventDefault(); 553 | }; 554 | commands_[name] = handler; 555 | 556 | return commands_; 557 | }, {}); 558 | 559 | commands = Object.keys(navigationActionMap).reduce((commands_, direction) => { 560 | const actionType = navigationActionMap[direction]; 561 | name = `pane:move_${direction}`; 562 | handler = e => { 563 | this.props.onMoveToDirectionPane(actionType); 564 | e.preventDefault(); 565 | }; 566 | commands_[name] = handler; 567 | 568 | name = `pane:switch_${direction}`; 569 | handler = e => { 570 | this.props.onMoveToDirectionPane(actionType, true); 571 | e.preventDefault(); 572 | }; 573 | commands_[name] = handler; 574 | 575 | return commands_; 576 | }, commands); 577 | 578 | name = 'pane:maximize'; 579 | handler = e => { 580 | this.props.onMaximizePane(); 581 | this.handleFocusActive(); 582 | e.preventDefault(); 583 | }; 584 | commands[name] = handler; 585 | 586 | return commands; 587 | } 588 | 589 | onDecorated(terms) { 590 | debug('onDecorated', terms); 591 | this.terms = terms; 592 | if (this.props.onDecorated) { 593 | this.props.onDecorated(terms); 594 | } 595 | if (this.terms) { 596 | this.terms.registerCommands(this.generateCommands()); 597 | } 598 | } 599 | 600 | render() { 601 | return React.createElement( 602 | Terms, 603 | Object.assign({}, this.props, { 604 | onDecorated: this.onDecorated 605 | }) 606 | ); 607 | } 608 | }; 609 | }; 610 | 611 | exports.decorateTerm = (Term, {React}) => { 612 | return class extends React.Component { 613 | constructor(props, context) { 614 | super(props, context); 615 | this.onDecorated = this.onDecorated.bind(this); 616 | this.onMouseEnter = this.onMouseEnter.bind(this); 617 | } 618 | 619 | onMouseEnter() { 620 | debug('Mouse is hover Term', this.term); 621 | if (config.focusOnMouseHover && !this.term.props.isTermActive) { 622 | this.term.props.onActive(this.term.props.uid); 623 | } 624 | } 625 | 626 | onDecorated(term) { 627 | debug('Keep term ref'); 628 | this.term = term; 629 | if (this.term && this.term.termRef) { 630 | this.term.termRef.onmouseenter = this.onMouseEnter; 631 | } else if (this.term && this.term.getTermDocument) { 632 | // Backward compatibility 633 | const doc = this.term.getTermDocument(); 634 | if (doc && doc.body) { 635 | doc.body.onmouseenter = this.onMouseEnter; 636 | } 637 | } 638 | if (this.props.onDecorated) { 639 | this.props.onDecorated(term); 640 | } 641 | } 642 | 643 | componentWillUnmount() { 644 | // Keep reference to hidden terms to write PTY data. 645 | // Hyper doesn't send them if Term is unmounted 646 | hiddenTerms[this.props.uid] = this.term.term; 647 | } 648 | componentDidMount() { 649 | hiddenTerms[this.props.uid] = null; 650 | } 651 | 652 | render() { 653 | const props = { 654 | onDecorated: this.onDecorated 655 | }; 656 | 657 | //return toto.titi; 658 | let indicator; 659 | if (config.showIndicators) { 660 | if (this.props.isMaximized) { 661 | indicator = '🗖'; 662 | } else if (this.props.termShorcutNum > 0) { 663 | indicator = config.indicatorPrefix + this.props.termShorcutNum; 664 | } 665 | } 666 | 667 | if (!indicator) { 668 | return React.createElement(Term, Object.assign({}, this.props, props)); 669 | } 670 | const myCustomChildrenBefore = React.createElement( 671 | 'div', 672 | { 673 | key: 'pane', 674 | style: config.indicatorStyle 675 | }, 676 | indicator 677 | ); 678 | const customChildrenBefore = this.props.customChildrenBefore 679 | ? Array(this.props.customChildrenBefore).concat(myCustomChildrenBefore) 680 | : myCustomChildrenBefore; 681 | props.customChildrenBefore = customChildrenBefore; 682 | return React.createElement(Term, Object.assign({}, this.props, props)); 683 | } 684 | }; 685 | }; 686 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hyper-pane", 3 | "version": "2.1.5", 4 | "description": "Extension for Hyper.app to enhance pane navigation. Navigate through panes with arrows, jump directly to a specific pane with digit, change focus on mouse hover or temporarily maximize a pane.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "eslint .", 8 | "release": "yarn run test && standard-version" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/chabou/hyper-pane.git" 13 | }, 14 | "keywords": [ 15 | "hyper", 16 | "hyper-plugin", 17 | "hyper.app", 18 | "hyperterm", 19 | "pane", 20 | "navigation", 21 | "plugin" 22 | ], 23 | "plugin": { 24 | "preview": "https://cloud.githubusercontent.com/assets/4137761/22717106/844a9c5c-ed99-11e6-8e88-8c71a8cbbd5a.gif" 25 | }, 26 | "author": "CHaBou", 27 | "license": "MIT", 28 | "bugs": { 29 | "url": "https://github.com/chabou/hyper-pane/issues" 30 | }, 31 | "homepage": "https://github.com/chabou/hyper-pane#readme", 32 | "eslintConfig": { 33 | "plugins": [ 34 | "react", 35 | "prettier" 36 | ], 37 | "extends": [ 38 | "eslint:recommended", 39 | "plugin:react/recommended", 40 | "prettier" 41 | ], 42 | "parserOptions": { 43 | "ecmaVersion": 8, 44 | "sourceType": "module", 45 | "ecmaFeatures": { 46 | "jsx": true, 47 | "impliedStrict": true, 48 | "experimentalObjectRestSpread": true 49 | }, 50 | "allowImportExportEverywhere": true 51 | }, 52 | "env": { 53 | "es6": true, 54 | "browser": true, 55 | "node": true 56 | }, 57 | "rules": { 58 | "func-names": [ 59 | "error", 60 | "as-needed" 61 | ], 62 | "no-shadow": "error", 63 | "no-extra-semi": 0, 64 | "react/prop-types": 0, 65 | "react/react-in-jsx-scope": 0, 66 | "react/no-unescaped-entities": 0, 67 | "react/jsx-no-target-blank": 0, 68 | "react/no-string-refs": 0, 69 | "prettier/prettier": [ 70 | "error", 71 | { 72 | "printWidth": 120, 73 | "tabWidth": 2, 74 | "singleQuote": true, 75 | "trailingComma": "none", 76 | "bracketSpacing": false, 77 | "semi": true, 78 | "useTabs": false, 79 | "parser": "babylon", 80 | "jsxBracketSameLine": false 81 | } 82 | ] 83 | } 84 | }, 85 | "dependencies": { 86 | "lodash.merge": "^4.6.0" 87 | }, 88 | "devDependencies": { 89 | "eslint": "4.18.2", 90 | "eslint-config-prettier": "2.7.0", 91 | "eslint-plugin-prettier": "2.3.1", 92 | "eslint-plugin-react": "7.4.0", 93 | "prettier": "1.7.4", 94 | "standard-version": "4.3.0" 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | JSONStream@^1.0.4: 6 | version "1.3.2" 7 | resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" 8 | dependencies: 9 | jsonparse "^1.2.0" 10 | through ">=2.2.7 <3" 11 | 12 | acorn-jsx@^3.0.0: 13 | version "3.0.1" 14 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 15 | dependencies: 16 | acorn "^3.0.4" 17 | 18 | acorn@^3.0.4: 19 | version "3.3.0" 20 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 21 | 22 | acorn@^5.5.0: 23 | version "5.7.3" 24 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" 25 | 26 | ajv-keywords@^2.1.0: 27 | version "2.1.1" 28 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" 29 | 30 | ajv@^5.2.3, ajv@^5.3.0: 31 | version "5.5.2" 32 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" 33 | dependencies: 34 | co "^4.6.0" 35 | fast-deep-equal "^1.0.0" 36 | fast-json-stable-stringify "^2.0.0" 37 | json-schema-traverse "^0.3.0" 38 | 39 | ansi-escapes@^3.0.0: 40 | version "3.0.0" 41 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" 42 | 43 | ansi-regex@^2.0.0: 44 | version "2.1.1" 45 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 46 | 47 | ansi-regex@^3.0.0: 48 | version "3.0.0" 49 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 50 | 51 | ansi-styles@^2.2.1: 52 | version "2.2.1" 53 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 54 | 55 | ansi-styles@^3.1.0: 56 | version "3.2.0" 57 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 58 | dependencies: 59 | color-convert "^1.9.0" 60 | 61 | argparse@^1.0.7: 62 | version "1.0.10" 63 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 64 | dependencies: 65 | sprintf-js "~1.0.2" 66 | 67 | array-find-index@^1.0.1: 68 | version "1.0.2" 69 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" 70 | 71 | array-ify@^1.0.0: 72 | version "1.0.0" 73 | resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" 74 | 75 | array-includes@^3.0.3: 76 | version "3.0.3" 77 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" 78 | dependencies: 79 | define-properties "^1.1.2" 80 | es-abstract "^1.7.0" 81 | 82 | array-union@^1.0.1: 83 | version "1.0.2" 84 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 85 | dependencies: 86 | array-uniq "^1.0.1" 87 | 88 | array-uniq@^1.0.1: 89 | version "1.0.3" 90 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 91 | 92 | arrify@^1.0.0, arrify@^1.0.1: 93 | version "1.0.1" 94 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 95 | 96 | asap@~2.0.3: 97 | version "2.0.6" 98 | resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" 99 | 100 | babel-code-frame@^6.22.0: 101 | version "6.26.0" 102 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" 103 | dependencies: 104 | chalk "^1.1.3" 105 | esutils "^2.0.2" 106 | js-tokens "^3.0.2" 107 | 108 | balanced-match@^1.0.0: 109 | version "1.0.0" 110 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 111 | 112 | brace-expansion@^1.1.7: 113 | version "1.1.8" 114 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 115 | dependencies: 116 | balanced-match "^1.0.0" 117 | concat-map "0.0.1" 118 | 119 | buffer-from@^1.0.0: 120 | version "1.0.0" 121 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" 122 | 123 | builtin-modules@^1.0.0: 124 | version "1.1.1" 125 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 126 | 127 | caller-path@^0.1.0: 128 | version "0.1.0" 129 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 130 | dependencies: 131 | callsites "^0.2.0" 132 | 133 | callsites@^0.2.0: 134 | version "0.2.0" 135 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 136 | 137 | camelcase-keys@^2.0.0: 138 | version "2.1.0" 139 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" 140 | dependencies: 141 | camelcase "^2.0.0" 142 | map-obj "^1.0.0" 143 | 144 | camelcase-keys@^4.0.0: 145 | version "4.2.0" 146 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" 147 | dependencies: 148 | camelcase "^4.1.0" 149 | map-obj "^2.0.0" 150 | quick-lru "^1.0.0" 151 | 152 | camelcase@^2.0.0: 153 | version "2.1.1" 154 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" 155 | 156 | camelcase@^4.1.0: 157 | version "4.1.0" 158 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" 159 | 160 | chalk@^1.1.3: 161 | version "1.1.3" 162 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 163 | dependencies: 164 | ansi-styles "^2.2.1" 165 | escape-string-regexp "^1.0.2" 166 | has-ansi "^2.0.0" 167 | strip-ansi "^3.0.0" 168 | supports-color "^2.0.0" 169 | 170 | chalk@^2.0.0, chalk@^2.1.0: 171 | version "2.3.0" 172 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" 173 | dependencies: 174 | ansi-styles "^3.1.0" 175 | escape-string-regexp "^1.0.5" 176 | supports-color "^4.0.0" 177 | 178 | circular-json@^0.3.1: 179 | version "0.3.3" 180 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" 181 | 182 | cli-cursor@^2.1.0: 183 | version "2.1.0" 184 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 185 | dependencies: 186 | restore-cursor "^2.0.0" 187 | 188 | cli-width@^2.0.0: 189 | version "2.2.0" 190 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" 191 | 192 | cliui@^3.2.0: 193 | version "3.2.0" 194 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 195 | dependencies: 196 | string-width "^1.0.1" 197 | strip-ansi "^3.0.1" 198 | wrap-ansi "^2.0.0" 199 | 200 | co@^4.6.0: 201 | version "4.6.0" 202 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 203 | 204 | code-point-at@^1.0.0: 205 | version "1.1.0" 206 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 207 | 208 | color-convert@^1.9.0: 209 | version "1.9.0" 210 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" 211 | dependencies: 212 | color-name "^1.1.1" 213 | 214 | color-name@^1.1.1: 215 | version "1.1.3" 216 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 217 | 218 | commander@~2.20.0: 219 | version "2.20.0" 220 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" 221 | 222 | compare-func@^1.3.1: 223 | version "1.3.2" 224 | resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" 225 | dependencies: 226 | array-ify "^1.0.0" 227 | dot-prop "^3.0.0" 228 | 229 | concat-map@0.0.1: 230 | version "0.0.1" 231 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 232 | 233 | concat-stream@^1.4.10, concat-stream@^1.6.0: 234 | version "1.6.2" 235 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" 236 | dependencies: 237 | buffer-from "^1.0.0" 238 | inherits "^2.0.3" 239 | readable-stream "^2.2.2" 240 | typedarray "^0.0.6" 241 | 242 | conventional-changelog-angular@^1.6.6: 243 | version "1.6.6" 244 | resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" 245 | dependencies: 246 | compare-func "^1.3.1" 247 | q "^1.5.1" 248 | 249 | conventional-changelog-atom@^0.2.8: 250 | version "0.2.8" 251 | resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz#8037693455990e3256f297320a45fa47ee553a14" 252 | dependencies: 253 | q "^1.5.1" 254 | 255 | conventional-changelog-codemirror@^0.3.8: 256 | version "0.3.8" 257 | resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47" 258 | dependencies: 259 | q "^1.5.1" 260 | 261 | conventional-changelog-core@^2.0.11: 262 | version "2.0.11" 263 | resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz#19b5fbd55a9697773ed6661f4e32030ed7e30287" 264 | dependencies: 265 | conventional-changelog-writer "^3.0.9" 266 | conventional-commits-parser "^2.1.7" 267 | dateformat "^3.0.0" 268 | get-pkg-repo "^1.0.0" 269 | git-raw-commits "^1.3.6" 270 | git-remote-origin-url "^2.0.0" 271 | git-semver-tags "^1.3.6" 272 | lodash "^4.2.1" 273 | normalize-package-data "^2.3.5" 274 | q "^1.5.1" 275 | read-pkg "^1.1.0" 276 | read-pkg-up "^1.0.1" 277 | through2 "^2.0.0" 278 | 279 | conventional-changelog-ember@^0.3.12: 280 | version "0.3.12" 281 | resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz#b7d31851756d0fcb49b031dffeb6afa93b202400" 282 | dependencies: 283 | q "^1.5.1" 284 | 285 | conventional-changelog-eslint@^1.0.9: 286 | version "1.0.9" 287 | resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz#b13cc7e4b472c819450ede031ff1a75c0e3d07d3" 288 | dependencies: 289 | q "^1.5.1" 290 | 291 | conventional-changelog-express@^0.3.6: 292 | version "0.3.6" 293 | resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz#4a6295cb11785059fb09202180d0e59c358b9c2c" 294 | dependencies: 295 | q "^1.5.1" 296 | 297 | conventional-changelog-jquery@^0.1.0: 298 | version "0.1.0" 299 | resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" 300 | dependencies: 301 | q "^1.4.1" 302 | 303 | conventional-changelog-jscs@^0.1.0: 304 | version "0.1.0" 305 | resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" 306 | dependencies: 307 | q "^1.4.1" 308 | 309 | conventional-changelog-jshint@^0.3.8: 310 | version "0.3.8" 311 | resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz#9051c1ac0767abaf62a31f74d2fe8790e8acc6c8" 312 | dependencies: 313 | compare-func "^1.3.1" 314 | q "^1.5.1" 315 | 316 | conventional-changelog-preset-loader@^1.1.8: 317 | version "1.1.8" 318 | resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz#40bb0f142cd27d16839ec6c74ee8db418099b373" 319 | 320 | conventional-changelog-writer@^3.0.9: 321 | version "3.0.9" 322 | resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz#4aecdfef33ff2a53bb0cf3b8071ce21f0e994634" 323 | dependencies: 324 | compare-func "^1.3.1" 325 | conventional-commits-filter "^1.1.6" 326 | dateformat "^3.0.0" 327 | handlebars "^4.0.2" 328 | json-stringify-safe "^5.0.1" 329 | lodash "^4.2.1" 330 | meow "^4.0.0" 331 | semver "^5.5.0" 332 | split "^1.0.0" 333 | through2 "^2.0.0" 334 | 335 | conventional-changelog@^1.1.0: 336 | version "1.1.24" 337 | resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0" 338 | dependencies: 339 | conventional-changelog-angular "^1.6.6" 340 | conventional-changelog-atom "^0.2.8" 341 | conventional-changelog-codemirror "^0.3.8" 342 | conventional-changelog-core "^2.0.11" 343 | conventional-changelog-ember "^0.3.12" 344 | conventional-changelog-eslint "^1.0.9" 345 | conventional-changelog-express "^0.3.6" 346 | conventional-changelog-jquery "^0.1.0" 347 | conventional-changelog-jscs "^0.1.0" 348 | conventional-changelog-jshint "^0.3.8" 349 | conventional-changelog-preset-loader "^1.1.8" 350 | 351 | conventional-commits-filter@^1.1.1, conventional-commits-filter@^1.1.6: 352 | version "1.1.6" 353 | resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831" 354 | dependencies: 355 | is-subset "^0.1.1" 356 | modify-values "^1.0.0" 357 | 358 | conventional-commits-parser@^2.1.1, conventional-commits-parser@^2.1.7: 359 | version "2.1.7" 360 | resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" 361 | dependencies: 362 | JSONStream "^1.0.4" 363 | is-text-path "^1.0.0" 364 | lodash "^4.2.1" 365 | meow "^4.0.0" 366 | split2 "^2.0.0" 367 | through2 "^2.0.0" 368 | trim-off-newlines "^1.0.0" 369 | 370 | conventional-recommended-bump@^1.0.0: 371 | version "1.2.1" 372 | resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.2.1.tgz#1b7137efb5091f99fe009e2fe9ddb7cc490e9375" 373 | dependencies: 374 | concat-stream "^1.4.10" 375 | conventional-commits-filter "^1.1.1" 376 | conventional-commits-parser "^2.1.1" 377 | git-raw-commits "^1.3.0" 378 | git-semver-tags "^1.3.0" 379 | meow "^3.3.0" 380 | object-assign "^4.0.1" 381 | 382 | core-js@^1.0.0: 383 | version "1.2.7" 384 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" 385 | 386 | core-util-is@~1.0.0: 387 | version "1.0.2" 388 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 389 | 390 | cross-spawn@^5.0.1, cross-spawn@^5.1.0: 391 | version "5.1.0" 392 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" 393 | dependencies: 394 | lru-cache "^4.0.1" 395 | shebang-command "^1.2.0" 396 | which "^1.2.9" 397 | 398 | currently-unhandled@^0.4.1: 399 | version "0.4.1" 400 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" 401 | dependencies: 402 | array-find-index "^1.0.1" 403 | 404 | dargs@^4.0.1: 405 | version "4.1.0" 406 | resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" 407 | dependencies: 408 | number-is-nan "^1.0.0" 409 | 410 | dateformat@^3.0.0: 411 | version "3.0.3" 412 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" 413 | 414 | debug@^3.1.0: 415 | version "3.2.6" 416 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 417 | dependencies: 418 | ms "^2.1.1" 419 | 420 | decamelize-keys@^1.0.0: 421 | version "1.1.0" 422 | resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" 423 | dependencies: 424 | decamelize "^1.1.0" 425 | map-obj "^1.0.0" 426 | 427 | decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.1.2: 428 | version "1.2.0" 429 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 430 | 431 | deep-is@~0.1.3: 432 | version "0.1.3" 433 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 434 | 435 | define-properties@^1.1.2: 436 | version "1.1.2" 437 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 438 | dependencies: 439 | foreach "^2.0.5" 440 | object-keys "^1.0.8" 441 | 442 | del@^2.0.2: 443 | version "2.2.2" 444 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 445 | dependencies: 446 | globby "^5.0.0" 447 | is-path-cwd "^1.0.0" 448 | is-path-in-cwd "^1.0.0" 449 | object-assign "^4.0.1" 450 | pify "^2.0.0" 451 | pinkie-promise "^2.0.0" 452 | rimraf "^2.2.8" 453 | 454 | doctrine@^2.0.0, doctrine@^2.1.0: 455 | version "2.1.0" 456 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 457 | dependencies: 458 | esutils "^2.0.2" 459 | 460 | dot-prop@^3.0.0: 461 | version "3.0.0" 462 | resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" 463 | dependencies: 464 | is-obj "^1.0.0" 465 | 466 | dotgitignore@^1.0.3: 467 | version "1.0.3" 468 | resolved "https://registry.yarnpkg.com/dotgitignore/-/dotgitignore-1.0.3.tgz#a442cbde7dc20dff51cdb849e4c5a64568c07923" 469 | dependencies: 470 | find-up "^2.1.0" 471 | minimatch "^3.0.4" 472 | 473 | encoding@^0.1.11: 474 | version "0.1.12" 475 | resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" 476 | dependencies: 477 | iconv-lite "~0.4.13" 478 | 479 | error-ex@^1.2.0, error-ex@^1.3.1: 480 | version "1.3.1" 481 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 482 | dependencies: 483 | is-arrayish "^0.2.1" 484 | 485 | es-abstract@^1.7.0: 486 | version "1.9.0" 487 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" 488 | dependencies: 489 | es-to-primitive "^1.1.1" 490 | function-bind "^1.1.1" 491 | has "^1.0.1" 492 | is-callable "^1.1.3" 493 | is-regex "^1.0.4" 494 | 495 | es-to-primitive@^1.1.1: 496 | version "1.1.1" 497 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 498 | dependencies: 499 | is-callable "^1.1.1" 500 | is-date-object "^1.0.1" 501 | is-symbol "^1.0.1" 502 | 503 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 504 | version "1.0.5" 505 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 506 | 507 | eslint-config-prettier@2.7.0: 508 | version "2.7.0" 509 | resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.7.0.tgz#7bbfef66ad783277836f4ea556e68b9bcc9da4d0" 510 | dependencies: 511 | get-stdin "^5.0.1" 512 | 513 | eslint-plugin-prettier@2.3.1: 514 | version "2.3.1" 515 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.3.1.tgz#e7a746c67e716f335274b88295a9ead9f544e44d" 516 | dependencies: 517 | fast-diff "^1.1.1" 518 | jest-docblock "^21.0.0" 519 | 520 | eslint-plugin-react@7.4.0: 521 | version "7.4.0" 522 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz#300a95861b9729c087d362dd64abcc351a74364a" 523 | dependencies: 524 | doctrine "^2.0.0" 525 | has "^1.0.1" 526 | jsx-ast-utils "^2.0.0" 527 | prop-types "^15.5.10" 528 | 529 | eslint-scope@^3.7.1: 530 | version "3.7.1" 531 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" 532 | dependencies: 533 | esrecurse "^4.1.0" 534 | estraverse "^4.1.1" 535 | 536 | eslint-visitor-keys@^1.0.0: 537 | version "1.0.0" 538 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" 539 | 540 | eslint@4.18.2: 541 | version "4.18.2" 542 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.18.2.tgz#0f81267ad1012e7d2051e186a9004cc2267b8d45" 543 | dependencies: 544 | ajv "^5.3.0" 545 | babel-code-frame "^6.22.0" 546 | chalk "^2.1.0" 547 | concat-stream "^1.6.0" 548 | cross-spawn "^5.1.0" 549 | debug "^3.1.0" 550 | doctrine "^2.1.0" 551 | eslint-scope "^3.7.1" 552 | eslint-visitor-keys "^1.0.0" 553 | espree "^3.5.2" 554 | esquery "^1.0.0" 555 | esutils "^2.0.2" 556 | file-entry-cache "^2.0.0" 557 | functional-red-black-tree "^1.0.1" 558 | glob "^7.1.2" 559 | globals "^11.0.1" 560 | ignore "^3.3.3" 561 | imurmurhash "^0.1.4" 562 | inquirer "^3.0.6" 563 | is-resolvable "^1.0.0" 564 | js-yaml "^3.9.1" 565 | json-stable-stringify-without-jsonify "^1.0.1" 566 | levn "^0.3.0" 567 | lodash "^4.17.4" 568 | minimatch "^3.0.2" 569 | mkdirp "^0.5.1" 570 | natural-compare "^1.4.0" 571 | optionator "^0.8.2" 572 | path-is-inside "^1.0.2" 573 | pluralize "^7.0.0" 574 | progress "^2.0.0" 575 | require-uncached "^1.0.3" 576 | semver "^5.3.0" 577 | strip-ansi "^4.0.0" 578 | strip-json-comments "~2.0.1" 579 | table "4.0.2" 580 | text-table "~0.2.0" 581 | 582 | espree@^3.5.2: 583 | version "3.5.4" 584 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" 585 | dependencies: 586 | acorn "^5.5.0" 587 | acorn-jsx "^3.0.0" 588 | 589 | esprima@^4.0.0: 590 | version "4.0.1" 591 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 592 | 593 | esquery@^1.0.0: 594 | version "1.0.0" 595 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" 596 | dependencies: 597 | estraverse "^4.0.0" 598 | 599 | esrecurse@^4.1.0: 600 | version "4.2.0" 601 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" 602 | dependencies: 603 | estraverse "^4.1.0" 604 | object-assign "^4.0.1" 605 | 606 | estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: 607 | version "4.2.0" 608 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 609 | 610 | esutils@^2.0.2: 611 | version "2.0.2" 612 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 613 | 614 | execa@^0.7.0: 615 | version "0.7.0" 616 | resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" 617 | dependencies: 618 | cross-spawn "^5.0.1" 619 | get-stream "^3.0.0" 620 | is-stream "^1.1.0" 621 | npm-run-path "^2.0.0" 622 | p-finally "^1.0.0" 623 | signal-exit "^3.0.0" 624 | strip-eof "^1.0.0" 625 | 626 | external-editor@^2.0.4: 627 | version "2.0.5" 628 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" 629 | dependencies: 630 | iconv-lite "^0.4.17" 631 | jschardet "^1.4.2" 632 | tmp "^0.0.33" 633 | 634 | fast-deep-equal@^1.0.0: 635 | version "1.0.0" 636 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 637 | 638 | fast-diff@^1.1.1: 639 | version "1.1.2" 640 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" 641 | 642 | fast-json-stable-stringify@^2.0.0: 643 | version "2.0.0" 644 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 645 | 646 | fast-levenshtein@~2.0.4: 647 | version "2.0.6" 648 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 649 | 650 | fbjs@^0.8.16: 651 | version "0.8.16" 652 | resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" 653 | dependencies: 654 | core-js "^1.0.0" 655 | isomorphic-fetch "^2.1.1" 656 | loose-envify "^1.0.0" 657 | object-assign "^4.1.0" 658 | promise "^7.1.1" 659 | setimmediate "^1.0.5" 660 | ua-parser-js "^0.7.9" 661 | 662 | figures@^1.5.0: 663 | version "1.7.0" 664 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 665 | dependencies: 666 | escape-string-regexp "^1.0.5" 667 | object-assign "^4.1.0" 668 | 669 | figures@^2.0.0: 670 | version "2.0.0" 671 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 672 | dependencies: 673 | escape-string-regexp "^1.0.5" 674 | 675 | file-entry-cache@^2.0.0: 676 | version "2.0.0" 677 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 678 | dependencies: 679 | flat-cache "^1.2.1" 680 | object-assign "^4.0.1" 681 | 682 | find-up@^1.0.0: 683 | version "1.1.2" 684 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 685 | dependencies: 686 | path-exists "^2.0.0" 687 | pinkie-promise "^2.0.0" 688 | 689 | find-up@^2.0.0, find-up@^2.1.0: 690 | version "2.1.0" 691 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 692 | dependencies: 693 | locate-path "^2.0.0" 694 | 695 | flat-cache@^1.2.1: 696 | version "1.3.0" 697 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" 698 | dependencies: 699 | circular-json "^0.3.1" 700 | del "^2.0.2" 701 | graceful-fs "^4.1.2" 702 | write "^0.2.1" 703 | 704 | foreach@^2.0.5: 705 | version "2.0.5" 706 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 707 | 708 | fs-access@^1.0.0: 709 | version "1.0.1" 710 | resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" 711 | dependencies: 712 | null-check "^1.0.0" 713 | 714 | fs.realpath@^1.0.0: 715 | version "1.0.0" 716 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 717 | 718 | function-bind@^1.0.2, function-bind@^1.1.1: 719 | version "1.1.1" 720 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 721 | 722 | functional-red-black-tree@^1.0.1: 723 | version "1.0.1" 724 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 725 | 726 | get-caller-file@^1.0.1: 727 | version "1.0.2" 728 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 729 | 730 | get-pkg-repo@^1.0.0: 731 | version "1.4.0" 732 | resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" 733 | dependencies: 734 | hosted-git-info "^2.1.4" 735 | meow "^3.3.0" 736 | normalize-package-data "^2.3.0" 737 | parse-github-repo-url "^1.3.0" 738 | through2 "^2.0.0" 739 | 740 | get-stdin@^4.0.1: 741 | version "4.0.1" 742 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" 743 | 744 | get-stdin@^5.0.1: 745 | version "5.0.1" 746 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" 747 | 748 | get-stream@^3.0.0: 749 | version "3.0.0" 750 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 751 | 752 | git-raw-commits@^1.3.0, git-raw-commits@^1.3.6: 753 | version "1.3.6" 754 | resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" 755 | dependencies: 756 | dargs "^4.0.1" 757 | lodash.template "^4.0.2" 758 | meow "^4.0.0" 759 | split2 "^2.0.0" 760 | through2 "^2.0.0" 761 | 762 | git-remote-origin-url@^2.0.0: 763 | version "2.0.0" 764 | resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" 765 | dependencies: 766 | gitconfiglocal "^1.0.0" 767 | pify "^2.3.0" 768 | 769 | git-semver-tags@^1.3.0, git-semver-tags@^1.3.6: 770 | version "1.3.6" 771 | resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5" 772 | dependencies: 773 | meow "^4.0.0" 774 | semver "^5.5.0" 775 | 776 | gitconfiglocal@^1.0.0: 777 | version "1.0.0" 778 | resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" 779 | dependencies: 780 | ini "^1.3.2" 781 | 782 | glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: 783 | version "7.1.2" 784 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 785 | dependencies: 786 | fs.realpath "^1.0.0" 787 | inflight "^1.0.4" 788 | inherits "2" 789 | minimatch "^3.0.4" 790 | once "^1.3.0" 791 | path-is-absolute "^1.0.0" 792 | 793 | globals@^11.0.1: 794 | version "11.12.0" 795 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 796 | 797 | globby@^5.0.0: 798 | version "5.0.0" 799 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 800 | dependencies: 801 | array-union "^1.0.1" 802 | arrify "^1.0.0" 803 | glob "^7.0.3" 804 | object-assign "^4.0.1" 805 | pify "^2.0.0" 806 | pinkie-promise "^2.0.0" 807 | 808 | graceful-fs@^4.1.2: 809 | version "4.1.11" 810 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 811 | 812 | handlebars@^4.0.2: 813 | version "4.1.2" 814 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" 815 | dependencies: 816 | neo-async "^2.6.0" 817 | optimist "^0.6.1" 818 | source-map "^0.6.1" 819 | optionalDependencies: 820 | uglify-js "^3.1.4" 821 | 822 | has-ansi@^2.0.0: 823 | version "2.0.0" 824 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 825 | dependencies: 826 | ansi-regex "^2.0.0" 827 | 828 | has-flag@^2.0.0: 829 | version "2.0.0" 830 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 831 | 832 | has@^1.0.1: 833 | version "1.0.1" 834 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 835 | dependencies: 836 | function-bind "^1.0.2" 837 | 838 | hosted-git-info@^2.1.4: 839 | version "2.6.0" 840 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" 841 | 842 | iconv-lite@^0.4.17, iconv-lite@~0.4.13: 843 | version "0.4.19" 844 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" 845 | 846 | ignore@^3.3.3: 847 | version "3.3.7" 848 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" 849 | 850 | imurmurhash@^0.1.4: 851 | version "0.1.4" 852 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 853 | 854 | indent-string@^2.1.0: 855 | version "2.1.0" 856 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" 857 | dependencies: 858 | repeating "^2.0.0" 859 | 860 | indent-string@^3.0.0: 861 | version "3.2.0" 862 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" 863 | 864 | inflight@^1.0.4: 865 | version "1.0.6" 866 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 867 | dependencies: 868 | once "^1.3.0" 869 | wrappy "1" 870 | 871 | inherits@2, inherits@^2.0.3, inherits@~2.0.3: 872 | version "2.0.3" 873 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 874 | 875 | ini@^1.3.2: 876 | version "1.3.5" 877 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" 878 | 879 | inquirer@^3.0.6: 880 | version "3.3.0" 881 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" 882 | dependencies: 883 | ansi-escapes "^3.0.0" 884 | chalk "^2.0.0" 885 | cli-cursor "^2.1.0" 886 | cli-width "^2.0.0" 887 | external-editor "^2.0.4" 888 | figures "^2.0.0" 889 | lodash "^4.3.0" 890 | mute-stream "0.0.7" 891 | run-async "^2.2.0" 892 | rx-lite "^4.0.8" 893 | rx-lite-aggregates "^4.0.8" 894 | string-width "^2.1.0" 895 | strip-ansi "^4.0.0" 896 | through "^2.3.6" 897 | 898 | invert-kv@^1.0.0: 899 | version "1.0.0" 900 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 901 | 902 | is-arrayish@^0.2.1: 903 | version "0.2.1" 904 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 905 | 906 | is-builtin-module@^1.0.0: 907 | version "1.0.0" 908 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 909 | dependencies: 910 | builtin-modules "^1.0.0" 911 | 912 | is-callable@^1.1.1, is-callable@^1.1.3: 913 | version "1.1.3" 914 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" 915 | 916 | is-date-object@^1.0.1: 917 | version "1.0.1" 918 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 919 | 920 | is-finite@^1.0.0: 921 | version "1.0.2" 922 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" 923 | dependencies: 924 | number-is-nan "^1.0.0" 925 | 926 | is-fullwidth-code-point@^1.0.0: 927 | version "1.0.0" 928 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 929 | dependencies: 930 | number-is-nan "^1.0.0" 931 | 932 | is-fullwidth-code-point@^2.0.0: 933 | version "2.0.0" 934 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 935 | 936 | is-obj@^1.0.0: 937 | version "1.0.1" 938 | resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 939 | 940 | is-path-cwd@^1.0.0: 941 | version "1.0.0" 942 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 943 | 944 | is-path-in-cwd@^1.0.0: 945 | version "1.0.0" 946 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 947 | dependencies: 948 | is-path-inside "^1.0.0" 949 | 950 | is-path-inside@^1.0.0: 951 | version "1.0.0" 952 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 953 | dependencies: 954 | path-is-inside "^1.0.1" 955 | 956 | is-plain-obj@^1.1.0: 957 | version "1.1.0" 958 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 959 | 960 | is-promise@^2.1.0: 961 | version "2.1.0" 962 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 963 | 964 | is-regex@^1.0.4: 965 | version "1.0.4" 966 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 967 | dependencies: 968 | has "^1.0.1" 969 | 970 | is-resolvable@^1.0.0: 971 | version "1.0.0" 972 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 973 | dependencies: 974 | tryit "^1.0.1" 975 | 976 | is-stream@^1.0.1, is-stream@^1.1.0: 977 | version "1.1.0" 978 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 979 | 980 | is-subset@^0.1.1: 981 | version "0.1.1" 982 | resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" 983 | 984 | is-symbol@^1.0.1: 985 | version "1.0.1" 986 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 987 | 988 | is-text-path@^1.0.0: 989 | version "1.0.1" 990 | resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" 991 | dependencies: 992 | text-extensions "^1.0.0" 993 | 994 | is-utf8@^0.2.0: 995 | version "0.2.1" 996 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 997 | 998 | isarray@~1.0.0: 999 | version "1.0.0" 1000 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1001 | 1002 | isexe@^2.0.0: 1003 | version "2.0.0" 1004 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1005 | 1006 | isomorphic-fetch@^2.1.1: 1007 | version "2.2.1" 1008 | resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" 1009 | dependencies: 1010 | node-fetch "^1.0.1" 1011 | whatwg-fetch ">=0.10.0" 1012 | 1013 | jest-docblock@^21.0.0: 1014 | version "21.2.0" 1015 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" 1016 | 1017 | js-tokens@^3.0.0, js-tokens@^3.0.2: 1018 | version "3.0.2" 1019 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" 1020 | 1021 | js-yaml@^3.9.1: 1022 | version "3.13.1" 1023 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 1024 | dependencies: 1025 | argparse "^1.0.7" 1026 | esprima "^4.0.0" 1027 | 1028 | jschardet@^1.4.2: 1029 | version "1.6.0" 1030 | resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" 1031 | 1032 | json-parse-better-errors@^1.0.1: 1033 | version "1.0.2" 1034 | resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" 1035 | 1036 | json-schema-traverse@^0.3.0: 1037 | version "0.3.1" 1038 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 1039 | 1040 | json-stable-stringify-without-jsonify@^1.0.1: 1041 | version "1.0.1" 1042 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1043 | 1044 | json-stringify-safe@^5.0.1: 1045 | version "5.0.1" 1046 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1047 | 1048 | jsonparse@^1.2.0: 1049 | version "1.3.1" 1050 | resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" 1051 | 1052 | jsx-ast-utils@^2.0.0: 1053 | version "2.0.1" 1054 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" 1055 | dependencies: 1056 | array-includes "^3.0.3" 1057 | 1058 | lcid@^1.0.0: 1059 | version "1.0.0" 1060 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 1061 | dependencies: 1062 | invert-kv "^1.0.0" 1063 | 1064 | levn@^0.3.0, levn@~0.3.0: 1065 | version "0.3.0" 1066 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1067 | dependencies: 1068 | prelude-ls "~1.1.2" 1069 | type-check "~0.3.2" 1070 | 1071 | load-json-file@^1.0.0: 1072 | version "1.1.0" 1073 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 1074 | dependencies: 1075 | graceful-fs "^4.1.2" 1076 | parse-json "^2.2.0" 1077 | pify "^2.0.0" 1078 | pinkie-promise "^2.0.0" 1079 | strip-bom "^2.0.0" 1080 | 1081 | load-json-file@^2.0.0: 1082 | version "2.0.0" 1083 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 1084 | dependencies: 1085 | graceful-fs "^4.1.2" 1086 | parse-json "^2.2.0" 1087 | pify "^2.0.0" 1088 | strip-bom "^3.0.0" 1089 | 1090 | load-json-file@^4.0.0: 1091 | version "4.0.0" 1092 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" 1093 | dependencies: 1094 | graceful-fs "^4.1.2" 1095 | parse-json "^4.0.0" 1096 | pify "^3.0.0" 1097 | strip-bom "^3.0.0" 1098 | 1099 | locate-path@^2.0.0: 1100 | version "2.0.0" 1101 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 1102 | dependencies: 1103 | p-locate "^2.0.0" 1104 | path-exists "^3.0.0" 1105 | 1106 | lodash._reinterpolate@^3.0.0: 1107 | version "3.0.0" 1108 | resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" 1109 | 1110 | lodash.merge@^4.6.0: 1111 | version "4.6.2" 1112 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1113 | 1114 | lodash.template@^4.0.2: 1115 | version "4.5.0" 1116 | resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" 1117 | dependencies: 1118 | lodash._reinterpolate "^3.0.0" 1119 | lodash.templatesettings "^4.0.0" 1120 | 1121 | lodash.templatesettings@^4.0.0: 1122 | version "4.2.0" 1123 | resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" 1124 | dependencies: 1125 | lodash._reinterpolate "^3.0.0" 1126 | 1127 | lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0: 1128 | version "4.17.15" 1129 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" 1130 | 1131 | loose-envify@^1.0.0, loose-envify@^1.3.1: 1132 | version "1.3.1" 1133 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" 1134 | dependencies: 1135 | js-tokens "^3.0.0" 1136 | 1137 | loud-rejection@^1.0.0: 1138 | version "1.6.0" 1139 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" 1140 | dependencies: 1141 | currently-unhandled "^0.4.1" 1142 | signal-exit "^3.0.0" 1143 | 1144 | lru-cache@^4.0.1: 1145 | version "4.1.1" 1146 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" 1147 | dependencies: 1148 | pseudomap "^1.0.2" 1149 | yallist "^2.1.2" 1150 | 1151 | map-obj@^1.0.0, map-obj@^1.0.1: 1152 | version "1.0.1" 1153 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" 1154 | 1155 | map-obj@^2.0.0: 1156 | version "2.0.0" 1157 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" 1158 | 1159 | mem@^1.1.0: 1160 | version "1.1.0" 1161 | resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" 1162 | dependencies: 1163 | mimic-fn "^1.0.0" 1164 | 1165 | meow@^3.3.0: 1166 | version "3.7.0" 1167 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" 1168 | dependencies: 1169 | camelcase-keys "^2.0.0" 1170 | decamelize "^1.1.2" 1171 | loud-rejection "^1.0.0" 1172 | map-obj "^1.0.1" 1173 | minimist "^1.1.3" 1174 | normalize-package-data "^2.3.4" 1175 | object-assign "^4.0.1" 1176 | read-pkg-up "^1.0.1" 1177 | redent "^1.0.0" 1178 | trim-newlines "^1.0.0" 1179 | 1180 | meow@^4.0.0: 1181 | version "4.0.0" 1182 | resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.0.tgz#fd5855dd008db5b92c552082db1c307cba20b29d" 1183 | dependencies: 1184 | camelcase-keys "^4.0.0" 1185 | decamelize-keys "^1.0.0" 1186 | loud-rejection "^1.0.0" 1187 | minimist "^1.1.3" 1188 | minimist-options "^3.0.1" 1189 | normalize-package-data "^2.3.4" 1190 | read-pkg-up "^3.0.0" 1191 | redent "^2.0.0" 1192 | trim-newlines "^2.0.0" 1193 | 1194 | mimic-fn@^1.0.0: 1195 | version "1.1.0" 1196 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" 1197 | 1198 | minimatch@^3.0.2, minimatch@^3.0.4: 1199 | version "3.0.4" 1200 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1201 | dependencies: 1202 | brace-expansion "^1.1.7" 1203 | 1204 | minimist-options@^3.0.1: 1205 | version "3.0.2" 1206 | resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" 1207 | dependencies: 1208 | arrify "^1.0.1" 1209 | is-plain-obj "^1.1.0" 1210 | 1211 | minimist@0.0.8: 1212 | version "0.0.8" 1213 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1214 | 1215 | minimist@^1.1.3: 1216 | version "1.2.0" 1217 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1218 | 1219 | minimist@~0.0.1: 1220 | version "0.0.10" 1221 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1222 | 1223 | mkdirp@^0.5.1: 1224 | version "0.5.1" 1225 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1226 | dependencies: 1227 | minimist "0.0.8" 1228 | 1229 | modify-values@^1.0.0: 1230 | version "1.0.1" 1231 | resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" 1232 | 1233 | ms@^2.1.1: 1234 | version "2.1.2" 1235 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1236 | 1237 | mute-stream@0.0.7: 1238 | version "0.0.7" 1239 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 1240 | 1241 | natural-compare@^1.4.0: 1242 | version "1.4.0" 1243 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1244 | 1245 | neo-async@^2.6.0: 1246 | version "2.6.1" 1247 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" 1248 | 1249 | node-fetch@^1.0.1: 1250 | version "1.7.3" 1251 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" 1252 | dependencies: 1253 | encoding "^0.1.11" 1254 | is-stream "^1.0.1" 1255 | 1256 | normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: 1257 | version "2.4.0" 1258 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 1259 | dependencies: 1260 | hosted-git-info "^2.1.4" 1261 | is-builtin-module "^1.0.0" 1262 | semver "2 || 3 || 4 || 5" 1263 | validate-npm-package-license "^3.0.1" 1264 | 1265 | npm-run-path@^2.0.0: 1266 | version "2.0.2" 1267 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1268 | dependencies: 1269 | path-key "^2.0.0" 1270 | 1271 | null-check@^1.0.0: 1272 | version "1.0.0" 1273 | resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" 1274 | 1275 | number-is-nan@^1.0.0: 1276 | version "1.0.1" 1277 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1278 | 1279 | object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: 1280 | version "4.1.1" 1281 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1282 | 1283 | object-keys@^1.0.8: 1284 | version "1.0.11" 1285 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" 1286 | 1287 | once@^1.3.0: 1288 | version "1.4.0" 1289 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1290 | dependencies: 1291 | wrappy "1" 1292 | 1293 | onetime@^2.0.0: 1294 | version "2.0.1" 1295 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 1296 | dependencies: 1297 | mimic-fn "^1.0.0" 1298 | 1299 | optimist@^0.6.1: 1300 | version "0.6.1" 1301 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1302 | dependencies: 1303 | minimist "~0.0.1" 1304 | wordwrap "~0.0.2" 1305 | 1306 | optionator@^0.8.2: 1307 | version "0.8.2" 1308 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1309 | dependencies: 1310 | deep-is "~0.1.3" 1311 | fast-levenshtein "~2.0.4" 1312 | levn "~0.3.0" 1313 | prelude-ls "~1.1.2" 1314 | type-check "~0.3.2" 1315 | wordwrap "~1.0.0" 1316 | 1317 | os-locale@^2.0.0: 1318 | version "2.1.0" 1319 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" 1320 | dependencies: 1321 | execa "^0.7.0" 1322 | lcid "^1.0.0" 1323 | mem "^1.1.0" 1324 | 1325 | os-tmpdir@~1.0.2: 1326 | version "1.0.2" 1327 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 1328 | 1329 | p-finally@^1.0.0: 1330 | version "1.0.0" 1331 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1332 | 1333 | p-limit@^1.1.0: 1334 | version "1.2.0" 1335 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" 1336 | dependencies: 1337 | p-try "^1.0.0" 1338 | 1339 | p-locate@^2.0.0: 1340 | version "2.0.0" 1341 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 1342 | dependencies: 1343 | p-limit "^1.1.0" 1344 | 1345 | p-try@^1.0.0: 1346 | version "1.0.0" 1347 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" 1348 | 1349 | parse-github-repo-url@^1.3.0: 1350 | version "1.4.1" 1351 | resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" 1352 | 1353 | parse-json@^2.2.0: 1354 | version "2.2.0" 1355 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1356 | dependencies: 1357 | error-ex "^1.2.0" 1358 | 1359 | parse-json@^4.0.0: 1360 | version "4.0.0" 1361 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" 1362 | dependencies: 1363 | error-ex "^1.3.1" 1364 | json-parse-better-errors "^1.0.1" 1365 | 1366 | path-exists@^2.0.0: 1367 | version "2.1.0" 1368 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1369 | dependencies: 1370 | pinkie-promise "^2.0.0" 1371 | 1372 | path-exists@^3.0.0: 1373 | version "3.0.0" 1374 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 1375 | 1376 | path-is-absolute@^1.0.0: 1377 | version "1.0.1" 1378 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1379 | 1380 | path-is-inside@^1.0.1, path-is-inside@^1.0.2: 1381 | version "1.0.2" 1382 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 1383 | 1384 | path-key@^2.0.0: 1385 | version "2.0.1" 1386 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1387 | 1388 | path-type@^1.0.0: 1389 | version "1.1.0" 1390 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 1391 | dependencies: 1392 | graceful-fs "^4.1.2" 1393 | pify "^2.0.0" 1394 | pinkie-promise "^2.0.0" 1395 | 1396 | path-type@^2.0.0: 1397 | version "2.0.0" 1398 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 1399 | dependencies: 1400 | pify "^2.0.0" 1401 | 1402 | path-type@^3.0.0: 1403 | version "3.0.0" 1404 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" 1405 | dependencies: 1406 | pify "^3.0.0" 1407 | 1408 | pify@^2.0.0, pify@^2.3.0: 1409 | version "2.3.0" 1410 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1411 | 1412 | pify@^3.0.0: 1413 | version "3.0.0" 1414 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 1415 | 1416 | pinkie-promise@^2.0.0: 1417 | version "2.0.1" 1418 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1419 | dependencies: 1420 | pinkie "^2.0.0" 1421 | 1422 | pinkie@^2.0.0: 1423 | version "2.0.4" 1424 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1425 | 1426 | pluralize@^7.0.0: 1427 | version "7.0.0" 1428 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" 1429 | 1430 | prelude-ls@~1.1.2: 1431 | version "1.1.2" 1432 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1433 | 1434 | prettier@1.7.4: 1435 | version "1.7.4" 1436 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.4.tgz#5e8624ae9363c80f95ec644584ecdf55d74f93fa" 1437 | 1438 | process-nextick-args@~1.0.6: 1439 | version "1.0.7" 1440 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1441 | 1442 | process-nextick-args@~2.0.0: 1443 | version "2.0.0" 1444 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" 1445 | 1446 | progress@^2.0.0: 1447 | version "2.0.0" 1448 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 1449 | 1450 | promise@^7.1.1: 1451 | version "7.3.1" 1452 | resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" 1453 | dependencies: 1454 | asap "~2.0.3" 1455 | 1456 | prop-types@^15.5.10: 1457 | version "15.6.0" 1458 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" 1459 | dependencies: 1460 | fbjs "^0.8.16" 1461 | loose-envify "^1.3.1" 1462 | object-assign "^4.1.1" 1463 | 1464 | pseudomap@^1.0.2: 1465 | version "1.0.2" 1466 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" 1467 | 1468 | q@^1.4.1, q@^1.5.1: 1469 | version "1.5.1" 1470 | resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" 1471 | 1472 | quick-lru@^1.0.0: 1473 | version "1.1.0" 1474 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" 1475 | 1476 | read-pkg-up@^1.0.1: 1477 | version "1.0.1" 1478 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 1479 | dependencies: 1480 | find-up "^1.0.0" 1481 | read-pkg "^1.0.0" 1482 | 1483 | read-pkg-up@^2.0.0: 1484 | version "2.0.0" 1485 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1486 | dependencies: 1487 | find-up "^2.0.0" 1488 | read-pkg "^2.0.0" 1489 | 1490 | read-pkg-up@^3.0.0: 1491 | version "3.0.0" 1492 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" 1493 | dependencies: 1494 | find-up "^2.0.0" 1495 | read-pkg "^3.0.0" 1496 | 1497 | read-pkg@^1.0.0, read-pkg@^1.1.0: 1498 | version "1.1.0" 1499 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 1500 | dependencies: 1501 | load-json-file "^1.0.0" 1502 | normalize-package-data "^2.3.2" 1503 | path-type "^1.0.0" 1504 | 1505 | read-pkg@^2.0.0: 1506 | version "2.0.0" 1507 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1508 | dependencies: 1509 | load-json-file "^2.0.0" 1510 | normalize-package-data "^2.3.2" 1511 | path-type "^2.0.0" 1512 | 1513 | read-pkg@^3.0.0: 1514 | version "3.0.0" 1515 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" 1516 | dependencies: 1517 | load-json-file "^4.0.0" 1518 | normalize-package-data "^2.3.2" 1519 | path-type "^3.0.0" 1520 | 1521 | readable-stream@^2.1.5: 1522 | version "2.3.6" 1523 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" 1524 | dependencies: 1525 | core-util-is "~1.0.0" 1526 | inherits "~2.0.3" 1527 | isarray "~1.0.0" 1528 | process-nextick-args "~2.0.0" 1529 | safe-buffer "~5.1.1" 1530 | string_decoder "~1.1.1" 1531 | util-deprecate "~1.0.1" 1532 | 1533 | readable-stream@^2.2.2: 1534 | version "2.3.3" 1535 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" 1536 | dependencies: 1537 | core-util-is "~1.0.0" 1538 | inherits "~2.0.3" 1539 | isarray "~1.0.0" 1540 | process-nextick-args "~1.0.6" 1541 | safe-buffer "~5.1.1" 1542 | string_decoder "~1.0.3" 1543 | util-deprecate "~1.0.1" 1544 | 1545 | redent@^1.0.0: 1546 | version "1.0.0" 1547 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" 1548 | dependencies: 1549 | indent-string "^2.1.0" 1550 | strip-indent "^1.0.1" 1551 | 1552 | redent@^2.0.0: 1553 | version "2.0.0" 1554 | resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" 1555 | dependencies: 1556 | indent-string "^3.0.0" 1557 | strip-indent "^2.0.0" 1558 | 1559 | repeating@^2.0.0: 1560 | version "2.0.1" 1561 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" 1562 | dependencies: 1563 | is-finite "^1.0.0" 1564 | 1565 | require-directory@^2.1.1: 1566 | version "2.1.1" 1567 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1568 | 1569 | require-main-filename@^1.0.1: 1570 | version "1.0.1" 1571 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 1572 | 1573 | require-uncached@^1.0.3: 1574 | version "1.0.3" 1575 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 1576 | dependencies: 1577 | caller-path "^0.1.0" 1578 | resolve-from "^1.0.0" 1579 | 1580 | resolve-from@^1.0.0: 1581 | version "1.0.1" 1582 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 1583 | 1584 | restore-cursor@^2.0.0: 1585 | version "2.0.0" 1586 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 1587 | dependencies: 1588 | onetime "^2.0.0" 1589 | signal-exit "^3.0.2" 1590 | 1591 | rimraf@^2.2.8: 1592 | version "2.6.2" 1593 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 1594 | dependencies: 1595 | glob "^7.0.5" 1596 | 1597 | run-async@^2.2.0: 1598 | version "2.3.0" 1599 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 1600 | dependencies: 1601 | is-promise "^2.1.0" 1602 | 1603 | rx-lite-aggregates@^4.0.8: 1604 | version "4.0.8" 1605 | resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" 1606 | dependencies: 1607 | rx-lite "*" 1608 | 1609 | rx-lite@*, rx-lite@^4.0.8: 1610 | version "4.0.8" 1611 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" 1612 | 1613 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1614 | version "5.1.1" 1615 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 1616 | 1617 | "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.5.0: 1618 | version "5.5.0" 1619 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" 1620 | 1621 | set-blocking@^2.0.0: 1622 | version "2.0.0" 1623 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1624 | 1625 | setimmediate@^1.0.5: 1626 | version "1.0.5" 1627 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1628 | 1629 | shebang-command@^1.2.0: 1630 | version "1.2.0" 1631 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1632 | dependencies: 1633 | shebang-regex "^1.0.0" 1634 | 1635 | shebang-regex@^1.0.0: 1636 | version "1.0.0" 1637 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1638 | 1639 | signal-exit@^3.0.0, signal-exit@^3.0.2: 1640 | version "3.0.2" 1641 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1642 | 1643 | slice-ansi@1.0.0: 1644 | version "1.0.0" 1645 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" 1646 | dependencies: 1647 | is-fullwidth-code-point "^2.0.0" 1648 | 1649 | source-map@^0.6.1, source-map@~0.6.1: 1650 | version "0.6.1" 1651 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1652 | 1653 | spdx-correct@^3.0.0: 1654 | version "3.0.0" 1655 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" 1656 | dependencies: 1657 | spdx-expression-parse "^3.0.0" 1658 | spdx-license-ids "^3.0.0" 1659 | 1660 | spdx-exceptions@^2.1.0: 1661 | version "2.1.0" 1662 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" 1663 | 1664 | spdx-expression-parse@^3.0.0: 1665 | version "3.0.0" 1666 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" 1667 | dependencies: 1668 | spdx-exceptions "^2.1.0" 1669 | spdx-license-ids "^3.0.0" 1670 | 1671 | spdx-license-ids@^3.0.0: 1672 | version "3.0.0" 1673 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" 1674 | 1675 | split2@^2.0.0: 1676 | version "2.2.0" 1677 | resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" 1678 | dependencies: 1679 | through2 "^2.0.2" 1680 | 1681 | split@^1.0.0: 1682 | version "1.0.1" 1683 | resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" 1684 | dependencies: 1685 | through "2" 1686 | 1687 | sprintf-js@~1.0.2: 1688 | version "1.0.3" 1689 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1690 | 1691 | standard-version@4.3.0: 1692 | version "4.3.0" 1693 | resolved "https://registry.yarnpkg.com/standard-version/-/standard-version-4.3.0.tgz#41006cfee4eeab7c0ff3a47eecaa4c7506ed2e3f" 1694 | dependencies: 1695 | chalk "^1.1.3" 1696 | conventional-changelog "^1.1.0" 1697 | conventional-recommended-bump "^1.0.0" 1698 | dotgitignore "^1.0.3" 1699 | figures "^1.5.0" 1700 | fs-access "^1.0.0" 1701 | semver "^5.1.0" 1702 | yargs "^8.0.1" 1703 | 1704 | string-width@^1.0.1: 1705 | version "1.0.2" 1706 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1707 | dependencies: 1708 | code-point-at "^1.0.0" 1709 | is-fullwidth-code-point "^1.0.0" 1710 | strip-ansi "^3.0.0" 1711 | 1712 | string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: 1713 | version "2.1.1" 1714 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1715 | dependencies: 1716 | is-fullwidth-code-point "^2.0.0" 1717 | strip-ansi "^4.0.0" 1718 | 1719 | string_decoder@~1.0.3: 1720 | version "1.0.3" 1721 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" 1722 | dependencies: 1723 | safe-buffer "~5.1.0" 1724 | 1725 | string_decoder@~1.1.1: 1726 | version "1.1.1" 1727 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1728 | dependencies: 1729 | safe-buffer "~5.1.0" 1730 | 1731 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1732 | version "3.0.1" 1733 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1734 | dependencies: 1735 | ansi-regex "^2.0.0" 1736 | 1737 | strip-ansi@^4.0.0: 1738 | version "4.0.0" 1739 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1740 | dependencies: 1741 | ansi-regex "^3.0.0" 1742 | 1743 | strip-bom@^2.0.0: 1744 | version "2.0.0" 1745 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 1746 | dependencies: 1747 | is-utf8 "^0.2.0" 1748 | 1749 | strip-bom@^3.0.0: 1750 | version "3.0.0" 1751 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1752 | 1753 | strip-eof@^1.0.0: 1754 | version "1.0.0" 1755 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 1756 | 1757 | strip-indent@^1.0.1: 1758 | version "1.0.1" 1759 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" 1760 | dependencies: 1761 | get-stdin "^4.0.1" 1762 | 1763 | strip-indent@^2.0.0: 1764 | version "2.0.0" 1765 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" 1766 | 1767 | strip-json-comments@~2.0.1: 1768 | version "2.0.1" 1769 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1770 | 1771 | supports-color@^2.0.0: 1772 | version "2.0.0" 1773 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1774 | 1775 | supports-color@^4.0.0: 1776 | version "4.5.0" 1777 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" 1778 | dependencies: 1779 | has-flag "^2.0.0" 1780 | 1781 | table@4.0.2: 1782 | version "4.0.2" 1783 | resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" 1784 | dependencies: 1785 | ajv "^5.2.3" 1786 | ajv-keywords "^2.1.0" 1787 | chalk "^2.1.0" 1788 | lodash "^4.17.4" 1789 | slice-ansi "1.0.0" 1790 | string-width "^2.1.1" 1791 | 1792 | text-extensions@^1.0.0: 1793 | version "1.7.0" 1794 | resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" 1795 | 1796 | text-table@~0.2.0: 1797 | version "0.2.0" 1798 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1799 | 1800 | through2@^2.0.0, through2@^2.0.2: 1801 | version "2.0.3" 1802 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" 1803 | dependencies: 1804 | readable-stream "^2.1.5" 1805 | xtend "~4.0.1" 1806 | 1807 | through@2, "through@>=2.2.7 <3", through@^2.3.6: 1808 | version "2.3.8" 1809 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1810 | 1811 | tmp@^0.0.33: 1812 | version "0.0.33" 1813 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1814 | dependencies: 1815 | os-tmpdir "~1.0.2" 1816 | 1817 | trim-newlines@^1.0.0: 1818 | version "1.0.0" 1819 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" 1820 | 1821 | trim-newlines@^2.0.0: 1822 | version "2.0.0" 1823 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" 1824 | 1825 | trim-off-newlines@^1.0.0: 1826 | version "1.0.1" 1827 | resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" 1828 | 1829 | tryit@^1.0.1: 1830 | version "1.0.3" 1831 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 1832 | 1833 | type-check@~0.3.2: 1834 | version "0.3.2" 1835 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1836 | dependencies: 1837 | prelude-ls "~1.1.2" 1838 | 1839 | typedarray@^0.0.6: 1840 | version "0.0.6" 1841 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1842 | 1843 | ua-parser-js@^0.7.9: 1844 | version "0.7.17" 1845 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" 1846 | 1847 | uglify-js@^3.1.4: 1848 | version "3.6.0" 1849 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" 1850 | dependencies: 1851 | commander "~2.20.0" 1852 | source-map "~0.6.1" 1853 | 1854 | util-deprecate@~1.0.1: 1855 | version "1.0.2" 1856 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1857 | 1858 | validate-npm-package-license@^3.0.1: 1859 | version "3.0.3" 1860 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" 1861 | dependencies: 1862 | spdx-correct "^3.0.0" 1863 | spdx-expression-parse "^3.0.0" 1864 | 1865 | whatwg-fetch@>=0.10.0: 1866 | version "2.0.3" 1867 | resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" 1868 | 1869 | which-module@^2.0.0: 1870 | version "2.0.0" 1871 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" 1872 | 1873 | which@^1.2.9: 1874 | version "1.3.0" 1875 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 1876 | dependencies: 1877 | isexe "^2.0.0" 1878 | 1879 | wordwrap@~0.0.2: 1880 | version "0.0.3" 1881 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 1882 | 1883 | wordwrap@~1.0.0: 1884 | version "1.0.0" 1885 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1886 | 1887 | wrap-ansi@^2.0.0: 1888 | version "2.1.0" 1889 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 1890 | dependencies: 1891 | string-width "^1.0.1" 1892 | strip-ansi "^3.0.1" 1893 | 1894 | wrappy@1: 1895 | version "1.0.2" 1896 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1897 | 1898 | write@^0.2.1: 1899 | version "0.2.1" 1900 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 1901 | dependencies: 1902 | mkdirp "^0.5.1" 1903 | 1904 | xtend@~4.0.1: 1905 | version "4.0.1" 1906 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1907 | 1908 | y18n@^3.2.1: 1909 | version "3.2.1" 1910 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 1911 | 1912 | yallist@^2.1.2: 1913 | version "2.1.2" 1914 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" 1915 | 1916 | yargs-parser@^7.0.0: 1917 | version "7.0.0" 1918 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" 1919 | dependencies: 1920 | camelcase "^4.1.0" 1921 | 1922 | yargs@^8.0.1: 1923 | version "8.0.2" 1924 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" 1925 | dependencies: 1926 | camelcase "^4.1.0" 1927 | cliui "^3.2.0" 1928 | decamelize "^1.1.1" 1929 | get-caller-file "^1.0.1" 1930 | os-locale "^2.0.0" 1931 | read-pkg-up "^2.0.0" 1932 | require-directory "^2.1.1" 1933 | require-main-filename "^1.0.1" 1934 | set-blocking "^2.0.0" 1935 | string-width "^2.0.0" 1936 | which-module "^2.0.0" 1937 | y18n "^3.2.1" 1938 | yargs-parser "^7.0.0" 1939 | --------------------------------------------------------------------------------