From edceaab10d108a6cd512ff3dc09306aef4987ea8 Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Thu, 7 Sep 2017 15:43:31 +0200 Subject: [PATCH 01/41] ViewPager in library --- library/Gallery.js | 2 +- library/ViewPager.js | 299 +++++++++++++++++++++++++++++++++++++++++++ package.json | 10 +- 3 files changed, 308 insertions(+), 3 deletions(-) create mode 100644 library/ViewPager.js diff --git a/library/Gallery.js b/library/Gallery.js index c0906e7..86d5648 100644 --- a/library/Gallery.js +++ b/library/Gallery.js @@ -2,7 +2,7 @@ import React, { Component, PropTypes } from 'react'; import { View, Image } from 'react-native'; import { createResponder } from 'react-native-gesture-responder'; import TransformableImage from 'react-native-transformable-image'; -import ViewPager from '@ldn0x7dc/react-native-view-pager'; +import ViewPager from './ViewPager'; export default class Gallery extends Component { diff --git a/library/ViewPager.js b/library/ViewPager.js new file mode 100644 index 0000000..0c6cd16 --- /dev/null +++ b/library/ViewPager.js @@ -0,0 +1,299 @@ +import React, { PropTypes, Component } from 'react'; +import { + View, + ListView, + Platform +} from 'react-native'; + +import Scroller from 'react-native-scroller'; +import {createResponder} from 'react-native-gesture-responder'; +import TimerMixin from 'react-timer-mixin'; +import reactMixin from 'react-mixin'; + +const MIN_FLING_VELOCITY = 0.5; + +export default class ViewPager extends Component { + + static propTypes = { + ...View.propTypes, + initialPage: PropTypes.number, + pageMargin: PropTypes.number, + scrollEnabled: PropTypes.bool, + renderPage: PropTypes.func, + pageDataArray: PropTypes.array, + + onPageSelected: PropTypes.func, + onPageScrollStateChanged: PropTypes.func, + onPageScroll: PropTypes.func, + }; + + static defaultProps = { + initialPage: 0, + pageMargin: 0, + scrollEnabled: true, + pageDataArray: [], + }; + + pageCount = 0; //Initialize to avoid undefined error + currentPage = undefined; //Do not initialize to make onPageSelected(0) be dispatched + layoutChanged = false; + initialPageSettled = false; + activeGesture = false; + gestureResponder = undefined; + + constructor(props) { + super(props); + + const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); + this.state = { + width: 0, + height: 0, + dataSource: ds.cloneWithRows([]) + } + + this.scroller = new Scroller(true, (dx, dy, scroller) => { + if (dx === 0 && dy === 0 && scroller.isFinished()) { + if (!this.activeGesture) { + this.onPageScrollStateChanged('idle'); + } + } else { + const curX = this.scroller.getCurrX(); + this.refs['innerListView'] && this.refs['innerListView'].scrollTo({x: curX, animated: false}); + + let position = Math.floor(curX / (this.state.width + this.props.pageMargin)); + position = this.validPage(position); + let offset = (curX - this.getScrollOffsetOfPage(position)) / (this.state.width + this.props.pageMargin); + let fraction = (curX - this.getScrollOffsetOfPage(position) - this.props.pageMargin) / this.state.width; + if (fraction < 0) { + fraction = 0; + } + this.props.onPageScroll && this.props.onPageScroll({ + position, offset, fraction + }); + } + }); + } + + componentWillMount() { + this.gestureResponder = createResponder({ + onStartShouldSetResponder: (evt, gestureState) => true, + onResponderGrant: this.onResponderGrant.bind(this), + onResponderMove: this.onResponderMove.bind(this), + onResponderRelease: this.onResponderRelease.bind(this), + onResponderTerminate: this.onResponderRelease.bind(this) + }); + } + + onResponderGrant(evt, gestureState) { + this.scroller.forceFinished(true); + this.activeGesture = true; + this.onPageScrollStateChanged('dragging'); + } + + onResponderMove(evt, gestureState) { + let dx = gestureState.moveX - gestureState.previousMoveX; + this.scrollByOffset(dx); + } + + onResponderRelease(evt, gestureState, disableSettle) { + this.activeGesture = false; + if (!disableSettle) { + this.settlePage(gestureState.vx); + } + } + + render() { + let dataSource = this.state.dataSource; + if (this.state.width && this.state.height) { + let list = this.props.pageDataArray; + if (!list) { + list = []; + } + dataSource = dataSource.cloneWithRows(list); + this.pageCount = list.length; + } + + let gestureResponder = this.gestureResponder; + if (!this.props.scrollEnabled || this.pageCount <= 0) { + gestureResponder = {}; + } + + return ( + + + + ); + } + + renderRow(rowData, sectionID, rowID, highlightRow) { + const {width, height} = this.state; + let page = this.props.renderPage(rowData, rowID, {width, height}); + + let newProps = { + ...page.props, + ref: page.ref, + style: [page.props.style, { + width: width, + height: height, + position: 'relative', + }] + }; + const element = React.createElement(page.type, newProps); + + if (this.props.pageMargin > 0 && rowID > 0) { + //Do not using margin style to implement pageMargin. The ListView seems to calculate a wrong width for children views with margin. + return ( + + {element} + + ); + } else { + return element; + } + } + + onLayout(e) { + let {width, height} = e.nativeEvent.layout; + let sizeChanged = this.state.width !== width || this.state.height !== height; + if (width && height && sizeChanged) { + //if layout changed, create a new DataSource instance to trigger renderRow + this.layoutChanged = true; + this.setState({ + width, height, + dataSource: (new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})).cloneWithRows([]) + }); + } + } + + componentDidUpdate() { + if (!this.initialPageSettled) { + this.initialPageSettled = true; + if (Platform.OS === 'ios') { + this.scrollToPage(this.props.initialPage, true); + } else { + //A trick to solve bugs on Android. Delay a little + setTimeout(this.scrollToPage.bind(this, this.props.initialPage, true), 0); + } + } else if (this.layoutChanged) { + this.layoutChanged = false; + if (typeof this.currentPage === 'number') { + if (Platform.OS === 'ios') { + this.scrollToPage(this.currentPage, true); + } else { + //A trick to solve bugs on Android. Delay a little + setTimeout(this.scrollToPage.bind(this, this.currentPage, true), 0); + } + } + } + } + + settlePage(vx) { + if (vx < -MIN_FLING_VELOCITY) { + if (this.currentPage < this.pageCount - 1) { + this.flingToPage(this.currentPage + 1, vx); + } else { + this.flingToPage(this.pageCount - 1, vx); + } + } else if (vx > MIN_FLING_VELOCITY) { + if (this.currentPage > 0) { + this.flingToPage(this.currentPage - 1, vx); + } else { + this.flingToPage(0, vx); + } + } else { + let page = this.currentPage; + let progress = (this.scroller.getCurrX() - this.getScrollOffsetOfPage(this.currentPage)) / this.state.width; + if (progress > 1 / 3) { + page += 1; + } else if (progress < -1 / 3) { + page -= 1; + } + page = Math.min(this.pageCount - 1, page); + page = Math.max(0, page); + this.scrollToPage(page); + } + } + + getScrollOffsetOfPage(page) { + return page * (this.state.width + this.props.pageMargin); + } + + flingToPage(page, velocityX) { + this.onPageScrollStateChanged('settling'); + + page = this.validPage(page); + this.onPageChanged(page); + + velocityX *= -1000; //per sec + const finalX = this.getScrollOffsetOfPage(page); + this.scroller.fling(this.scroller.getCurrX(), 0, velocityX, 0, finalX, finalX, 0, 0); + + } + + scrollToPage(page, immediate) { + this.onPageScrollStateChanged('settling'); + + page = this.validPage(page); + this.onPageChanged(page); + + const finalX = this.getScrollOffsetOfPage(page); + if (immediate) { + this.scroller.startScroll(this.scroller.getCurrX(), 0, finalX - this.scroller.getCurrX(), 0, 0); + } else { + this.scroller.startScroll(this.scroller.getCurrX(), 0, finalX - this.scroller.getCurrX(), 0, 400); + } + + } + + onPageChanged(page) { + if (this.currentPage !== page) { + this.currentPage = page; + this.props.onPageSelected && this.props.onPageSelected(page); + } + } + + onPageScrollStateChanged(state) { + this.props.onPageScrollStateChanged && this.props.onPageScrollStateChanged(state); + } + + scrollByOffset(dx) { + this.scroller.startScroll(this.scroller.getCurrX(), 0, -dx, 0, 0); + } + + validPage(page) { + page = Math.min(this.pageCount - 1, page); + page = Math.max(0, page); + return page; + } + + /** + * A helper function to scroll to a specific page in the ViewPager. + * @param page + * @param immediate If true, the transition between pages will not be animated. + */ + setPage(page, immediate) { + this.scrollToPage(page, immediate); + } + + getScrollOffsetFromCurrentPage() { + return this.scroller.getCurrX() - this.getScrollOffsetOfPage(this.currentPage); + } +} + +/** + * Keep in mind that if you use ES6 classes for your React components there is no built-in API for mixins. To use TimerMixin with ES6 classes, we recommend react-mixin. + * Refer to 'https://facebook.github.io/react-native/docs/timers.html#content' + */ +reactMixin(ViewPager.prototype, TimerMixin); diff --git a/package.json b/package.json index f5b3fb6..c2d27a5 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,13 @@ "homepage": "https://github.com/archriss/react-native-image-gallery#readme", "dependencies": { "react-native-transformable-image": "0.0.18", - "@ldn0x7dc/react-native-view-pager": "0.0.9", - "react-native-gesture-responder": "0.1.1" + "react-native-gesture-responder": "0.1.1", + "react-native-scroller": "0.0.6", + "react-mixin": "^3.0.5", + "react-timer-mixin": "^0.13.3" + }, + "peerDependencies": { + "react": ">=15.4.0 || ^16.0.0-alpha", + "react-native": ">=0.40" } } From dd6aa1d52f3061ffc45f077d1f258631e4948f7e Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Fri, 8 Sep 2017 12:14:14 +0200 Subject: [PATCH 02/41] TransformableImage included. Optimizations. renderImage prop --- library/Gallery.js | 63 +++-------- library/TransformableImage.js | 195 ++++++++++++++++++++++++++++++++++ library/ViewPager.js | 6 ++ package.json | 2 +- 4 files changed, 219 insertions(+), 47 deletions(-) create mode 100644 library/TransformableImage.js diff --git a/library/Gallery.js b/library/Gallery.js index 86d5648..3cc7d15 100644 --- a/library/Gallery.js +++ b/library/Gallery.js @@ -1,7 +1,7 @@ import React, { Component, PropTypes } from 'react'; import { View, Image } from 'react-native'; import { createResponder } from 'react-native-gesture-responder'; -import TransformableImage from 'react-native-transformable-image'; +import TransformableImage from './TransformableImage'; import ViewPager from './ViewPager'; export default class Gallery extends Component { @@ -16,7 +16,16 @@ export default class Gallery extends Component { onPageScroll: PropTypes.func, onSingleTapConfirmed: PropTypes.func, onGalleryStateChanged: PropTypes.func, - onLongPress: PropTypes.func + onLongPress: PropTypes.func, + initialListSize: PropTypes.number, + removeClippedSubviews: PropTypes.bool, + imageComponent: PropTypes.func, + }; + + static defaultProps = { + initialListSize: 10, + removeClippedSubviews: true, + imageComponent: undefined, }; imageRefs = new Map(); @@ -29,10 +38,8 @@ export default class Gallery extends Component { constructor (props) { super(props); this.state = { - imagesLoaded: [], imagesDimensions: [] }; - this.setImageLoaded = this.setImageLoaded.bind(this); this.renderPage = this.renderPage.bind(this); this.onPageSelected = this.onPageSelected.bind(this); this.onPageScrollStateChanged = this.onPageScrollStateChanged.bind(this); @@ -209,48 +216,12 @@ export default class Gallery extends Component { this.props.onPageScroll && this.props.onPageScroll(e); } - onLoad (pageId, source) { - if (!this._isMounted) { - return; - } - if (source.uri) { - Image.getSize( - source.uri, - (width, height) => { - this.setImageLoaded(pageId, { width, height }); - }, - () => this.setImageLoaded(pageId, false) - ); - } else { - this.setImageLoaded(pageId, false); - } - }; - - setImageLoaded (pageId, dimensions) { - this.setState({ - imagesLoaded: { - ...this.state.imagesLoaded, - [pageId]: true - } - }); - if (dimensions) { - this.setState({ - imagesDimensions: { - ...this.state.imagesDimensions, - [pageId]: dimensions - } - }); - } - } - renderPage (pageData, pageId, layout) { - const { onViewTransformed, onTransformGestureReleased, loader, ...other } = this.props; - const loaded = this.state.imagesLoaded[pageId] && this.state.imagesLoaded[pageId] === true; - const loadingView = !loaded && loader ? loader : false; + console.log(`Rendering page: ${pageId}`); + const { onViewTransformed, onTransformGestureReleased, ...other } = this.props; return ( this.onLoad(pageId, pageData.source)} onViewTransformed={((transform) => { onViewTransformed && onViewTransformed(transform, pageId); })} @@ -261,10 +232,8 @@ export default class Gallery extends Component { key={'innerImage#' + pageId} style={{width: layout.width, height: layout.height}} source={pageData.source} - pixels={this.state.imagesDimensions[pageId] || pageData.dimensions || pageData.dimensions || {}} - > - { loadingView } - + pixels={ pageData.dimensions || pageData.source.dimensions || {}} + /> ); } @@ -304,6 +273,8 @@ export default class Gallery extends Component { onPageSelected={this.onPageSelected} onPageScrollStateChanged={this.onPageScrollStateChanged} onPageScroll={this.onPageScroll} + removeClippedSubviews={ this.props.removeClippedSubviews } + initialListSize={ this.props.initialListSize } /> ); } diff --git a/library/TransformableImage.js b/library/TransformableImage.js new file mode 100644 index 0000000..ba1651d --- /dev/null +++ b/library/TransformableImage.js @@ -0,0 +1,195 @@ +'use strict'; + +import React, { Component, PropTypes } from 'react'; +import { Image } from 'react-native'; + +import ViewTransformer from 'react-native-view-transformer'; + +let DEV = true; + +export default class TransformableImage extends Component { + + static enableDebug() { + DEV = true; + } + + static propTypes = { + pixels: PropTypes.shape({ + width: PropTypes.number, + height: PropTypes.number, + }), + + enableTransform: PropTypes.bool, + enableScale: PropTypes.bool, + enableTranslate: PropTypes.bool, + onTransformGestureReleased: PropTypes.func, + onViewTransformed: PropTypes.func, + imageComponent: PropTypes.func, + resizeMode: PropTypes.string, + }; + + static defaultProps = { + enableTransform: true, + enableScale: true, + enableTranslate: true, + imageComponent: undefined, + resizeMode: 'contain', + }; + + constructor(props) { + super(props); + + this.state = { + width: 0, + height: 0, + + imageLoaded: false, + pixels: undefined, + keyAcumulator: 1 + }; + } + + componentWillMount() { + if (!this.props.pixels) { + this.getImageSize(this.props.source); + } + } + + componentWillReceiveProps(nextProps) { + if (!sameSource(this.props.source, nextProps.source)) { + //image source changed, clear last image's pixels info if any + this.setState({pixels: undefined, keyAcumulator: this.state.keyAcumulator + 1}) + this.getImageSize(nextProps.source); + } + } + + render() { + let maxScale = 1; + let contentAspectRatio = undefined; + let width, height; //pixels + + if (this.props.pixels) { + //if provided via props + width = this.props.pixels.width; + height = this.props.pixels.height; + } else if (this.state.pixels) { + //if got using Image.getSize() + width = this.state.pixels.width; + height = this.state.pixels.height; + } + + if (width && height) { + DEV && console.log(`TransformableImage: (${width}, ${height})`) + contentAspectRatio = width / height; + if (this.state.width && this.state.height) { + maxScale = Math.max(width / this.state.width, height / this.state.height); + maxScale = Math.max(1, maxScale); + } + } + + const imageProps = { + ...this.props, + style: [this.props.style, {backgroundColor: 'transparent'}], + resizeMode: this.props.resizeMode, + onLoadStart: this.onLoadStart.bind(this), + onLoad: this.onLoad.bind(this), + capInsets: {left: 0.1, top: 0.1, right: 0.1, bottom: 0.1}, + } + + const image = this.props.imageComponent ? + this.props.imageComponent(imageProps) : + + + return ( + + { image } + + ); + } + + onLoadStart(e) { + this.props.onLoadStart && this.props.onLoadStart(e); + if (this.state.imageLoaded) { + this.setState({ + imageLoaded: false + }); + } + } + + onLoad(e) { + this.props.onLoad && this.props.onLoad(e); + if (!this.state.imageLoaded) { + this.setState({ + imageLoaded: true + }); + } + } + + onLayout(e) { + let {width, height} = e.nativeEvent.layout; + if (this.state.width !== width || this.state.height !== height) { + this.setState({ + width: width, + height: height + }); + } + } + + getImageSize(source) { + if(!source) return; + + DEV && console.log('getImageSize...' + JSON.stringify(source)); + + if (typeof Image.getSize === 'function') { + if (source && source.uri) { + Image.getSize( + source.uri, + (width, height) => { + DEV && console.log('getImageSize...width=' + width + ', height=' + height); + if (width && height) { + if(this.state.pixels && this.state.pixels.width === width && this.state.pixels.height === height) { + //no need to update state + } else { + this.setState({pixels: {width, height}}); + } + } + }, + (error) => { + console.error('getImageSize...error=' + JSON.stringify(error) + ', source=' + JSON.stringify(source)); + }) + } else { + console.warn('getImageSize...please provide pixels prop for local images'); + } + } else { + console.warn('getImageSize...Image.getSize function not available before react-native v0.28'); + } + } + + getViewTransformerInstance() { + return this.refs['viewTransformer']; + } +} + +function sameSource(source, nextSource) { + if (source === nextSource) { + return true; + } + if (source && nextSource) { + if (source.uri && nextSource.uri) { + return source.uri === nextSource.uri; + } + } + return false; +} diff --git a/library/ViewPager.js b/library/ViewPager.js index 0c6cd16..1aa3c50 100644 --- a/library/ViewPager.js +++ b/library/ViewPager.js @@ -21,6 +21,8 @@ export default class ViewPager extends Component { scrollEnabled: PropTypes.bool, renderPage: PropTypes.func, pageDataArray: PropTypes.array, + initialListSize: PropTypes.number, + removeClippedSubviews: PropTypes.bool, onPageSelected: PropTypes.func, onPageScrollStateChanged: PropTypes.func, @@ -32,6 +34,8 @@ export default class ViewPager extends Component { pageMargin: 0, scrollEnabled: true, pageDataArray: [], + initialListSize: 10, + removeClippedSubviews: true, }; pageCount = 0; //Initialize to avoid undefined error @@ -132,6 +136,8 @@ export default class ViewPager extends Component { dataSource={dataSource} renderRow={this.renderRow.bind(this)} onLayout={this.onLayout.bind(this)} + removeClippedSubviews={ this.props.removeClippedSubviews } + initialListSize={ this.props.initialListSize } /> ); diff --git a/package.json b/package.json index c2d27a5..666e6d2 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ }, "homepage": "https://github.com/archriss/react-native-image-gallery#readme", "dependencies": { - "react-native-transformable-image": "0.0.18", + "react-native-view-transformer": "0.0.28", "react-native-gesture-responder": "0.1.1", "react-native-scroller": "0.0.6", "react-mixin": "^3.0.5", From e89f0e4a569afbfec43252c842977688342155d4 Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Fri, 8 Sep 2017 12:23:30 +0200 Subject: [PATCH 03/41] Console logs removed --- library/Gallery.js | 1 - library/TransformableImage.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/library/Gallery.js b/library/Gallery.js index 3cc7d15..723a393 100644 --- a/library/Gallery.js +++ b/library/Gallery.js @@ -217,7 +217,6 @@ export default class Gallery extends Component { } renderPage (pageData, pageId, layout) { - console.log(`Rendering page: ${pageId}`); const { onViewTransformed, onTransformGestureReleased, ...other } = this.props; return ( Date: Fri, 8 Sep 2017 13:30:01 +0200 Subject: [PATCH 04/41] Unused imagesDimensions --- library/Gallery.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/library/Gallery.js b/library/Gallery.js index 723a393..7f6ffd7 100644 --- a/library/Gallery.js +++ b/library/Gallery.js @@ -37,9 +37,7 @@ export default class Gallery extends Component { constructor (props) { super(props); - this.state = { - imagesDimensions: [] - }; + this.renderPage = this.renderPage.bind(this); this.onPageSelected = this.onPageSelected.bind(this); this.onPageScrollStateChanged = this.onPageScrollStateChanged.bind(this); From f91cd64b345fb2915d1ac393659729b12d80b96c Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Fri, 8 Sep 2017 14:22:32 +0200 Subject: [PATCH 05/41] peerDependencies removed --- package.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/package.json b/package.json index 666e6d2..6b23afa 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,5 @@ "react-native-scroller": "0.0.6", "react-mixin": "^3.0.5", "react-timer-mixin": "^0.13.3" - }, - "peerDependencies": { - "react": ">=15.4.0 || ^16.0.0-alpha", - "react-native": ">=0.40" } } From e7c9dab53a15644b129df5b22b340edfcc3da24d Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Mon, 11 Sep 2017 10:24:08 +0200 Subject: [PATCH 06/41] Props refactoring. All as PureComponents --- library/Gallery.js | 24 ++++++++----- library/TransformableImage.js | 65 ++++++++++++++++++----------------- library/ViewPager.js | 26 +++++++++----- 3 files changed, 67 insertions(+), 48 deletions(-) diff --git a/library/Gallery.js b/library/Gallery.js index 7f6ffd7..2e9f7c5 100644 --- a/library/Gallery.js +++ b/library/Gallery.js @@ -1,14 +1,24 @@ -import React, { Component, PropTypes } from 'react'; +import React, { PureComponent, PropTypes } from 'react'; import { View, Image } from 'react-native'; import { createResponder } from 'react-native-gesture-responder'; import TransformableImage from './TransformableImage'; import ViewPager from './ViewPager'; -export default class Gallery extends Component { +const DEV = false; + +export default class Gallery extends PureComponent { static propTypes = { ...View.propTypes, - images: PropTypes.array, + images: PropTypes.arrayOf(PropTypes.shape({ + source: PropTypes.shape({ + uri: PropTypes.string.isRequired, + dimensions: PropTypes.shape({ + width: PropTypes.number, + height: PropTypes.number, + }), + }), + })), initialPage: PropTypes.number, pageMargin: PropTypes.number, onPageSelected: PropTypes.func, @@ -214,11 +224,10 @@ export default class Gallery extends Component { this.props.onPageScroll && this.props.onPageScroll(e); } - renderPage (pageData, pageId, layout) { - const { onViewTransformed, onTransformGestureReleased, ...other } = this.props; + renderPage (pageData, pageId) { + const { onViewTransformed, onTransformGestureReleased } = this.props; return ( { onViewTransformed && onViewTransformed(transform, pageId); })} @@ -227,9 +236,7 @@ export default class Gallery extends Component { })} ref={((ref) => { this.imageRefs.set(pageId, ref); })} key={'innerImage#' + pageId} - style={{width: layout.width, height: layout.height}} source={pageData.source} - pixels={ pageData.dimensions || pageData.source.dimensions || {}} /> ); } @@ -247,6 +254,7 @@ export default class Gallery extends Component { } render () { + DEVE && console.log('Gallery render'); let gestureResponder = this.gestureResponder; let images = this.props.images; diff --git a/library/TransformableImage.js b/library/TransformableImage.js index 9b0db62..077d20f 100644 --- a/library/TransformableImage.js +++ b/library/TransformableImage.js @@ -1,24 +1,26 @@ 'use strict'; -import React, { Component, PropTypes } from 'react'; +import React, { PureComponent, PropTypes } from 'react'; import { Image } from 'react-native'; import ViewTransformer from 'react-native-view-transformer'; -let DEV = false; +const DEV = false; -export default class TransformableImage extends Component { +export default class TransformableImage extends PureComponent { static enableDebug() { DEV = true; } static propTypes = { - pixels: PropTypes.shape({ - width: PropTypes.number, - height: PropTypes.number, + source: PropTypes.shape({ + uri: PropTypes.string.isRequired, + dimensions: PropTypes.shape({ + width: PropTypes.number, + height: PropTypes.number, + }), }), - enableTransform: PropTypes.bool, enableScale: PropTypes.bool, enableTranslate: PropTypes.bool, @@ -40,49 +42,48 @@ export default class TransformableImage extends Component { super(props); this.state = { - width: 0, - height: 0, + viewWidth: 0, + viewHeight: 0, imageLoaded: false, - pixels: undefined, + imageDimensions: props.source.dimensions, keyAcumulator: 1 }; } componentWillMount() { - if (!this.props.pixels) { + if (!this.state.imageDimensions) { this.getImageSize(this.props.source); } } componentWillReceiveProps(nextProps) { + DEV && console.log('TransformableImage: componentWillReceiveProps'); if (!sameSource(this.props.source, nextProps.source)) { - //image source changed, clear last image's pixels info if any - this.setState({pixels: undefined, keyAcumulator: this.state.keyAcumulator + 1}) - this.getImageSize(nextProps.source); + DEV && console.log('TransformableImage: componentWillReceiveProps - different source'); + //image source changed, clear last image's imageDimensions info if any + this.setState({imageDimensions: props.source.dimensions, keyAcumulator: this.state.keyAcumulator + 1}) + if (!props.source.dimensions) { // if we don't have image dimensions provided in source + this.getImageSize(nextProps.source); + } } } render() { let maxScale = 1; let contentAspectRatio = undefined; - let width, height; //pixels - - if (this.props.pixels) { - //if provided via props - width = this.props.pixels.width; - height = this.props.pixels.height; - } else if (this.state.pixels) { - //if got using Image.getSize() - width = this.state.pixels.width; - height = this.state.pixels.height; + let width, height; //imageDimensions + + if (this.state.imageDimensions) { + width = this.state.imageDimensions.width; + height = this.state.imageDimensions.height; } if (width && height) { DEV && console.log(`TransformableImage: (${width}, ${height})`) contentAspectRatio = width / height; - if (this.state.width && this.state.height) { - maxScale = Math.max(width / this.state.width, height / this.state.height); + if (this.state.viewWidth && this.state.viewHeight) { + maxScale = Math.max(width / this.state.viewWidth, height / this.state.viewHeight); maxScale = Math.max(1, maxScale); } } @@ -139,10 +140,10 @@ export default class TransformableImage extends Component { onLayout(e) { let {width, height} = e.nativeEvent.layout; - if (this.state.width !== width || this.state.height !== height) { + if (this.state.viewWidth !== width || this.state.viewHeight !== height) { this.setState({ - width: width, - height: height + viewWidth: width, + viewHeight: height }); } } @@ -159,10 +160,10 @@ export default class TransformableImage extends Component { (width, height) => { DEV && console.log('getImageSize...width=' + width + ', height=' + height); if (width && height) { - if(this.state.pixels && this.state.pixels.width === width && this.state.pixels.height === height) { + if(this.state.imageDimensions && this.state.imageDimensions.width === width && this.state.imageDimensions.height === height) { //no need to update state } else { - this.setState({pixels: {width, height}}); + this.setState({imageDimensions: {width, height}}); } } }, @@ -170,7 +171,7 @@ export default class TransformableImage extends Component { console.error('getImageSize...error=' + JSON.stringify(error) + ', source=' + JSON.stringify(source)); }) } else { - console.warn('getImageSize...please provide pixels prop for local images'); + console.warn('getImageSize...please provide imageDimensions prop for local images'); } } else { console.warn('getImageSize...Image.getSize function not available before react-native v0.28'); diff --git a/library/ViewPager.js b/library/ViewPager.js index 1aa3c50..f5de167 100644 --- a/library/ViewPager.js +++ b/library/ViewPager.js @@ -1,4 +1,4 @@ -import React, { PropTypes, Component } from 'react'; +import React, { PropTypes, PureComponent } from 'react'; import { View, ListView, @@ -12,7 +12,9 @@ import reactMixin from 'react-mixin'; const MIN_FLING_VELOCITY = 0.5; -export default class ViewPager extends Component { +const DEV = false; + +export default class ViewPager extends PureComponent { static propTypes = { ...View.propTypes, @@ -144,17 +146,25 @@ export default class ViewPager extends Component { } renderRow(rowData, sectionID, rowID, highlightRow) { + DEV && console.log(`ViewPager:renderRow ${rowID}`); const {width, height} = this.state; - let page = this.props.renderPage(rowData, rowID, {width, height}); + let page = this.props.renderPage(rowData, rowID); + + const layout = { + width: width, + height: height, + position: 'relative', + } + const style = page.props.style ? + ( + [page.props.style, layout] + ) + : layout; let newProps = { ...page.props, ref: page.ref, - style: [page.props.style, { - width: width, - height: height, - position: 'relative', - }] + style }; const element = React.createElement(page.type, newProps); From 08312d9158868db09f701f38d10c5a3d4aac0b5f Mon Sep 17 00:00:00 2001 From: Artur Chrusciel Date: Mon, 11 Sep 2017 11:25:41 +0200 Subject: [PATCH 07/41] Spelling fix --- library/Gallery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/Gallery.js b/library/Gallery.js index 2e9f7c5..9b13520 100644 --- a/library/Gallery.js +++ b/library/Gallery.js @@ -254,7 +254,7 @@ export default class Gallery extends PureComponent { } render () { - DEVE && console.log('Gallery render'); + DEV && console.log('Gallery render'); let gestureResponder = this.gestureResponder; let images = this.props.images; From 8a4ca499d683a27e68ac654cc8f51d9c885e7e68 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Tue, 12 Sep 2017 11:41:26 +0200 Subject: [PATCH 08/41] chore(eslint): add eslint configuration --- .eslintrc | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .eslintrc diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..427857f --- /dev/null +++ b/.eslintrc @@ -0,0 +1,36 @@ +{ + "parser": "babel-eslint", + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + }, + "plugins": ["react"], + "extends": ["eslint:recommended", "plugin:react/recommended"] + }, + "extends": [ + "standard", + "standard-react" + ], + "env": { + "browser": true + }, + "globals": { + "__DEV__": false + }, + "rules": { + "indent": [2, 4], + "generator-star-spacing": 0, + "react/jsx-indent": [0, 4], + "jsx-indent-props": [0, 4], + "react/jsx-curly-spacing": [0, "never"], + "react/jsx-boolean-value": [0, "never"], + "semi": [2, "always"], + "operator-linebreak": [2, "after"], + "no-warning-comments": [1, { + "terms": ["todo", "fixme", "xxx"], + "location": "start" + }] + } +} \ No newline at end of file From 20e311c54fd34de23b19b2b67198b10c79d861aa Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Tue, 12 Sep 2017 11:41:39 +0200 Subject: [PATCH 09/41] chore(project): add gitignore & npmignore --- .gitignore | 1 + .npmignore | 1 + 2 files changed, 2 insertions(+) create mode 100644 .gitignore create mode 100644 .npmignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30bc162 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..043a3b4 --- /dev/null +++ b/.npmignore @@ -0,0 +1 @@ +Demo \ No newline at end of file From cef56929dd7650a2667b64b6c181effc684d1d73 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Tue, 12 Sep 2017 11:42:08 +0200 Subject: [PATCH 10/41] feat(Demo): add a simple demo --- Demo/.babelrc | 3 + Demo/.buckconfig | 6 + Demo/.flowconfig | 45 + Demo/.gitattributes | 1 + Demo/.gitignore | 53 + Demo/.watchmanconfig | 1 + Demo/__tests__/index.android.js | 12 + Demo/__tests__/index.ios.js | 12 + Demo/android/app/BUCK | 65 + Demo/android/app/build.gradle | 146 + Demo/android/app/proguard-rules.pro | 70 + Demo/android/app/src/main/AndroidManifest.xml | 32 + .../src/main/java/com/demo/MainActivity.java | 15 + .../main/java/com/demo/MainApplication.java | 40 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + Demo/android/build.gradle | 24 + Demo/android/gradle.properties | 20 + .../android/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 52266 bytes .../gradle/wrapper/gradle-wrapper.properties | 5 + Demo/android/gradlew | 164 + Demo/android/gradlew.bat | 90 + Demo/android/keystores/BUCK | 8 + .../keystores/debug.keystore.properties | 4 + Demo/android/settings.gradle | 3 + Demo/app.json | 4 + Demo/index.android.js | 14 + Demo/index.ios.js | 14 + Demo/ios/Demo-tvOS/Info.plist | 54 + Demo/ios/Demo-tvOSTests/Info.plist | 24 + Demo/ios/Demo.xcodeproj/project.pbxproj | 1298 +++++ .../xcshareddata/xcschemes/Demo-tvOS.xcscheme | 129 + .../xcshareddata/xcschemes/Demo.xcscheme | 129 + Demo/ios/Demo/AppDelegate.h | 16 + Demo/ios/Demo/AppDelegate.m | 37 + Demo/ios/Demo/Base.lproj/LaunchScreen.xib | 42 + .../AppIcon.appiconset/Contents.json | 38 + Demo/ios/Demo/Info.plist | 49 + Demo/ios/Demo/main.m | 18 + Demo/ios/DemoTests/DemoTests.m | 70 + Demo/ios/DemoTests/Info.plist | 24 + Demo/package-lock.json | 83 + Demo/package.json | 23 + Demo/src/DemoGallery.js | 43 + Demo/src/static/images/placehold.jpg | Bin 0 -> 200282 bytes Demo/yarn.lock | 4581 +++++++++++++++++ 50 files changed, 7520 insertions(+) create mode 100644 Demo/.babelrc create mode 100644 Demo/.buckconfig create mode 100644 Demo/.flowconfig create mode 100644 Demo/.gitattributes create mode 100644 Demo/.gitignore create mode 100644 Demo/.watchmanconfig create mode 100644 Demo/__tests__/index.android.js create mode 100644 Demo/__tests__/index.ios.js create mode 100644 Demo/android/app/BUCK create mode 100644 Demo/android/app/build.gradle create mode 100644 Demo/android/app/proguard-rules.pro create mode 100644 Demo/android/app/src/main/AndroidManifest.xml create mode 100644 Demo/android/app/src/main/java/com/demo/MainActivity.java create mode 100644 Demo/android/app/src/main/java/com/demo/MainApplication.java create mode 100644 Demo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 Demo/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 Demo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 Demo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Demo/android/app/src/main/res/values/strings.xml create mode 100644 Demo/android/app/src/main/res/values/styles.xml create mode 100644 Demo/android/build.gradle create mode 100644 Demo/android/gradle.properties create mode 100644 Demo/android/gradle/wrapper/gradle-wrapper.jar create mode 100644 Demo/android/gradle/wrapper/gradle-wrapper.properties create mode 100755 Demo/android/gradlew create mode 100644 Demo/android/gradlew.bat create mode 100644 Demo/android/keystores/BUCK create mode 100644 Demo/android/keystores/debug.keystore.properties create mode 100644 Demo/android/settings.gradle create mode 100644 Demo/app.json create mode 100644 Demo/index.android.js create mode 100644 Demo/index.ios.js create mode 100644 Demo/ios/Demo-tvOS/Info.plist create mode 100644 Demo/ios/Demo-tvOSTests/Info.plist create mode 100644 Demo/ios/Demo.xcodeproj/project.pbxproj create mode 100644 Demo/ios/Demo.xcodeproj/xcshareddata/xcschemes/Demo-tvOS.xcscheme create mode 100644 Demo/ios/Demo.xcodeproj/xcshareddata/xcschemes/Demo.xcscheme create mode 100644 Demo/ios/Demo/AppDelegate.h create mode 100644 Demo/ios/Demo/AppDelegate.m create mode 100644 Demo/ios/Demo/Base.lproj/LaunchScreen.xib create mode 100644 Demo/ios/Demo/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Demo/ios/Demo/Info.plist create mode 100644 Demo/ios/Demo/main.m create mode 100644 Demo/ios/DemoTests/DemoTests.m create mode 100644 Demo/ios/DemoTests/Info.plist create mode 100644 Demo/package-lock.json create mode 100644 Demo/package.json create mode 100644 Demo/src/DemoGallery.js create mode 100644 Demo/src/static/images/placehold.jpg create mode 100644 Demo/yarn.lock diff --git a/Demo/.babelrc b/Demo/.babelrc new file mode 100644 index 0000000..a9ce136 --- /dev/null +++ b/Demo/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["react-native"] +} diff --git a/Demo/.buckconfig b/Demo/.buckconfig new file mode 100644 index 0000000..934256c --- /dev/null +++ b/Demo/.buckconfig @@ -0,0 +1,6 @@ + +[android] + target = Google Inc.:Google APIs:23 + +[maven_repositories] + central = https://repo1.maven.org/maven2 diff --git a/Demo/.flowconfig b/Demo/.flowconfig new file mode 100644 index 0000000..8346120 --- /dev/null +++ b/Demo/.flowconfig @@ -0,0 +1,45 @@ +[ignore] +; We fork some components by platform +.*/*[.]android.js + +; Ignore "BUCK" generated dirs +/\.buckd/ + +; Ignore unexpected extra "@providesModule" +.*/node_modules/.*/node_modules/fbjs/.* + +; Ignore duplicate module providers +; For RN Apps installed via npm, "Libraries" folder is inside +; "node_modules/react-native" but in the source repo it is in the root +.*/Libraries/react-native/React.js +.*/Libraries/react-native/ReactNative.js + +[include] + +[libs] +node_modules/react-native/Libraries/react-native/react-native-interface.js +node_modules/react-native/flow +flow/ + +[options] +emoji=true + +module.system=haste + +munge_underscores=true + +module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' + +suppress_type=$FlowIssue +suppress_type=$FlowFixMe +suppress_type=$FixMe + +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-9]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError + +unsafe.enable_getters_and_setters=true + +[version] +^0.49.1 diff --git a/Demo/.gitattributes b/Demo/.gitattributes new file mode 100644 index 0000000..d42ff18 --- /dev/null +++ b/Demo/.gitattributes @@ -0,0 +1 @@ +*.pbxproj -text diff --git a/Demo/.gitignore b/Demo/.gitignore new file mode 100644 index 0000000..10be197 --- /dev/null +++ b/Demo/.gitignore @@ -0,0 +1,53 @@ +# OSX +# +.DS_Store + +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate +project.xcworkspace + +# Android/IntelliJ +# +build/ +.idea +.gradle +local.properties +*.iml + +# node.js +# +node_modules/ +npm-debug.log +yarn-error.log + +# BUCK +buck-out/ +\.buckd/ +*.keystore + +# fastlane +# +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the +# screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots diff --git a/Demo/.watchmanconfig b/Demo/.watchmanconfig new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/Demo/.watchmanconfig @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/Demo/__tests__/index.android.js b/Demo/__tests__/index.android.js new file mode 100644 index 0000000..b49b908 --- /dev/null +++ b/Demo/__tests__/index.android.js @@ -0,0 +1,12 @@ +import 'react-native'; +import React from 'react'; +import Index from '../index.android.js'; + +// Note: test renderer must be required after react-native. +import renderer from 'react-test-renderer'; + +it('renders correctly', () => { + const tree = renderer.create( + + ); +}); diff --git a/Demo/__tests__/index.ios.js b/Demo/__tests__/index.ios.js new file mode 100644 index 0000000..ba7c5b5 --- /dev/null +++ b/Demo/__tests__/index.ios.js @@ -0,0 +1,12 @@ +import 'react-native'; +import React from 'react'; +import Index from '../index.ios.js'; + +// Note: test renderer must be required after react-native. +import renderer from 'react-test-renderer'; + +it('renders correctly', () => { + const tree = renderer.create( + + ); +}); diff --git a/Demo/android/app/BUCK b/Demo/android/app/BUCK new file mode 100644 index 0000000..1a4134e --- /dev/null +++ b/Demo/android/app/BUCK @@ -0,0 +1,65 @@ +# To learn about Buck see [Docs](https://buckbuild.com/). +# To run your application with Buck: +# - install Buck +# - `npm start` - to start the packager +# - `cd android` +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck +# - `buck install -r android/app` - compile, install and run application +# + +lib_deps = [] + +for jarfile in glob(['libs/*.jar']): + name = 'jars__' + jarfile[jarfile.rindex('/') + 1: jarfile.rindex('.jar')] + lib_deps.append(':' + name) + prebuilt_jar( + name = name, + binary_jar = jarfile, + ) + +for aarfile in glob(['libs/*.aar']): + name = 'aars__' + aarfile[aarfile.rindex('/') + 1: aarfile.rindex('.aar')] + lib_deps.append(':' + name) + android_prebuilt_aar( + name = name, + aar = aarfile, + ) + +android_library( + name = "all-libs", + exported_deps = lib_deps, +) + +android_library( + name = "app-code", + srcs = glob([ + "src/main/java/**/*.java", + ]), + deps = [ + ":all-libs", + ":build_config", + ":res", + ], +) + +android_build_config( + name = "build_config", + package = "com.demo", +) + +android_resource( + name = "res", + package = "com.demo", + res = "src/main/res", +) + +android_binary( + name = "app", + keystore = "//android/keystores:debug", + manifest = "src/main/AndroidManifest.xml", + package_type = "debug", + deps = [ + ":app-code", + ], +) diff --git a/Demo/android/app/build.gradle b/Demo/android/app/build.gradle new file mode 100644 index 0000000..398f51b --- /dev/null +++ b/Demo/android/app/build.gradle @@ -0,0 +1,146 @@ +apply plugin: "com.android.application" + +import com.android.build.OutputFile + +/** + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets + * and bundleReleaseJsAndAssets). + * These basically call `react-native bundle` with the correct arguments during the Android build + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the + * bundle directly from the development server. Below you can see all the possible configurations + * and their defaults. If you decide to add a configuration block, make sure to add it before the + * `apply from: "../../node_modules/react-native/react.gradle"` line. + * + * project.ext.react = [ + * // the name of the generated asset file containing your JS bundle + * bundleAssetName: "index.android.bundle", + * + * // the entry file for bundle generation + * entryFile: "index.android.js", + * + * // whether to bundle JS and assets in debug mode + * bundleInDebug: false, + * + * // whether to bundle JS and assets in release mode + * bundleInRelease: true, + * + * // whether to bundle JS and assets in another build variant (if configured). + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants + * // The configuration property can be in the following formats + * // 'bundleIn${productFlavor}${buildType}' + * // 'bundleIn${buildType}' + * // bundleInFreeDebug: true, + * // bundleInPaidRelease: true, + * // bundleInBeta: true, + * + * // whether to disable dev mode in custom build variants (by default only disabled in release) + * // for example: to disable dev mode in the staging build type (if configured) + * devDisabledInStaging: true, + * // The configuration property can be in the following formats + * // 'devDisabledIn${productFlavor}${buildType}' + * // 'devDisabledIn${buildType}' + * + * // the root of your project, i.e. where "package.json" lives + * root: "../../", + * + * // where to put the JS bundle asset in debug mode + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", + * + * // where to put the JS bundle asset in release mode + * jsBundleDirRelease: "$buildDir/intermediates/assets/release", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in debug mode + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", + * + * // where to put drawable resources / React Native assets, e.g. the ones you use via + * // require('./image.png')), in release mode + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", + * + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to + * // date; if you have any other folders that you want to ignore for performance reasons (gradle + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ + * // for example, you might want to remove it from here. + * inputExcludes: ["android/**", "ios/**"], + * + * // override which node gets called and with what additional arguments + * nodeExecutableAndArgs: ["node"], + * + * // supply additional arguments to the packager + * extraPackagerArgs: [] + * ] + */ + +apply from: "../../node_modules/react-native/react.gradle" + +/** + * Set this to true to create two separate APKs instead of one: + * - An APK that only works on ARM devices + * - An APK that only works on x86 devices + * The advantage is the size of the APK is reduced by about 4MB. + * Upload all the APKs to the Play Store and people will download + * the correct one based on the CPU architecture of their device. + */ +def enableSeparateBuildPerCPUArchitecture = false + +/** + * Run Proguard to shrink the Java bytecode in release builds. + */ +def enableProguardInReleaseBuilds = false + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.1" + + defaultConfig { + applicationId "com.demo" + minSdkVersion 16 + targetSdkVersion 22 + versionCode 1 + versionName "1.0" + ndk { + abiFilters "armeabi-v7a", "x86" + } + } + splits { + abi { + reset() + enable enableSeparateBuildPerCPUArchitecture + universalApk false // If true, also generate a universal APK + include "armeabi-v7a", "x86" + } + } + buildTypes { + release { + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } + // applicationVariants are e.g. debug, release + applicationVariants.all { variant -> + variant.outputs.each { output -> + // For each separate APK per architecture, set a unique version code as described here: + // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits + def versionCodes = ["armeabi-v7a":1, "x86":2] + def abi = output.getFilter(OutputFile.ABI) + if (abi != null) { // null for the universal-debug, universal-release variants + output.versionCodeOverride = + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + } + } + } +} + +dependencies { + compile fileTree(dir: "libs", include: ["*.jar"]) + compile "com.android.support:appcompat-v7:23.0.1" + compile "com.facebook.react:react-native:+" // From node_modules +} + +// Run this once to be able to run the application with BUCK +// puts all compile dependencies into folder libs for BUCK to use +task copyDownloadableDepsToLibs(type: Copy) { + from configurations.compile + into 'libs' +} diff --git a/Demo/android/app/proguard-rules.pro b/Demo/android/app/proguard-rules.pro new file mode 100644 index 0000000..6e8516c --- /dev/null +++ b/Demo/android/app/proguard-rules.pro @@ -0,0 +1,70 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Disabling obfuscation is useful if you collect stack traces from production crashes +# (unless you are using a system that supports de-obfuscate the stack traces). +-dontobfuscate + +# React Native + +# Keep our interfaces so they can be used by other ProGuard rules. +# See http://sourceforge.net/p/proguard/bugs/466/ +-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip +-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters +-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip + +# Do not strip any method/class that is annotated with @DoNotStrip +-keep @com.facebook.proguard.annotations.DoNotStrip class * +-keep @com.facebook.common.internal.DoNotStrip class * +-keepclassmembers class * { + @com.facebook.proguard.annotations.DoNotStrip *; + @com.facebook.common.internal.DoNotStrip *; +} + +-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { + void set*(***); + *** get*(); +} + +-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } +-keep class * extends com.facebook.react.bridge.NativeModule { *; } +-keepclassmembers,includedescriptorclasses class * { native ; } +-keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } + +-dontwarn com.facebook.react.** + +# TextLayoutBuilder uses a non-public Android constructor within StaticLayout. +# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. +-dontwarn android.text.StaticLayout + +# okhttp + +-keepattributes Signature +-keepattributes *Annotation* +-keep class okhttp3.** { *; } +-keep interface okhttp3.** { *; } +-dontwarn okhttp3.** + +# okio + +-keep class sun.misc.Unsafe { *; } +-dontwarn java.nio.file.* +-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement +-dontwarn okio.** diff --git a/Demo/android/app/src/main/AndroidManifest.xml b/Demo/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..eb805ed --- /dev/null +++ b/Demo/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + diff --git a/Demo/android/app/src/main/java/com/demo/MainActivity.java b/Demo/android/app/src/main/java/com/demo/MainActivity.java new file mode 100644 index 0000000..100ac81 --- /dev/null +++ b/Demo/android/app/src/main/java/com/demo/MainActivity.java @@ -0,0 +1,15 @@ +package com.demo; + +import com.facebook.react.ReactActivity; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. + * This is used to schedule rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "Demo"; + } +} diff --git a/Demo/android/app/src/main/java/com/demo/MainApplication.java b/Demo/android/app/src/main/java/com/demo/MainApplication.java new file mode 100644 index 0000000..f705156 --- /dev/null +++ b/Demo/android/app/src/main/java/com/demo/MainApplication.java @@ -0,0 +1,40 @@ +package com.demo; + +import android.app.Application; + +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; +import com.facebook.soloader.SoLoader; + +import java.util.Arrays; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage() + ); + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + } +} diff --git a/Demo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Demo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..cde69bcccec65160d92116f20ffce4fce0b5245c GIT binary patch literal 3418 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 literal 0 HcmV?d00001 diff --git a/Demo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Demo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa42f0e7b91d006d22352c9ff2f134e504e3c1d GIT binary patch literal 4842 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 literal 0 HcmV?d00001 diff --git a/Demo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Demo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..324e72cdd7480cb983fa1bcc7ce686e51ef87fe7 GIT binary patch literal 7718 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 literal 0 HcmV?d00001 diff --git a/Demo/android/app/src/main/res/values/strings.xml b/Demo/android/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..b2250a8 --- /dev/null +++ b/Demo/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Demo + diff --git a/Demo/android/app/src/main/res/values/styles.xml b/Demo/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..319eb0c --- /dev/null +++ b/Demo/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/Demo/android/build.gradle b/Demo/android/build.gradle new file mode 100644 index 0000000..eed9972 --- /dev/null +++ b/Demo/android/build.gradle @@ -0,0 +1,24 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.2.3' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + mavenLocal() + jcenter() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } + } +} diff --git a/Demo/android/gradle.properties b/Demo/android/gradle.properties new file mode 100644 index 0000000..1fd964e --- /dev/null +++ b/Demo/android/gradle.properties @@ -0,0 +1,20 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +android.useDeprecatedNdk=true diff --git a/Demo/android/gradle/wrapper/gradle-wrapper.jar b/Demo/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..b5166dad4d90021f6a0b45268c0755719f1d5cd4 GIT binary patch literal 52266 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 z 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 literal 0 HcmV?d00001 diff --git a/Demo/android/gradle/wrapper/gradle-wrapper.properties b/Demo/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..dbdc05d --- /dev/null +++ b/Demo/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip diff --git a/Demo/android/gradlew b/Demo/android/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/Demo/android/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/Demo/android/gradlew.bat b/Demo/android/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/Demo/android/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Demo/android/keystores/BUCK b/Demo/android/keystores/BUCK new file mode 100644 index 0000000..88e4c31 --- /dev/null +++ b/Demo/android/keystores/BUCK @@ -0,0 +1,8 @@ +keystore( + name = "debug", + properties = "debug.keystore.properties", + store = "debug.keystore", + visibility = [ + "PUBLIC", + ], +) diff --git a/Demo/android/keystores/debug.keystore.properties b/Demo/android/keystores/debug.keystore.properties new file mode 100644 index 0000000..121bfb4 --- /dev/null +++ b/Demo/android/keystores/debug.keystore.properties @@ -0,0 +1,4 @@ +key.store=debug.keystore +key.alias=androiddebugkey +key.store.password=android +key.alias.password=android diff --git a/Demo/android/settings.gradle b/Demo/android/settings.gradle new file mode 100644 index 0000000..673b698 --- /dev/null +++ b/Demo/android/settings.gradle @@ -0,0 +1,3 @@ +rootProject.name = 'Demo' + +include ':app' diff --git a/Demo/app.json b/Demo/app.json new file mode 100644 index 0000000..08b2878 --- /dev/null +++ b/Demo/app.json @@ -0,0 +1,4 @@ +{ + "name": "Demo", + "displayName": "Demo" +} \ No newline at end of file diff --git a/Demo/index.android.js b/Demo/index.android.js new file mode 100644 index 0000000..4113ab7 --- /dev/null +++ b/Demo/index.android.js @@ -0,0 +1,14 @@ +import React, { Component } from 'react'; +import { AppRegistry } from 'react-native'; +import DemoGallery from './src/DemoGallery'; + +export default class Demo extends Component { + + render () { + return ( + + ); + } +} + +AppRegistry.registerComponent('Demo', () => Demo); diff --git a/Demo/index.ios.js b/Demo/index.ios.js new file mode 100644 index 0000000..4113ab7 --- /dev/null +++ b/Demo/index.ios.js @@ -0,0 +1,14 @@ +import React, { Component } from 'react'; +import { AppRegistry } from 'react-native'; +import DemoGallery from './src/DemoGallery'; + +export default class Demo extends Component { + + render () { + return ( + + ); + } +} + +AppRegistry.registerComponent('Demo', () => Demo); diff --git a/Demo/ios/Demo-tvOS/Info.plist b/Demo/ios/Demo-tvOS/Info.plist new file mode 100644 index 0000000..2fb6a11 --- /dev/null +++ b/Demo/ios/Demo-tvOS/Info.plist @@ -0,0 +1,54 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + NSLocationWhenInUseUsageDescription + + NSAppTransportSecurity + + + NSExceptionDomains + + localhost + + NSExceptionAllowsInsecureHTTPLoads + + + + + + diff --git a/Demo/ios/Demo-tvOSTests/Info.plist b/Demo/ios/Demo-tvOSTests/Info.plist new file mode 100644 index 0000000..886825c --- /dev/null +++ b/Demo/ios/Demo-tvOSTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Demo/ios/Demo.xcodeproj/project.pbxproj b/Demo/ios/Demo.xcodeproj/project.pbxproj new file mode 100644 index 0000000..28ccf58 --- /dev/null +++ b/Demo/ios/Demo.xcodeproj/project.pbxproj @@ -0,0 +1,1298 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; + 00E356F31AD99517003FC87E /* DemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* DemoTests.m */; }; + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; + 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */; }; + 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */; }; + 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */; }; + 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */; }; + 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */; }; + 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; }; + 2D02E4C91E0B4AEC006451C7 /* libReact-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact-tvOS.a */; }; + 2DCD954D1E0B4F2C00145EB5 /* DemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* DemoTests.m */; }; + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; + ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTActionSheet; + }; + 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTGeolocation; + }; + 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B5115D1A9E6B3D00147676; + remoteInfo = RCTImage; + }; + 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B511DB1A9E6C8500147676; + remoteInfo = RCTNetwork; + }; + 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 832C81801AAF6DEF007FA2F7; + remoteInfo = RCTVibration; + }; + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 13B07F861A680F5B00A75B9A; + remoteInfo = Demo; + }; + 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTSettings; + }; + 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3C86DF461ADF2C930047B81A; + remoteInfo = RCTWebSocket; + }; + 146834031AC3E56700842450 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; + remoteInfo = React; + }; + 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; + remoteInfo = "Demo-tvOS"; + }; + 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A283A1D9B042B00D4039D; + remoteInfo = "RCTImage-tvOS"; + }; + 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28471D9B043800D4039D; + remoteInfo = "RCTLinking-tvOS"; + }; + 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28541D9B044C00D4039D; + remoteInfo = "RCTNetwork-tvOS"; + }; + 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28611D9B046600D4039D; + remoteInfo = "RCTSettings-tvOS"; + }; + 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A287B1D9B048500D4039D; + remoteInfo = "RCTText-tvOS"; + }; + 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28881D9B049200D4039D; + remoteInfo = "RCTWebSocket-tvOS"; + }; + 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28131D9B038B00D4039D; + remoteInfo = "React-tvOS"; + }; + 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3C059A1DE3340900C268FA; + remoteInfo = yoga; + }; + 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3C06751DE3340C00C268FA; + remoteInfo = "yoga-tvOS"; + }; + 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9251DE5FBEC00167DC4; + remoteInfo = cxxreact; + }; + 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; + remoteInfo = "cxxreact-tvOS"; + }; + 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; + remoteInfo = jschelpers; + }; + 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; + remoteInfo = "jschelpers-tvOS"; + }; + 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTAnimation; + }; + 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28201D9B03D100D4039D; + remoteInfo = "RCTAnimation-tvOS"; + }; + 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTLinking; + }; + 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58B5119B1A9E6C1200147676; + remoteInfo = RCTText; + }; + 9CFB57A71F67D00400B4B4A5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = ADD01A681E09402E00F6D226; + remoteInfo = "RCTBlob-tvOS"; + }; + ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 358F4ED71D1E81A9004DF814; + remoteInfo = RCTBlob; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; + 00E356EE1AD99517003FC87E /* DemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* DemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DemoTests.m; sourceTree = ""; }; + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Demo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Demo/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Demo/AppDelegate.m; sourceTree = ""; }; + 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Demo/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Demo/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Demo/main.m; sourceTree = ""; }; + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; + 2D02E47B1E0B4A5D006451C7 /* Demo-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Demo-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D02E4901E0B4A5D006451C7 /* Demo-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Demo-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; }; + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; + ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00E356EB1AD99517003FC87E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */, + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, + 146834051AC3E58100842450 /* libReact.a in Frameworks */, + 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, + 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, + 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, + 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, + 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */, + 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */, + 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */, + 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, + 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, + 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4781E0B4A5D006451C7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D02E4C91E0B4AEC006451C7 /* libReact-tvOS.a in Frameworks */, + 2D02E4C21E0B4AEC006451C7 /* libRCTAnimation.a in Frameworks */, + 2D02E4C31E0B4AEC006451C7 /* libRCTImage-tvOS.a in Frameworks */, + 2D02E4C41E0B4AEC006451C7 /* libRCTLinking-tvOS.a in Frameworks */, + 2D02E4C51E0B4AEC006451C7 /* libRCTNetwork-tvOS.a in Frameworks */, + 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */, + 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */, + 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00C302A81ABCB8CE00DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302B61ABCB90400DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302BC1ABCB91800DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, + 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302D41ABCB9D200DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, + 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 00C302E01ABCB9EE00DB3ED1 /* Products */ = { + isa = PBXGroup; + children = ( + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */, + ); + name = Products; + sourceTree = ""; + }; + 00E356EF1AD99517003FC87E /* DemoTests */ = { + isa = PBXGroup; + children = ( + 00E356F21AD99517003FC87E /* DemoTests.m */, + 00E356F01AD99517003FC87E /* Supporting Files */, + ); + path = DemoTests; + sourceTree = ""; + }; + 00E356F01AD99517003FC87E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 00E356F11AD99517003FC87E /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 139105B71AF99BAD00B5F7CC /* Products */ = { + isa = PBXGroup; + children = ( + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, + 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 139FDEE71B06529A00C62182 /* Products */ = { + isa = PBXGroup; + children = ( + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, + 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 13B07FAE1A68108700A75B9A /* Demo */ = { + isa = PBXGroup; + children = ( + 008F07F21AC5B25A0029DE68 /* main.jsbundle */, + 13B07FAF1A68108700A75B9A /* AppDelegate.h */, + 13B07FB01A68108700A75B9A /* AppDelegate.m */, + 13B07FB51A68108700A75B9A /* Images.xcassets */, + 13B07FB61A68108700A75B9A /* Info.plist */, + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, + 13B07FB71A68108700A75B9A /* main.m */, + ); + name = Demo; + sourceTree = ""; + }; + 146834001AC3E56700842450 /* Products */ = { + isa = PBXGroup; + children = ( + 146834041AC3E56700842450 /* libReact.a */, + 3DAD3EA51DF850E9000B6D8A /* libyoga.a */, + 3DAD3EA71DF850E9000B6D8A /* libyoga.a */, + 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */, + 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, + 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */, + 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */, + 3DAD3EA31DF850E9000B6D8A /* libReact-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 5E91572E1DD0AC6500FF2AA8 /* Products */ = { + isa = PBXGroup; + children = ( + 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */, + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */, + ); + name = Products; + sourceTree = ""; + }; + 78C398B11ACF4ADC00677621 /* Products */ = { + isa = PBXGroup; + children = ( + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, + 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 832341AE1AAA6A7D00B99B32 /* Libraries */ = { + isa = PBXGroup; + children = ( + 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, + 146833FF1AC3E56700842450 /* React.xcodeproj */, + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, + ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */, + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */, + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */, + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */, + 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */, + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */, + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, + 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, + ); + name = Libraries; + sourceTree = ""; + }; + 832341B11AAA6A8300B99B32 /* Products */ = { + isa = PBXGroup; + children = ( + 832341B51AAA6A8300B99B32 /* libRCTText.a */, + 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; + 83CBB9F61A601CBA00E9B192 = { + isa = PBXGroup; + children = ( + 13B07FAE1A68108700A75B9A /* Demo */, + 832341AE1AAA6A7D00B99B32 /* Libraries */, + 00E356EF1AD99517003FC87E /* DemoTests */, + 83CBBA001A601CBA00E9B192 /* Products */, + ); + indentWidth = 2; + sourceTree = ""; + tabWidth = 2; + usesTabs = 0; + }; + 83CBBA001A601CBA00E9B192 /* Products */ = { + isa = PBXGroup; + children = ( + 13B07F961A680F5B00A75B9A /* Demo.app */, + 00E356EE1AD99517003FC87E /* DemoTests.xctest */, + 2D02E47B1E0B4A5D006451C7 /* Demo-tvOS.app */, + 2D02E4901E0B4A5D006451C7 /* Demo-tvOSTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + ADBDB9201DFEBF0600ED6528 /* Products */ = { + isa = PBXGroup; + children = ( + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */, + 9CFB57A81F67D00400B4B4A5 /* libRCTBlob-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 00E356ED1AD99517003FC87E /* DemoTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "DemoTests" */; + buildPhases = ( + 00E356EA1AD99517003FC87E /* Sources */, + 00E356EB1AD99517003FC87E /* Frameworks */, + 00E356EC1AD99517003FC87E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 00E356F51AD99517003FC87E /* PBXTargetDependency */, + ); + name = DemoTests; + productName = DemoTests; + productReference = 00E356EE1AD99517003FC87E /* DemoTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 13B07F861A680F5B00A75B9A /* Demo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Demo" */; + buildPhases = ( + 13B07F871A680F5B00A75B9A /* Sources */, + 13B07F8C1A680F5B00A75B9A /* Frameworks */, + 13B07F8E1A680F5B00A75B9A /* Resources */, + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Demo; + productName = "Hello World"; + productReference = 13B07F961A680F5B00A75B9A /* Demo.app */; + productType = "com.apple.product-type.application"; + }; + 2D02E47A1E0B4A5D006451C7 /* Demo-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "Demo-tvOS" */; + buildPhases = ( + 2D02E4771E0B4A5D006451C7 /* Sources */, + 2D02E4781E0B4A5D006451C7 /* Frameworks */, + 2D02E4791E0B4A5D006451C7 /* Resources */, + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Demo-tvOS"; + productName = "Demo-tvOS"; + productReference = 2D02E47B1E0B4A5D006451C7 /* Demo-tvOS.app */; + productType = "com.apple.product-type.application"; + }; + 2D02E48F1E0B4A5D006451C7 /* Demo-tvOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "Demo-tvOSTests" */; + buildPhases = ( + 2D02E48C1E0B4A5D006451C7 /* Sources */, + 2D02E48D1E0B4A5D006451C7 /* Frameworks */, + 2D02E48E1E0B4A5D006451C7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */, + ); + name = "Demo-tvOSTests"; + productName = "Demo-tvOSTests"; + productReference = 2D02E4901E0B4A5D006451C7 /* Demo-tvOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 83CBB9F71A601CBA00E9B192 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 00E356ED1AD99517003FC87E = { + CreatedOnToolsVersion = 6.2; + TestTargetID = 13B07F861A680F5B00A75B9A; + }; + 2D02E47A1E0B4A5D006451C7 = { + CreatedOnToolsVersion = 8.2.1; + ProvisioningStyle = Automatic; + }; + 2D02E48F1E0B4A5D006451C7 = { + CreatedOnToolsVersion = 8.2.1; + ProvisioningStyle = Automatic; + TestTargetID = 2D02E47A1E0B4A5D006451C7; + }; + }; + }; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Demo" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 83CBB9F61A601CBA00E9B192; + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; + ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; + }, + { + ProductGroup = 5E91572E1DD0AC6500FF2AA8 /* Products */; + ProjectRef = 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */; + }, + { + ProductGroup = ADBDB9201DFEBF0600ED6528 /* Products */; + ProjectRef = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + }, + { + ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; + ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; + }, + { + ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */; + ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + }, + { + ProductGroup = 78C398B11ACF4ADC00677621 /* Products */; + ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + }, + { + ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; + ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + }, + { + ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; + ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + }, + { + ProductGroup = 832341B11AAA6A8300B99B32 /* Products */; + ProjectRef = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + }, + { + ProductGroup = 00C302E01ABCB9EE00DB3ED1 /* Products */; + ProjectRef = 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */; + }, + { + ProductGroup = 139FDEE71B06529A00C62182 /* Products */; + ProjectRef = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + }, + { + ProductGroup = 146834001AC3E56700842450 /* Products */; + ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 13B07F861A680F5B00A75B9A /* Demo */, + 00E356ED1AD99517003FC87E /* DemoTests */, + 2D02E47A1E0B4A5D006451C7 /* Demo-tvOS */, + 2D02E48F1E0B4A5D006451C7 /* Demo-tvOSTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTActionSheet.a; + remoteRef = 00C302AB1ABCB8CE00DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTGeolocation.a; + remoteRef = 00C302B91ABCB90400DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTImage.a; + remoteRef = 00C302BF1ABCB91800DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTNetwork.a; + remoteRef = 00C302DB1ABCB9D200DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTVibration.a; + remoteRef = 00C302E31ABCB9EE00DB3ED1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTSettings.a; + remoteRef = 139105C01AF99BAD00B5F7CC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTWebSocket.a; + remoteRef = 139FDEF31B06529B00C62182 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 146834041AC3E56700842450 /* libReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReact.a; + remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTImage-tvOS.a"; + remoteRef = 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E881DF850E9000B6D8A /* libRCTLinking-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTLinking-tvOS.a"; + remoteRef = 3DAD3E871DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E8C1DF850E9000B6D8A /* libRCTNetwork-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTNetwork-tvOS.a"; + remoteRef = 3DAD3E8B1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E901DF850E9000B6D8A /* libRCTSettings-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTSettings-tvOS.a"; + remoteRef = 3DAD3E8F1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E941DF850E9000B6D8A /* libRCTText-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTText-tvOS.a"; + remoteRef = 3DAD3E931DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTWebSocket-tvOS.a"; + remoteRef = 3DAD3E981DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA31DF850E9000B6D8A /* libReact-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libReact-tvOS.a"; + remoteRef = 3DAD3EA21DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA51DF850E9000B6D8A /* libyoga.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyoga.a; + remoteRef = 3DAD3EA41DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA71DF850E9000B6D8A /* libyoga.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libyoga.a; + remoteRef = 3DAD3EA61DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcxxreact.a; + remoteRef = 3DAD3EA81DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libcxxreact.a; + remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjschelpers.a; + remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libjschelpers.a; + remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTAnimation.a; + remoteRef = 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5E9157351DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTAnimation.a; + remoteRef = 5E9157341DD0AC6500FF2AA8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTLinking.a; + remoteRef = 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 832341B51AAA6A8300B99B32 /* libRCTText.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTText.a; + remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9CFB57A81F67D00400B4B4A5 /* libRCTBlob-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTBlob-tvOS.a"; + remoteRef = 9CFB57A71F67D00400B4B4A5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTBlob.a; + remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 00E356EC1AD99517003FC87E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F8E1A680F5B00A75B9A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4791E0B4A5D006451C7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48E1E0B4A5D006451C7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native code and images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + }; + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Bundle React Native Code And Images"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 00E356EA1AD99517003FC87E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00E356F31AD99517003FC87E /* DemoTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 13B07F871A680F5B00A75B9A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */, + 13B07FC11A68108700A75B9A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E4771E0B4A5D006451C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */, + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D02E48C1E0B4A5D006451C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2DCD954D1E0B4F2C00145EB5 /* DemoTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 13B07F861A680F5B00A75B9A /* Demo */; + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; + }; + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 2D02E47A1E0B4A5D006451C7 /* Demo-tvOS */; + targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 13B07FB21A68108700A75B9A /* Base */, + ); + name = LaunchScreen.xib; + path = Demo; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 00E356F61AD99517003FC87E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = DemoTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo.app/Demo"; + }; + name = Debug; + }; + 00E356F71AD99517003FC87E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + COPY_PHASE_STRIP = NO; + INFOPLIST_FILE = DemoTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo.app/Demo"; + }; + name = Release; + }; + 13B07F941A680F5B00A75B9A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 1; + DEAD_CODE_STRIPPING = NO; + INFOPLIST_FILE = Demo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_NAME = Demo; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 13B07F951A680F5B00A75B9A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CURRENT_PROJECT_VERSION = 1; + INFOPLIST_FILE = Demo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-lc++", + ); + PRODUCT_NAME = Demo; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 2D02E4971E0B4A5E006451C7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Demo-tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.Demo-tvOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.2; + }; + name = Debug; + }; + 2D02E4981E0B4A5E006451C7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Demo-tvOS/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.Demo-tvOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.2; + }; + name = Release; + }; + 2D02E4991E0B4A5E006451C7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_TESTABILITY = YES; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Demo-tvOSTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.Demo-tvOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo-tvOS.app/Demo-tvOS"; + TVOS_DEPLOYMENT_TARGET = 10.1; + }; + name = Debug; + }; + 2D02E49A1E0B4A5E006451C7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_NO_COMMON_BLOCKS = YES; + INFOPLIST_FILE = "Demo-tvOSTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.Demo-tvOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo-tvOS.app/Demo-tvOS"; + TVOS_DEPLOYMENT_TARGET = 10.1; + }; + name = Release; + }; + 83CBBA201A601CBA00E9B192 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 83CBBA211A601CBA00E9B192 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "DemoTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00E356F61AD99517003FC87E /* Debug */, + 00E356F71AD99517003FC87E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13B07F941A680F5B00A75B9A /* Debug */, + 13B07F951A680F5B00A75B9A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "Demo-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2D02E4971E0B4A5E006451C7 /* Debug */, + 2D02E4981E0B4A5E006451C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "Demo-tvOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2D02E4991E0B4A5E006451C7 /* Debug */, + 2D02E49A1E0B4A5E006451C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Demo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83CBBA201A601CBA00E9B192 /* Debug */, + 83CBBA211A601CBA00E9B192 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; +} diff --git a/Demo/ios/Demo.xcodeproj/xcshareddata/xcschemes/Demo-tvOS.xcscheme b/Demo/ios/Demo.xcodeproj/xcshareddata/xcschemes/Demo-tvOS.xcscheme new file mode 100644 index 0000000..2951875 --- /dev/null +++ b/Demo/ios/Demo.xcodeproj/xcshareddata/xcschemes/Demo-tvOS.xcscheme @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Demo/ios/Demo.xcodeproj/xcshareddata/xcschemes/Demo.xcscheme b/Demo/ios/Demo.xcodeproj/xcshareddata/xcschemes/Demo.xcscheme new file mode 100644 index 0000000..a698a85 --- /dev/null +++ b/Demo/ios/Demo.xcodeproj/xcshareddata/xcschemes/Demo.xcscheme @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Demo/ios/Demo/AppDelegate.h b/Demo/ios/Demo/AppDelegate.h new file mode 100644 index 0000000..a9654d5 --- /dev/null +++ b/Demo/ios/Demo/AppDelegate.h @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface AppDelegate : UIResponder + +@property (nonatomic, strong) UIWindow *window; + +@end diff --git a/Demo/ios/Demo/AppDelegate.m b/Demo/ios/Demo/AppDelegate.m new file mode 100644 index 0000000..6d42870 --- /dev/null +++ b/Demo/ios/Demo/AppDelegate.m @@ -0,0 +1,37 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "AppDelegate.h" + +#import +#import + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + NSURL *jsCodeLocation; + + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; + + RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation + moduleName:@"Demo" + initialProperties:nil + launchOptions:launchOptions]; + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; + + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; + UIViewController *rootViewController = [UIViewController new]; + rootViewController.view = rootView; + self.window.rootViewController = rootViewController; + [self.window makeKeyAndVisible]; + return YES; +} + +@end diff --git a/Demo/ios/Demo/Base.lproj/LaunchScreen.xib b/Demo/ios/Demo/Base.lproj/LaunchScreen.xib new file mode 100644 index 0000000..e5006a9 --- /dev/null +++ b/Demo/ios/Demo/Base.lproj/LaunchScreen.xib @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Demo/ios/Demo/Images.xcassets/AppIcon.appiconset/Contents.json b/Demo/ios/Demo/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/Demo/ios/Demo/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Demo/ios/Demo/Info.plist b/Demo/ios/Demo/Info.plist new file mode 100644 index 0000000..083169f --- /dev/null +++ b/Demo/ios/Demo/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + Demo + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSLocationWhenInUseUsageDescription + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/Demo/ios/Demo/main.m b/Demo/ios/Demo/main.m new file mode 100644 index 0000000..3d767fc --- /dev/null +++ b/Demo/ios/Demo/main.m @@ -0,0 +1,18 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/Demo/ios/DemoTests/DemoTests.m b/Demo/ios/DemoTests/DemoTests.m new file mode 100644 index 0000000..112ea11 --- /dev/null +++ b/Demo/ios/DemoTests/DemoTests.m @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import +#import + +#import +#import + +#define TIMEOUT_SECONDS 600 +#define TEXT_TO_LOOK_FOR @"Welcome to React Native!" + +@interface DemoTests : XCTestCase + +@end + +@implementation DemoTests + +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test +{ + if (test(view)) { + return YES; + } + for (UIView *subview in [view subviews]) { + if ([self findSubviewInView:subview matching:test]) { + return YES; + } + } + return NO; +} + +- (void)testRendersWelcomeScreen +{ + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController]; + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS]; + BOOL foundElement = NO; + + __block NSString *redboxError = nil; + RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) { + if (level >= RCTLogLevelError) { + redboxError = message; + } + }); + + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) { + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]]; + + foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) { + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) { + return YES; + } + return NO; + }]; + } + + RCTSetLogFunction(RCTDefaultLogFunction); + + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError); + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS); +} + + +@end diff --git a/Demo/ios/DemoTests/Info.plist b/Demo/ios/DemoTests/Info.plist new file mode 100644 index 0000000..886825c --- /dev/null +++ b/Demo/ios/DemoTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Demo/package-lock.json b/Demo/package-lock.json new file mode 100644 index 0000000..f811a25 --- /dev/null +++ b/Demo/package-lock.json @@ -0,0 +1,83 @@ +{ + "name": "Demo", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ldn0x7dc/react-native-view-pager": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/@ldn0x7dc/react-native-view-pager/-/react-native-view-pager-0.0.9.tgz", + "integrity": "sha1-DKjYjJttp3tYEiJhfgsERZvL07A=", + "requires": { + "react-mixin": "3.1.1", + "react-native-gesture-responder": "0.1.1", + "react-native-scroller": "0.0.6", + "react-timer-mixin": "0.13.3" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "react-mixin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/react-mixin/-/react-mixin-3.1.1.tgz", + "integrity": "sha512-z9fZ0aCRDjlgxLdMeWkJ9TwhmVLhQ09r8RFpin/cEPA2T6jsb7YHNWcIe0Oii+hhJNyMymdy91CSya5mRkuCkg==", + "requires": { + "object-assign": "4.1.1", + "smart-mixin": "2.0.0" + } + }, + "react-native-gesture-responder": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/react-native-gesture-responder/-/react-native-gesture-responder-0.1.1.tgz", + "integrity": "sha1-gCVS2OtxU8DYGjlumPS4C0BLZ5g=", + "requires": { + "react-timer-mixin": "0.13.3" + } + }, + "react-native-image-gallery": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/react-native-image-gallery/-/react-native-image-gallery-1.1.0.tgz", + "integrity": "sha1-aEJ9wLN22z/unRyQjuG6V0bdZlg=", + "requires": { + "@ldn0x7dc/react-native-view-pager": "0.0.9", + "react-native-gesture-responder": "0.1.1", + "react-native-transformable-image": "0.0.18" + } + }, + "react-native-scroller": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/react-native-scroller/-/react-native-scroller-0.0.6.tgz", + "integrity": "sha1-3qjIm9HKLSRF+7azqQlg32wXZ/8=" + }, + "react-native-transformable-image": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/react-native-transformable-image/-/react-native-transformable-image-0.0.18.tgz", + "integrity": "sha1-ACKfJBDEQ6OmtfpTcUEh7NiCOW8=", + "requires": { + "react-native-view-transformer": "0.0.28" + } + }, + "react-native-view-transformer": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/react-native-view-transformer/-/react-native-view-transformer-0.0.28.tgz", + "integrity": "sha1-AbuMnmz/9wqNQA4GHAzSdgJmKss=", + "requires": { + "react-native-gesture-responder": "0.1.1", + "react-native-scroller": "0.0.6" + } + }, + "react-timer-mixin": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz", + "integrity": "sha1-Dai5+AfsB9w+hU0ILHN8ZWBbPSI=" + }, + "smart-mixin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/smart-mixin/-/smart-mixin-2.0.0.tgz", + "integrity": "sha1-o0oQVeMqdbMNK048oyPcmctT9Dc=" + } + } +} diff --git a/Demo/package.json b/Demo/package.json new file mode 100644 index 0000000..61e1c9f --- /dev/null +++ b/Demo/package.json @@ -0,0 +1,23 @@ +{ + "name": "demo", + "version": "0.0.1", + "private": true, + "scripts": { + "start": "node node_modules/react-native/local-cli/cli.js start", + "test": "jest" + }, + "dependencies": { + "react": "16.0.0-alpha.12", + "react-native": "0.48.2", + "react-native-image-gallery": "^1.1.0" + }, + "devDependencies": { + "babel-jest": "21.0.2", + "babel-preset-react-native": "3.0.2", + "jest": "21.0.2", + "react-test-renderer": "16.0.0-alpha.12" + }, + "jest": { + "preset": "react-native" + } +} diff --git a/Demo/src/DemoGallery.js b/Demo/src/DemoGallery.js new file mode 100644 index 0000000..8f974e2 --- /dev/null +++ b/Demo/src/DemoGallery.js @@ -0,0 +1,43 @@ +import React, { Component } from 'react'; +import Gallery from 'react-native-image-gallery'; + +export default class DemoGallery extends Component { + + constructor (props) { + super(props); + this.state = { + images: [ + { source: require('./static/images/placehold.jpg'), dimensions: { width: 540, height: 720 } }, + { source: { uri: 'http://wrongdomain.tld/images/wrongimage.jpg' } }, + { source: { uri: 'http://i.imgur.com/gSmWCJF.jpg' } }, + { source: { uri: 'http://i.imgur.com/XP2BE7q.jpg' } }, + { source: { uri: 'http://i.imgur.com/5nltiUd.jpg' } } + ] + }; + this.addImages(); + this.removeImages(); + } + + addImages () { + setInterval(() => { + const newArray = [...this.state.images, { source: { uri: 'http://i.imgur.com/DYjAHAf.jpg' } }]; + this.setState({ images: newArray }); + }, 5000); + } + + removeImages () { + setInterval(() => { + const newArray = this.state.images.filter((element, index) => index !== 1); + this.setState({ images: newArray }); + }, 7000); + } + + render () { + return ( + + ); + } +} diff --git a/Demo/src/static/images/placehold.jpg b/Demo/src/static/images/placehold.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4f13d868a22069a7eaf388b6c129c44567204f1 GIT binary patch literal 200282 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 z�QO`^$0fH<{o`moc@{@#x>k?Wrn4% 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

;iBj-z0S>I+^lZci5s*;k5o|b!M zRXi0FMtrAv2>`kDhHMT1A0GN8^puWt^Cw=P zFiluWmd8H4bKRB-*kjWRLR z*d%A3FvR`13&cYsaqbY_zAA33)QHu4dJ0%D87WnXNU%T5W90n$fH?1{Twx3IiB@in z#kuWwS{uE!ErLq2MD%f_k{*CaWt6dGU%?O+}De&my69)$vsE`$e4kiumbblKsdnT zpSHE?sZdNya$3{WX0q+Xqi9+SQKrO)%4ml@Sv^M?<-Nb{)s1WJEycGj-G{MiuGDqy zS99}Zi5>?-8pkPMcz15EQ6MnmBY~1n8m|x~y-Nbgw|~O+N~&8m-75t;Jwc&FR&xH5 za_m$dmj~n1$MW(;Szb~E=|#BYccPveDppwDSx;0o4xMD2sSFM>FjTfs=)7fE>`bql zewvz&-}{GiQ`J-bLej{nm}vUQKZJAsVsVfTduVL3Rt3LP(_SQMg{ipH%WP!wXJ}bq zD67=0#d5^stG`M7_|-VVOa|Poxj_}8rn-npa;b_xtp%qIkXib@AcDiB9QWg0#zexN z9lcF>sg4*a6=`RYKB{>C0FGH$tc+pm%O+1(131vENnqN7cTF{xS(@c%t9G7OcW*7v zOfj+LK?=RTcBCKgF;5z7@6ghI5kmu5^7I@#HJim(T;Fh@YbE{f7h`pv^M?($XYnArhTSZ3o2_zI$Qi4o@K)_MlhUz~7 zc;}r~udsqaH|)u2sJ8q&a{emXrb@#oj+3YU4X_jOH{wR=V~+Z|w6r~Yu-d63ywOkf zRgzN(-mZ=0>6L<}QK3>Bv3z8Et7zNUodr_uYCGr9EfsZAMikXilP6Tl;~h%s$_xHj z0DwkyWm(frZp63<>Z262@J~rGdRnM_v~-gM7UYsLTpp9{o<43<^B|o^PY>uT>7i?l z!rEq@0!>7)!tle8LI=qmECJ-;o^o-iLCdKeq^otB;kV?dyiW8=wMXbDq-wsnQToq8 zjRa&!G158dQgiKtqUJl;aqxDh5@sXxjMFig%LNz zTQo~&SGZc0zlzer^faT>8v*HlfzpJW0K_k`=ba;J_Xfv=UAI`pMb1kl>U5`qSPfJa zCZx;!9D$CepdxWvQqXH&>~m zp_8g{D==`3cqCwv%8$2g2I0g&JZ!RGBzlQ1R>|Ok;?T)S(&XY!mSA#n0T?3#p6#VH zcy0|&rZyehx9DnOsk_uY8?iL*@nA>Okk|@FTh;xJd+Vy(7r8k|m>>H$}-leF5Fs0C|`LZ!2 z`gv5r#~H!<1Fag+Sf767M_#6PotJtv@Z4{6)6qpzj_}1;U(8|w=b=H6fse(~2N?I& zX|ZWyAnfih+9m%03f>^8QT1(6APUTkk+uQt)B!)928(0-y~tIQt+I*h9!f~0N~vZE z8sxIz^&Xsi6;vv~peh2~u^-TA4hwW=00bX<+_f`hBStcG6E7eL$ZP-)<%9nKc9^FS z9^|ngbsqdN*pm34PjEXL`c^E0ImJw5S%m={%7$BJTjBX{Q1EA^=Cj+Qko(AlW$jMq80Q2W40qLhg)FK#bsAH%+?!c^i)vI&MIB6a zRdR-Ts@!sU&*Nq!eqFQ*t9BY_X4G1vt*ZK(tC!X_RYi1)8l-?0WXSZUa7VBQ-v>r? zWF0~8eMTyMuV>w9UrT$rdFH7Zp{Htr6T2eyL%H|N3YqB z4F#ghOG|5{A>Jo>CV3Y=psd6N>d$-(W44>g#ay)69n8z<`A1WrY*&jl_KF*|hN=pP zDo}cX$z1yo4ng+kUN0jK%vaf%)>O!K_?q{|q0pATetp3q>3-MBovThE@lRk;%ulmCva-^VH=APw^VdXsM-oyG22_)d>(uM>%XW zC}3Nw1GvG#=ONq?I2hr04C7d+S&!u*L?F zcOX>kJ;}T3=eXN0UVSk=az-1Vz<~B3@xkMc`f+Jh?@<@AnERRByd$olrK72&y{ySm z34VaeS|;i_QZg_@AL*-<1nh}U=aKkdxT$5QO54HdiP`ZIVTc4}y0d}_2akx!Bo(#*c5W&wJ;WsrhTs20Yk`}83>Zd+S!-z_Z=ilHf~ zrbj~(vf^h@r_#eAS0tuz$BcaFU}#7>)R5EOBECwN^`xzPj7sOMD*DEHlw+%&Mow^b zWn%@XH*8yKtkpHOwe-C-QA%WzIb+E6oD@=-9V>&!esQBICRL%m!Fbu0YG+!iT9`#s z`BF_BB3Rt8{C=lKRSf5`Bmvm!(#tCfYvuCSB0yQKvCdUvH2}sZi5H~_b{#|1& z{A$0Mc{-HYZo7V--D0S_)z1So)e8XVo;H6|oMQ~icmxm*IPa?2_4PU)qVTVCR6#hr zZhC1Ws3K54kgU#nItXPrDEa9m1|x&cgmy=A!%%eFV%ci0xHVBpQUb2Cxhm`F7{W*R zvF^veeG6KK>rv9%xULnl*ID-5RZl?Fl0#0agC3eAaBuKr_nJ{6Bjq2YO8 zxGnRKjaz!1?kzUSr1Gkg*=<>*62}xKcv&RtE;`k4e%KlIWAU!oCJmd3(UxVbT6UC_ zw%Th%5q(0kNd%z6{XHbJbzt>2V*>-{I$#A+u_@bniQXh`JH=H^J%Va#YCB~>$C(7I z@`O{D3_5!SIM2>B2fR1b$~fOsW7}-^J9WBiZM~qNrR$gw=+0OI0X>1s401iRYIUhp zT}A1v_Z`J^g5K7arwTgbcwB}otjDVv$On!`w_&3$r0PEkHKvk|rm-NQxYSeqJ5(Q2 zM}kk5%Ea^P&sIi@&=RfCh&PIXXE4cbjiq?%CHkY(Rya(d0FwuW!Os~3@9nDckh?Ig zHsUtA!Ed=zhpefcYieowex(c`BKh8->2|^39-c-uVQ2d#gkz++!E3lv86lnRv=xXV zu5jXSFQ~bXr4Ai&?#!TqMvRW4S3(lH?ERs>F40A8p5YjUmT#udTm;||>dpe=q&KJ@ zI0wF=m=n1=6AI0hMJ=W6n^I4yYFLUq=429egOY(!xHuR&IM)OIPK39m!d17@+vG~R zX96mPtPuL?`a#Pv>P3(h$j1PN8RTd;DV#uWa+}^3VlHrAAi0_43ggUy%yO_)9$`F@ z$>aiCxjG72{{Y5H{e4JsQd$kR3#ENC8d~@ZeJrw%HY^Z5P6inA4ip2Cp|a@pBbLne zTdh51zMjXmtcIEoQ86TC+H?w8n4E9|hT!(V@0}M!F3e;ehN2D0Xss6{nu2*LDry_d zmYroR>lh&6*aZY(dEn}d10me!^&j@7vXb)k(HcU`-fWPDO!T=5O9H%+o{rc!&Xc2C zAo`21W=g8rDQ**x1!R|t$`~iSTI&iN9mrx`2&XUDTSjaK;odQQ` z6QC=HR!=SagZ3jD%gHQ9P`zp{@0x1`X78G+nzjzPP|GVotjp&99&#Jl6Ob{j95PzH z7$zEuby13%go4*vvquOWYO%NqNN>jf0DsF&I;wXo3T|z!AJfNlx6zh@vYlj_81lxR zZl>#8_vyd~E%U2ae*visI)rv!@Vj_gey%%m7%G>`nI{fXWgvnH_BcJqZ*5fLjFZU9 zgP|8Jd*TW!?L};DENasEoh0>!0QboI6M}i;Ouiq}LJ1%2cPu)q_SxJwSme5 zn#p8}F!e5EF)Ba{X9N4`kyjqXU5_Yc+da;Ph6*akdLUd&(I!>O4`v5~Iq&VEd?Cpu zT_meD(t3IsZ8VgiaRs2s? zG%{z>rBkTL4l+wJj2=*o=~e+uvosG?W!;Z6UGDV;HF=2YoxG^QQ=ctV`~YwO1GgOL zp;p1DEuF~Mh-oXS>1pWi2kRhKi~d{30deZ|mh~vd2aIIuQyc@-vo}#w+z*!)Qqs%QM9+FwGI*1v-$6$VSOne2y^#GNHGYz{@ zwtc&euO%V#9MNbwjvq!mIEuTRo-U2oxJDsH z;5%-|tGm+6S$(L8Q_`qt>0<>IJi;@8psJjo*BST5y$w|b5G`jYaGMNaG1Lg74j5821 z-vgZSu9K+(Yi%a#+}&|i)7oLFCV71BBBfBEkTThEl6@coasa_R1&?yN?pQV3q+9LM z?LQ2zsY0GaB71;6H5CA$>+_$a@G?Cq=nMX1&a1dp0xi(c(%gcEdWw3QSYv@woe;f4 zl5)L8J(c!bQ+lx5FGNhMqG;eaF6tL|1~agK&c166CZ2=nPMPa_i<2L*bUyApWM z01m@a2IqR1?H#jms%n^wg&ML!6mbrjTg~+VrE&-vIW6!tKh|_|rMXntcV&G9c8a^6 z-=v^hOC(Cb^v96QGEd@uq4_b@*SQ447LN|8uRlX4?y+q*2%cVtn3l-FUYssa0H>4l zrWIfqn9sI6F-qH=HO~Efsi}343F9-M5(vpatiOnWGlu@!7#lsyY{pBT-din9Gse-% zl1{=n)Ck^3^3)$w9&oBOJ393{a9zTd-R00+-kz|>Jibe!9Pyzk5@EKM zmV$E>krac{Y5`w2t$VR!)yEje2S-^}60hD~B304eg6o{g&(z2RWG4dv9yry1GVq){6`2x!zk_RAdH-34OZV%rHy3VsbY9)X1Rx!82+9{oR?N? zkO{{*W6AvW0Cg%4ac-t7%o9{p8fq%Js>&&nofpoJ1cn4T{21c{EIr#oVW?#@8EzK~ zeRT%qwN*n+9LnBspZ;5%bdaE+>29z_IgL^f7 zzJc!cxZbt{<+26p21gC}7=Tn@E?I}ZG0vN2>rf@QM7o!$ybZ78)Ca%BLdKwH01^Jr7)=h?|a1wWNtHEk@9Qt~fY5wnJjbm!B6szZFc z{j}fo>M~RT)Jff&{_8;{qVsRI(}|#z)74UAs!0Ipb!EWMNy!|R$5-1|4JpPm?z`)5 zC@nX;eGJDa&dic4s3Vo@P=f=Krz9UwaoxM7V9wwqEVp!YfHHibp{-EEa5nM{=ii4eSz0u_q};I~QOjU7y#Kul?CHq0}f z#VqpCsClGNQRRV&Wmyq=z`!TDCywJ)<<54Dr*{CTqqrLC3gns!6nRc1@`Xw-CmkS# zInM+f=_^#BwAo-%EC~Ni*FNn-a<+ zC(MtwPf^ZD#~2yv`)FtS7)SLWZK_+H9Lag7ua*g=0-3Nfs{H{&lkLdok8LB`jm6WZ zkFmAJ^=fKc_ei-seJCkZs=iJ+7{Go(&UD)#HS+w%SoJYYux_wJS^grcw>gX~l<~@> zBaRR2p!{2v`L#bdVXCR9V6@^Ycc@{~iRn~h$2sn~>d)AXB=rTBSmC&LwKnOlv)XMI zxT#{b(#K9ZWe?U+^C>+bddVb=4o`ESHCr1H(Q3WvQ>ku`7m^%5EAPp|;QZshjZ*#$ z>80waJeQi1v!b39LI*%EBaxmlz}4Qcq)0Okp(95lQ59N=jz|2V6ZZfWC$Q09g#obM5V&D*pg?0u(O+Htj2| zU+-pEt6COy5_vM5q>IN;W&8gC=T^v4pcrLtLL1%Bv~RazRlP1%$ptE`G?WzXN$4Kz zKpoh(1DpZQuZ+ZZ7P?hedu6(7i_+}q?lmw<_zfjG#^*l725-n<@;mdbFWhlmMcOio zdW%IRvaI1QD^4Sf#z|!WpO10QknP`bq-_Z%9jm>!42}DfZe6RSsZu=1>0IXnKZuMD z=T9NvH3Z-}+$Bfgw*E-eUMZHsA_Yp#RIx~UvDA9ApU(iC5sesKs6UD^S^O1&k~-R$ zu2;H=0qLito+?!2an&rnP5mMo8GRkfh0)YMYT8@Q(_I}V-q<@z-5hd>Dr9Lsx}hT{ z)Xwvg0Rtx}sx+nTutSxPj=iB32c=Vrgt^$Y_)8NMHwbxUBjI0vd zY3Gy|nxHE52IKK(u{as_@9nJ`*HLC^)7}|)AF?+6uHkoRt+xt=j0jpguGvS#^rrJHfj( z*0QWsMR)0f85yFbr}L!+Q~(Jq6favYPBX^2SA9w!aAWK$t&e(^mI%_gj+YG_r>6|3 z0R6|lmA;+A2-UZjf7$8lE_SPA%S}71a!KT=ia7un$zVZlMn67AfY>#Z+`l0mZQdMQ zH~qzK`>87;u2@hiOBq<1U73LE3_3B^&5Q--PvOv&*Y%Whu^O*iTBpNnDpAHLE2*#Z z1T;mussu<_DC!EN=L%0tV<+3)sZ|i3*zm-el`gibxD4)|VUkdh$B+n2Di&f%#&{nj z<2nW3h;3>&-aII=i=snOagLUOArk#ir%=pKIO+!jlkvb9(04jiTfbmaTWZ#plKU0I zxOY}PDEQ=ZFirqJu82KBk=)a<-r==wl{EJcB8{pPqRT240DqSQj5lt_^BUs{qCZ-$ z5Ljw$`-!R3$`vulWhg)8py2ecCz3}_7uzIv($f5OC2s45CCX`T)@rz`C8>DW(!$*DIy=rYk*@&7`WAGbD=1h_Ip5q)mtE9C3{C@uE)L zDSW(8+Hca(OG`|KS{Pub0+SKUMoZ;-&KP3>fF%5LsRvMY4pF++rYa?4O($Un*OBko7iK)8kSTM>k;Ev#f#~f*tZZabsu9kv^ zmYON4UPTfaWNxrzhp6SiB}YllF^|51%#*2DLgR6Yb&u-JL6sR|ho({_$tq+$h{gcz z?VU-lVsMLBYjlyo^lNkSKpq`gKIn|q=K%Zm{;BC-I>${ zoA^=zf?unk5Jw;n_wTNMQ=@*?x9$0jV&1J0$xTbt(x`TmsICuLQ-urzcKOk2O^6@N z(Yfljm7!~B=_@0*$5l+VL8=$1x;qubVTc5f6qN^p53m`f)c3ei07Kdhp#wdUNymafpON1UzF9r$S3PhdKMKHL&J zYVN&B2U4%wR%oxHvv9+2KfNfV0S!F)josS^tg@06bz|V*9Vp8Vtq;-Iw@pOzQh<`p z0_~!t3g!$P0JSVa$w$Z*mkYLI?73YuBnYRKbaJ2v667iG446Z z{Iy$K@2I`MZlkY8n8ngqxpUfX$K7fB@Q*Lvf=lr(#99M_E;CKjHg=+8{)EDiW`zQ9O7As^wd$unq%b-x^^b zsJpJ(4r?aa-MdI!tkm#FaE4g~vZ{G;OtHQPQjQg|)1S{(Z?u&hWWNfjw*}ssrdrgF zh?C_{RWMvgg8%>q3jzqi3_E-3Ygx{B3*I)}e0BA;vDKn|F-4g4sAAk6k<-D*Z-48e zaWasIijY~B*GeWwfW{lvJvrwjgTm*I{{TE{g?p9!$T!{X4%Mfpr?rZzc;--#8e^f! z&JRof05HMBFMh;(YT>mAuvp*Loxfco+2NKLqKm2uVHuOml&L)hdkpn-=O?6`>Y=-a zinKA_>+TKv(pq?Gt^?N;ae6~5;rfOS6gEi;GDjLCcDj{ev8k@7W2K7SauwGVf+uuH zDcK3@Ad<*f9D+tbI2p+2InH|x7>lNiooLy%)VD)w3T|}>$s__IAx1(+NRVT(I2rCZ z=bbZI*o6nwnY=G@Y<;;)MFkX8lhjp&^P`Z+k!Psk*?M}9pb>$CgOEFDk%n)qK-~L) zQ&&T|<*#T_OC<3}7*R7aaKHjoWV2`VI2h1ui*oK^Ch(eu{IwHQ)IAdqsOnrc2ToU| zPiD!+dt+TxC~3CG;_6e=OVelbnrYr=W{xKzo1A2ijDKALjhpHy!@0+{dvnNTSZNYd z93-QXNdw=cd}%C~->Ie)$d6{PxmVR&t*luY3cH{=Esi<~YGww zUr$?d>12+bQKS&JBnETo57=>>YOWbi)?0~?Af%?Ho?4W&w96^$0OOK4?}PL3G#9bD z+^Y>q)@y}rvg1coXPb%JYMsdt@|7{4OAgDBNe90jwV{*)s3X)BK#q*^ zM_X`uc2sp27^%>bszRtSvBx<4L-76ed}UrRSM+rb)7WnotQ&sFhSsDAyvZ7Q`iJ>} z$Q*outAqu#V&}P?xo=i^DeG+2YXxL;6XZcei5kWf0NG$m9{e2g4vMvb>Rh)_)m6)U z?z^N`_-+-oGEB9-IIUK_Gvd`e;nt zx)S2DJ2JN3R~shWf_DD}X&H4;?H>9r-$uQ!ws9a0E}9I{Lal zBAccdq>Wdr9V{Yn6oG&`jsZD544nyaM)w2E%a`_k+WS6^im&(j(#uy&hN_KfpeoHK zaFN9P;P%hvHK$!*4NfjkQTKb>ZP$C%HFZVGh{Hi~m{bT=q%lgzr=^QyD20IlV0Z74 ztCfLZOeuC0cHONm+o-flNn1SB=>@`inBi$Di+>ldryOAj$0P*qP$ojDLK6x@W%@#oe%;2Xl?ukEZ(icHzj9x<#eKhP)uOGsiVrRd zW=zV`Co3b9&sKYdz&IL$z(XvTwX4qG+@_wky0g!us&$e%^5}pw0Hf4#oQCHkwlq5j zFH*#V>KfkLn!$It(bT)kSsZWIQUZSu3>O4sk4rM1-p96wz|H`ewG3??dR_NTgQAj2 z%|vwOQ0#5R^*k8rLwI)%J5 z+td|SwCl9f*Vj(pOx0NFNK`0Lq=v?F6z2mvbXT?5i4&&Om;MG3O+8HwkU{@Pbf}DfF*)ZsJ%@cwi~x}pZ}m@0T@)6&Zn$dc7+$E-}5z>k|<&I=S5oT8)^a%hZ*@xoJI1P^DOR(I!m|$-E{VgOi zQ|)>xnJOGZTP+Gmoe}w&4blk(G1c1`<3eB)>|qaLB@L@rxc41e-6Qj@C}fFUaux}l z3*>{z0D>{>K+-G=zcK1j0Vla&TjZnLTXXz5Zo2tU)dW;SAwF+F_4@Ei46!|qKpzK8 zrHcIt4bu@d+cxC3E1XxFDssy-j-bOf36)}Ah3f1VoRXnV7ruyor@3*xM9&dwB)==g zd724s5Yz|jfO%m7QqXW&yA&uxIwXQAB@uE*`MSTC zh8*Z&wbU`u?n~Qt-`vzoT~}_Jp04Xq$U0_3jzTblF?)3Y2{_5`qM?If{zq$FhPvf5 z($rk*B8C{pL@~p|2-x8|hzfJk4{Y}AF{YD73q}O1nQ1C&>7v{90-mP1AeyOaI%J6* z21<|yV=N8>bzo$TTVhA4<+-fedZLbw@kv=%M&uOo0ah{hZoW^e?sMC)?V+=-^*AX# zrNzNx9FuD4uhWmzG5YR@mNNXb%Es9@R0DtjF2oJ)F_0EiQG&}@yd0vYWv)k`3Z z&m0qZtrt=09W9)5k(~3Y1z|227?pms)zDR?%H2~Ht~#klk_}PmjmgiLLlf!b=LZZ+y;RHy!si%dJt>v;&PQ!dIoTpD%e_dOlY7rPeFo>Cs;f#^o6ay* zB0QW9mq5sJazXT*5&G$(q(%>@KALMj;J1oeTcb-14zrZ5Q%*``pdCXY@?<>lGNVgc zz;zWp8TC!JzH5CwGsJ|Vv<}f^$IuG&mSxT|2m>b`kG`b{L9+;rzfc`z9lDl9fobcK zRZu2T6lFt#N2i|MJwM+|oSyoeM6T#8&0xA!B?vD|1uI7LtFpx$pbs%RxGjQ6&m4_r z*xQ=?VpY1PXs0OwF$rB&WDZHrPJ8f1f6NYus(5Tk3*0IxMOCe%l1L@$B3gnyGAQ;0 z{{Sv{9AI)T0f}^)!-Jm$%w0 zBYCO|M=@cNU5;_aagskw9Z?sIvaFxCDCMH9prfb?l08DGl1Iplkb5b>1K^*5pt$o<>%xJ@BZHye(~U!DYD%|waYg&}Z#$Ck^fk{D;713YB)-J?WaV-Q?SY<1<4n81 z5G8b=%%s^i3hRnTZnxZ#W{{6EqClm|$t*u1(ZN5V(JII&H6iO;JB<5lYuxO+mY&gN zy}ck)2&8$C6iqBn0gmIsEZAW$)xM4*W} zK*Hsep8RvGmtzFg>7iOWOD@gYwHEuV*6ND6Di)?-k_l<)vC2kVs~KOP^AJhrAZI~f z#xq|L?oj?Oc$t0QMX2maSx-vi$P(eBmQ=vN9QqKS<@d)tdUVZnod~U#_CS&BR=u-h zv|Co?;rv$$s%bu=Y2~XpVg@tPdt~~Go;1i^2(fL#=~J>VbIv8QwFO*&DpjlDVhTnA zpde&?5rdD7Lad28^;0dn<(SNYWT|Y1Ai2wAwg~`%fO0s-rgVL>+x8WE)!5qDvYTBwXr8dFuFf4) zw^<`SMTen4AH-qQb$mc2ntsi!Su5z$RrlXJZrb9 zWrb_4S1K!jqS-W+i(sd9sjsJcaRiIW>Rggp&?yauZk&K|#;u}zmX_@$-)mo%jtf1J zlCoIcBI~xOMow3kRrLkx2k~GWYqV!d_WQgyXN4B3ouYz|J{58f8 zQ4Cyqy9OG7{AGB}{vP;`Q5EeeE)`K->aGQ(#583dVDUx*9AGN08;~=})tBsLTxdYM zIy!i~LaS<>tYVd>Efg@j3UmNrS+dzb&77QbpxC{`FR7mPw^UYM?RV1jcL5}mh$$`X zeA!#gBs`2b&Qt+`z(6sQb;N2wkuPg4>8dE`ZPilCajBA}VrW2kWKwcCP{Y;99k4+5 z)nS*^*A>5SUTRuv<=U*(Q2A7712^$HNDe?F=d1-Sj@k{w)T?`hFFR_CY`T5XX4?=) zRY4e*d8((8{N^VLI(QBMD*phUbBrAvkK>hrs^`93H-jO2T4|S12_ReELf68GwfTfzOiRtw&klH z*xeL&X>2t8HI}KMb)%XfjODsA4^dK8)PTU2EB;_cbtG;?tGs8ey6x+IPQ|gp?-D|- zb*vGK_6 zh}D;qtbjV4o{&iZ=N&ld9@)`Vdfezv(^x9&Bel8|G+G$wZ`Yp*v8rIz6fNhLg~HM*f#!103L!*Ug|$o^6_%OPKs*;jYm zmTEVvp^_%6w>wEA#P8)wNCT;q5&X-8jy)tE`Y3)f%p?BJzER$-v;z8QLr(r`#|&he zX$d((P6#7Egyi-B;Accr$_1bw5}wm(tEQ{0fsz{6khGB_BxvB1>L)nh0gUtd>Wsf_ z%c%fFi_ZGH(c7DF?F&u1{{TfpDpLJqaJXQufDzm`S6MhCj^K9w~t zJta*AEYw$+S(a*wc4(EG4Ti&Y0gy*<59O|qAbX{4(!lK{EyUL?BpHe-iCKfF1bJuJD#)rp{oJQ6%+@!SLZSL?$ z@>A7DB!OdopDI}RUm2JS%%Ej zV9l)DDXD7SYHPhG@T5sf^tv9TDtY7pz=Q9NA(Z7(K>j!~uHn1hP+*oSfD{8G#ThJp z&*9J&)QHGskt%LG6juEX;kH#$#yYU>$$*&T4fGSS8}_sMS8u`);)AzM+|a#FBCW(BxBM? zagGl?^)^2frI4p%atstvK}aULRkFh&B|#*&;_g&?@OahKGkcN96QeBO4ye2fxt|M3W~rl)s>hs_0WpPQ26-g$$oH14fw)B?T^oD$S=pPlB)C{SS+QQ}(wUc` zCwQcaPNgB)U6>&D{3E`TazXVt=(I%fOZINw9v$0ZtXQdQDeB}RUoK_ButVG2^U!!4 z{k00*r7cNZRZAYrpn{$hPu>$oS;S8xW($4GV2C0)0bulWSj^Lh>N9C=Li9+`jYYy}!lWB(eV365s_k7lv=~%|GQQG0E znF61uSwp^#x`IX2_3$?UTvCCshln z-z2a%FOSJBEH=yST$Io{NU&2v-@}=Dh{TV>248ICa0vkLE<5~7bi;C+XsGvZiB!}V z3gKOAr*cnilLB~;wyYP#qI)F_M8NE2NU6+zVCpERtGi_2@H?Dq zwZ5lu)L$DKg5&4io~o6rDIsZoiJ{7?MxccyKupymd4*iT<))pHo)>ofZp-TE#z0bYoO=yH8<$vT!z*^(s;QfHQ0}=YYK=Wb zF-c=qiL!(_W?|c>4bN_$>SP-lkb7no@>H;HM}E3D@{YVBnF*eH{k@ImX19yR7^E=O5Ep1-`C=t|g zRuA60zTH_@R&42UwaD(?X-Sx+Qi7o~>c}8>$T&Q6-&NcwZB4ssuDZopE;cBE=I?y-bJvqTR1a{=; z+_t)%p#n=aEiGkTb$tQ3{WOcy6ml>S#7Q8Yfq)0c$vO!mC0zBnXh~Cfrk0y-($_^vOZ1AJGIT0cj-skVxFj*p zA0&OWWiVjw67dsg$Gdh*4=QbxTi7`MBNnZ=mrUl5E z->q48hVgCN?O9UDL1lnVDnc%iSk5T0Eyz!%`3n|A?{mXIG-YV&=*UDFk@FjtP z{2-uilZ+F|?laD*c9~4LI*==C96K_gEw{$_7|D>fns}M*w4vgQ!ZhcOb*| zz3EAPf*I&4vn94hf#Pr*3{D9_>>Hl_i5;|OJVc>wMz>1p3QB#)1tb-*RohxwRc9^N zBaWXegaZKMmd6K?t19enNIR9iG+rQ9Zt9EN5Km0_`@Se*w}KB_fU1n?UQ+2cPvN|Gl+b=4BpNk#RGOLMrV zmn0I&(@d)%B#dL9Q6v$ca5&Z3wmOw*NnUSPdR^|6`;&0OXr-!ZT6kopK+u7LvSmPQ z55!myTcn1`($8-gP@G2Ly~ntt-1krTYQax&wZe-}MJZU;c^I||q4bPKPu#Iyc)?c2 z`TCScA&XaD8X-34;c)HhFuk_a|nRy+mBCBVbC61k<2s*kL`nrh5NF%5oMwp=L zRfH{b-#Zc=v0Rav&3#0*Fw-?N6;=fGD=$eHTuB%Kxji1hXqVZgiP|(JOGUm-g6L{$ zZ0l7#d5ldkX6Pdxq6a;coRRO5+fh>U5^9ase-Z09!dKE$RK-tEZ>NGup?E~Hv}!R<;voOjgOSLPkgwKiNUYi8Vr_iDao1Q1mL1wTp^^75o99LB+q-<+LwY(dl! z?p#-@NAV`n4K4OFM?%BWk*-uHmNHZMNc9t*`NzhL=UvW~7Sy<|-G=Y74XtT>_$QV+ zuPAj%j=>uNM<8_I0yD|bLjxmno~YZEbd;aIX{7U_MGaBG{v4r-I*>U$jQ&SDkz~5} z7&g7m(L6O?X<8Y|$p@8!?>n3jyo?jsN{;CqcsB!)*BfGfb2PLeesdA%JnvjO%Ym}9-7EvjYeW% zPnj8DF^0%!+~n}llY%vwdvhF25&lV9-`1wxb()qFBxny(p=MH`@&+^TMzYD#)UL>t zcH*y(d6cKO%p{dF7+Ft2R0oWKz~FmlooXgG=5Gd)q1m+!Y+6V2nnw@o>tX~g%XJcd zK)}v<_R-FO;w9Mabv4)1L1Uzz-D{avI#nKP7|OhiNaIOD#xC{`+fBAMF2$2gqZWS_Vp!>HeWsbTUEG3iN}X2{21zA$>6@wW z@p^eZumch^p65k9olYL*zXWY>WxDPUqpvlfOvzTtkyAHM9IiUa4BQ_08nI3?@;~^X z?mCyU+bblcq-Y4~pbXMTP@INuX!y@Ubf*V7#&tvAQml0pH)Y>&+v({ks9ovljDSG1 zL)6j&NXnMUE1ZlB4lp?H9A!C3w)=b=n!2j(c}Xg1nnsXG5K!ewATN}>j;0ylU<2Eo z6)V`>pOaljd3-#y-Kwc7E$eTf`jA;^+M#KqexZYv9^*Lx57R~iQiSeLyiv`yHlx96 zxx+n7232afgCo+Ap-4$Ga&W`k_V(9GM5s4Bqzd@fvbd;?N;J&h!&L-zDIr16x%|6p zhq(qd#kwhX9loMicHMNel@LhcaahoXm4E{zV6hBF0VQ+oqpYm<$rk1oHfz0F+^4RL zEiyc_GsJ;c7(ha(^>fBElb>x6`kgJi4J8iQ+Hgg6r>I&=paooJ0LP#wTLQUk9P{!A z#-J}L(j9MymRmuWbl$BpTy2$g5mZU!C=4UcP$&l-3)BWi4so4BRVd!&TjB-o!CAhk zFB@*UD4-O*9$ayrqm$Fp%6pQmaoqZT`O@w+F0mQ*<$bO>uVcukwoHZ!F*QFABdg`Q z4thsOU|XjjgdRXTircwE?q#%MX{DX-6?K)6Qo$0%PaN&g14u_0&p-ilk4eGQyKKS< zYFy*qd*vf}Jl4o*8Efvg_UVR1S6Lkb1_9V$xD0xFNyh_?0l+3m8kDB|`rEy1yMn5q zL?&}8#~Abg4hT5zNmHDUW9^MsjG3J*)7EYC0j!KssOlb6B^d}(tB|-Vc=zMg&T*=7 z?nd=6+my65d#!7h{1f%#zB{ z3_rQZBZ5c=k)O*$Rql5v{b#>d*!J}eF}hY%8mgvgY22n)2NB4_r=@*ovv6_S+e9m& zD#v0uZ7RLnxvh0if2*W=S|@3iNr++PWOOLbPG`-b7(yL!}UZnpc4 z1U0cty)?A4%M6n%CrJ*hPDoRc)H@Axjmw!A#CvA$+!hhKthAF*RZS$GdecPfBr+!| z!a;&MxdD`Mmgk*Hsg;zj*QVW)ZVF4r+mc1OQi6u44w!nHJQW84RFybCIQ_zfr41hC}fOGGI zqmNUEa}A5XYHKQQcRkpT4MnI*qMkU&N?1C$GY~?PkU{kP9(5p%OKVYjrtf>WZtIPz z#zfFf993{j8Y>l!RO;x6uV8x985#NQrCci+0PZPon+EjUA6K@m_QsCgJH}dHEH4WP zQ-RrobeCpO4oM!|4CqOTw;v8nTVjssYqecusggiyrb&1wr9lz&oH0HAM;Z6m0uN$z zxi(c6*1uS&tQ&mX>=jhBsMU1>1xTcrr%bo4s{kvxwal|nfOOR4P4zvk*B zgTdtIjTua|Mz2}!clvv+qj6JJwLCIZ!0th(k%AKOxE+ZFvG76Fi3il_D&}4oQ*&2R zrNTHV#O4)GI4ZnHr>CWV7dY*ZP<(2u*Je()6TC&Ub*-~?R#EwNv`C5)ca7b%o|SbO z?%2*b=O^D;nHFudC7HU^Q{J)LtoveGx__pUt!GIVZk1_dsOfH@%A8>wv-#Y7mv4`WM0$1<4g|Dr zOabm&=S!5_xNSkP?u(t$-qlGuRw98RNo8PY-9l%f3vvpm2je4GMdBqHq^f%Rm2I+F zVU$R~$AwWv`;Brn*4g0Sd7aG3rnT0+Zb2XZq>N zmqHLGp_^sHV_j_bW~i;Ew_YALG|-@6jgycIa(a*9=dj1$R@W}1IfCrl!soZDp^_Te zL@cJA;&OU?vP$%*KZJ3RGmd^RG&fEi%1euFZ>#On?G1@zjcpA~q8S9GQY?;+PdMj4 zo|pM~9y5o%P1g!pcBR5U&yI@%)Av%-NJ&O_9=1MvE=0Uf=E zwu}a)LwBhngJsn3ii*iL<@SPtrj)zF^);OzP~;X>ELifyA5q3nzdE6~FHo>v;@JD9 zh`qk^OHoZdH%yNmKq{_JaEBZoSZ5?3ZBNLgYyFjF*q&``oXZtf-H}>9EIEN2lE^tJ z@JgRh`N7tE2FHE=B21i4{A@Qm}x8qhW? z*VM6INx8b+xTt7NuCP`u43k3fLvV}~;4mf$haF3XP!DiNd~vL&sJZGcIxyUjZTqy1 zHSV&Oo~|S1y4AG4VIPPbslgav0Uf~3vzr~aEyi<%Ktn4vY5IB0j9AkzPeCWBCjsGbNzKgSl;1zbu5jovZUXUnk1Ym zTH@=HVsewY9ZbLs6M?`VZ52U+W+qHct1WKwhK3tuB#2xDj0{JG1oB1*UX?vxo(Cs7 zVOM_Q=cCkRi^FP|Yw2N*o>?kcWH84OC=L~iwg??PE9%a80Qc3(gAPuH#I^0-2*piB zHKy0OWcrJrNACnt)(Zd(o?##kjGTf_OJf=h=&4@T3^{LdwY+#g9CV4gCAmpVh=pO0 zKzh`s270)_=PG_!>1ylx?8Bp#^(?F3j28a@7PcLppL$!VBD`$|NSbAo2CGMijMY**#{lVpzi=e?3hnu}p6N?n zw)1cLDp+BPI+;BvK^}#0+~Bi@JoD)%-&X{;xdn_nJ%5MR2`N&;Yqrl6Vn_3$>J@b@ z(iDO~=?XAC%J5D*>cIpVVr6-}YAIr~!va}nOS!7^U~fCkk|?^EpfUnWKS*5hfu1qO zr-+fW3v4?R+@Y(U#XZK&HLgE0aRiKNCXpBTjCxNP7&!j`(^egHCqfl9yLS6SX}4}U zYRzynFbfk#uM(b^+t(3$u#LWeo9^WmQPRo1(Ys0#;n)MG0Us$FX2I_$Rh>B1oMXHZ`5D_j&0{X`*%~YGXk`aHOoK-22Y?RXmeK1a$FM6_3nkz>QR7jIUE+c=kET)t9M5 z)VA&0*4ZW6hhxa3)>a`zjwB^xi~>~|urNxGf1O;D2ff8R*M}Awe=s#)?)u12TSdc7 zA|^*#G7@rny@yu-cF@Wzdxcn=eQmL|QWz^O(_GL2nkSH~Q5@tE5Xd782_5+4X*OOh z)Se<|S#!46)wDKRxoC}aF{Ct5M5_c5dPA@br=^*Q$xsd#RrY(51ciIJ)mZl>jao_T zYHjc5F^PPbyr88_Y1s3H&Q2JgwgK47s)>!?#XIEtVx=uq6qgmd)=31BO-~aVT!Dn+ z1U5)+qx0WOI0QoR8kK|CVX2Oxu61igTTVj36T}ESki_HP9gp8dt$K@=(bRjeZR<_L zYb7nBqEmE~ytP%)N_r`9pp@wx^VOcBMsuqu{{UeRsb7BLp4qu2w?SByhL)$L;E*e1 z2f!qp;Aa`mG8K$XLQ5^I}lna?*#=- zDx%MAsbq!ZR5Cfq!31NZFJc%Eja#uJsYKp(bT$eqfAIbOs+|2|i6=_7kH}UTWoVa> zKu&Sn^5;WgvnWiuZM%EIntGUOsVx+j3#Gj!ndF8;C|Sw@mtw?qoZ|#?7<_8tuw-n- z9pPuG+?Ps0G?lX3rxLY2y&OSMDlk3R<&fpT3xWU{$9(`+>SeScJ@I?A+IC}A)6+e! zuGdLK($h&cDryNNBt^jo2M>|>K>W^F<)zV_I-Kvgw{>>pzAeI*Kcsdf;we1@Bgk;X zoH@e)O9S|RG##|I!G?BT@3ro0ywUC&fwt>sftf39(-`u=bi82~BdGSuk(?efGpG`} z1Jt={ZPRV*6&V9_{k?AfN|BH_&CN!vsptt89Rs=3xc9vJfK#YOZNhc?<<$tE64y0&LX1IMRj-oggmf({H9z)_Xg?&I|lhxFt z^vaw219!lB=nd ztgAGV|Q;~v4JY~<-cyx(r#~|N{Fkg-knuF3H&TGrgM^V z@gK;ad~1V(dV^8R+zoU^xI!9^kVK_Kr3P>a9D~mp@AJ;8-*KZY#6w#a`E-horq>is zL0+hUd@FN;53?y8 z5xU<(Zrl~rlGjq)wna3S+LKL@<}XT0M^Vmkj1!Lk0Or+d1fJwEfiD}5^I2DLuc%Z? z>AGZ@=~=Q|{{Rq3pyz-9JP8I@QxFZS=Bc9=k_H1Z)*YR(S=6YJlcr=S!V7G6|DJ_=E zI@@oR1ju8CR1|Vds!voz6XkURRIlL&7{K5%ufhBE7$Hd5h!S3RPT6*`T&P|tsR>Ss zn3Ot?Vd@#j$F?z!F`^pO_bJQ%K$cy(a=6?gq@#*Ty1J(e(g9<~10?C*0v%deR2~*? zeVt2RHOUe>hJeP<6fGzOfLU+`4my+`z@9nAs>lG0Dcn1?ESJZHEp#G8nWbf^h^Yjs z`;u4F&U+q6)m3CPcC~F9&EH)~OIaK=)U=Els$Fq3;3;-Y`;+*3v5}rMU^M`J!hc5# z(Z?jUver}5$iW_htcM|g7f>f56^fGB^r=3_T@2sW8NOd=?N$qx+u8RjIjO`6G||CS z?NDWN_?k=sCnWF=InXaV8iH7lNk=N$WO;8=(TS;<8WT~=xbB@GoDO=3YEbM7PTfz=0^x^0BS8z?6Ev~ztxdI~Gws^QXyjQr16Ry~_84o7k^?V{_bE%y*^H3xB(ooYi>%Gr^f)Znqm!2bYBa7p7;Sz`-sjk9`+ zirrOLc$Md_rA4P$Wd#zD9Ob{41h-+vLD592_X^u>meIIjqPj&@P?J1G8eW7G5Qx5^ z!0GB3&wK&Sre9II@qDD)wwn9xVM<|M&q|au5wuD$rAjdv9Uy~{80X(zDBk2-h1X?N zQ(BVWBq1b$DQc$b>g#q+vRwBd5EKqa-(4#vPM6Dt1eR+RD=n~(HsvKWT_^)E=x<3R zu^eOEXxw%uMVnlaT|73fqppVBm2~|7;~tFSypbByj^SOyWUcQlG$&GsKgYLbV`MC6Q}|~a!T-f zu0C|Dfy!EFn!j$(Rc@qPpU~37435Z8Q!^>*Qo{rS*kCc!$fCP$ml*kly63ziREX9=%wn6vwh%*`O+2fralejrH)8aeQ zSR=DhM{=*+#v?6ML4&L)G1ZnC?!y3Qobji)^(g02&u(r_$x}erddn@s7L_6`L6wk5 z6tVLaN#xeQj9r>L!X;Ag3D*-ny6DER5)zL}{uvYev6=2QpmFiU<+LONTMk)O+1 z>~vuiY)q@Hl-JAkeSJkhg(8#b;PT{dxZ#lqjms(NE0zHAeI)AY(s;=N=Rt4V)&Brj zT=f;P)4E4bTOf_2n2v$b$;;r3AAAwpQ*T3Z0&K;b%hsEXEltVDtFfnicm#BnwX#%3j}Rg>E)SM-l6@cp&#~{@OmZ^v zWs(KDytOnJnG&$e5tfrIOR|!@kUDuS#!vLp*)|nT!CZ8+eRXc`6_eTFnX4&k<&Gt# zXu!=(oDrO7@Rsb|`ZZb)KILofTNdiuW#Yjm&+1D!h89_=f{7MEAYm%0{!l$f^3yjR zMm4Cnyf#hNufp4<&+x>THf2XRZzIc%Rlyy`QcP$SH*kw7i)=GO!W!pKriHpe!3QL8 zMtf%iOlxLdHe3Gyb5?CSsu^YxRa>VLc}21H3PWI_!3@jM$oR&H1n35YL@H`)V=@@2 z@irI+40>?6Biyjrj03W=*+mvsFsd#vzbqDC1~~$JN^e{{SfCgY%6kb$^&&V{=~c z`g^^;D%x1l<*DeLxL&5~0|jyU=dkQ_8lPKJ1iy0?sJFi2+x3w7H;JiW^D+bnp`m`= zOP<*G9ONFyLbDJ50Gux^bu0z(#=m$qEiUbdT})A|4^tV$;B^A5!yc?)`hjd@_SSA) z9}xM(TFN;dVo4hbUvjM0Dw9<6Mzs>GE&~D-`hxZ&3~~kza(#}5w*1MtTKei2q}=`} iZKwsBnsemSlCiZ+F-q*d$EmV$?fPmrY-i=JfB)IJy2lIv literal 0 HcmV?d00001 diff --git a/Demo/yarn.lock b/Demo/yarn.lock new file mode 100644 index 0000000..2afc61d --- /dev/null +++ b/Demo/yarn.lock @@ -0,0 +1,4581 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ldn0x7dc/react-native-view-pager@0.0.9": + version "0.0.9" + resolved "https://registry.yarnpkg.com/@ldn0x7dc/react-native-view-pager/-/react-native-view-pager-0.0.9.tgz#0ca8d88c9b6da77b581222617e0b04459bcbd3b0" + dependencies: + react-mixin "^3.0.5" + react-native-gesture-responder "0.1.1" + react-native-scroller "0.0.6" + react-timer-mixin "^0.13.3" + +abab@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" + +abbrev@1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" + +absolute-path@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" + +accepts@~1.2.12, accepts@~1.2.13: + version "1.2.13" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.2.13.tgz#e5f1f3928c6d95fd96558c36ec3d9d0de4a6ecea" + dependencies: + mime-types "~2.1.6" + negotiator "0.5.3" + +accepts@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" + dependencies: + mime-types "~2.1.16" + negotiator "0.6.1" + +acorn-globals@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" + dependencies: + acorn "^4.0.4" + +acorn@^4.0.4: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-escapes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" + +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0, ansi-styles@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +ansi@^0.3.0, ansi@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +append-transform@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" + dependencies: + default-require-extensions "^1.0.0" + +aproba@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + +array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +art@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/art/-/art-0.10.1.tgz#38541883e399225c5e193ff246e8f157cf7b2146" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + +async@^1.4.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.4, async@^2.4.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" + dependencies: + lodash "^4.14.0" + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws4@^1.2.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.26.0, babel-core@^6.7.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.18.0, babel-generator@^6.24.1, babel-generator@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.6" + trim-right "^1.0.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.16.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-jest@21.0.2, babel-jest@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-21.0.2.tgz#817ea52c23f1c6c4b684d6960968416b6a9e9c6c" + dependencies: + babel-plugin-istanbul "^4.0.0" + babel-preset-jest "^21.0.2" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.5.0, babel-plugin-check-es2015-constants@^6.7.2, babel-plugin-check-es2015-constants@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-external-helpers@^6.18.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-istanbul@^4.0.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz#18dde84bf3ce329fddf3f4103fae921456d8e587" + dependencies: + find-up "^2.1.0" + istanbul-lib-instrument "^1.7.2" + test-exclude "^4.1.1" + +babel-plugin-jest-hoist@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.0.2.tgz#cfdce5bca40d772a056cb8528ad159c7bb4bb03d" + +babel-plugin-react-transform@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-react-transform/-/babel-plugin-react-transform-2.0.2.tgz#515bbfa996893981142d90b1f9b1635de2995109" + dependencies: + lodash "^4.6.1" + +babel-plugin-syntax-async-functions@^6.5.0, babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-class-properties@^6.5.0, babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-flow@^6.18.0, babel-plugin-syntax-flow@^6.5.0, babel-plugin-syntax-flow@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-jsx@^6.5.0, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + +babel-plugin-syntax-object-rest-spread@^6.5.0, babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.20.0, babel-plugin-syntax-trailing-function-commas@^6.5.0, babel-plugin-syntax-trailing-function-commas@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-to-generator@6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" + dependencies: + babel-helper-remap-async-to-generator "^6.16.0" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.0.0" + +babel-plugin-transform-class-properties@^6.18.0, babel-plugin-transform-class-properties@^6.5.0, babel-plugin-transform-class-properties@^6.6.0, babel-plugin-transform-class-properties@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.5.0, babel-plugin-transform-es2015-arrow-functions@^6.5.2, babel-plugin-transform-es2015-arrow-functions@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.6.5, babel-plugin-transform-es2015-block-scoped-functions@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.5.0, babel-plugin-transform-es2015-block-scoping@^6.7.1, babel-plugin-transform-es2015-block-scoping@^6.8.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.5.0, babel-plugin-transform-es2015-classes@^6.6.5, babel-plugin-transform-es2015-classes@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.5.0, babel-plugin-transform-es2015-computed-properties@^6.6.5, babel-plugin-transform-es2015-computed-properties@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@6.x, babel-plugin-transform-es2015-destructuring@^6.5.0, babel-plugin-transform-es2015-destructuring@^6.6.5, babel-plugin-transform-es2015-destructuring@^6.8.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-for-of@^6.5.0, babel-plugin-transform-es2015-for-of@^6.6.0, babel-plugin-transform-es2015-for-of@^6.8.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@6.x, babel-plugin-transform-es2015-function-name@^6.5.0, babel-plugin-transform-es2015-function-name@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.5.0, babel-plugin-transform-es2015-literals@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-commonjs@6.x, babel-plugin-transform-es2015-modules-commonjs@^6.5.0, babel-plugin-transform-es2015-modules-commonjs@^6.7.0, babel-plugin-transform-es2015-modules-commonjs@^6.8.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-object-super@^6.6.5, babel-plugin-transform-es2015-object-super@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@6.x, babel-plugin-transform-es2015-parameters@^6.5.0, babel-plugin-transform-es2015-parameters@^6.7.0, babel-plugin-transform-es2015-parameters@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@6.x, babel-plugin-transform-es2015-shorthand-properties@^6.5.0, babel-plugin-transform-es2015-shorthand-properties@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@6.x, babel-plugin-transform-es2015-spread@^6.5.0, babel-plugin-transform-es2015-spread@^6.6.5, babel-plugin-transform-es2015-spread@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@6.x: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.5.0, babel-plugin-transform-es2015-template-literals@^6.6.5, babel-plugin-transform-es2015-template-literals@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@6.x: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-es3-member-expression-literals@^6.5.0, babel-plugin-transform-es3-member-expression-literals@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-member-expression-literals/-/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz#733d3444f3ecc41bef8ed1a6a4e09657b8969ebb" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es3-property-literals@^6.5.0, babel-plugin-transform-es3-property-literals@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-property-literals/-/babel-plugin-transform-es3-property-literals-6.22.0.tgz#b2078d5842e22abf40f73e8cde9cd3711abd5758" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.21.0, babel-plugin-transform-flow-strip-types@^6.5.0, babel-plugin-transform-flow-strip-types@^6.7.0, babel-plugin-transform-flow-strip-types@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-assign@^6.5.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz#f99d2f66f1a0b0d498e346c5359684740caa20ba" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.20.2, babel-plugin-transform-object-rest-spread@^6.5.0, babel-plugin-transform-object-rest-spread@^6.6.5, babel-plugin-transform-object-rest-spread@^6.8.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-display-name@^6.5.0, babel-plugin-transform-react-display-name@^6.8.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-source@^6.5.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@^6.5.0, babel-plugin-transform-react-jsx@^6.8.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.5.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.20.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-es2015-node@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015-node/-/babel-preset-es2015-node-6.1.1.tgz#60b23157024b0cfebf3a63554cb05ee035b4e55f" + dependencies: + babel-plugin-transform-es2015-destructuring "6.x" + babel-plugin-transform-es2015-function-name "6.x" + babel-plugin-transform-es2015-modules-commonjs "6.x" + babel-plugin-transform-es2015-parameters "6.x" + babel-plugin-transform-es2015-shorthand-properties "6.x" + babel-plugin-transform-es2015-spread "6.x" + babel-plugin-transform-es2015-sticky-regex "6.x" + babel-plugin-transform-es2015-unicode-regex "6.x" + semver "5.x" + +babel-preset-fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-1.0.0.tgz#c972e5c9b301d4ec9e7971f4aec3e14ac017a8b0" + dependencies: + babel-plugin-check-es2015-constants "^6.7.2" + babel-plugin-syntax-flow "^6.5.0" + babel-plugin-syntax-object-rest-spread "^6.5.0" + babel-plugin-syntax-trailing-function-commas "^6.5.0" + babel-plugin-transform-class-properties "^6.6.0" + babel-plugin-transform-es2015-arrow-functions "^6.5.2" + babel-plugin-transform-es2015-block-scoped-functions "^6.6.5" + babel-plugin-transform-es2015-block-scoping "^6.7.1" + babel-plugin-transform-es2015-classes "^6.6.5" + babel-plugin-transform-es2015-computed-properties "^6.6.5" + babel-plugin-transform-es2015-destructuring "^6.6.5" + babel-plugin-transform-es2015-for-of "^6.6.0" + babel-plugin-transform-es2015-literals "^6.5.0" + babel-plugin-transform-es2015-modules-commonjs "^6.7.0" + babel-plugin-transform-es2015-object-super "^6.6.5" + babel-plugin-transform-es2015-parameters "^6.7.0" + babel-plugin-transform-es2015-shorthand-properties "^6.5.0" + babel-plugin-transform-es2015-spread "^6.6.5" + babel-plugin-transform-es2015-template-literals "^6.6.5" + babel-plugin-transform-es3-member-expression-literals "^6.5.0" + babel-plugin-transform-es3-property-literals "^6.5.0" + babel-plugin-transform-flow-strip-types "^6.7.0" + babel-plugin-transform-object-rest-spread "^6.6.5" + object-assign "^4.0.1" + +babel-preset-fbjs@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-2.1.4.tgz#22f358e6654073acf61e47a052a777d7bccf03af" + dependencies: + babel-plugin-check-es2015-constants "^6.8.0" + babel-plugin-syntax-class-properties "^6.8.0" + babel-plugin-syntax-flow "^6.8.0" + babel-plugin-syntax-jsx "^6.8.0" + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-plugin-syntax-trailing-function-commas "^6.8.0" + babel-plugin-transform-class-properties "^6.8.0" + babel-plugin-transform-es2015-arrow-functions "^6.8.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.8.0" + babel-plugin-transform-es2015-block-scoping "^6.8.0" + babel-plugin-transform-es2015-classes "^6.8.0" + babel-plugin-transform-es2015-computed-properties "^6.8.0" + babel-plugin-transform-es2015-destructuring "^6.8.0" + babel-plugin-transform-es2015-for-of "^6.8.0" + babel-plugin-transform-es2015-function-name "^6.8.0" + babel-plugin-transform-es2015-literals "^6.8.0" + babel-plugin-transform-es2015-modules-commonjs "^6.8.0" + babel-plugin-transform-es2015-object-super "^6.8.0" + babel-plugin-transform-es2015-parameters "^6.8.0" + babel-plugin-transform-es2015-shorthand-properties "^6.8.0" + babel-plugin-transform-es2015-spread "^6.8.0" + babel-plugin-transform-es2015-template-literals "^6.8.0" + babel-plugin-transform-es3-member-expression-literals "^6.8.0" + babel-plugin-transform-es3-property-literals "^6.8.0" + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-plugin-transform-object-rest-spread "^6.8.0" + babel-plugin-transform-react-display-name "^6.8.0" + babel-plugin-transform-react-jsx "^6.8.0" + +babel-preset-jest@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.0.2.tgz#9db25def2329f49eace3f5ea0de42a0b898d12cc" + dependencies: + babel-plugin-jest-hoist "^21.0.2" + +babel-preset-react-native@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/babel-preset-react-native/-/babel-preset-react-native-3.0.2.tgz#f9a391540caebbd5014391ac1447ef6d8c0a5b57" + dependencies: + babel-plugin-check-es2015-constants "^6.5.0" + babel-plugin-react-transform "2.0.2" + babel-plugin-syntax-async-functions "^6.5.0" + babel-plugin-syntax-class-properties "^6.5.0" + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-syntax-flow "^6.5.0" + babel-plugin-syntax-jsx "^6.5.0" + babel-plugin-syntax-trailing-function-commas "^6.5.0" + babel-plugin-transform-class-properties "^6.5.0" + babel-plugin-transform-es2015-arrow-functions "^6.5.0" + babel-plugin-transform-es2015-block-scoping "^6.5.0" + babel-plugin-transform-es2015-classes "^6.5.0" + babel-plugin-transform-es2015-computed-properties "^6.5.0" + babel-plugin-transform-es2015-destructuring "^6.5.0" + babel-plugin-transform-es2015-for-of "^6.5.0" + babel-plugin-transform-es2015-function-name "^6.5.0" + babel-plugin-transform-es2015-literals "^6.5.0" + babel-plugin-transform-es2015-modules-commonjs "^6.5.0" + babel-plugin-transform-es2015-parameters "^6.5.0" + babel-plugin-transform-es2015-shorthand-properties "^6.5.0" + babel-plugin-transform-es2015-spread "^6.5.0" + babel-plugin-transform-es2015-template-literals "^6.5.0" + babel-plugin-transform-flow-strip-types "^6.5.0" + babel-plugin-transform-object-assign "^6.5.0" + babel-plugin-transform-object-rest-spread "^6.5.0" + babel-plugin-transform-react-display-name "^6.5.0" + babel-plugin-transform-react-jsx "^6.5.0" + babel-plugin-transform-react-jsx-source "^6.5.0" + babel-plugin-transform-regenerator "^6.5.0" + babel-template "^6.24.1" + react-transform-hmr "^1.0.4" + +babel-preset-react-native@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-native/-/babel-preset-react-native-2.1.0.tgz#9013ebd82da1c88102bf588810ff59e209ca2b8a" + dependencies: + babel-plugin-check-es2015-constants "^6.5.0" + babel-plugin-react-transform "2.0.2" + babel-plugin-syntax-async-functions "^6.5.0" + babel-plugin-syntax-class-properties "^6.5.0" + babel-plugin-syntax-flow "^6.5.0" + babel-plugin-syntax-jsx "^6.5.0" + babel-plugin-syntax-trailing-function-commas "^6.5.0" + babel-plugin-transform-class-properties "^6.5.0" + babel-plugin-transform-es2015-arrow-functions "^6.5.0" + babel-plugin-transform-es2015-block-scoping "^6.5.0" + babel-plugin-transform-es2015-classes "^6.5.0" + babel-plugin-transform-es2015-computed-properties "^6.5.0" + babel-plugin-transform-es2015-destructuring "^6.5.0" + babel-plugin-transform-es2015-for-of "^6.5.0" + babel-plugin-transform-es2015-function-name "^6.5.0" + babel-plugin-transform-es2015-literals "^6.5.0" + babel-plugin-transform-es2015-modules-commonjs "^6.5.0" + babel-plugin-transform-es2015-parameters "^6.5.0" + babel-plugin-transform-es2015-shorthand-properties "^6.5.0" + babel-plugin-transform-es2015-spread "^6.5.0" + babel-plugin-transform-es2015-template-literals "^6.5.0" + babel-plugin-transform-flow-strip-types "^6.5.0" + babel-plugin-transform-object-assign "^6.5.0" + babel-plugin-transform-object-rest-spread "^6.5.0" + babel-plugin-transform-react-display-name "^6.5.0" + babel-plugin-transform-react-jsx "^6.5.0" + babel-plugin-transform-react-jsx-source "^6.5.0" + babel-plugin-transform-regenerator "^6.5.0" + react-transform-hmr "^1.0.4" + +babel-register@^6.24.1, babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.0.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base64-js@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" + +base64-js@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.1.2.tgz#d6400cac1c4c660976d90d07a04351d89395f5e8" + +base64-js@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + +base64-url@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-url/-/base64-url-1.2.1.tgz#199fd661702a0e7b7dcae6e0698bb089c52f6d78" + +basic-auth-connect@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz#fdb0b43962ca7b40456a7c2bb48fe173da2d2122" + +basic-auth@~1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.0.4.tgz#030935b01de7c9b94a824b29f3fccb750d3a5290" + +batch@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + +big-integer@^1.6.7: + version "1.6.25" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.25.tgz#1de45a9f57542ac20121c682f8d642220a34e823" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +body-parser@~1.13.3: + version "1.13.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.13.3.tgz#c08cf330c3358e151016a05746f13f029c97fa97" + dependencies: + bytes "2.1.0" + content-type "~1.0.1" + debug "~2.2.0" + depd "~1.0.1" + http-errors "~1.3.1" + iconv-lite "0.4.11" + on-finished "~2.3.0" + qs "4.0.0" + raw-body "~2.1.2" + type-is "~1.6.6" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +bplist-creator@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.7.tgz#37df1536092824b87c42f957b01344117372ae45" + dependencies: + stream-buffers "~2.2.0" + +bplist-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.1.1.tgz#d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6" + dependencies: + big-integer "^1.6.7" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +browser-resolve@^1.11.2: + version "1.11.2" + resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" + dependencies: + resolve "1.1.7" + +bser@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" + dependencies: + node-int64 "^0.4.0" + +bser@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.3.tgz#d63da19ee17330a0e260d2a34422b21a89520317" + dependencies: + node-int64 "^0.4.0" + +bser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" + dependencies: + node-int64 "^0.4.0" + +builtin-modules@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +bytes@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.1.0.tgz#ac93c410e2ffc9cc7cf4b464b38289067f5e47b4" + +bytes@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +ci-info@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +commander@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + +compressible@~2.0.5: + version "2.0.11" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" + dependencies: + mime-db ">= 1.29.0 < 2" + +compression@~1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.5.2.tgz#b03b8d86e6f8ad29683cba8df91ddc6ffc77b395" + dependencies: + accepts "~1.2.12" + bytes "2.1.0" + compressible "~2.0.5" + debug "~2.2.0" + on-headers "~1.0.0" + vary "~1.0.1" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-timeout@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/connect-timeout/-/connect-timeout-1.6.2.tgz#de9a5ec61e33a12b6edaab7b5f062e98c599b88e" + dependencies: + debug "~2.2.0" + http-errors "~1.3.1" + ms "0.7.1" + on-headers "~1.0.0" + +connect@^2.8.3: + version "2.30.2" + resolved "https://registry.yarnpkg.com/connect/-/connect-2.30.2.tgz#8da9bcbe8a054d3d318d74dfec903b5c39a1b609" + dependencies: + basic-auth-connect "1.0.0" + body-parser "~1.13.3" + bytes "2.1.0" + compression "~1.5.2" + connect-timeout "~1.6.2" + content-type "~1.0.1" + cookie "0.1.3" + cookie-parser "~1.3.5" + cookie-signature "1.0.6" + csurf "~1.8.3" + debug "~2.2.0" + depd "~1.0.1" + errorhandler "~1.4.2" + express-session "~1.11.3" + finalhandler "0.4.0" + fresh "0.3.0" + http-errors "~1.3.1" + method-override "~2.3.5" + morgan "~1.6.1" + multiparty "3.3.2" + on-headers "~1.0.0" + parseurl "~1.3.0" + pause "0.1.0" + qs "4.0.0" + response-time "~2.3.1" + serve-favicon "~2.3.0" + serve-index "~1.7.2" + serve-static "~1.10.0" + type-is "~1.6.6" + utils-merge "1.0.0" + vhost "~3.0.1" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +content-type-parser@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" + +content-type@~1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.3.tgz#da18ef2fb64ca6acc905cc72017d3f38185b91d1" + +convert-source-map@^1.4.0, convert-source-map@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +cookie-parser@~1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.3.5.tgz#9d755570fb5d17890771227a02314d9be7cf8356" + dependencies: + cookie "0.1.3" + cookie-signature "1.0.6" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + +cookie@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.3.tgz#e734a5c1417fce472d5aef82c381cabb64d1a435" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +core-js@^2.2.2, core-js@^2.4.0, core-js@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +crc@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/crc/-/crc-3.3.0.tgz#fa622e1bc388bf257309082d6b65200ce67090ba" + +create-react-class@^15.5.2: + version "15.6.0" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +cross-spawn@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +csrf@~3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.0.6.tgz#b61120ddceeafc91e76ed5313bb5c0b2667b710a" + dependencies: + rndm "1.2.0" + tsscmp "1.0.5" + uid-safe "2.1.4" + +cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" + +"cssstyle@>= 0.2.37 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + +csurf@~1.8.3: + version "1.8.3" + resolved "https://registry.yarnpkg.com/csurf/-/csurf-1.8.3.tgz#23f2a13bf1d8fce1d0c996588394442cba86a56a" + dependencies: + cookie "0.1.3" + cookie-signature "1.0.6" + csrf "~3.0.0" + http-errors "~1.3.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +dateformat@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" + +debug@2.6.8, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +debug@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" + dependencies: + ms "0.7.1" + +decamelize@^1.0.0, decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +default-require-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" + dependencies: + strip-bom "^2.0.0" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +denodeify@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" + +depd@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.0.1.tgz#80aec64c9d6d97e65cc2a9caa93c0aa6abf73aaa" + +depd@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +diff@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" + +dom-walk@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + dependencies: + readable-stream "~1.1.9" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +envinfo@^3.0.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-3.4.1.tgz#8c80e9f2eec2cd4e2adb2c5d0127ce07a2aaa2ae" + dependencies: + minimist "^1.2.0" + os-name "^2.0.1" + which "^1.2.14" + +"errno@>=0.1.1 <0.2.0-0", errno@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +errorhandler@~1.4.2: + version "1.4.3" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.4.3.tgz#b7b70ed8f359e9db88092f2d20c0f831420ad83f" + dependencies: + accepts "~1.3.0" + escape-html "~1.0.3" + +es-abstract@^1.5.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +escape-html@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.2.tgz#d77d32fa98e38c2f41ae85e9278e0e0e6ba1022c" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@^1.6.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.5.6" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +etag@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" + +event-target-shim@^1.0.5: + version "1.1.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-1.1.1.tgz#a86e5ee6bdaa16054475da797ccddf0c55698491" + +exec-sh@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" + dependencies: + merge "^1.1.3" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +expect@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-21.0.2.tgz#b34abf0635ec9d6aea1ce7edb4722afe86c4a38f" + dependencies: + ansi-styles "^3.2.0" + jest-diff "^21.0.2" + jest-get-type "^21.0.2" + jest-matcher-utils "^21.0.2" + jest-message-util "^21.0.2" + jest-regex-util "^21.0.2" + +express-session@~1.11.3: + version "1.11.3" + resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.11.3.tgz#5cc98f3f5ff84ed835f91cbf0aabd0c7107400af" + dependencies: + cookie "0.1.3" + cookie-signature "1.0.6" + crc "3.3.0" + debug "~2.2.0" + depd "~1.0.1" + on-headers "~1.0.0" + parseurl "~1.3.0" + uid-safe "~2.0.0" + utils-merge "1.0.0" + +extend@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +external-editor@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.31" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +fancy-log@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" + dependencies: + chalk "^1.1.1" + time-stamp "^1.0.0" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fb-watchman@^1.8.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383" + dependencies: + bser "1.0.2" + +fb-watchman@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" + dependencies: + bser "^2.0.0" + +fbjs-scripts@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/fbjs-scripts/-/fbjs-scripts-0.7.1.tgz#4f115e218e243e3addbf0eddaac1e3c62f703fac" + dependencies: + babel-core "^6.7.2" + babel-preset-fbjs "^1.0.0" + core-js "^1.0.0" + cross-spawn "^3.0.1" + gulp-util "^3.0.4" + object-assign "^4.0.1" + semver "^5.1.0" + through2 "^2.0.0" + +fbjs@0.8.12, fbjs@^0.8.9: + version "0.8.12" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fileset@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" + dependencies: + glob "^7.0.3" + minimatch "^3.0.3" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +finalhandler@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.4.0.tgz#965a52d9e8d05d2b857548541fb89b53a2497d9b" + dependencies: + debug "~2.2.0" + escape-html "1.0.2" + on-finished "~2.3.0" + unpipe "~1.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +for-each@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" + dependencies: + is-function "~1.0.0" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +fresh@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" + +fs-extra@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.36" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +gauge@~1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" + dependencies: + ansi "^0.3.0" + has-unicode "^2.0.0" + lodash.pad "^4.1.0" + lodash.padend "^4.1.0" + lodash.padstart "^4.1.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +glogg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" + dependencies: + sparkles "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + +gulp-util@^3.0.4: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + dependencies: + glogg "^1.0.0" + +handlebars@^4.0.3: + version "4.0.10" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + dependencies: + sparkles "^1.0.0" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1, has@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +html-encoding-sniffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" + dependencies: + whatwg-encoding "^1.0.1" + +http-errors@~1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" + dependencies: + inherits "~2.0.1" + statuses "1" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@0.4.11: + version "0.4.11" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.11.tgz#2ecb42fd294744922209a2e7c404dac8793d8ade" + +iconv-lite@0.4.13: + version "0.4.13" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" + +iconv-lite@^0.4.17, iconv-lite@~0.4.13: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +image-size@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.1.tgz#98122a562d59dcc097ef1b2c8191866eb8f5d663" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^3.0.6: + version "3.2.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.3.tgz#1c7b1731cf77b934ec47d22c9ac5aa8fe7fbe095" + dependencies: + ansi-escapes "^2.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-ci@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" + dependencies: + ci-info "^1.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-function@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul-api@^1.1.1: + version "1.1.14" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.14.tgz#25bc5701f7c680c0ffff913de46e3619a3a6e680" + dependencies: + async "^2.1.4" + fileset "^2.0.2" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-hook "^1.0.7" + istanbul-lib-instrument "^1.8.0" + istanbul-lib-report "^1.1.1" + istanbul-lib-source-maps "^1.2.1" + istanbul-reports "^1.1.2" + js-yaml "^3.7.0" + mkdirp "^0.5.1" + once "^1.4.0" + +istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" + +istanbul-lib-hook@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" + dependencies: + append-transform "^0.4.0" + +istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.2, istanbul-lib-instrument@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz#66f6c9421cc9ec4704f76f2db084ba9078a2b532" + dependencies: + babel-generator "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babylon "^6.18.0" + istanbul-lib-coverage "^1.1.1" + semver "^5.3.0" + +istanbul-lib-report@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" + dependencies: + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" + dependencies: + debug "^2.6.3" + istanbul-lib-coverage "^1.1.1" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.2.tgz#0fb2e3f6aa9922bd3ce45d05d8ab4d5e8e07bd4f" + dependencies: + handlebars "^4.0.3" + +jest-changed-files@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.0.2.tgz#0a74f35cf2d3b7c8ef9ab4fac0a75409f81ec1b0" + dependencies: + throat "^4.0.0" + +jest-cli@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-21.0.2.tgz#2e08af63d44fc21284ebf496cf71e381f3cc9786" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + is-ci "^1.0.10" + istanbul-api "^1.1.1" + istanbul-lib-coverage "^1.0.1" + istanbul-lib-instrument "^1.4.2" + istanbul-lib-source-maps "^1.1.0" + jest-changed-files "^21.0.2" + jest-config "^21.0.2" + jest-environment-jsdom "^21.0.2" + jest-haste-map "^21.0.2" + jest-message-util "^21.0.2" + jest-regex-util "^21.0.2" + jest-resolve-dependencies "^21.0.2" + jest-runner "^21.0.2" + jest-runtime "^21.0.2" + jest-snapshot "^21.0.2" + jest-util "^21.0.2" + micromatch "^2.3.11" + node-notifier "^5.0.2" + pify "^3.0.0" + slash "^1.0.0" + string-length "^2.0.0" + strip-ansi "^4.0.0" + which "^1.2.12" + worker-farm "^1.3.1" + yargs "^9.0.0" + +jest-config@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-21.0.2.tgz#ea42b94f3c22ae4e4aa11c69f5b45e34e342199d" + dependencies: + chalk "^2.0.1" + glob "^7.1.1" + jest-environment-jsdom "^21.0.2" + jest-environment-node "^21.0.2" + jest-get-type "^21.0.2" + jest-jasmine2 "^21.0.2" + jest-regex-util "^21.0.2" + jest-resolve "^21.0.2" + jest-util "^21.0.2" + jest-validate "^21.0.2" + pretty-format "^21.0.2" + +jest-diff@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.0.2.tgz#751014f36ad5d505f6affce5542fde0e444ee50a" + dependencies: + chalk "^2.0.1" + diff "^3.2.0" + jest-get-type "^21.0.2" + pretty-format "^21.0.2" + +jest-docblock@20.1.0-chi.1: + version "20.1.0-chi.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.1.0-chi.1.tgz#06981ab0e59498a2492333b0c5502a82e4603207" + +jest-docblock@20.1.0-delta.4, jest-docblock@^20.1.0-chi.1: + version "20.1.0-delta.4" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.1.0-delta.4.tgz#360d4f5fb702730c4136c4e71e5706188a694682" + +jest-docblock@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.0.2.tgz#66f69ddb440799fc32f91d0ac3d8d35e99e2032f" + +jest-environment-jsdom@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-21.0.2.tgz#6f6ab5bd71970d1900fbd47a46701c0a07fa3be5" + dependencies: + jest-mock "^21.0.2" + jest-util "^21.0.2" + jsdom "^9.12.0" + +jest-environment-node@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-21.0.2.tgz#4267ceb39551f8ecaed182ab882a93ef4d5de240" + dependencies: + jest-mock "^21.0.2" + jest-util "^21.0.2" + +jest-get-type@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.0.2.tgz#304e6b816dd33cd1f47aba0597bcad258a509fc6" + +jest-haste-map@20.1.0-chi.1: + version "20.1.0-chi.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.1.0-chi.1.tgz#db5f5f31362c76e242b40ea9a3ccfa364719cee3" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "^20.1.0-chi.1" + micromatch "^2.3.11" + sane "^2.0.0" + worker-farm "^1.3.1" + +jest-haste-map@20.1.0-delta.4: + version "20.1.0-delta.4" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.1.0-delta.4.tgz#12e32b297a6dd49705cacde938029fc158834006" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "20.1.0-delta.4" + micromatch "^2.3.11" + sane "^2.0.0" + worker-farm "^1.3.1" + +jest-haste-map@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-21.0.2.tgz#bd98bc6cd6f207eb029b2f5918da1a9347eb11b7" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "^21.0.2" + micromatch "^2.3.11" + sane "^2.0.0" + worker-farm "^1.3.1" + +jest-jasmine2@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-21.0.2.tgz#a368abb3a686def4d6e763509a265104943cd469" + dependencies: + chalk "^2.0.1" + expect "^21.0.2" + graceful-fs "^4.1.11" + jest-diff "^21.0.2" + jest-matcher-utils "^21.0.2" + jest-message-util "^21.0.2" + jest-snapshot "^21.0.2" + p-cancelable "^0.3.0" + +jest-matcher-utils@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.0.2.tgz#eb6736a45b698546d71f7e1ffbbd36587eeb27bc" + dependencies: + chalk "^2.0.1" + jest-get-type "^21.0.2" + pretty-format "^21.0.2" + +jest-message-util@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.0.2.tgz#81242e07d426ad54c15f3d7c55b072e9db7b39a9" + dependencies: + chalk "^2.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + +jest-mock@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-21.0.2.tgz#5e92902450e1ce78be3864cc4d50dbd5d1582fbd" + +jest-regex-util@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.0.2.tgz#06248c07b53ff444223ebe8e33a25bc051ac976f" + +jest-resolve-dependencies@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-21.0.2.tgz#c42cc371034023ac1a226a7a52f86233c8871938" + dependencies: + jest-regex-util "^21.0.2" + +jest-resolve@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-21.0.2.tgz#57b2c20cbeca2357eb5e638d5c28beca7f38c3f8" + dependencies: + browser-resolve "^1.11.2" + chalk "^2.0.1" + is-builtin-module "^1.0.0" + +jest-runner@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-21.0.2.tgz#1462d431d25f7744e8b5e03837bbf9e268dc8b15" + dependencies: + jest-config "^21.0.2" + jest-docblock "^21.0.2" + jest-haste-map "^21.0.2" + jest-jasmine2 "^21.0.2" + jest-message-util "^21.0.2" + jest-runtime "^21.0.2" + jest-util "^21.0.2" + pify "^3.0.0" + throat "^4.0.0" + worker-farm "^1.3.1" + +jest-runtime@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-21.0.2.tgz#ce26ba06bcd5501991bd994b1eacc0c7c7913895" + dependencies: + babel-core "^6.0.0" + babel-jest "^21.0.2" + babel-plugin-istanbul "^4.0.0" + chalk "^2.0.1" + convert-source-map "^1.4.0" + graceful-fs "^4.1.11" + jest-config "^21.0.2" + jest-haste-map "^21.0.2" + jest-regex-util "^21.0.2" + jest-resolve "^21.0.2" + jest-util "^21.0.2" + json-stable-stringify "^1.0.1" + micromatch "^2.3.11" + slash "^1.0.0" + strip-bom "3.0.0" + write-file-atomic "^2.1.0" + yargs "^9.0.0" + +jest-snapshot@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-21.0.2.tgz#5b8f4dd05c1759381db835451fba4bcd85a55611" + dependencies: + chalk "^2.0.1" + jest-diff "^21.0.2" + jest-matcher-utils "^21.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + pretty-format "^21.0.2" + +jest-util@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-21.0.2.tgz#3ee2380af25c414a39f07b23c84da6f2d5f1f76a" + dependencies: + callsites "^2.0.0" + chalk "^2.0.1" + graceful-fs "^4.1.11" + jest-message-util "^21.0.2" + jest-mock "^21.0.2" + jest-validate "^21.0.2" + mkdirp "^0.5.1" + +jest-validate@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.0.2.tgz#dd066b257bd102759c214747d73bed6bcfa4349d" + dependencies: + chalk "^2.0.1" + jest-get-type "^21.0.2" + leven "^2.1.0" + pretty-format "^21.0.2" + +jest@21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-21.0.2.tgz#a5c9bdc9d4322ae672fe8cb3eaf25c268c5f04b2" + dependencies: + jest-cli "^21.0.2" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.7.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jschardet@^1.4.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" + +jsdom@^9.12.0: + version "9.12.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" + dependencies: + abab "^1.0.3" + acorn "^4.0.4" + acorn-globals "^3.1.0" + array-equal "^1.0.0" + content-type-parser "^1.0.1" + cssom ">= 0.3.2 < 0.4.0" + cssstyle ">= 0.2.37 < 0.3.0" + escodegen "^1.6.1" + html-encoding-sniffer "^1.0.1" + nwmatcher ">= 1.3.9 < 2.0.0" + parse5 "^1.5.1" + request "^2.79.0" + sax "^1.2.1" + symbol-tree "^3.2.1" + tough-cookie "^2.3.2" + webidl-conversions "^4.0.0" + whatwg-encoding "^1.0.1" + whatwg-url "^4.3.0" + xml-name-validator "^2.0.1" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.4.0.tgz#054352e4c4c80c86c0923877d449de176a732c8d" + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + optionalDependencies: + graceful-fs "^4.1.9" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +left-pad@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a" + +leven@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + dependencies: + lodash._root "^3.0.0" + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.pad@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" + +lodash.padend@^4.1.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" + +lodash.padstart@^4.1.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash@^3.5.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +lodash@^4.14.0, lodash@^4.16.6, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.6.1: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +macos-release@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-1.1.0.tgz#831945e29365b470aa8724b0ab36c8f8959d10fb" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + dependencies: + tmpl "1.0.x" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +merge-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" + dependencies: + readable-stream "^2.0.1" + +merge@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" + +method-override@~2.3.5: + version "2.3.9" + resolved "https://registry.yarnpkg.com/method-override/-/method-override-2.3.9.tgz#bd151f2ce34cf01a76ca400ab95c012b102d8f71" + dependencies: + debug "2.6.8" + methods "~1.1.2" + parseurl "~1.3.1" + vary "~1.1.1" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + +metro-bundler@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/metro-bundler/-/metro-bundler-0.11.0.tgz#ba5d2ae34943da28a37c2098047ad265c16fddf4" + dependencies: + absolute-path "^0.0.0" + async "^2.4.0" + babel-core "^6.24.1" + babel-generator "^6.24.1" + babel-plugin-external-helpers "^6.18.0" + babel-preset-es2015-node "^6.1.1" + babel-preset-fbjs "^2.1.4" + babel-preset-react-native "^2.0.0" + babel-register "^6.24.1" + babylon "^6.17.0" + chalk "^1.1.1" + concat-stream "^1.6.0" + core-js "^2.2.2" + debug "^2.2.0" + denodeify "^1.2.1" + fbjs "0.8.12" + graceful-fs "^4.1.3" + image-size "^0.6.0" + jest-docblock "20.1.0-chi.1" + jest-haste-map "20.1.0-chi.1" + json-stable-stringify "^1.0.1" + json5 "^0.4.0" + left-pad "^1.1.3" + lodash "^4.16.6" + merge-stream "^1.0.1" + mime-types "2.1.11" + mkdirp "^0.5.1" + request "^2.79.0" + rimraf "^2.5.4" + source-map "^0.5.6" + temp "0.8.3" + throat "^4.1.0" + uglify-js "2.7.5" + write-file-atomic "^1.2.0" + xpipe "^1.0.5" + +micromatch@^2.1.5, micromatch@^2.3.11: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +"mime-db@>= 1.29.0 < 2", mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + +mime-db@~1.23.0: + version "1.23.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" + +mime-types@2.1.11: + version "2.1.11" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" + dependencies: + mime-db "~1.23.0" + +mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.6, mime-types@~2.1.7, mime-types@~2.1.9: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + +mime@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" + +mime@^1.3.4: + version "1.4.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.0.tgz#69e9e0db51d44f2a3b56e48b7817d7d137f1a343" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + dependencies: + dom-walk "^0.1.0" + +minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8, minimist@~0.0.1: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +"mkdirp@>=0.5 0", mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +morgan@~1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.6.1.tgz#5fd818398c6819cba28a7cd6664f292fe1c0bbf2" + dependencies: + basic-auth "~1.0.3" + debug "~2.2.0" + depd "~1.0.1" + on-finished "~2.3.0" + on-headers "~1.0.0" + +ms@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" + +ms@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +multiparty@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/multiparty/-/multiparty-3.3.2.tgz#35de6804dc19643e5249f3d3e3bdc6c8ce301d3f" + dependencies: + readable-stream "~1.1.9" + stream-counter "~0.2.0" + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + dependencies: + duplexer2 "0.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +negotiator@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" + +negotiator@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" + +node-fetch@^1.0.1, node-fetch@^1.3.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + +node-notifier@^5.0.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff" + dependencies: + growly "^1.3.0" + semver "^5.3.0" + shellwords "^0.1.0" + which "^1.2.12" + +node-pre-gyp@^0.6.36: + version "0.6.37" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.37.tgz#3c872b236b2e266e4140578fe1ee88f693323a05" + dependencies: + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "^2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tape "^4.6.3" + tar "^2.2.1" + tar-pack "^3.4.0" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" + dependencies: + ansi "~0.3.1" + are-we-there-yet "~1.1.2" + gauge "~1.2.5" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +"nwmatcher@>= 1.3.9 < 2.0.0": + version "1.4.1" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.1.tgz#7ae9b07b0ea804db7e25f05cb5fe4097d4e4949f" + +oauth-sign@~0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-inspect@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.3.0.tgz#5b1eb8e6742e2ee83342a637034d844928ba2f6d" + +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.0, on-headers@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" + +once@^1.3.0, once@^1.3.3, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +opn@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/opn/-/opn-3.0.3.tgz#b6d99e7399f78d65c3baaffef1fb288e9b85243a" + dependencies: + object-assign "^4.0.1" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +options@>=0.0.5: + version "0.0.6" + resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/os-name/-/os-name-2.0.1.tgz#b9a386361c17ae3a21736ef0599405c9a8c5dc5e" + dependencies: + macos-release "^1.0.0" + win-release "^1.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse5@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + +parseurl@~1.3.0, parseurl@~1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pause@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/pause/-/pause-0.1.0.tgz#ebc8a4a8619ff0b8a81ac1513c3434ff469fdb74" + +pegjs@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +plist@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/plist/-/plist-2.0.1.tgz#0a32ca9481b1c364e92e18dc55c876de9d01da8b" + dependencies: + base64-js "1.1.2" + xmlbuilder "8.2.2" + xmldom "0.1.x" + +plist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/plist/-/plist-1.2.0.tgz#084b5093ddc92506e259f874b8d9b1afb8c79593" + dependencies: + base64-js "0.0.8" + util-deprecate "1.0.2" + xmlbuilder "4.0.0" + xmldom "0.1.x" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +pretty-format@^21.0.2: + version "21.0.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.0.2.tgz#76adcebd836c41ccd2e6b626e70f63050d2a3534" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +pretty-format@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-4.3.1.tgz#530be5c42b3c05b36414a7a2a4337aa80acd0e8d" + +private@^0.1.6, private@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +prop-types@^15.5.6, prop-types@^15.5.8: + version "15.5.10" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +qs@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +random-bytes@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +range-parser@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" + +raw-body@~2.1.2: + version "2.1.7" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774" + dependencies: + bytes "2.4.0" + iconv-lite "0.4.13" + unpipe "1.0.0" + +rc@^1.1.7: + version "1.2.1" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-clone-referenced-element@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-clone-referenced-element/-/react-clone-referenced-element-1.0.1.tgz#2bba8c69404c5e4a944398600bcc4c941f860682" + +react-deep-force-update@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.1.tgz#bcd31478027b64b3339f108921ab520b4313dc2c" + +react-devtools-core@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-2.5.0.tgz#5ad179f88f22d205940721e38e4ecc3a2d35bf03" + dependencies: + shell-quote "^1.6.1" + ws "^2.0.3" + +react-mixin@^3.0.5: + version "3.1.1" + resolved "https://registry.yarnpkg.com/react-mixin/-/react-mixin-3.1.1.tgz#68749756bfe32699e561372a4aeecb926db72b7f" + dependencies: + object-assign "^4.0.1" + smart-mixin "^2.0.0" + +react-native-gesture-responder@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/react-native-gesture-responder/-/react-native-gesture-responder-0.1.1.tgz#802552d8eb7153c0d81a396e98f4b80b404b6798" + dependencies: + react-timer-mixin "^0.13.3" + +react-native-image-gallery@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-native-image-gallery/-/react-native-image-gallery-1.1.0.tgz#68427dc0b376db3fee9d1c908ee1ba5746dd6658" + dependencies: + "@ldn0x7dc/react-native-view-pager" "0.0.9" + react-native-gesture-responder "0.1.1" + react-native-transformable-image "0.0.18" + +react-native-scroller@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/react-native-scroller/-/react-native-scroller-0.0.6.tgz#dea8c89bd1ca2d2445fbb6b3a90960df6c1767ff" + +react-native-transformable-image@0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/react-native-transformable-image/-/react-native-transformable-image-0.0.18.tgz#00229f2410c443a3a6b5fa53714121ecd882396f" + dependencies: + react-native-view-transformer "0.0.28" + +react-native-view-transformer@0.0.28: + version "0.0.28" + resolved "https://registry.yarnpkg.com/react-native-view-transformer/-/react-native-view-transformer-0.0.28.tgz#01bb8c9e6cfff70a8d400e061c0cd27602662acb" + dependencies: + react-native-gesture-responder "0.1.1" + react-native-scroller "0.0.6" + +react-native@0.48.2: + version "0.48.2" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.48.2.tgz#9907d5a73640ade3920701e7096fc109ba9cc6e4" + dependencies: + absolute-path "^0.0.0" + art "^0.10.0" + async "^2.4.0" + babel-core "^6.24.1" + babel-generator "^6.24.1" + babel-plugin-external-helpers "^6.18.0" + babel-plugin-syntax-trailing-function-commas "^6.20.0" + babel-plugin-transform-async-to-generator "6.16.0" + babel-plugin-transform-class-properties "^6.18.0" + babel-plugin-transform-flow-strip-types "^6.21.0" + babel-plugin-transform-object-rest-spread "^6.20.2" + babel-polyfill "^6.20.0" + babel-preset-es2015-node "^6.1.1" + babel-preset-fbjs "^2.1.4" + babel-preset-react-native "^2.0.0" + babel-register "^6.24.1" + babel-runtime "^6.23.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + babylon "^6.17.0" + base64-js "^1.1.2" + bser "^1.0.2" + chalk "^1.1.1" + commander "^2.9.0" + concat-stream "^1.6.0" + connect "^2.8.3" + core-js "^2.2.2" + create-react-class "^15.5.2" + debug "^2.2.0" + denodeify "^1.2.1" + envinfo "^3.0.0" + errno ">=0.1.1 <0.2.0-0" + event-target-shim "^1.0.5" + fbjs "0.8.12" + fbjs-scripts "^0.7.0" + form-data "^2.1.1" + fs-extra "^1.0.0" + glob "^7.1.1" + graceful-fs "^4.1.3" + inquirer "^3.0.6" + jest-haste-map "20.1.0-delta.4" + json-stable-stringify "^1.0.1" + json5 "^0.4.0" + left-pad "^1.1.3" + lodash "^4.16.6" + merge-stream "^1.0.1" + metro-bundler "^0.11.0" + mime "^1.3.4" + mime-types "2.1.11" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-fetch "^1.3.3" + npmlog "^2.0.4" + opn "^3.0.2" + optimist "^0.6.1" + plist "^1.2.0" + pretty-format "^4.2.1" + promise "^7.1.1" + prop-types "^15.5.8" + react-clone-referenced-element "^1.0.1" + react-devtools-core "^2.5.0" + react-timer-mixin "^0.13.2" + react-transform-hmr "^1.0.4" + rebound "^0.0.13" + regenerator-runtime "^0.9.5" + request "^2.79.0" + rimraf "^2.5.4" + sane "~1.4.1" + semver "^5.0.3" + shell-quote "1.6.1" + source-map "^0.5.6" + stacktrace-parser "^0.1.3" + temp "0.8.3" + throat "^4.1.0" + whatwg-fetch "^1.0.0" + wordwrap "^1.0.0" + write-file-atomic "^1.2.0" + ws "^1.1.0" + xcode "^0.9.1" + xmldoc "^0.4.0" + xpipe "^1.0.5" + xtend ">=4.0.0 <4.1.0-0" + yargs "^6.4.0" + +react-proxy@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/react-proxy/-/react-proxy-1.1.8.tgz#9dbfd9d927528c3aa9f444e4558c37830ab8c26a" + dependencies: + lodash "^4.6.1" + react-deep-force-update "^1.0.0" + +react-test-renderer@16.0.0-alpha.12: + version "16.0.0-alpha.12" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.0.0-alpha.12.tgz#9e4cc5d8ce8bfca72778340de3e1454b9d6c0cc5" + dependencies: + fbjs "^0.8.9" + object-assign "^4.1.0" + +react-timer-mixin@^0.13.2, react-timer-mixin@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz#0da8b9f807ec07dc3e854d082c737c65605b3d22" + +react-transform-hmr@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz#e1a40bd0aaefc72e8dfd7a7cda09af85066397bb" + dependencies: + global "^4.3.0" + react-proxy "^1.1.7" + +react@16.0.0-alpha.12: + version "16.0.0-alpha.12" + resolved "https://registry.yarnpkg.com/react/-/react-16.0.0-alpha.12.tgz#8c59485281485df319b6f77682d8dd0621c08194" + dependencies: + create-react-class "^15.5.2" + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "^15.5.6" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readable-stream@~1.1.8, readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +rebound@^0.0.13: + version "0.0.13" + resolved "https://registry.yarnpkg.com/rebound/-/rebound-0.0.13.tgz#4a225254caf7da756797b19c5817bf7a7941fac1" + +regenerate@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + +regenerator-runtime@^0.9.5: + version "0.9.6" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +request@^2.79.0, request@^2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +resolve@1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" + dependencies: + path-parse "^1.0.5" + +response-time@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/response-time/-/response-time-2.3.2.tgz#ffa71bab952d62f7c1d49b7434355fbc68dffc5a" + dependencies: + depd "~1.1.0" + on-headers "~1.0.1" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + dependencies: + through "~2.3.4" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" + dependencies: + glob "^7.0.5" + +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + +rndm@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +safe-buffer@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" + +sane@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.0.0.tgz#99cb79f21f4a53a69d4d0cd957c2db04024b8eb2" + dependencies: + anymatch "^1.3.0" + exec-sh "^0.2.0" + fb-watchman "^2.0.0" + minimatch "^3.0.2" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.10.0" + optionalDependencies: + fsevents "^1.1.1" + +sane@~1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sane/-/sane-1.4.1.tgz#88f763d74040f5f0c256b6163db399bf110ac715" + dependencies: + exec-sh "^0.2.0" + fb-watchman "^1.8.0" + minimatch "^3.0.2" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.10.0" + +sax@^1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + +sax@~1.1.1: + version "1.1.6" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240" + +"semver@2 || 3 || 4 || 5", semver@5.x, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +send@0.13.2: + version "0.13.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz#765e7607c8055452bba6f0b052595350986036de" + dependencies: + debug "~2.2.0" + depd "~1.1.0" + destroy "~1.0.4" + escape-html "~1.0.3" + etag "~1.7.0" + fresh "0.3.0" + http-errors "~1.3.1" + mime "1.3.4" + ms "0.7.1" + on-finished "~2.3.0" + range-parser "~1.0.3" + statuses "~1.2.1" + +serve-favicon@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.3.2.tgz#dd419e268de012ab72b319d337f2105013f9381f" + dependencies: + etag "~1.7.0" + fresh "0.3.0" + ms "0.7.2" + parseurl "~1.3.1" + +serve-index@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.7.3.tgz#7a057fc6ee28dc63f64566e5fa57b111a86aecd2" + dependencies: + accepts "~1.2.13" + batch "0.5.3" + debug "~2.2.0" + escape-html "~1.0.3" + http-errors "~1.3.1" + mime-types "~2.1.9" + parseurl "~1.3.1" + +serve-static@~1.10.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz#ce5a6ecd3101fed5ec09827dac22a9c29bfb0535" + dependencies: + escape-html "~1.0.3" + parseurl "~1.3.1" + send "0.13.2" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +shell-quote@1.6.1, shell-quote@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +shellwords@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +simple-plist@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-0.2.1.tgz#71766db352326928cf3a807242ba762322636723" + dependencies: + bplist-creator "0.0.7" + bplist-parser "0.1.1" + plist "2.0.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + +smart-mixin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/smart-mixin/-/smart-mixin-2.0.0.tgz#a34a1055e32a75b30d2b4e3ca323dc99cb53f437" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +sparkles@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stacktrace-parser@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz#01397922e5f62ecf30845522c95c4fe1d25e7d4e" + +statuses@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" + +statuses@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz#dded45cc18256d51ed40aec142489d5c61026d28" + +stream-buffers@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" + +stream-counter@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-0.2.0.tgz#ded266556319c8b0e222812b9cf3b26fa7d947de" + dependencies: + readable-stream "~1.1.8" + +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" + dependencies: + astral-regex "^1.0.0" + strip-ansi "^4.0.0" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string.prototype.trim@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.0" + function-bind "^1.0.2" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@3.0.0, strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + dependencies: + is-utf8 "^0.2.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^3.1.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + dependencies: + has-flag "^1.0.0" + +supports-color@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + dependencies: + has-flag "^2.0.0" + +symbol-tree@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + +tape@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.8.0.tgz#f6a9fec41cc50a1de50fa33603ab580991f6068e" + dependencies: + deep-equal "~1.0.1" + defined "~1.0.0" + for-each "~0.3.2" + function-bind "~1.1.0" + glob "~7.1.2" + has "~1.0.1" + inherits "~2.0.3" + minimist "~1.2.0" + object-inspect "~1.3.0" + resolve "~1.4.0" + resumer "~0.0.0" + string.prototype.trim "~1.1.2" + through "~2.3.8" + +tar-pack@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +temp@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" + dependencies: + os-tmpdir "^1.0.0" + rimraf "~2.2.6" + +test-exclude@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" + dependencies: + arrify "^1.0.1" + micromatch "^2.3.11" + object-assign "^4.1.0" + read-pkg-up "^1.0.1" + require-main-filename "^1.0.1" + +throat@^4.0.0, throat@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + +through@^2.3.6, through@~2.3.4, through@~2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +time-stamp@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + +tmp@^0.0.31: + version "0.0.31" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" + dependencies: + os-tmpdir "~1.0.1" + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +tough-cookie@^2.3.2, tough-cookie@~2.3.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" + dependencies: + punycode "^1.4.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tsscmp@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-is@~1.6.6: + version "1.6.15" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" + dependencies: + media-typer "0.3.0" + mime-types "~2.1.15" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@^0.7.9: + version "0.7.14" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" + +uglify-js@2.7.5, uglify-js@^2.6: + version "2.7.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" + dependencies: + async "~0.2.6" + source-map "~0.5.1" + uglify-to-browserify "~1.0.0" + yargs "~3.10.0" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +uid-safe@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.4.tgz#3ad6f38368c6d4c8c75ec17623fb79aa1d071d81" + dependencies: + random-bytes "~1.0.0" + +uid-safe@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.0.0.tgz#a7f3c6ca64a1f6a5d04ec0ef3e4c3d5367317137" + dependencies: + base64-url "1.2.1" + +ultron@1.0.x: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" + +ultron@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + +util-deprecate@1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +utils-merge@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" + +uuid@3.0.1, uuid@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +vary@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10" + +vary@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vhost@~3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/vhost/-/vhost-3.0.2.tgz#2fb1decd4c466aa88b0f9341af33dc1aff2478d5" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + dependencies: + makeerror "1.0.x" + +watch@~0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + +webidl-conversions@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + +whatwg-encoding@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" + dependencies: + iconv-lite "0.4.13" + +whatwg-fetch@>=0.10.0, whatwg-fetch@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" + +whatwg-url@^4.3.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@^1.2.12, which@^1.2.14, which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + dependencies: + semver "^5.0.1" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@^1.0.0, wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +worker-farm@^1.3.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.0.tgz#adfdf0cd40581465ed0a1f648f9735722afd5c8d" + dependencies: + errno "^0.1.4" + xtend "^4.0.1" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write-file-atomic@^1.2.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + +write-file-atomic@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +ws@^1.1.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61" + dependencies: + options ">=0.0.5" + ultron "1.0.x" + +ws@^2.0.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80" + dependencies: + safe-buffer "~5.0.1" + ultron "~1.1.0" + +xcode@^0.9.1: + version "0.9.3" + resolved "https://registry.yarnpkg.com/xcode/-/xcode-0.9.3.tgz#910a89c16aee6cc0b42ca805a6d0b4cf87211cf3" + dependencies: + pegjs "^0.10.0" + simple-plist "^0.2.1" + uuid "3.0.1" + +xml-name-validator@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + +xmlbuilder@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.0.0.tgz#98b8f651ca30aa624036f127d11cc66dc7b907a3" + dependencies: + lodash "^3.5.0" + +xmlbuilder@8.2.2: + version "8.2.2" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" + +xmldoc@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-0.4.0.tgz#d257224be8393eaacbf837ef227fd8ec25b36888" + dependencies: + sax "~1.1.1" + +xmldom@0.1.x: + version "0.1.27" + resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" + +xpipe@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" + +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.1, xtend@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" + dependencies: + camelcase "^3.0.0" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^6.4.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^4.2.0" + +yargs@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.0.tgz#efe5b1ad3f94bdc20423411b90628eeec0b25f3c" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + read-pkg-up "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" From a2e0ddf9455b0f95641906c84cf428d522536116 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Tue, 12 Sep 2017 11:42:38 +0200 Subject: [PATCH 11/41] chore(package): add peerDeps & devDeps, rename library to src --- package-lock.json | 1866 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 17 +- yarn.lock | 1298 +++++++++++++++++++++++++++++++ 3 files changed, 3180 insertions(+), 1 deletion(-) create mode 100644 package-lock.json create mode 100644 yarn.lock diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f3ceb24 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1866 @@ +{ + "name": "react-native-image-gallery", + "version": "1.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "acorn": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", + "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.8.2" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-eslint": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", + "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.30" + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "dev": true, + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.1" + } + }, + "doctrine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", + "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es-abstract": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.8.2.tgz", + "integrity": "sha512-dvhwFL3yjQxNNsOWx6exMlaDrRHCRGMQlnx5lsXDCZ/J7G/frgIIl94zhZSp/galVAYp7VzPi1OrAHta89/yGQ==", + "dev": true, + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "dev": true, + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, + "es5-ext": { + "version": "0.10.30", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", + "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", + "dev": true, + "requires": { + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30", + "es6-iterator": "2.0.1", + "es6-symbol": "3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.8", + "doctrine": "2.0.0", + "escope": "3.6.0", + "espree": "3.5.0", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.5", + "imurmurhash": "0.1.4", + "inquirer": "0.12.0", + "is-my-json-valid": "2.16.1", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + } + }, + "eslint-config-standard": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", + "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", + "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", + "dev": true + }, + "eslint-config-standard-react": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-5.0.0.tgz", + "integrity": "sha1-ZMe4FAFyhSvoEKU9SO6HZJ/xeOM=", + "dev": true, + "requires": { + "eslint-config-standard-jsx": "4.0.2" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", + "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", + "dev": true, + "requires": { + "debug": "2.6.8", + "resolve": "1.4.0" + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", + "dev": true, + "requires": { + "debug": "2.6.8", + "pkg-dir": "1.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz", + "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", + "dev": true, + "requires": { + "builtin-modules": "1.1.1", + "contains-path": "0.1.0", + "debug": "2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "0.3.1", + "eslint-module-utils": "2.1.1", + "has": "1.0.1", + "lodash.cond": "4.5.2", + "minimatch": "3.0.4", + "read-pkg-up": "2.0.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + } + } + }, + "eslint-plugin-node": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.1.1.tgz", + "integrity": "sha512-3xdoEbPyyQNyGhhqttjgSO3cU/non8QDBJF8ttGaHM2h8CaY5zFIngtqW6ZbLEIvhpoFPDVwiQg61b8zanx5zQ==", + "dev": true, + "requires": { + "ignore": "3.3.5", + "minimatch": "3.0.4", + "resolve": "1.4.0", + "semver": "5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", + "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", + "dev": true + }, + "eslint-plugin-react": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.3.0.tgz", + "integrity": "sha512-7L6QEOxm7XhcDoe+U9Qt7GJjU6KeQOX9jCLGE8EPGF6FQbwZ9LgcBzsjXIZv9oYvNQlvQZmLjJs76xEeWsI4QA==", + "dev": true, + "requires": { + "doctrine": "2.0.0", + "has": "1.0.1", + "jsx-ast-utils": "2.0.1", + "prop-types": "15.5.10" + } + }, + "eslint-plugin-standard": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", + "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", + "dev": true + }, + "espree": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", + "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", + "dev": true, + "requires": { + "acorn": "5.1.2", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.30" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fbjs": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.15.tgz", + "integrity": "sha1-TwaV/fzBbDfAsH+s7Iy0xAkWhbk=", + "dev": true, + "requires": { + "core-js": "1.2.7", + "isomorphic-fetch": "2.2.1", + "loose-envify": "1.3.1", + "object-assign": "4.1.1", + "promise": "7.3.1", + "setimmediate": "1.0.5", + "ua-parser-js": "0.7.14" + }, + "dependencies": { + "core-js": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", + "dev": true + } + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.2.2", + "object-assign": "4.1.1" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "flat-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", + "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ignore": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", + "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + } + }, + "interpret": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", + "dev": true + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-my-json-valid": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", + "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "1.0.1" + } + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isomorphic-fetch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "dev": true, + "requires": { + "node-fetch": "1.7.3", + "whatwg-fetch": "2.0.3" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsx-ast-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", + "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "dev": true, + "requires": { + "array-includes": "3.0.3" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "lodash.cond": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", + "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "0.1.12", + "is-stream": "1.1.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "2.3.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "1.1.2" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, + "prop-types": { + "version": "15.5.10", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", + "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "dev": true, + "requires": { + "fbjs": "0.8.15", + "loose-envify": "1.3.1" + } + }, + "react-mixin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/react-mixin/-/react-mixin-3.1.1.tgz", + "integrity": "sha512-z9fZ0aCRDjlgxLdMeWkJ9TwhmVLhQ09r8RFpin/cEPA2T6jsb7YHNWcIe0Oii+hhJNyMymdy91CSya5mRkuCkg==", + "requires": { + "object-assign": "4.1.1", + "smart-mixin": "2.0.0" + } + }, + "react-native-gesture-responder": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/react-native-gesture-responder/-/react-native-gesture-responder-0.1.1.tgz", + "integrity": "sha1-gCVS2OtxU8DYGjlumPS4C0BLZ5g=", + "requires": { + "react-timer-mixin": "0.13.3" + } + }, + "react-native-scroller": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/react-native-scroller/-/react-native-scroller-0.0.6.tgz", + "integrity": "sha1-3qjIm9HKLSRF+7azqQlg32wXZ/8=" + }, + "react-native-view-transformer": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/react-native-view-transformer/-/react-native-view-transformer-0.0.28.tgz", + "integrity": "sha1-AbuMnmz/9wqNQA4GHAzSdgJmKss=", + "requires": { + "react-native-gesture-responder": "0.1.1", + "react-native-scroller": "0.0.6" + } + }, + "react-timer-mixin": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz", + "integrity": "sha1-Dai5+AfsB9w+hU0ILHN8ZWBbPSI=" + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "2.0.0", + "normalize-package-data": "2.4.0", + "path-type": "2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "read-pkg": "2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.0.3", + "rechoir": "0.6.2" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "smart-mixin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/smart-mixin/-/smart-mixin-2.0.0.tgz", + "integrity": "sha1-o0oQVeMqdbMNK048oyPcmctT9Dc=" + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.14", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz", + "integrity": "sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=", + "dev": true + }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "whatwg-fetch": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 6b23afa..6a3833f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "react-native-image-gallery", "version": "1.1.0", "description": "Pure JavaScript image gallery component for iOS and Android", - "main": "library/Gallery.js", + "main": "src/Gallery.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, @@ -22,5 +22,20 @@ "react-native-scroller": "0.0.6", "react-mixin": "^3.0.5", "react-timer-mixin": "^0.13.3" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + }, + "devDependencies": { + "babel-eslint": "^7.2.3", + "eslint": "^3.19.0", + "eslint-config-standard": "^10.2.1", + "eslint-config-standard-react": "^5.0.0", + "eslint-plugin-import": "^2.3.0", + "eslint-plugin-node": "^5.0.0", + "eslint-plugin-promise": "^3.5.0", + "eslint-plugin-react": "^7.0.1", + "eslint-plugin-standard": "^3.0.1" } } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..81f217c --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1298 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" + +ajv-keywords@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" + +ajv@^4.7.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ansi-escapes@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-eslint@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" + dependencies: + babel-code-frame "^6.22.0" + babel-traverse "^6.23.1" + babel-types "^6.23.0" + babylon "^6.17.0" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-traverse@^6.23.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.23.0, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +cli-cursor@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.5.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +core-js@^2.4.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +debug@^2.1.1, debug@^2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.7.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.30" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939" + dependencies: + es6-iterator "2" + es6-symbol "~3.1" + +es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-symbol "^3.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-config-standard-jsx@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz#009e53c4ddb1e9ee70b4650ffe63a7f39f8836e1" + +eslint-config-standard-react@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard-react/-/eslint-config-standard-react-5.0.0.tgz#64c7b8140172852be810a53d48ee87649ff178e3" + dependencies: + eslint-config-standard-jsx "^4.0.0" + +eslint-config-standard@^10.2.1: + version "10.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" + +eslint-import-resolver-node@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" + dependencies: + debug "^2.6.8" + resolve "^1.2.0" + +eslint-module-utils@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-import@^2.3.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.1.1" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + +eslint-plugin-node@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.1.1.tgz#a7ed956e780c22aef6afd1116005acd82f26eac6" + dependencies: + ignore "^3.3.3" + minimatch "^3.0.4" + resolve "^1.3.3" + semver "5.3.0" + +eslint-plugin-promise@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" + +eslint-plugin-react@^7.0.1: + version "7.3.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.3.0.tgz#ca9368da36f733fbdc05718ae4e91f778f38e344" + dependencies: + doctrine "^2.0.0" + has "^1.0.1" + jsx-ast-utils "^2.0.0" + prop-types "^15.5.10" + +eslint-plugin-standard@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" + +eslint@^3.19.0: + version "3.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" + dependencies: + babel-code-frame "^6.16.0" + chalk "^1.1.3" + concat-stream "^1.5.2" + debug "^2.1.1" + doctrine "^2.0.0" + escope "^3.6.0" + espree "^3.4.0" + esquery "^1.0.0" + estraverse "^4.2.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + glob "^7.0.3" + globals "^9.14.0" + ignore "^3.2.0" + imurmurhash "^0.1.4" + inquirer "^0.12.0" + is-my-json-valid "^2.10.0" + is-resolvable "^1.0.0" + js-yaml "^3.5.1" + json-stable-stringify "^1.0.0" + levn "^0.3.0" + lodash "^4.0.0" + mkdirp "^0.5.0" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.1" + pluralize "^1.2.1" + progress "^1.1.8" + require-uncached "^1.0.2" + shelljs "^0.7.5" + strip-bom "^3.0.0" + strip-json-comments "~2.0.1" + table "^3.7.8" + text-table "~0.2.0" + user-home "^2.0.0" + +espree@^3.4.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d" + dependencies: + acorn "^5.1.1" + acorn-jsx "^3.0.0" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + dependencies: + estraverse "^4.1.0" + object-assign "^4.0.1" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fbjs@^0.8.9: + version "0.8.15" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.15.tgz#4f0695fdfcc16c37c0b07facec8cb4c4091685b9" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +generate-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" + +generate-object-property@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" + dependencies: + is-property "^1.0.0" + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.14.0, globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +iconv-lite@~0.4.13: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +ignore@^3.2.0, ignore@^3.3.3: + version "3.3.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inquirer@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" + dependencies: + ansi-escapes "^1.1.0" + ansi-regex "^2.0.0" + chalk "^1.0.0" + cli-cursor "^1.0.1" + cli-width "^2.0.0" + figures "^1.3.5" + lodash "^4.3.0" + readline2 "^1.0.1" + run-async "^0.1.0" + rx-lite "^3.1.2" + string-width "^1.0.1" + strip-ansi "^3.0.0" + through "^2.3.6" + +interpret@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" + +invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-my-json-valid@^2.10.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" + dependencies: + generate-function "^2.0.0" + generate-object-property "^1.1.0" + jsonpointer "^4.0.0" + xtend "^4.0.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-property@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.5.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsonpointer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" + +jsx-ast-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + dependencies: + array-includes "^3.0.3" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.cond@^4.3.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" + +lodash@^4.0.0, lodash@^4.17.4, lodash@^4.3.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +loose-envify@^1.0.0, loose-envify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mute-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pluralize@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +progress@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +prop-types@^15.5.10: + version "15.5.10" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + +react-mixin@^3.0.5: + version "3.1.1" + resolved "https://registry.yarnpkg.com/react-mixin/-/react-mixin-3.1.1.tgz#68749756bfe32699e561372a4aeecb926db72b7f" + dependencies: + object-assign "^4.0.1" + smart-mixin "^2.0.0" + +react-native-gesture-responder@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/react-native-gesture-responder/-/react-native-gesture-responder-0.1.1.tgz#802552d8eb7153c0d81a396e98f4b80b404b6798" + dependencies: + react-timer-mixin "^0.13.3" + +react-native-scroller@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/react-native-scroller/-/react-native-scroller-0.0.6.tgz#dea8c89bd1ca2d2445fbb6b3a90960df6c1767ff" + +react-native-view-transformer@0.0.28: + version "0.0.28" + resolved "https://registry.yarnpkg.com/react-native-view-transformer/-/react-native-view-transformer-0.0.28.tgz#01bb8c9e6cfff70a8d400e061c0cd27602662acb" + dependencies: + react-native-gesture-responder "0.1.1" + react-native-scroller "0.0.6" + +react-timer-mixin@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz#0da8b9f807ec07dc3e854d082c737c65605b3d22" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^2.2.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readline2@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + mute-stream "0.0.5" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + +require-uncached@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve@^1.1.6, resolve@^1.2.0, resolve@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + +rimraf@^2.2.8: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +run-async@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" + dependencies: + once "^1.3.0" + +rx-lite@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +"semver@2 || 3 || 4 || 5", semver@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +shelljs@^0.7.5: + version "0.7.8" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + +smart-mixin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/smart-mixin/-/smart-mixin-2.0.0.tgz#a34a1055e32a75b30d2b4e3ca323dc99cb53f437" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +table@^3.7.8: + version "3.8.3" + resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" + dependencies: + ajv "^4.7.0" + ajv-keywords "^1.0.0" + chalk "^1.1.1" + lodash "^4.0.0" + slice-ansi "0.0.4" + string-width "^2.0.0" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@^0.7.9: + version "0.7.14" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" + +user-home@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" + dependencies: + os-homedir "^1.0.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +whatwg-fetch@>=0.10.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +xtend@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From 5a20fc5478a73008be2f01bc8b721878df4fb0c2 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Tue, 12 Sep 2017 11:46:21 +0200 Subject: [PATCH 12/41] WIP (module): refactor the whole thing, add some new props, improve perfs... MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is still a quite early stage, not everything has been tested properly * Improve perfs by removing A LOT of useless function binding * Clean up the code where some fallbacks were useless * Add missing propTypes validation * Add renderError prop (to be documented) * This might fix a bug where the gallery crashed if an item was removed * The gallery won’t crash if RN cannot fetch the dimensions of a remote image * … --- library/TransformableImage.js | 196 --------------------- library/ViewPager.js | 315 ---------------------------------- {library => src}/Gallery.js | 31 ++-- src/TransformableImage.js | 199 +++++++++++++++++++++ src/ViewPager.js | 285 ++++++++++++++++++++++++++++++ 5 files changed, 497 insertions(+), 529 deletions(-) delete mode 100644 library/TransformableImage.js delete mode 100644 library/ViewPager.js rename {library => src}/Gallery.js (93%) create mode 100644 src/TransformableImage.js create mode 100644 src/ViewPager.js diff --git a/library/TransformableImage.js b/library/TransformableImage.js deleted file mode 100644 index 077d20f..0000000 --- a/library/TransformableImage.js +++ /dev/null @@ -1,196 +0,0 @@ -'use strict'; - -import React, { PureComponent, PropTypes } from 'react'; -import { Image } from 'react-native'; - -import ViewTransformer from 'react-native-view-transformer'; - -const DEV = false; - -export default class TransformableImage extends PureComponent { - - static enableDebug() { - DEV = true; - } - - static propTypes = { - source: PropTypes.shape({ - uri: PropTypes.string.isRequired, - dimensions: PropTypes.shape({ - width: PropTypes.number, - height: PropTypes.number, - }), - }), - enableTransform: PropTypes.bool, - enableScale: PropTypes.bool, - enableTranslate: PropTypes.bool, - onTransformGestureReleased: PropTypes.func, - onViewTransformed: PropTypes.func, - imageComponent: PropTypes.func, - resizeMode: PropTypes.string, - }; - - static defaultProps = { - enableTransform: true, - enableScale: true, - enableTranslate: true, - imageComponent: undefined, - resizeMode: 'contain', - }; - - constructor(props) { - super(props); - - this.state = { - viewWidth: 0, - viewHeight: 0, - - imageLoaded: false, - imageDimensions: props.source.dimensions, - keyAcumulator: 1 - }; - } - - componentWillMount() { - if (!this.state.imageDimensions) { - this.getImageSize(this.props.source); - } - } - - componentWillReceiveProps(nextProps) { - DEV && console.log('TransformableImage: componentWillReceiveProps'); - if (!sameSource(this.props.source, nextProps.source)) { - DEV && console.log('TransformableImage: componentWillReceiveProps - different source'); - //image source changed, clear last image's imageDimensions info if any - this.setState({imageDimensions: props.source.dimensions, keyAcumulator: this.state.keyAcumulator + 1}) - if (!props.source.dimensions) { // if we don't have image dimensions provided in source - this.getImageSize(nextProps.source); - } - } - } - - render() { - let maxScale = 1; - let contentAspectRatio = undefined; - let width, height; //imageDimensions - - if (this.state.imageDimensions) { - width = this.state.imageDimensions.width; - height = this.state.imageDimensions.height; - } - - if (width && height) { - DEV && console.log(`TransformableImage: (${width}, ${height})`) - contentAspectRatio = width / height; - if (this.state.viewWidth && this.state.viewHeight) { - maxScale = Math.max(width / this.state.viewWidth, height / this.state.viewHeight); - maxScale = Math.max(1, maxScale); - } - } - - const imageProps = { - ...this.props, - style: [this.props.style, {backgroundColor: 'transparent'}], - resizeMode: this.props.resizeMode, - onLoadStart: this.onLoadStart.bind(this), - onLoad: this.onLoad.bind(this), - capInsets: {left: 0.1, top: 0.1, right: 0.1, bottom: 0.1}, - } - - const image = this.props.imageComponent ? - this.props.imageComponent(imageProps) : - - - return ( - - { image } - - ); - } - - onLoadStart(e) { - this.props.onLoadStart && this.props.onLoadStart(e); - if (this.state.imageLoaded) { - this.setState({ - imageLoaded: false - }); - } - } - - onLoad(e) { - this.props.onLoad && this.props.onLoad(e); - if (!this.state.imageLoaded) { - this.setState({ - imageLoaded: true - }); - } - } - - onLayout(e) { - let {width, height} = e.nativeEvent.layout; - if (this.state.viewWidth !== width || this.state.viewHeight !== height) { - this.setState({ - viewWidth: width, - viewHeight: height - }); - } - } - - getImageSize(source) { - if(!source) return; - - DEV && console.log('getImageSize...' + JSON.stringify(source)); - - if (typeof Image.getSize === 'function') { - if (source && source.uri) { - Image.getSize( - source.uri, - (width, height) => { - DEV && console.log('getImageSize...width=' + width + ', height=' + height); - if (width && height) { - if(this.state.imageDimensions && this.state.imageDimensions.width === width && this.state.imageDimensions.height === height) { - //no need to update state - } else { - this.setState({imageDimensions: {width, height}}); - } - } - }, - (error) => { - console.error('getImageSize...error=' + JSON.stringify(error) + ', source=' + JSON.stringify(source)); - }) - } else { - console.warn('getImageSize...please provide imageDimensions prop for local images'); - } - } else { - console.warn('getImageSize...Image.getSize function not available before react-native v0.28'); - } - } - - getViewTransformerInstance() { - return this.refs['viewTransformer']; - } -} - -function sameSource(source, nextSource) { - if (source === nextSource) { - return true; - } - if (source && nextSource) { - if (source.uri && nextSource.uri) { - return source.uri === nextSource.uri; - } - } - return false; -} diff --git a/library/ViewPager.js b/library/ViewPager.js deleted file mode 100644 index f5de167..0000000 --- a/library/ViewPager.js +++ /dev/null @@ -1,315 +0,0 @@ -import React, { PropTypes, PureComponent } from 'react'; -import { - View, - ListView, - Platform -} from 'react-native'; - -import Scroller from 'react-native-scroller'; -import {createResponder} from 'react-native-gesture-responder'; -import TimerMixin from 'react-timer-mixin'; -import reactMixin from 'react-mixin'; - -const MIN_FLING_VELOCITY = 0.5; - -const DEV = false; - -export default class ViewPager extends PureComponent { - - static propTypes = { - ...View.propTypes, - initialPage: PropTypes.number, - pageMargin: PropTypes.number, - scrollEnabled: PropTypes.bool, - renderPage: PropTypes.func, - pageDataArray: PropTypes.array, - initialListSize: PropTypes.number, - removeClippedSubviews: PropTypes.bool, - - onPageSelected: PropTypes.func, - onPageScrollStateChanged: PropTypes.func, - onPageScroll: PropTypes.func, - }; - - static defaultProps = { - initialPage: 0, - pageMargin: 0, - scrollEnabled: true, - pageDataArray: [], - initialListSize: 10, - removeClippedSubviews: true, - }; - - pageCount = 0; //Initialize to avoid undefined error - currentPage = undefined; //Do not initialize to make onPageSelected(0) be dispatched - layoutChanged = false; - initialPageSettled = false; - activeGesture = false; - gestureResponder = undefined; - - constructor(props) { - super(props); - - const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); - this.state = { - width: 0, - height: 0, - dataSource: ds.cloneWithRows([]) - } - - this.scroller = new Scroller(true, (dx, dy, scroller) => { - if (dx === 0 && dy === 0 && scroller.isFinished()) { - if (!this.activeGesture) { - this.onPageScrollStateChanged('idle'); - } - } else { - const curX = this.scroller.getCurrX(); - this.refs['innerListView'] && this.refs['innerListView'].scrollTo({x: curX, animated: false}); - - let position = Math.floor(curX / (this.state.width + this.props.pageMargin)); - position = this.validPage(position); - let offset = (curX - this.getScrollOffsetOfPage(position)) / (this.state.width + this.props.pageMargin); - let fraction = (curX - this.getScrollOffsetOfPage(position) - this.props.pageMargin) / this.state.width; - if (fraction < 0) { - fraction = 0; - } - this.props.onPageScroll && this.props.onPageScroll({ - position, offset, fraction - }); - } - }); - } - - componentWillMount() { - this.gestureResponder = createResponder({ - onStartShouldSetResponder: (evt, gestureState) => true, - onResponderGrant: this.onResponderGrant.bind(this), - onResponderMove: this.onResponderMove.bind(this), - onResponderRelease: this.onResponderRelease.bind(this), - onResponderTerminate: this.onResponderRelease.bind(this) - }); - } - - onResponderGrant(evt, gestureState) { - this.scroller.forceFinished(true); - this.activeGesture = true; - this.onPageScrollStateChanged('dragging'); - } - - onResponderMove(evt, gestureState) { - let dx = gestureState.moveX - gestureState.previousMoveX; - this.scrollByOffset(dx); - } - - onResponderRelease(evt, gestureState, disableSettle) { - this.activeGesture = false; - if (!disableSettle) { - this.settlePage(gestureState.vx); - } - } - - render() { - let dataSource = this.state.dataSource; - if (this.state.width && this.state.height) { - let list = this.props.pageDataArray; - if (!list) { - list = []; - } - dataSource = dataSource.cloneWithRows(list); - this.pageCount = list.length; - } - - let gestureResponder = this.gestureResponder; - if (!this.props.scrollEnabled || this.pageCount <= 0) { - gestureResponder = {}; - } - - return ( - - - - ); - } - - renderRow(rowData, sectionID, rowID, highlightRow) { - DEV && console.log(`ViewPager:renderRow ${rowID}`); - const {width, height} = this.state; - let page = this.props.renderPage(rowData, rowID); - - const layout = { - width: width, - height: height, - position: 'relative', - } - const style = page.props.style ? - ( - [page.props.style, layout] - ) - : layout; - - let newProps = { - ...page.props, - ref: page.ref, - style - }; - const element = React.createElement(page.type, newProps); - - if (this.props.pageMargin > 0 && rowID > 0) { - //Do not using margin style to implement pageMargin. The ListView seems to calculate a wrong width for children views with margin. - return ( - - {element} - - ); - } else { - return element; - } - } - - onLayout(e) { - let {width, height} = e.nativeEvent.layout; - let sizeChanged = this.state.width !== width || this.state.height !== height; - if (width && height && sizeChanged) { - //if layout changed, create a new DataSource instance to trigger renderRow - this.layoutChanged = true; - this.setState({ - width, height, - dataSource: (new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})).cloneWithRows([]) - }); - } - } - - componentDidUpdate() { - if (!this.initialPageSettled) { - this.initialPageSettled = true; - if (Platform.OS === 'ios') { - this.scrollToPage(this.props.initialPage, true); - } else { - //A trick to solve bugs on Android. Delay a little - setTimeout(this.scrollToPage.bind(this, this.props.initialPage, true), 0); - } - } else if (this.layoutChanged) { - this.layoutChanged = false; - if (typeof this.currentPage === 'number') { - if (Platform.OS === 'ios') { - this.scrollToPage(this.currentPage, true); - } else { - //A trick to solve bugs on Android. Delay a little - setTimeout(this.scrollToPage.bind(this, this.currentPage, true), 0); - } - } - } - } - - settlePage(vx) { - if (vx < -MIN_FLING_VELOCITY) { - if (this.currentPage < this.pageCount - 1) { - this.flingToPage(this.currentPage + 1, vx); - } else { - this.flingToPage(this.pageCount - 1, vx); - } - } else if (vx > MIN_FLING_VELOCITY) { - if (this.currentPage > 0) { - this.flingToPage(this.currentPage - 1, vx); - } else { - this.flingToPage(0, vx); - } - } else { - let page = this.currentPage; - let progress = (this.scroller.getCurrX() - this.getScrollOffsetOfPage(this.currentPage)) / this.state.width; - if (progress > 1 / 3) { - page += 1; - } else if (progress < -1 / 3) { - page -= 1; - } - page = Math.min(this.pageCount - 1, page); - page = Math.max(0, page); - this.scrollToPage(page); - } - } - - getScrollOffsetOfPage(page) { - return page * (this.state.width + this.props.pageMargin); - } - - flingToPage(page, velocityX) { - this.onPageScrollStateChanged('settling'); - - page = this.validPage(page); - this.onPageChanged(page); - - velocityX *= -1000; //per sec - const finalX = this.getScrollOffsetOfPage(page); - this.scroller.fling(this.scroller.getCurrX(), 0, velocityX, 0, finalX, finalX, 0, 0); - - } - - scrollToPage(page, immediate) { - this.onPageScrollStateChanged('settling'); - - page = this.validPage(page); - this.onPageChanged(page); - - const finalX = this.getScrollOffsetOfPage(page); - if (immediate) { - this.scroller.startScroll(this.scroller.getCurrX(), 0, finalX - this.scroller.getCurrX(), 0, 0); - } else { - this.scroller.startScroll(this.scroller.getCurrX(), 0, finalX - this.scroller.getCurrX(), 0, 400); - } - - } - - onPageChanged(page) { - if (this.currentPage !== page) { - this.currentPage = page; - this.props.onPageSelected && this.props.onPageSelected(page); - } - } - - onPageScrollStateChanged(state) { - this.props.onPageScrollStateChanged && this.props.onPageScrollStateChanged(state); - } - - scrollByOffset(dx) { - this.scroller.startScroll(this.scroller.getCurrX(), 0, -dx, 0, 0); - } - - validPage(page) { - page = Math.min(this.pageCount - 1, page); - page = Math.max(0, page); - return page; - } - - /** - * A helper function to scroll to a specific page in the ViewPager. - * @param page - * @param immediate If true, the transition between pages will not be animated. - */ - setPage(page, immediate) { - this.scrollToPage(page, immediate); - } - - getScrollOffsetFromCurrentPage() { - return this.scroller.getCurrX() - this.getScrollOffsetOfPage(this.currentPage); - } -} - -/** - * Keep in mind that if you use ES6 classes for your React components there is no built-in API for mixins. To use TimerMixin with ES6 classes, we recommend react-mixin. - * Refer to 'https://facebook.github.io/react-native/docs/timers.html#content' - */ -reactMixin(ViewPager.prototype, TimerMixin); diff --git a/library/Gallery.js b/src/Gallery.js similarity index 93% rename from library/Gallery.js rename to src/Gallery.js index 9b13520..73c4eba 100644 --- a/library/Gallery.js +++ b/src/Gallery.js @@ -1,24 +1,13 @@ import React, { PureComponent, PropTypes } from 'react'; -import { View, Image } from 'react-native'; +import { View } from 'react-native'; import { createResponder } from 'react-native-gesture-responder'; import TransformableImage from './TransformableImage'; import ViewPager from './ViewPager'; -const DEV = false; - export default class Gallery extends PureComponent { - static propTypes = { ...View.propTypes, - images: PropTypes.arrayOf(PropTypes.shape({ - source: PropTypes.shape({ - uri: PropTypes.string.isRequired, - dimensions: PropTypes.shape({ - width: PropTypes.number, - height: PropTypes.number, - }), - }), - })), + images: PropTypes.arrayOf(PropTypes.object), initialPage: PropTypes.number, pageMargin: PropTypes.number, onPageSelected: PropTypes.func, @@ -30,12 +19,13 @@ export default class Gallery extends PureComponent { initialListSize: PropTypes.number, removeClippedSubviews: PropTypes.bool, imageComponent: PropTypes.func, + renderError: PropTypes.func }; static defaultProps = { - initialListSize: 10, - removeClippedSubviews: true, - imageComponent: undefined, + initialListSize: 10, + removeClippedSubviews: true, + imageComponent: undefined }; imageRefs = new Map(); @@ -52,6 +42,10 @@ export default class Gallery extends PureComponent { this.onPageSelected = this.onPageSelected.bind(this); this.onPageScrollStateChanged = this.onPageScrollStateChanged.bind(this); this.onPageScroll = this.onPageScroll.bind(this); + this.getViewPagerInstance = this.getViewPagerInstance.bind(this); + this.getCurrentImageTransformer = this.getCurrentImageTransformer.bind(this); + this.getImageTransformer = this.getImageTransformer.bind(this); + this.getViewPagerInstance = this.getViewPagerInstance.bind(this); } componentWillMount () { @@ -225,7 +219,7 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { - const { onViewTransformed, onTransformGestureReleased } = this.props; + const { onViewTransformed, onTransformGestureReleased, renderError } = this.props; return ( { @@ -236,7 +230,9 @@ export default class Gallery extends PureComponent { })} ref={((ref) => { this.imageRefs.set(pageId, ref); })} key={'innerImage#' + pageId} + renderError={renderError} source={pageData.source} + dimensions={pageData.dimensions} /> ); } @@ -254,7 +250,6 @@ export default class Gallery extends PureComponent { } render () { - DEV && console.log('Gallery render'); let gestureResponder = this.gestureResponder; let images = this.props.images; diff --git a/src/TransformableImage.js b/src/TransformableImage.js new file mode 100644 index 0000000..41cdf76 --- /dev/null +++ b/src/TransformableImage.js @@ -0,0 +1,199 @@ +import React, { PureComponent, PropTypes } from 'react'; +import { View, Text, Image, ViewPropTypes } from 'react-native'; +import ViewTransformer from 'react-native-view-transformer'; + +export default class TransformableImage extends PureComponent { + static propTypes = { + source: PropTypes.oneOfType([ + PropTypes.shape({ uri: PropTypes.string.isRequired }), + PropTypes.number + ]).isRequired, + style: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style, + onLoad: PropTypes.func, + onLoadStart: PropTypes.func, + dimensions: PropTypes.shape({ + width: PropTypes.number, + height: PropTypes.number + }), + enableTransform: PropTypes.bool, + enableScale: PropTypes.bool, + enableTranslate: PropTypes.bool, + onTransformGestureReleased: PropTypes.func, + onViewTransformed: PropTypes.func, + imageComponent: PropTypes.func, + resizeMode: PropTypes.string, + renderError: PropTypes.func + }; + + static defaultProps = { + enableTransform: true, + enableScale: true, + enableTranslate: true, + imageComponent: undefined, + resizeMode: 'contain' + }; + + constructor (props) { + super(props); + + this.onLayout = this.onLayout.bind(this); + this.onLoad = this.onLoad.bind(this); + this.onLoadStart = this.onLoadStart.bind(this); + this.getViewTransformerInstance = this.getViewTransformerInstance.bind(this); + this.renderError = this.renderError.bind(this); + + this.state = { + viewWidth: 0, + viewHeight: 0, + + imageLoaded: false, + imageDimensions: props.source.dimensions, + keyAcumulator: 1 + }; + } + + componentWillMount () { + if (!this.state.imageDimensions) { + this.getImageSize(this.props.source); + } + } + + componentWillReceiveProps (nextProps) { + __DEV__ && console.log('TransformableImage: componentWillReceiveProps'); + if (!sameSource(this.props.source, nextProps.source)) { + __DEV__ && console.log('TransformableImage: componentWillReceiveProps - different source'); + // image source changed, clear last image's imageDimensions info if any + this.setState({imageDimensions: nextProps.source.dimensions, keyAcumulator: this.state.keyAcumulator + 1}); + if (!nextProps.source.dimensions) { // if we don't have image dimensions provided in source + this.getImageSize(nextProps.source); + } + } + } + + onLoadStart (e) { + this.props.onLoadStart && this.props.onLoadStart(e); + if (this.state.imageLoaded) { + this.setState({ imageLoaded: false }); + } + } + + onLoad (e) { + this.props.onLoad && this.props.onLoad(e); + if (!this.state.imageLoaded) { + this.setState({ imageLoaded: true }); + } + } + + onLayout (e) { + let {width, height} = e.nativeEvent.layout; + if (this.state.viewWidth !== width || this.state.viewHeight !== height) { + this.setState({ viewWidth: width, viewHeight: height }); + } + } + + getImageSize (source) { + if (!source) return; + + if (source && source.uri) { + Image.getSize( + source.uri, + (width, height) => { + __DEV__ && console.log(`Image size for ${source.uri}`, { width, height }); + if (width && height) { + if (this.state.imageDimensions && this.state.imageDimensions.width === width && this.state.imageDimensions.height === height) { + // no need to update state + } else { + this.setState({ imageDimensions: { width, height } }); + } + } + }, + (error) => { + this.setState({ error: true }); + console.warn(`getImageSize errored for ${source.url}`, JSON.stringify(error)); + } + ); + } else { + if (this.props.dimensions) { + this.setState({ imageDimensions: this.props.dimensions }); + } else { + console.warn('react-native-image-gallery', 'Please provide dimensions of your local images'); + } + } + } + + getViewTransformerInstance () { + return this.refs['viewTransformer']; + } + + renderError () { + return (this.props.renderError && this.props.renderError()) || ( + + This image cannot be displayed... + + ); + } + + render () { + const { imageDimensions, viewWidth, viewHeight, error, keyAccumulator, imageLoaded } = this.state; + const { style, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed } = this.props; + + let maxScale = 1; + let contentAspectRatio; + let width, height; // imageDimensions + + if (imageDimensions) { + width = imageDimensions.width; + height = imageDimensions.height; + } + + if (width && height) { + __DEV__ && console.log(`TransformableImage: (${width}, ${height})`); + contentAspectRatio = width / height; + if (viewWidth && viewHeight) { + maxScale = Math.max(width / viewWidth, height / viewHeight); + maxScale = Math.max(1, maxScale); + } + } + + const imageProps = { + ...this.props, + style: [style, { backgroundColor: 'transparent' }], + resizeMode: resizeMode, + onLoadStart: this.onLoadStart, + onLoad: this.onLoad, + capInsets: { left: 0.1, top: 0.1, right: 0.1, bottom: 0.1 } + }; + + const image = imageComponent ? imageComponent(imageProps) : ; + + return ( + + { error ? this.renderError() : image } + + ); + } +} + +function sameSource (source, nextSource) { + if (source === nextSource) { + return true; + } + if (source && nextSource) { + if (source.uri && nextSource.uri) { + return source.uri === nextSource.uri; + } + } + return false; +} diff --git a/src/ViewPager.js b/src/ViewPager.js new file mode 100644 index 0000000..e3bd792 --- /dev/null +++ b/src/ViewPager.js @@ -0,0 +1,285 @@ +import React, { PropTypes, PureComponent } from 'react'; +import { View, ListView, Platform } from 'react-native'; + +import Scroller from 'react-native-scroller'; +import { createResponder } from 'react-native-gesture-responder'; +import TimerMixin from 'react-timer-mixin'; +import reactMixin from 'react-mixin'; + +const MIN_FLING_VELOCITY = 0.5; + +export default class ViewPager extends PureComponent { + static propTypes = { + ...View.propTypes, + initialPage: PropTypes.number, + pageMargin: PropTypes.number, + scrollEnabled: PropTypes.bool, + renderPage: PropTypes.func, + pageDataArray: PropTypes.array, + initialListSize: PropTypes.number, + removeClippedSubviews: PropTypes.bool, + + onPageSelected: PropTypes.func, + onPageScrollStateChanged: PropTypes.func, + onPageScroll: PropTypes.func + }; + + static defaultProps = { + initialPage: 0, + pageMargin: 0, + scrollEnabled: true, + pageDataArray: [], + initialListSize: 10, + removeClippedSubviews: true + }; + + pageCount = 0; // Initialize to avoid undefined error + currentPage = undefined; // Do not initialize to make onPageSelected(0) be dispatched + layoutChanged = false; + initialPageSettled = false; + activeGesture = false; + gestureResponder = undefined; + + constructor (props) { + super(props); + + this.onLayout = this.onLayout.bind(this); + this.renderRow = this.renderRow.bind(this); + + const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); + this.state = { + width: 0, + height: 0, + dataSource: ds.cloneWithRows([]) + }; + + this.scroller = new Scroller(true, (dx, dy, scroller) => { + if (dx === 0 && dy === 0 && scroller.isFinished()) { + if (!this.activeGesture) { + this.onPageScrollStateChanged('idle'); + } + } else { + const curX = this.scroller.getCurrX(); + this.refs['innerListView'] && this.refs['innerListView'].scrollTo({x: curX, animated: false}); + + let position = Math.floor(curX / (this.state.width + this.props.pageMargin)); + position = this.validPage(position); + let offset = (curX - this.getScrollOffsetOfPage(position)) / (this.state.width + this.props.pageMargin); + let fraction = (curX - this.getScrollOffsetOfPage(position) - this.props.pageMargin) / this.state.width; + if (fraction < 0) { + fraction = 0; + } + this.props.onPageScroll && this.props.onPageScroll({ + position, offset, fraction + }); + } + }); + } + + componentWillMount () { + this.gestureResponder = createResponder({ + onStartShouldSetResponder: (evt, gestureState) => true, + onResponderGrant: this.onResponderGrant.bind(this), + onResponderMove: this.onResponderMove.bind(this), + onResponderRelease: this.onResponderRelease.bind(this), + onResponderTerminate: this.onResponderRelease.bind(this) + }); + } + + onLayout (e) { + let {width, height} = e.nativeEvent.layout; + let sizeChanged = this.state.width !== width || this.state.height !== height; + if (width && height && sizeChanged) { + // if layout changed, create a new DataSource instance to trigger renderRow + this.layoutChanged = true; + this.setState({ + width, + height, + dataSource: (new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})).cloneWithRows([]) + }); + } + } + + componentDidUpdate () { + if (!this.initialPageSettled) { + this.initialPageSettled = true; + if (Platform.OS === 'ios') { + this.scrollToPage(this.props.initialPage, true); + } else { + // A trick to solve bugs on Android. Delay a little + setTimeout(() => this.scrollToPage(this.props.initialPage, true), 0); + } + } else if (this.layoutChanged) { + this.layoutChanged = false; + if (typeof this.currentPage === 'number') { + if (Platform.OS === 'ios') { + this.scrollToPage(this.currentPage, true); + } else { + // A trick to solve bugs on Android. Delay a little + setTimeout(this.scrollToPage(this.currentPage, true), 0); + } + } + } + } + + onResponderGrant (evt, gestureState) { + this.scroller.forceFinished(true); + this.activeGesture = true; + this.onPageScrollStateChanged('dragging'); + } + + onResponderMove (evt, gestureState) { + let dx = gestureState.moveX - gestureState.previousMoveX; + this.scrollByOffset(dx); + } + + onResponderRelease (evt, gestureState, disableSettle) { + this.activeGesture = false; + if (!disableSettle) { + this.settlePage(gestureState.vx); + } + } + + settlePage (vx) { + if (vx < -MIN_FLING_VELOCITY) { + if (this.currentPage < this.pageCount - 1) { + this.flingToPage(this.currentPage + 1, vx); + } else { + this.flingToPage(this.pageCount - 1, vx); + } + } else if (vx > MIN_FLING_VELOCITY) { + if (this.currentPage > 0) { + this.flingToPage(this.currentPage - 1, vx); + } else { + this.flingToPage(0, vx); + } + } else { + let page = this.currentPage; + let progress = (this.scroller.getCurrX() - this.getScrollOffsetOfPage(this.currentPage)) / this.state.width; + if (progress > 1 / 3) { + page += 1; + } else if (progress < -1 / 3) { + page -= 1; + } + page = Math.min(this.pageCount - 1, page); + page = Math.max(0, page); + this.scrollToPage(page); + } + } + + getScrollOffsetOfPage (page) { + return page * (this.state.width + this.props.pageMargin); + } + + flingToPage (page, velocityX) { + this.onPageScrollStateChanged('settling'); + + page = this.validPage(page); + this.onPageChanged(page); + + velocityX *= -1000; // per sec + const finalX = this.getScrollOffsetOfPage(page); + this.scroller.fling(this.scroller.getCurrX(), 0, velocityX, 0, finalX, finalX, 0, 0); + } + + scrollToPage (page, immediate) { + this.onPageScrollStateChanged('settling'); + + page = this.validPage(page); + this.onPageChanged(page); + + const finalX = this.getScrollOffsetOfPage(page); + if (immediate) { + this.scroller.startScroll(this.scroller.getCurrX(), 0, finalX - this.scroller.getCurrX(), 0, 0); + } else { + this.scroller.startScroll(this.scroller.getCurrX(), 0, finalX - this.scroller.getCurrX(), 0, 400); + } + } + + onPageChanged (page) { + if (this.currentPage !== page) { + this.currentPage = page; + this.props.onPageSelected && this.props.onPageSelected(page); + } + } + + onPageScrollStateChanged (state) { + this.props.onPageScrollStateChanged && this.props.onPageScrollStateChanged(state); + } + + scrollByOffset (dx) { + this.scroller.startScroll(this.scroller.getCurrX(), 0, -dx, 0, 0); + } + + validPage (page) { + page = Math.min(this.pageCount - 1, page); + page = Math.max(0, page); + return page; + } + + getScrollOffsetFromCurrentPage () { + return this.scroller.getCurrX() - this.getScrollOffsetOfPage(this.currentPage); + } + + renderRow (rowData, sectionID, rowID, highlightRow) { + const {width, height} = this.state; + let page = this.props.renderPage(rowData, rowID); + + const layout = { width: width, height: height, position: 'relative' }; + const style = page.props.style ? [page.props.style, layout] : layout; + + let newProps = { ...page.props, ref: page.ref, style }; + const element = React.createElement(page.type, newProps); + + if (this.props.pageMargin > 0 && rowID > 0) { + // Do not using margin style to implement pageMargin. + // The ListView seems to calculate a wrong width for children views with margin. + return ( + + {element} + + ); + } else { + return element; + } + } + + render () { + let dataSource = this.state.dataSource; + if (this.state.width && this.state.height) { + let list = this.props.pageDataArray; + if (!list) { + list = []; + } + dataSource = dataSource.cloneWithRows(list); + this.pageCount = list.length; + } + + let gestureResponder = this.gestureResponder; + if (!this.props.scrollEnabled || this.pageCount <= 0) { + gestureResponder = {}; + } + + return ( + + + + ); + } +} + +reactMixin(ViewPager.prototype, TimerMixin); From da09bae952b4b34a1eb277fcb951622c89eb8a34 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Tue, 12 Sep 2017 16:02:11 +0200 Subject: [PATCH 13/41] refactor(ViewPager): minor perfs improvements, code clean-up --- src/ViewPager.js | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/ViewPager.js b/src/ViewPager.js index e3bd792..8253bdb 100644 --- a/src/ViewPager.js +++ b/src/ViewPager.js @@ -1,6 +1,5 @@ import React, { PropTypes, PureComponent } from 'react'; -import { View, ListView, Platform } from 'react-native'; - +import { View, ListView, ViewPropTypes } from 'react-native'; import Scroller from 'react-native-scroller'; import { createResponder } from 'react-native-gesture-responder'; import TimerMixin from 'react-timer-mixin'; @@ -18,7 +17,6 @@ export default class ViewPager extends PureComponent { pageDataArray: PropTypes.array, initialListSize: PropTypes.number, removeClippedSubviews: PropTypes.bool, - onPageSelected: PropTypes.func, onPageScrollStateChanged: PropTypes.func, onPageScroll: PropTypes.func @@ -45,13 +43,12 @@ export default class ViewPager extends PureComponent { this.onLayout = this.onLayout.bind(this); this.renderRow = this.renderRow.bind(this); + this.onResponderGrant = this.onResponderGrant.bind(this); + this.onResponderMove = this.onResponderMove.bind(this); + this.onResponderRelease = this.onResponderRelease.bind(this); const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); - this.state = { - width: 0, - height: 0, - dataSource: ds.cloneWithRows([]) - }; + this.state = { width: 0, height: 0, dataSource: ds.cloneWithRows([]) }; this.scroller = new Scroller(true, (dx, dy, scroller) => { if (dx === 0 && dy === 0 && scroller.isFinished()) { @@ -79,10 +76,10 @@ export default class ViewPager extends PureComponent { componentWillMount () { this.gestureResponder = createResponder({ onStartShouldSetResponder: (evt, gestureState) => true, - onResponderGrant: this.onResponderGrant.bind(this), - onResponderMove: this.onResponderMove.bind(this), - onResponderRelease: this.onResponderRelease.bind(this), - onResponderTerminate: this.onResponderRelease.bind(this) + onResponderGrant: this.onResponderGrant, + onResponderMove: this.onResponderMove, + onResponderRelease: this.onResponderRelease, + onResponderTerminate: this.onResponderRelease }); } @@ -222,8 +219,9 @@ export default class ViewPager extends PureComponent { } renderRow (rowData, sectionID, rowID, highlightRow) { - const {width, height} = this.state; - let page = this.props.renderPage(rowData, rowID); + const { width, height } = this.state; + const { renderPage, pageMargin } = this.props; + let page = renderPage(rowData, rowID); const layout = { width: width, height: height, position: 'relative' }; const style = page.props.style ? [page.props.style, layout] : layout; @@ -231,12 +229,12 @@ export default class ViewPager extends PureComponent { let newProps = { ...page.props, ref: page.ref, style }; const element = React.createElement(page.type, newProps); - if (this.props.pageMargin > 0 && rowID > 0) { + if (pageMargin > 0 && rowID > 0) { // Do not using margin style to implement pageMargin. // The ListView seems to calculate a wrong width for children views with margin. return ( - - {element} + + { element } ); } else { @@ -245,9 +243,12 @@ export default class ViewPager extends PureComponent { } render () { + const { width, height } = this.state; + const { pageDataArray, scrollEnabled, style, removeClippedSubviews, initialListSize, scrollViewStyle } = this.props; + let dataSource = this.state.dataSource; - if (this.state.width && this.state.height) { - let list = this.props.pageDataArray; + if (width && height) { + let list = pageDataArray; if (!list) { list = []; } @@ -256,14 +257,14 @@ export default class ViewPager extends PureComponent { } let gestureResponder = this.gestureResponder; - if (!this.props.scrollEnabled || this.pageCount <= 0) { + if (!scrollEnabled || this.pageCount <= 0) { gestureResponder = {}; } return ( ); From 652065603bd674b0ba5eb391b9b5881fc0b8c542 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Tue, 12 Sep 2017 16:02:35 +0200 Subject: [PATCH 14/41] refactor(ViewPager): remove android's timeout hack & TimerMixin --- src/ViewPager.js | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/src/ViewPager.js b/src/ViewPager.js index 8253bdb..5276291 100644 --- a/src/ViewPager.js +++ b/src/ViewPager.js @@ -2,8 +2,6 @@ import React, { PropTypes, PureComponent } from 'react'; import { View, ListView, ViewPropTypes } from 'react-native'; import Scroller from 'react-native-scroller'; import { createResponder } from 'react-native-gesture-responder'; -import TimerMixin from 'react-timer-mixin'; -import reactMixin from 'react-mixin'; const MIN_FLING_VELOCITY = 0.5; @@ -12,6 +10,7 @@ export default class ViewPager extends PureComponent { ...View.propTypes, initialPage: PropTypes.number, pageMargin: PropTypes.number, + scrollViewStyle: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style, scrollEnabled: PropTypes.bool, renderPage: PropTypes.func, pageDataArray: PropTypes.array, @@ -100,21 +99,11 @@ export default class ViewPager extends PureComponent { componentDidUpdate () { if (!this.initialPageSettled) { this.initialPageSettled = true; - if (Platform.OS === 'ios') { - this.scrollToPage(this.props.initialPage, true); - } else { - // A trick to solve bugs on Android. Delay a little - setTimeout(() => this.scrollToPage(this.props.initialPage, true), 0); - } + this.scrollToPage(this.props.initialPage, true); } else if (this.layoutChanged) { this.layoutChanged = false; if (typeof this.currentPage === 'number') { - if (Platform.OS === 'ios') { - this.scrollToPage(this.currentPage, true); - } else { - // A trick to solve bugs on Android. Delay a little - setTimeout(this.scrollToPage(this.currentPage, true), 0); - } + this.scrollToPage(this.currentPage, true); } } } @@ -267,7 +256,7 @@ export default class ViewPager extends PureComponent { style={[style, { flex: 1 }]} {...gestureResponder}> Date: Tue, 12 Sep 2017 16:03:09 +0200 Subject: [PATCH 15/41] feat(Gallery): add scrollViewStyle prop --- src/Gallery.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Gallery.js b/src/Gallery.js index 73c4eba..e727c01 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -1,5 +1,5 @@ import React, { PureComponent, PropTypes } from 'react'; -import { View } from 'react-native'; +import { View, ViewPropTypes } from 'react-native'; import { createResponder } from 'react-native-gesture-responder'; import TransformableImage from './TransformableImage'; import ViewPager from './ViewPager'; @@ -9,6 +9,7 @@ export default class Gallery extends PureComponent { ...View.propTypes, images: PropTypes.arrayOf(PropTypes.object), initialPage: PropTypes.number, + scrollViewStyle: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style, pageMargin: PropTypes.number, onPageSelected: PropTypes.func, onPageScrollStateChanged: PropTypes.func, @@ -25,7 +26,8 @@ export default class Gallery extends PureComponent { static defaultProps = { initialListSize: 10, removeClippedSubviews: true, - imageComponent: undefined + imageComponent: undefined, + scrollViewStyle: {} }; imageRefs = new Map(); @@ -272,9 +274,9 @@ export default class Gallery extends PureComponent { {...gestureResponder} onPageSelected={this.onPageSelected} onPageScrollStateChanged={this.onPageScrollStateChanged} - onPageScroll={this.onPageScroll} - removeClippedSubviews={ this.props.removeClippedSubviews } - initialListSize={ this.props.initialListSize } + onPageScroll={this.props.onPageScroll} + removeClippedSubviews={this.props.removeClippedSubviews} + initialListSize={this.props.initialListSize} /> ); } From f0e553153d077deedbe5555b0cac923d8be433fe Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Tue, 12 Sep 2017 16:03:37 +0200 Subject: [PATCH 16/41] refactor(Gallery): minor perfs improvements & code clean up --- src/Gallery.js | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/Gallery.js b/src/Gallery.js index e727c01..5fe0581 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -43,15 +43,15 @@ export default class Gallery extends PureComponent { this.renderPage = this.renderPage.bind(this); this.onPageSelected = this.onPageSelected.bind(this); this.onPageScrollStateChanged = this.onPageScrollStateChanged.bind(this); - this.onPageScroll = this.onPageScroll.bind(this); this.getViewPagerInstance = this.getViewPagerInstance.bind(this); this.getCurrentImageTransformer = this.getCurrentImageTransformer.bind(this); this.getImageTransformer = this.getImageTransformer.bind(this); this.getViewPagerInstance = this.getViewPagerInstance.bind(this); + this.activeImageResponder = this.activeImageResponder.bind(this); } componentWillMount () { - function onResponderReleaseOrTerminate (evt, gestureState) { + let onResponderReleaseOrTerminate = (evt, gestureState) => { if (this.activeResponder) { if (this.activeResponder === this.viewPagerResponder && !this.shouldScrollViewPager(evt, gestureState) && @@ -65,16 +65,12 @@ export default class Gallery extends PureComponent { } this.firstMove = true; this.props.onGalleryStateChanged && this.props.onGalleryStateChanged(true); - } + }; this.gestureResponder = createResponder({ onStartShouldSetResponderCapture: (evt, gestureState) => true, - onStartShouldSetResponder: (evt, gestureState) => { - return true; - }, - onResponderGrant: (evt, gestureState) => { - this.activeImageResponder(evt, gestureState); - }, + onStartShouldSetResponder: (evt, gestureState) => true, + onResponderGrant: this.activeImageResponder, onResponderMove: (evt, gestureState) => { if (this.firstMove) { this.firstMove = false; @@ -102,8 +98,8 @@ export default class Gallery extends PureComponent { } this.activeResponder.onMove(evt, gestureState); }, - onResponderRelease: onResponderReleaseOrTerminate.bind(this), - onResponderTerminate: onResponderReleaseOrTerminate.bind(this), + onResponderRelease: onResponderReleaseOrTerminate, + onResponderTerminate: onResponderReleaseOrTerminate, onResponderTerminationRequest: (evt, gestureState) => false, // Do not allow parent view to intercept gesture onResponderSingleTapConfirmed: (evt, gestureState) => { this.props.onSingleTapConfirmed && this.props.onSingleTapConfirmed(this.currentPage); @@ -216,10 +212,6 @@ export default class Gallery extends PureComponent { this.props.onPageScrollStateChanged && this.props.onPageScrollStateChanged(state); } - onPageScroll (e) { - this.props.onPageScroll && this.props.onPageScroll(e); - } - renderPage (pageData, pageId) { const { onViewTransformed, onTransformGestureReleased, renderError } = this.props; return ( @@ -268,6 +260,7 @@ export default class Gallery extends PureComponent { Date: Tue, 12 Sep 2017 16:04:18 +0200 Subject: [PATCH 17/41] feat(TransformableImage): don't try to fetch dimensions of remote image if user supplied it --- src/TransformableImage.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/TransformableImage.js b/src/TransformableImage.js index 41cdf76..49028e2 100644 --- a/src/TransformableImage.js +++ b/src/TransformableImage.js @@ -63,7 +63,7 @@ export default class TransformableImage extends PureComponent { if (!sameSource(this.props.source, nextProps.source)) { __DEV__ && console.log('TransformableImage: componentWillReceiveProps - different source'); // image source changed, clear last image's imageDimensions info if any - this.setState({imageDimensions: nextProps.source.dimensions, keyAcumulator: this.state.keyAcumulator + 1}); + this.setState({ imageDimensions: nextProps.source.dimensions, keyAcumulator: this.state.keyAcumulator + 1 }); if (!nextProps.source.dimensions) { // if we don't have image dimensions provided in source this.getImageSize(nextProps.source); } @@ -92,7 +92,15 @@ export default class TransformableImage extends PureComponent { } getImageSize (source) { - if (!source) return; + if (!source) { + return; + } + const { dimensions } = this.props; + + if (dimensions) { + this.setState({ imageDimensions: dimensions }); + return; + } if (source && source.uri) { Image.getSize( @@ -113,11 +121,7 @@ export default class TransformableImage extends PureComponent { } ); } else { - if (this.props.dimensions) { - this.setState({ imageDimensions: this.props.dimensions }); - } else { - console.warn('react-native-image-gallery', 'Please provide dimensions of your local images'); - } + console.warn('react-native-image-gallery', 'Please provide dimensions of your local images'); } } From a7f0c7e6b213aee82ceb2752fb1b6c90f43c2fc1 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 10:46:47 +0200 Subject: [PATCH 18/41] fix(Gallery): prevent crashes if active image was removed --- src/Gallery.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Gallery.js b/src/Gallery.js index 5fe0581..cb90b8c 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -120,7 +120,8 @@ export default class Gallery extends PureComponent { this.imageResponder = { onStart: (evt, gestureState) => { - this.getCurrentImageTransformer().onResponderGrant(evt, gestureState); + const currentImageTransformer = this.getCurrentImageTransformer(); + currentImageTransformer && currentImageTransformer.onResponderGrant(evt, gestureState); if (this.props.onLongPress) { this._longPressTimeout = setTimeout(() => { this.props.onLongPress(gestureState); @@ -128,11 +129,13 @@ export default class Gallery extends PureComponent { } }, onMove: (evt, gestureState) => { - this.getCurrentImageTransformer().onResponderMove(evt, gestureState); + const currentImageTransformer = this.getCurrentImageTransformer(); + currentImageTransformer && currentImageTransformer.onResponderMove(evt, gestureState); clearTimeout(this._longPressTimeout); }, onEnd: (evt, gestureState) => { - this.getCurrentImageTransformer().onResponderRelease(evt, gestureState); + const currentImageTransformer = this.getCurrentImageTransformer(); + currentImageTransformer && currentImageTransformer.onResponderRelease(evt, gestureState); clearTimeout(this._longPressTimeout); } }; @@ -151,6 +154,10 @@ export default class Gallery extends PureComponent { return false; } const viewTransformer = this.getCurrentImageTransformer(); + if (!viewTransformer) { + return false; + } + const space = viewTransformer.getAvailableTranslateSpace(); const dx = gestureState.moveX - gestureState.previousMoveX; From bc7429261e6b6b7eef3113ae685dbbe5377e4064 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 10:48:02 +0200 Subject: [PATCH 19/41] fix(ViewPager): force scroll to the previous image if the current one has been deleted --- src/ViewPager.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ViewPager.js b/src/ViewPager.js index 5276291..3ad3e62 100644 --- a/src/ViewPager.js +++ b/src/ViewPager.js @@ -105,6 +105,8 @@ export default class ViewPager extends PureComponent { if (typeof this.currentPage === 'number') { this.scrollToPage(this.currentPage, true); } + } else if (this.currentPage + 1 >= this.props.images.length) { + this.scrollToPage(this.props.images.length, true); } } From 1a7dec92f4daedf57cf3ef75546cb9d47068f4cf Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 10:48:26 +0200 Subject: [PATCH 20/41] refactor(Gallery): remove weird hack with ref's Map --- src/Gallery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gallery.js b/src/Gallery.js index cb90b8c..e68fb58 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -192,7 +192,7 @@ export default class Gallery extends PureComponent { getImageTransformer (page) { if (page >= 0 && page < this.pageCount) { - let ref = this.imageRefs.get(page + ''); + let ref = this.imageRefs.get(page); if (ref) { return ref.getViewTransformerInstance(); } From 9fda746469bf218f084d265170102e6511d766b2 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 10:50:05 +0200 Subject: [PATCH 21/41] fix(TransformableImage): prevent state updates if the component has been unmounted MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This now happens a lot more since we’re now using a virtualized list, which means some images might be unmounted when Image.getSize has finished. This does not prevent crashes per se, but it’s a good practice with react. Also removed console.log in development that slowed the hell out of the gallery. --- src/TransformableImage.js | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/TransformableImage.js b/src/TransformableImage.js index 49028e2..de1599f 100644 --- a/src/TransformableImage.js +++ b/src/TransformableImage.js @@ -45,7 +45,6 @@ export default class TransformableImage extends PureComponent { this.state = { viewWidth: 0, viewHeight: 0, - imageLoaded: false, imageDimensions: props.source.dimensions, keyAcumulator: 1 @@ -58,10 +57,12 @@ export default class TransformableImage extends PureComponent { } } + componentDidMount () { + this._mounted = true; + } + componentWillReceiveProps (nextProps) { - __DEV__ && console.log('TransformableImage: componentWillReceiveProps'); if (!sameSource(this.props.source, nextProps.source)) { - __DEV__ && console.log('TransformableImage: componentWillReceiveProps - different source'); // image source changed, clear last image's imageDimensions info if any this.setState({ imageDimensions: nextProps.source.dimensions, keyAcumulator: this.state.keyAcumulator + 1 }); if (!nextProps.source.dimensions) { // if we don't have image dimensions provided in source @@ -70,6 +71,10 @@ export default class TransformableImage extends PureComponent { } } + componentWillUnmount () { + this._mounted = false; + } + onLoadStart (e) { this.props.onLoadStart && this.props.onLoadStart(e); if (this.state.imageLoaded) { @@ -106,18 +111,16 @@ export default class TransformableImage extends PureComponent { Image.getSize( source.uri, (width, height) => { - __DEV__ && console.log(`Image size for ${source.uri}`, { width, height }); if (width && height) { if (this.state.imageDimensions && this.state.imageDimensions.width === width && this.state.imageDimensions.height === height) { // no need to update state } else { - this.setState({ imageDimensions: { width, height } }); + this._mounted && this.setState({ imageDimensions: { width, height } }); } } }, - (error) => { - this.setState({ error: true }); - console.warn(`getImageSize errored for ${source.url}`, JSON.stringify(error)); + () => { + this._mounted && this.setState({ error: true }); } ); } else { @@ -151,7 +154,6 @@ export default class TransformableImage extends PureComponent { } if (width && height) { - __DEV__ && console.log(`TransformableImage: (${width}, ${height})`); contentAspectRatio = width / height; if (viewWidth && viewHeight) { maxScale = Math.max(width / viewWidth, height / viewHeight); From b63a6c7df48ecfaef40edeaea0d57e8c7c9cecb7 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 10:50:58 +0200 Subject: [PATCH 22/41] refactor(ViewPager): replace ListView with FlatList This should improve overall performance greatly. It might even prevent crashes on Android with galleries of large images. --- src/ViewPager.js | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/ViewPager.js b/src/ViewPager.js index 3ad3e62..a686326 100644 --- a/src/ViewPager.js +++ b/src/ViewPager.js @@ -1,5 +1,5 @@ import React, { PropTypes, PureComponent } from 'react'; -import { View, ListView, ViewPropTypes } from 'react-native'; +import { View, FlatList, ViewPropTypes } from 'react-native'; import Scroller from 'react-native-scroller'; import { createResponder } from 'react-native-gesture-responder'; @@ -46,8 +46,7 @@ export default class ViewPager extends PureComponent { this.onResponderMove = this.onResponderMove.bind(this); this.onResponderRelease = this.onResponderRelease.bind(this); - const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); - this.state = { width: 0, height: 0, dataSource: ds.cloneWithRows([]) }; + this.state = { width: 0, height: 0 }; this.scroller = new Scroller(true, (dx, dy, scroller) => { if (dx === 0 && dy === 0 && scroller.isFinished()) { @@ -56,7 +55,7 @@ export default class ViewPager extends PureComponent { } } else { const curX = this.scroller.getCurrX(); - this.refs['innerListView'] && this.refs['innerListView'].scrollTo({x: curX, animated: false}); + this.refs['innerFlatList'] && this.refs['innerFlatList'].scrollToOffset({ offset: curX, animated: false }); let position = Math.floor(curX / (this.state.width + this.props.pageMargin)); position = this.validPage(position); @@ -86,13 +85,8 @@ export default class ViewPager extends PureComponent { let {width, height} = e.nativeEvent.layout; let sizeChanged = this.state.width !== width || this.state.height !== height; if (width && height && sizeChanged) { - // if layout changed, create a new DataSource instance to trigger renderRow this.layoutChanged = true; - this.setState({ - width, - height, - dataSource: (new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2})).cloneWithRows([]) - }); + this.setState({ width, height }); } } @@ -209,10 +203,14 @@ export default class ViewPager extends PureComponent { return this.scroller.getCurrX() - this.getScrollOffsetOfPage(this.currentPage); } - renderRow (rowData, sectionID, rowID, highlightRow) { + keyExtractor (item, index) { + return index; + } + + renderRow ({ item, index }) { const { width, height } = this.state; const { renderPage, pageMargin } = this.props; - let page = renderPage(rowData, rowID); + let page = renderPage(item, index); const layout = { width: width, height: height, position: 'relative' }; const style = page.props.style ? [page.props.style, layout] : layout; @@ -220,7 +218,7 @@ export default class ViewPager extends PureComponent { let newProps = { ...page.props, ref: page.ref, style }; const element = React.createElement(page.type, newProps); - if (pageMargin > 0 && rowID > 0) { + if (pageMargin > 0 && index > 0) { // Do not using margin style to implement pageMargin. // The ListView seems to calculate a wrong width for children views with margin. return ( @@ -237,13 +235,11 @@ export default class ViewPager extends PureComponent { const { width, height } = this.state; const { pageDataArray, scrollEnabled, style, removeClippedSubviews, initialListSize, scrollViewStyle } = this.props; - let dataSource = this.state.dataSource; if (width && height) { let list = pageDataArray; if (!list) { list = []; } - dataSource = dataSource.cloneWithRows(list); this.pageCount = list.length; } @@ -257,16 +253,16 @@ export default class ViewPager extends PureComponent { {...this.props} style={[style, { flex: 1 }]} {...gestureResponder}> - From a3f242a4794c3bdfbfd0d08a7329363f20f88e92 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 10:53:21 +0200 Subject: [PATCH 23/41] chore(gitignore): ignore package-lock & yarn.lock :cat2: --- .gitignore | 4 +- Demo/.gitignore | 3 + Demo/package-lock.json | 83 - Demo/yarn.lock | 4581 ---------------------------------------- package-lock.json | 1866 ---------------- yarn.lock | 1298 ------------ 6 files changed, 6 insertions(+), 7829 deletions(-) delete mode 100644 Demo/package-lock.json delete mode 100644 Demo/yarn.lock delete mode 100644 package-lock.json delete mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 30bc162..2b07055 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -/node_modules \ No newline at end of file +/node_modules +yarn.lock +package-lock.json \ No newline at end of file diff --git a/Demo/.gitignore b/Demo/.gitignore index 10be197..13cbd51 100644 --- a/Demo/.gitignore +++ b/Demo/.gitignore @@ -51,3 +51,6 @@ buck-out/ fastlane/report.xml fastlane/Preview.html fastlane/screenshots + +yarn.lock +package-lock.json \ No newline at end of file diff --git a/Demo/package-lock.json b/Demo/package-lock.json deleted file mode 100644 index f811a25..0000000 --- a/Demo/package-lock.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "name": "Demo", - "version": "0.0.1", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ldn0x7dc/react-native-view-pager": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@ldn0x7dc/react-native-view-pager/-/react-native-view-pager-0.0.9.tgz", - "integrity": "sha1-DKjYjJttp3tYEiJhfgsERZvL07A=", - "requires": { - "react-mixin": "3.1.1", - "react-native-gesture-responder": "0.1.1", - "react-native-scroller": "0.0.6", - "react-timer-mixin": "0.13.3" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "react-mixin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/react-mixin/-/react-mixin-3.1.1.tgz", - "integrity": "sha512-z9fZ0aCRDjlgxLdMeWkJ9TwhmVLhQ09r8RFpin/cEPA2T6jsb7YHNWcIe0Oii+hhJNyMymdy91CSya5mRkuCkg==", - "requires": { - "object-assign": "4.1.1", - "smart-mixin": "2.0.0" - } - }, - "react-native-gesture-responder": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/react-native-gesture-responder/-/react-native-gesture-responder-0.1.1.tgz", - "integrity": "sha1-gCVS2OtxU8DYGjlumPS4C0BLZ5g=", - "requires": { - "react-timer-mixin": "0.13.3" - } - }, - "react-native-image-gallery": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/react-native-image-gallery/-/react-native-image-gallery-1.1.0.tgz", - "integrity": "sha1-aEJ9wLN22z/unRyQjuG6V0bdZlg=", - "requires": { - "@ldn0x7dc/react-native-view-pager": "0.0.9", - "react-native-gesture-responder": "0.1.1", - "react-native-transformable-image": "0.0.18" - } - }, - "react-native-scroller": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/react-native-scroller/-/react-native-scroller-0.0.6.tgz", - "integrity": "sha1-3qjIm9HKLSRF+7azqQlg32wXZ/8=" - }, - "react-native-transformable-image": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/react-native-transformable-image/-/react-native-transformable-image-0.0.18.tgz", - "integrity": "sha1-ACKfJBDEQ6OmtfpTcUEh7NiCOW8=", - "requires": { - "react-native-view-transformer": "0.0.28" - } - }, - "react-native-view-transformer": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/react-native-view-transformer/-/react-native-view-transformer-0.0.28.tgz", - "integrity": "sha1-AbuMnmz/9wqNQA4GHAzSdgJmKss=", - "requires": { - "react-native-gesture-responder": "0.1.1", - "react-native-scroller": "0.0.6" - } - }, - "react-timer-mixin": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz", - "integrity": "sha1-Dai5+AfsB9w+hU0ILHN8ZWBbPSI=" - }, - "smart-mixin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/smart-mixin/-/smart-mixin-2.0.0.tgz", - "integrity": "sha1-o0oQVeMqdbMNK048oyPcmctT9Dc=" - } - } -} diff --git a/Demo/yarn.lock b/Demo/yarn.lock deleted file mode 100644 index 2afc61d..0000000 --- a/Demo/yarn.lock +++ /dev/null @@ -1,4581 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ldn0x7dc/react-native-view-pager@0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@ldn0x7dc/react-native-view-pager/-/react-native-view-pager-0.0.9.tgz#0ca8d88c9b6da77b581222617e0b04459bcbd3b0" - dependencies: - react-mixin "^3.0.5" - react-native-gesture-responder "0.1.1" - react-native-scroller "0.0.6" - react-timer-mixin "^0.13.3" - -abab@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" - -abbrev@1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" - -absolute-path@^0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" - -accepts@~1.2.12, accepts@~1.2.13: - version "1.2.13" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.2.13.tgz#e5f1f3928c6d95fd96558c36ec3d9d0de4a6ecea" - dependencies: - mime-types "~2.1.6" - negotiator "0.5.3" - -accepts@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.4.tgz#86246758c7dd6d21a6474ff084a4740ec05eb21f" - dependencies: - mime-types "~2.1.16" - negotiator "0.6.1" - -acorn-globals@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" - dependencies: - acorn "^4.0.4" - -acorn@^4.0.4: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - -ansi-escapes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b" - -ansi-escapes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -ansi-styles@^3.1.0, ansi-styles@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" - dependencies: - color-convert "^1.9.0" - -ansi@^0.3.0, ansi@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/ansi/-/ansi-0.3.1.tgz#0c42d4fb17160d5a9af1e484bace1c66922c1b21" - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -append-transform@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991" - dependencies: - default-require-extensions "^1.0.0" - -aproba@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1" - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - -array-filter@~0.0.0: - version "0.0.1" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" - -array-map@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" - -array-reduce@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" - -array-uniq@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -art@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/art/-/art-0.10.1.tgz#38541883e399225c5e193ff246e8f157cf7b2146" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - -asn1@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - -async@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - -async@^2.1.4, async@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" - dependencies: - lodash "^4.14.0" - -async@~0.2.6: - version "0.2.10" - resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - -aws4@^1.2.1: - version "1.6.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.26.0, babel-core@^6.7.2: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.0" - debug "^2.6.8" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.7" - slash "^1.0.0" - source-map "^0.5.6" - -babel-generator@^6.18.0, babel-generator@^6.24.1, babel-generator@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.6" - trim-right "^1.0.1" - -babel-helper-builder-react-jsx@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - esutils "^2.0.2" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.16.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@21.0.2, babel-jest@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-21.0.2.tgz#817ea52c23f1c6c4b684d6960968416b6a9e9c6c" - dependencies: - babel-plugin-istanbul "^4.0.0" - babel-preset-jest "^21.0.2" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.5.0, babel-plugin-check-es2015-constants@^6.7.2, babel-plugin-check-es2015-constants@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-external-helpers@^6.18.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-istanbul@^4.0.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz#18dde84bf3ce329fddf3f4103fae921456d8e587" - dependencies: - find-up "^2.1.0" - istanbul-lib-instrument "^1.7.2" - test-exclude "^4.1.1" - -babel-plugin-jest-hoist@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.0.2.tgz#cfdce5bca40d772a056cb8528ad159c7bb4bb03d" - -babel-plugin-react-transform@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/babel-plugin-react-transform/-/babel-plugin-react-transform-2.0.2.tgz#515bbfa996893981142d90b1f9b1635de2995109" - dependencies: - lodash "^4.6.1" - -babel-plugin-syntax-async-functions@^6.5.0, babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - -babel-plugin-syntax-class-properties@^6.5.0, babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - -babel-plugin-syntax-dynamic-import@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" - -babel-plugin-syntax-flow@^6.18.0, babel-plugin-syntax-flow@^6.5.0, babel-plugin-syntax-flow@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" - -babel-plugin-syntax-jsx@^6.5.0, babel-plugin-syntax-jsx@^6.8.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - -babel-plugin-syntax-object-rest-spread@^6.5.0, babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - -babel-plugin-syntax-trailing-function-commas@^6.20.0, babel-plugin-syntax-trailing-function-commas@^6.5.0, babel-plugin-syntax-trailing-function-commas@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - -babel-plugin-transform-async-to-generator@6.16.0: - version "6.16.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.16.0.tgz#19ec36cb1486b59f9f468adfa42ce13908ca2999" - dependencies: - babel-helper-remap-async-to-generator "^6.16.0" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.0.0" - -babel-plugin-transform-class-properties@^6.18.0, babel-plugin-transform-class-properties@^6.5.0, babel-plugin-transform-class-properties@^6.6.0, babel-plugin-transform-class-properties@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-arrow-functions@^6.5.0, babel-plugin-transform-es2015-arrow-functions@^6.5.2, babel-plugin-transform-es2015-arrow-functions@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.6.5, babel-plugin-transform-es2015-block-scoped-functions@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.5.0, babel-plugin-transform-es2015-block-scoping@^6.7.1, babel-plugin-transform-es2015-block-scoping@^6.8.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.5.0, babel-plugin-transform-es2015-classes@^6.6.5, babel-plugin-transform-es2015-classes@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.5.0, babel-plugin-transform-es2015-computed-properties@^6.6.5, babel-plugin-transform-es2015-computed-properties@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@6.x, babel-plugin-transform-es2015-destructuring@^6.5.0, babel-plugin-transform-es2015-destructuring@^6.6.5, babel-plugin-transform-es2015-destructuring@^6.8.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-for-of@^6.5.0, babel-plugin-transform-es2015-for-of@^6.6.0, babel-plugin-transform-es2015-for-of@^6.8.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@6.x, babel-plugin-transform-es2015-function-name@^6.5.0, babel-plugin-transform-es2015-function-name@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.5.0, babel-plugin-transform-es2015-literals@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-commonjs@6.x, babel-plugin-transform-es2015-modules-commonjs@^6.5.0, babel-plugin-transform-es2015-modules-commonjs@^6.7.0, babel-plugin-transform-es2015-modules-commonjs@^6.8.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-object-super@^6.6.5, babel-plugin-transform-es2015-object-super@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@6.x, babel-plugin-transform-es2015-parameters@^6.5.0, babel-plugin-transform-es2015-parameters@^6.7.0, babel-plugin-transform-es2015-parameters@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@6.x, babel-plugin-transform-es2015-shorthand-properties@^6.5.0, babel-plugin-transform-es2015-shorthand-properties@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@6.x, babel-plugin-transform-es2015-spread@^6.5.0, babel-plugin-transform-es2015-spread@^6.6.5, babel-plugin-transform-es2015-spread@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@6.x: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.5.0, babel-plugin-transform-es2015-template-literals@^6.6.5, babel-plugin-transform-es2015-template-literals@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@6.x: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-es3-member-expression-literals@^6.5.0, babel-plugin-transform-es3-member-expression-literals@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-member-expression-literals/-/babel-plugin-transform-es3-member-expression-literals-6.22.0.tgz#733d3444f3ecc41bef8ed1a6a4e09657b8969ebb" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es3-property-literals@^6.5.0, babel-plugin-transform-es3-property-literals@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es3-property-literals/-/babel-plugin-transform-es3-property-literals-6.22.0.tgz#b2078d5842e22abf40f73e8cde9cd3711abd5758" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-flow-strip-types@^6.21.0, babel-plugin-transform-flow-strip-types@^6.5.0, babel-plugin-transform-flow-strip-types@^6.7.0, babel-plugin-transform-flow-strip-types@^6.8.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" - dependencies: - babel-plugin-syntax-flow "^6.18.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-assign@^6.5.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz#f99d2f66f1a0b0d498e346c5359684740caa20ba" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@^6.20.2, babel-plugin-transform-object-rest-spread@^6.5.0, babel-plugin-transform-object-rest-spread@^6.6.5, babel-plugin-transform-object-rest-spread@^6.8.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-display-name@^6.5.0, babel-plugin-transform-react-display-name@^6.8.0: - version "6.25.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx-source@^6.5.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" - dependencies: - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-react-jsx@^6.5.0, babel-plugin-transform-react-jsx@^6.8.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" - dependencies: - babel-helper-builder-react-jsx "^6.24.1" - babel-plugin-syntax-jsx "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.5.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-polyfill@^6.20.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-preset-es2015-node@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015-node/-/babel-preset-es2015-node-6.1.1.tgz#60b23157024b0cfebf3a63554cb05ee035b4e55f" - dependencies: - babel-plugin-transform-es2015-destructuring "6.x" - babel-plugin-transform-es2015-function-name "6.x" - babel-plugin-transform-es2015-modules-commonjs "6.x" - babel-plugin-transform-es2015-parameters "6.x" - babel-plugin-transform-es2015-shorthand-properties "6.x" - babel-plugin-transform-es2015-spread "6.x" - babel-plugin-transform-es2015-sticky-regex "6.x" - babel-plugin-transform-es2015-unicode-regex "6.x" - semver "5.x" - -babel-preset-fbjs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-1.0.0.tgz#c972e5c9b301d4ec9e7971f4aec3e14ac017a8b0" - dependencies: - babel-plugin-check-es2015-constants "^6.7.2" - babel-plugin-syntax-flow "^6.5.0" - babel-plugin-syntax-object-rest-spread "^6.5.0" - babel-plugin-syntax-trailing-function-commas "^6.5.0" - babel-plugin-transform-class-properties "^6.6.0" - babel-plugin-transform-es2015-arrow-functions "^6.5.2" - babel-plugin-transform-es2015-block-scoped-functions "^6.6.5" - babel-plugin-transform-es2015-block-scoping "^6.7.1" - babel-plugin-transform-es2015-classes "^6.6.5" - babel-plugin-transform-es2015-computed-properties "^6.6.5" - babel-plugin-transform-es2015-destructuring "^6.6.5" - babel-plugin-transform-es2015-for-of "^6.6.0" - babel-plugin-transform-es2015-literals "^6.5.0" - babel-plugin-transform-es2015-modules-commonjs "^6.7.0" - babel-plugin-transform-es2015-object-super "^6.6.5" - babel-plugin-transform-es2015-parameters "^6.7.0" - babel-plugin-transform-es2015-shorthand-properties "^6.5.0" - babel-plugin-transform-es2015-spread "^6.6.5" - babel-plugin-transform-es2015-template-literals "^6.6.5" - babel-plugin-transform-es3-member-expression-literals "^6.5.0" - babel-plugin-transform-es3-property-literals "^6.5.0" - babel-plugin-transform-flow-strip-types "^6.7.0" - babel-plugin-transform-object-rest-spread "^6.6.5" - object-assign "^4.0.1" - -babel-preset-fbjs@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-2.1.4.tgz#22f358e6654073acf61e47a052a777d7bccf03af" - dependencies: - babel-plugin-check-es2015-constants "^6.8.0" - babel-plugin-syntax-class-properties "^6.8.0" - babel-plugin-syntax-flow "^6.8.0" - babel-plugin-syntax-jsx "^6.8.0" - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-plugin-syntax-trailing-function-commas "^6.8.0" - babel-plugin-transform-class-properties "^6.8.0" - babel-plugin-transform-es2015-arrow-functions "^6.8.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.8.0" - babel-plugin-transform-es2015-block-scoping "^6.8.0" - babel-plugin-transform-es2015-classes "^6.8.0" - babel-plugin-transform-es2015-computed-properties "^6.8.0" - babel-plugin-transform-es2015-destructuring "^6.8.0" - babel-plugin-transform-es2015-for-of "^6.8.0" - babel-plugin-transform-es2015-function-name "^6.8.0" - babel-plugin-transform-es2015-literals "^6.8.0" - babel-plugin-transform-es2015-modules-commonjs "^6.8.0" - babel-plugin-transform-es2015-object-super "^6.8.0" - babel-plugin-transform-es2015-parameters "^6.8.0" - babel-plugin-transform-es2015-shorthand-properties "^6.8.0" - babel-plugin-transform-es2015-spread "^6.8.0" - babel-plugin-transform-es2015-template-literals "^6.8.0" - babel-plugin-transform-es3-member-expression-literals "^6.8.0" - babel-plugin-transform-es3-property-literals "^6.8.0" - babel-plugin-transform-flow-strip-types "^6.8.0" - babel-plugin-transform-object-rest-spread "^6.8.0" - babel-plugin-transform-react-display-name "^6.8.0" - babel-plugin-transform-react-jsx "^6.8.0" - -babel-preset-jest@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-21.0.2.tgz#9db25def2329f49eace3f5ea0de42a0b898d12cc" - dependencies: - babel-plugin-jest-hoist "^21.0.2" - -babel-preset-react-native@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/babel-preset-react-native/-/babel-preset-react-native-3.0.2.tgz#f9a391540caebbd5014391ac1447ef6d8c0a5b57" - dependencies: - babel-plugin-check-es2015-constants "^6.5.0" - babel-plugin-react-transform "2.0.2" - babel-plugin-syntax-async-functions "^6.5.0" - babel-plugin-syntax-class-properties "^6.5.0" - babel-plugin-syntax-dynamic-import "^6.18.0" - babel-plugin-syntax-flow "^6.5.0" - babel-plugin-syntax-jsx "^6.5.0" - babel-plugin-syntax-trailing-function-commas "^6.5.0" - babel-plugin-transform-class-properties "^6.5.0" - babel-plugin-transform-es2015-arrow-functions "^6.5.0" - babel-plugin-transform-es2015-block-scoping "^6.5.0" - babel-plugin-transform-es2015-classes "^6.5.0" - babel-plugin-transform-es2015-computed-properties "^6.5.0" - babel-plugin-transform-es2015-destructuring "^6.5.0" - babel-plugin-transform-es2015-for-of "^6.5.0" - babel-plugin-transform-es2015-function-name "^6.5.0" - babel-plugin-transform-es2015-literals "^6.5.0" - babel-plugin-transform-es2015-modules-commonjs "^6.5.0" - babel-plugin-transform-es2015-parameters "^6.5.0" - babel-plugin-transform-es2015-shorthand-properties "^6.5.0" - babel-plugin-transform-es2015-spread "^6.5.0" - babel-plugin-transform-es2015-template-literals "^6.5.0" - babel-plugin-transform-flow-strip-types "^6.5.0" - babel-plugin-transform-object-assign "^6.5.0" - babel-plugin-transform-object-rest-spread "^6.5.0" - babel-plugin-transform-react-display-name "^6.5.0" - babel-plugin-transform-react-jsx "^6.5.0" - babel-plugin-transform-react-jsx-source "^6.5.0" - babel-plugin-transform-regenerator "^6.5.0" - babel-template "^6.24.1" - react-transform-hmr "^1.0.4" - -babel-preset-react-native@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/babel-preset-react-native/-/babel-preset-react-native-2.1.0.tgz#9013ebd82da1c88102bf588810ff59e209ca2b8a" - dependencies: - babel-plugin-check-es2015-constants "^6.5.0" - babel-plugin-react-transform "2.0.2" - babel-plugin-syntax-async-functions "^6.5.0" - babel-plugin-syntax-class-properties "^6.5.0" - babel-plugin-syntax-flow "^6.5.0" - babel-plugin-syntax-jsx "^6.5.0" - babel-plugin-syntax-trailing-function-commas "^6.5.0" - babel-plugin-transform-class-properties "^6.5.0" - babel-plugin-transform-es2015-arrow-functions "^6.5.0" - babel-plugin-transform-es2015-block-scoping "^6.5.0" - babel-plugin-transform-es2015-classes "^6.5.0" - babel-plugin-transform-es2015-computed-properties "^6.5.0" - babel-plugin-transform-es2015-destructuring "^6.5.0" - babel-plugin-transform-es2015-for-of "^6.5.0" - babel-plugin-transform-es2015-function-name "^6.5.0" - babel-plugin-transform-es2015-literals "^6.5.0" - babel-plugin-transform-es2015-modules-commonjs "^6.5.0" - babel-plugin-transform-es2015-parameters "^6.5.0" - babel-plugin-transform-es2015-shorthand-properties "^6.5.0" - babel-plugin-transform-es2015-spread "^6.5.0" - babel-plugin-transform-es2015-template-literals "^6.5.0" - babel-plugin-transform-flow-strip-types "^6.5.0" - babel-plugin-transform-object-assign "^6.5.0" - babel-plugin-transform-object-rest-spread "^6.5.0" - babel-plugin-transform-react-display-name "^6.5.0" - babel-plugin-transform-react-jsx "^6.5.0" - babel-plugin-transform-react-jsx-source "^6.5.0" - babel-plugin-transform-regenerator "^6.5.0" - react-transform-hmr "^1.0.4" - -babel-register@^6.24.1, babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.0.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.17.0, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -base64-js@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978" - -base64-js@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.1.2.tgz#d6400cac1c4c660976d90d07a04351d89395f5e8" - -base64-js@^1.1.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" - -base64-url@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/base64-url/-/base64-url-1.2.1.tgz#199fd661702a0e7b7dcae6e0698bb089c52f6d78" - -basic-auth-connect@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz#fdb0b43962ca7b40456a7c2bb48fe173da2d2122" - -basic-auth@~1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-1.0.4.tgz#030935b01de7c9b94a824b29f3fccb750d3a5290" - -batch@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" - -bcrypt-pbkdf@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" - dependencies: - tweetnacl "^0.14.3" - -beeper@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" - -big-integer@^1.6.7: - version "1.6.25" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.25.tgz#1de45a9f57542ac20121c682f8d642220a34e823" - -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -body-parser@~1.13.3: - version "1.13.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.13.3.tgz#c08cf330c3358e151016a05746f13f029c97fa97" - dependencies: - bytes "2.1.0" - content-type "~1.0.1" - debug "~2.2.0" - depd "~1.0.1" - http-errors "~1.3.1" - iconv-lite "0.4.11" - on-finished "~2.3.0" - qs "4.0.0" - raw-body "~2.1.2" - type-is "~1.6.6" - -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - -bplist-creator@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/bplist-creator/-/bplist-creator-0.0.7.tgz#37df1536092824b87c42f957b01344117372ae45" - dependencies: - stream-buffers "~2.2.0" - -bplist-parser@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.1.1.tgz#d60d5dcc20cba6dc7e1f299b35d3e1f95dafbae6" - dependencies: - big-integer "^1.6.7" - -brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -browser-resolve@^1.11.2: - version "1.11.2" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" - dependencies: - resolve "1.1.7" - -bser@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.2.tgz#381116970b2a6deea5646dd15dd7278444b56169" - dependencies: - node-int64 "^0.4.0" - -bser@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/bser/-/bser-1.0.3.tgz#d63da19ee17330a0e260d2a34422b21a89520317" - dependencies: - node-int64 "^0.4.0" - -bser@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719" - dependencies: - node-int64 "^0.4.0" - -builtin-modules@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -bytes@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.1.0.tgz#ac93c410e2ffc9cc7cf4b464b38289067f5e47b4" - -bytes@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -ci-info@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.1.1.tgz#47b44df118c48d2597b56d342e7e25791060171a" - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - dependencies: - restore-cursor "^2.0.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -clone-stats@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" - -clone@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -color-convert@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" - dependencies: - color-name "^1.1.1" - -color-name@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - -combined-stream@^1.0.5, combined-stream@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" - dependencies: - delayed-stream "~1.0.0" - -commander@^2.9.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" - -compressible@~2.0.5: - version "2.0.11" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.11.tgz#16718a75de283ed8e604041625a2064586797d8a" - dependencies: - mime-db ">= 1.29.0 < 2" - -compression@~1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.5.2.tgz#b03b8d86e6f8ad29683cba8df91ddc6ffc77b395" - dependencies: - accepts "~1.2.12" - bytes "2.1.0" - compressible "~2.0.5" - debug "~2.2.0" - on-headers "~1.0.0" - vary "~1.0.1" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -connect-timeout@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/connect-timeout/-/connect-timeout-1.6.2.tgz#de9a5ec61e33a12b6edaab7b5f062e98c599b88e" - dependencies: - debug "~2.2.0" - http-errors "~1.3.1" - ms "0.7.1" - on-headers "~1.0.0" - -connect@^2.8.3: - version "2.30.2" - resolved "https://registry.yarnpkg.com/connect/-/connect-2.30.2.tgz#8da9bcbe8a054d3d318d74dfec903b5c39a1b609" - dependencies: - basic-auth-connect "1.0.0" - body-parser "~1.13.3" - bytes "2.1.0" - compression "~1.5.2" - connect-timeout "~1.6.2" - content-type "~1.0.1" - cookie "0.1.3" - cookie-parser "~1.3.5" - cookie-signature "1.0.6" - csurf "~1.8.3" - debug "~2.2.0" - depd "~1.0.1" - errorhandler "~1.4.2" - express-session "~1.11.3" - finalhandler "0.4.0" - fresh "0.3.0" - http-errors "~1.3.1" - method-override "~2.3.5" - morgan "~1.6.1" - multiparty "3.3.2" - on-headers "~1.0.0" - parseurl "~1.3.0" - pause "0.1.0" - qs "4.0.0" - response-time "~2.3.1" - serve-favicon "~2.3.0" - serve-index "~1.7.2" - serve-static "~1.10.0" - type-is "~1.6.6" - utils-merge "1.0.0" - vhost "~3.0.1" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -content-type-parser@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.1.tgz#c3e56988c53c65127fb46d4032a3a900246fdc94" - -content-type@~1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.3.tgz#da18ef2fb64ca6acc905cc72017d3f38185b91d1" - -convert-source-map@^1.4.0, convert-source-map@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" - -cookie-parser@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.3.5.tgz#9d755570fb5d17890771227a02314d9be7cf8356" - dependencies: - cookie "0.1.3" - cookie-signature "1.0.6" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - -cookie@0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.3.tgz#e734a5c1417fce472d5aef82c381cabb64d1a435" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - -core-js@^2.2.2, core-js@^2.4.0, core-js@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -crc@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.3.0.tgz#fa622e1bc388bf257309082d6b65200ce67090ba" - -create-react-class@^15.5.2: - version "15.6.0" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" - -cross-spawn@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - -cross-spawn@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" - dependencies: - lru-cache "^4.0.1" - shebang-command "^1.2.0" - which "^1.2.9" - -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" - dependencies: - boom "2.x.x" - -csrf@~3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.0.6.tgz#b61120ddceeafc91e76ed5313bb5c0b2667b710a" - dependencies: - rndm "1.2.0" - tsscmp "1.0.5" - uid-safe "2.1.4" - -cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" - -"cssstyle@>= 0.2.37 < 0.3.0": - version "0.2.37" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" - dependencies: - cssom "0.3.x" - -csurf@~1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/csurf/-/csurf-1.8.3.tgz#23f2a13bf1d8fce1d0c996588394442cba86a56a" - dependencies: - cookie "0.1.3" - cookie-signature "1.0.6" - csrf "~3.0.0" - http-errors "~1.3.1" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - dependencies: - assert-plus "^1.0.0" - -dateformat@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" - -debug@2.6.8, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -debug@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" - dependencies: - ms "0.7.1" - -decamelize@^1.0.0, decamelize@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - -deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - -deep-extend@~0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -default-require-extensions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8" - dependencies: - strip-bom "^2.0.0" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - -denodeify@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" - -depd@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.0.1.tgz#80aec64c9d6d97e65cc2a9caa93c0aa6abf73aaa" - -depd@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - dependencies: - repeating "^2.0.0" - -diff@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" - -dom-walk@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" - -duplexer2@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" - dependencies: - readable-stream "~1.1.9" - -ecc-jsbn@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" - dependencies: - jsbn "~0.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - -envinfo@^3.0.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-3.4.1.tgz#8c80e9f2eec2cd4e2adb2c5d0127ce07a2aaa2ae" - dependencies: - minimist "^1.2.0" - os-name "^2.0.1" - which "^1.2.14" - -"errno@>=0.1.1 <0.2.0-0", errno@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" - dependencies: - prr "~0.0.0" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -errorhandler@~1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.4.3.tgz#b7b70ed8f359e9db88092f2d20c0f831420ad83f" - dependencies: - accepts "~1.3.0" - escape-html "~1.0.3" - -es-abstract@^1.5.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -escape-html@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.2.tgz#d77d32fa98e38c2f41ae85e9278e0e0e6ba1022c" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escodegen@^1.6.1: - version "1.9.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" - dependencies: - esprima "^3.1.3" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.5.6" - -esprima@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" - -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - -estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -etag@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" - -event-target-shim@^1.0.5: - version "1.1.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-1.1.1.tgz#a86e5ee6bdaa16054475da797ccddf0c55698491" - -exec-sh@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.1.tgz#163b98a6e89e6b65b47c2a28d215bc1f63989c38" - dependencies: - merge "^1.1.3" - -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - dependencies: - fill-range "^2.1.0" - -expect@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-21.0.2.tgz#b34abf0635ec9d6aea1ce7edb4722afe86c4a38f" - dependencies: - ansi-styles "^3.2.0" - jest-diff "^21.0.2" - jest-get-type "^21.0.2" - jest-matcher-utils "^21.0.2" - jest-message-util "^21.0.2" - jest-regex-util "^21.0.2" - -express-session@~1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.11.3.tgz#5cc98f3f5ff84ed835f91cbf0aabd0c7107400af" - dependencies: - cookie "0.1.3" - cookie-signature "1.0.6" - crc "3.3.0" - debug "~2.2.0" - depd "~1.0.1" - on-headers "~1.0.0" - parseurl "~1.3.0" - uid-safe "~2.0.0" - utils-merge "1.0.0" - -extend@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" - -external-editor@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972" - dependencies: - iconv-lite "^0.4.17" - jschardet "^1.4.2" - tmp "^0.0.31" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - dependencies: - is-extglob "^1.0.0" - -extsprintf@1.3.0, extsprintf@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - -fancy-log@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" - dependencies: - chalk "^1.1.1" - time-stamp "^1.0.0" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fb-watchman@^1.8.0: - version "1.9.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-1.9.2.tgz#a24cf47827f82d38fb59a69ad70b76e3b6ae7383" - dependencies: - bser "1.0.2" - -fb-watchman@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58" - dependencies: - bser "^2.0.0" - -fbjs-scripts@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/fbjs-scripts/-/fbjs-scripts-0.7.1.tgz#4f115e218e243e3addbf0eddaac1e3c62f703fac" - dependencies: - babel-core "^6.7.2" - babel-preset-fbjs "^1.0.0" - core-js "^1.0.0" - cross-spawn "^3.0.1" - gulp-util "^3.0.4" - object-assign "^4.0.1" - semver "^5.1.0" - through2 "^2.0.0" - -fbjs@0.8.12, fbjs@^0.8.9: - version "0.8.12" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04" - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.9" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - dependencies: - escape-string-regexp "^1.0.5" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - -fileset@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0" - dependencies: - glob "^7.0.3" - minimatch "^3.0.3" - -fill-range@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^1.1.3" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -finalhandler@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.4.0.tgz#965a52d9e8d05d2b857548541fb89b53a2497d9b" - dependencies: - debug "~2.2.0" - escape-html "1.0.2" - on-finished "~2.3.0" - unpipe "~1.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -for-each@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" - dependencies: - is-function "~1.0.0" - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - dependencies: - for-in "^1.0.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - -form-data@^2.1.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - -fresh@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" - -fs-extra@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -fsevents@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.36" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -gauge@~1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" - dependencies: - ansi "^0.3.0" - has-unicode "^2.0.0" - lodash.pad "^4.1.0" - lodash.padend "^4.1.0" - lodash.padstart "^4.1.0" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-caller-file@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - dependencies: - is-glob "^2.0.0" - -glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@~7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - dependencies: - min-document "^2.19.0" - process "~0.5.1" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -glogg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" - dependencies: - sparkles "^1.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - -gulp-util@^3.0.4: - version "3.0.8" - resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" - dependencies: - array-differ "^1.0.0" - array-uniq "^1.0.2" - beeper "^1.0.0" - chalk "^1.0.0" - dateformat "^2.0.0" - fancy-log "^1.1.0" - gulplog "^1.0.0" - has-gulplog "^0.1.0" - lodash._reescape "^3.0.0" - lodash._reevaluate "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.template "^3.0.0" - minimist "^1.1.0" - multipipe "^0.1.2" - object-assign "^3.0.0" - replace-ext "0.0.1" - through2 "^2.0.0" - vinyl "^0.5.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - dependencies: - glogg "^1.0.0" - -handlebars@^4.0.3: - version "4.0.10" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" - dependencies: - async "^1.4.0" - optimist "^0.6.1" - source-map "^0.4.4" - optionalDependencies: - uglify-js "^2.6" - -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - -has-gulplog@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" - dependencies: - sparkles "^1.0.0" - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - -has@^1.0.1, has@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" - -hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" - -html-encoding-sniffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz#79bf7a785ea495fe66165e734153f363ff5437da" - dependencies: - whatwg-encoding "^1.0.1" - -http-errors@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" - dependencies: - inherits "~2.0.1" - statuses "1" - -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -iconv-lite@0.4.11: - version "0.4.11" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.11.tgz#2ecb42fd294744922209a2e7c404dac8793d8ade" - -iconv-lite@0.4.13: - version "0.4.13" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" - -iconv-lite@^0.4.17, iconv-lite@~0.4.13: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - -image-size@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.6.1.tgz#98122a562d59dcc097ef1b2c8191866eb8f5d663" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -ini@~1.3.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" - -inquirer@^3.0.6: - version "3.2.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.3.tgz#1c7b1731cf77b934ec47d22c9ac5aa8fe7fbe095" - dependencies: - ansi-escapes "^2.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.0.4" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rx-lite "^4.0.8" - rx-lite-aggregates "^4.0.8" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-ci@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e" - dependencies: - ci-info "^1.0.0" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-function@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - dependencies: - is-extglob "^1.0.0" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - dependencies: - kind-of "^3.0.2" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - dependencies: - isarray "1.0.0" - -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - -istanbul-api@^1.1.1: - version "1.1.14" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.14.tgz#25bc5701f7c680c0ffff913de46e3619a3a6e680" - dependencies: - async "^2.1.4" - fileset "^2.0.2" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-hook "^1.0.7" - istanbul-lib-instrument "^1.8.0" - istanbul-lib-report "^1.1.1" - istanbul-lib-source-maps "^1.2.1" - istanbul-reports "^1.1.2" - js-yaml "^3.7.0" - mkdirp "^0.5.1" - once "^1.4.0" - -istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" - -istanbul-lib-hook@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz#dd6607f03076578fe7d6f2a630cf143b49bacddc" - dependencies: - append-transform "^0.4.0" - -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.2, istanbul-lib-instrument@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.8.0.tgz#66f6c9421cc9ec4704f76f2db084ba9078a2b532" - dependencies: - babel-generator "^6.18.0" - babel-template "^6.16.0" - babel-traverse "^6.18.0" - babel-types "^6.18.0" - babylon "^6.18.0" - istanbul-lib-coverage "^1.1.1" - semver "^5.3.0" - -istanbul-lib-report@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#f0e55f56655ffa34222080b7a0cd4760e1405fc9" - dependencies: - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - path-parse "^1.0.5" - supports-color "^3.1.2" - -istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz#a6fe1acba8ce08eebc638e572e294d267008aa0c" - dependencies: - debug "^2.6.3" - istanbul-lib-coverage "^1.1.1" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - -istanbul-reports@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.2.tgz#0fb2e3f6aa9922bd3ce45d05d8ab4d5e8e07bd4f" - dependencies: - handlebars "^4.0.3" - -jest-changed-files@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-21.0.2.tgz#0a74f35cf2d3b7c8ef9ab4fac0a75409f81ec1b0" - dependencies: - throat "^4.0.0" - -jest-cli@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-21.0.2.tgz#2e08af63d44fc21284ebf496cf71e381f3cc9786" - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.1" - glob "^7.1.2" - graceful-fs "^4.1.11" - is-ci "^1.0.10" - istanbul-api "^1.1.1" - istanbul-lib-coverage "^1.0.1" - istanbul-lib-instrument "^1.4.2" - istanbul-lib-source-maps "^1.1.0" - jest-changed-files "^21.0.2" - jest-config "^21.0.2" - jest-environment-jsdom "^21.0.2" - jest-haste-map "^21.0.2" - jest-message-util "^21.0.2" - jest-regex-util "^21.0.2" - jest-resolve-dependencies "^21.0.2" - jest-runner "^21.0.2" - jest-runtime "^21.0.2" - jest-snapshot "^21.0.2" - jest-util "^21.0.2" - micromatch "^2.3.11" - node-notifier "^5.0.2" - pify "^3.0.0" - slash "^1.0.0" - string-length "^2.0.0" - strip-ansi "^4.0.0" - which "^1.2.12" - worker-farm "^1.3.1" - yargs "^9.0.0" - -jest-config@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-21.0.2.tgz#ea42b94f3c22ae4e4aa11c69f5b45e34e342199d" - dependencies: - chalk "^2.0.1" - glob "^7.1.1" - jest-environment-jsdom "^21.0.2" - jest-environment-node "^21.0.2" - jest-get-type "^21.0.2" - jest-jasmine2 "^21.0.2" - jest-regex-util "^21.0.2" - jest-resolve "^21.0.2" - jest-util "^21.0.2" - jest-validate "^21.0.2" - pretty-format "^21.0.2" - -jest-diff@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-21.0.2.tgz#751014f36ad5d505f6affce5542fde0e444ee50a" - dependencies: - chalk "^2.0.1" - diff "^3.2.0" - jest-get-type "^21.0.2" - pretty-format "^21.0.2" - -jest-docblock@20.1.0-chi.1: - version "20.1.0-chi.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.1.0-chi.1.tgz#06981ab0e59498a2492333b0c5502a82e4603207" - -jest-docblock@20.1.0-delta.4, jest-docblock@^20.1.0-chi.1: - version "20.1.0-delta.4" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-20.1.0-delta.4.tgz#360d4f5fb702730c4136c4e71e5706188a694682" - -jest-docblock@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.0.2.tgz#66f69ddb440799fc32f91d0ac3d8d35e99e2032f" - -jest-environment-jsdom@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-21.0.2.tgz#6f6ab5bd71970d1900fbd47a46701c0a07fa3be5" - dependencies: - jest-mock "^21.0.2" - jest-util "^21.0.2" - jsdom "^9.12.0" - -jest-environment-node@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-21.0.2.tgz#4267ceb39551f8ecaed182ab882a93ef4d5de240" - dependencies: - jest-mock "^21.0.2" - jest-util "^21.0.2" - -jest-get-type@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.0.2.tgz#304e6b816dd33cd1f47aba0597bcad258a509fc6" - -jest-haste-map@20.1.0-chi.1: - version "20.1.0-chi.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.1.0-chi.1.tgz#db5f5f31362c76e242b40ea9a3ccfa364719cee3" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "^20.1.0-chi.1" - micromatch "^2.3.11" - sane "^2.0.0" - worker-farm "^1.3.1" - -jest-haste-map@20.1.0-delta.4: - version "20.1.0-delta.4" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.1.0-delta.4.tgz#12e32b297a6dd49705cacde938029fc158834006" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "20.1.0-delta.4" - micromatch "^2.3.11" - sane "^2.0.0" - worker-farm "^1.3.1" - -jest-haste-map@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-21.0.2.tgz#bd98bc6cd6f207eb029b2f5918da1a9347eb11b7" - dependencies: - fb-watchman "^2.0.0" - graceful-fs "^4.1.11" - jest-docblock "^21.0.2" - micromatch "^2.3.11" - sane "^2.0.0" - worker-farm "^1.3.1" - -jest-jasmine2@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-21.0.2.tgz#a368abb3a686def4d6e763509a265104943cd469" - dependencies: - chalk "^2.0.1" - expect "^21.0.2" - graceful-fs "^4.1.11" - jest-diff "^21.0.2" - jest-matcher-utils "^21.0.2" - jest-message-util "^21.0.2" - jest-snapshot "^21.0.2" - p-cancelable "^0.3.0" - -jest-matcher-utils@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-21.0.2.tgz#eb6736a45b698546d71f7e1ffbbd36587eeb27bc" - dependencies: - chalk "^2.0.1" - jest-get-type "^21.0.2" - pretty-format "^21.0.2" - -jest-message-util@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-21.0.2.tgz#81242e07d426ad54c15f3d7c55b072e9db7b39a9" - dependencies: - chalk "^2.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - -jest-mock@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-21.0.2.tgz#5e92902450e1ce78be3864cc4d50dbd5d1582fbd" - -jest-regex-util@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-21.0.2.tgz#06248c07b53ff444223ebe8e33a25bc051ac976f" - -jest-resolve-dependencies@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-21.0.2.tgz#c42cc371034023ac1a226a7a52f86233c8871938" - dependencies: - jest-regex-util "^21.0.2" - -jest-resolve@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-21.0.2.tgz#57b2c20cbeca2357eb5e638d5c28beca7f38c3f8" - dependencies: - browser-resolve "^1.11.2" - chalk "^2.0.1" - is-builtin-module "^1.0.0" - -jest-runner@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-21.0.2.tgz#1462d431d25f7744e8b5e03837bbf9e268dc8b15" - dependencies: - jest-config "^21.0.2" - jest-docblock "^21.0.2" - jest-haste-map "^21.0.2" - jest-jasmine2 "^21.0.2" - jest-message-util "^21.0.2" - jest-runtime "^21.0.2" - jest-util "^21.0.2" - pify "^3.0.0" - throat "^4.0.0" - worker-farm "^1.3.1" - -jest-runtime@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-21.0.2.tgz#ce26ba06bcd5501991bd994b1eacc0c7c7913895" - dependencies: - babel-core "^6.0.0" - babel-jest "^21.0.2" - babel-plugin-istanbul "^4.0.0" - chalk "^2.0.1" - convert-source-map "^1.4.0" - graceful-fs "^4.1.11" - jest-config "^21.0.2" - jest-haste-map "^21.0.2" - jest-regex-util "^21.0.2" - jest-resolve "^21.0.2" - jest-util "^21.0.2" - json-stable-stringify "^1.0.1" - micromatch "^2.3.11" - slash "^1.0.0" - strip-bom "3.0.0" - write-file-atomic "^2.1.0" - yargs "^9.0.0" - -jest-snapshot@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-21.0.2.tgz#5b8f4dd05c1759381db835451fba4bcd85a55611" - dependencies: - chalk "^2.0.1" - jest-diff "^21.0.2" - jest-matcher-utils "^21.0.2" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - pretty-format "^21.0.2" - -jest-util@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-21.0.2.tgz#3ee2380af25c414a39f07b23c84da6f2d5f1f76a" - dependencies: - callsites "^2.0.0" - chalk "^2.0.1" - graceful-fs "^4.1.11" - jest-message-util "^21.0.2" - jest-mock "^21.0.2" - jest-validate "^21.0.2" - mkdirp "^0.5.1" - -jest-validate@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.0.2.tgz#dd066b257bd102759c214747d73bed6bcfa4349d" - dependencies: - chalk "^2.0.1" - jest-get-type "^21.0.2" - leven "^2.1.0" - pretty-format "^21.0.2" - -jest@21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest/-/jest-21.0.2.tgz#a5c9bdc9d4322ae672fe8cb3eaf25c268c5f04b2" - dependencies: - jest-cli "^21.0.2" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@^3.7.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - -jschardet@^1.4.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" - -jsdom@^9.12.0: - version "9.12.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" - dependencies: - abab "^1.0.3" - acorn "^4.0.4" - acorn-globals "^3.1.0" - array-equal "^1.0.0" - content-type-parser "^1.0.1" - cssom ">= 0.3.2 < 0.4.0" - cssstyle ">= 0.2.37 < 0.3.0" - escodegen "^1.6.1" - html-encoding-sniffer "^1.0.1" - nwmatcher ">= 1.3.9 < 2.0.0" - parse5 "^1.5.1" - request "^2.79.0" - sax "^1.2.1" - symbol-tree "^3.2.1" - tough-cookie "^2.3.2" - webidl-conversions "^4.0.0" - whatwg-encoding "^1.0.1" - whatwg-url "^4.3.0" - xml-name-validator "^2.0.1" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - -json5@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.4.0.tgz#054352e4c4c80c86c0923877d449de176a732c8d" - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - dependencies: - is-buffer "^1.1.5" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - optionalDependencies: - graceful-fs "^4.1.9" - -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - dependencies: - invert-kv "^1.0.0" - -left-pad@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a" - -leven@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basetostring@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" - -lodash._basevalues@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" - -lodash._getnative@^3.0.0: - version "3.9.1" - resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" - -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - -lodash._reescape@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" - -lodash._reevaluate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - -lodash._root@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" - -lodash.escape@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" - dependencies: - lodash._root "^3.0.0" - -lodash.isarguments@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - -lodash.isarray@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" - -lodash.keys@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" - dependencies: - lodash._getnative "^3.0.0" - lodash.isarguments "^3.0.0" - lodash.isarray "^3.0.0" - -lodash.pad@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - -lodash.padend@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - -lodash.padstart@^4.1.0: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - -lodash.restparam@^3.0.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" - -lodash.template@^3.0.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" - dependencies: - lodash._basecopy "^3.0.0" - lodash._basetostring "^3.0.0" - lodash._basevalues "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - lodash.keys "^3.0.0" - lodash.restparam "^3.0.0" - lodash.templatesettings "^3.0.0" - -lodash.templatesettings@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.escape "^3.0.0" - -lodash@^3.5.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - -lodash@^4.14.0, lodash@^4.16.6, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.6.1: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -longest@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -lru-cache@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -macos-release@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-1.1.0.tgz#831945e29365b470aa8724b0ab36c8f8959d10fb" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - dependencies: - tmpl "1.0.x" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - -merge-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1" - dependencies: - readable-stream "^2.0.1" - -merge@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" - -method-override@~2.3.5: - version "2.3.9" - resolved "https://registry.yarnpkg.com/method-override/-/method-override-2.3.9.tgz#bd151f2ce34cf01a76ca400ab95c012b102d8f71" - dependencies: - debug "2.6.8" - methods "~1.1.2" - parseurl "~1.3.1" - vary "~1.1.1" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - -metro-bundler@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/metro-bundler/-/metro-bundler-0.11.0.tgz#ba5d2ae34943da28a37c2098047ad265c16fddf4" - dependencies: - absolute-path "^0.0.0" - async "^2.4.0" - babel-core "^6.24.1" - babel-generator "^6.24.1" - babel-plugin-external-helpers "^6.18.0" - babel-preset-es2015-node "^6.1.1" - babel-preset-fbjs "^2.1.4" - babel-preset-react-native "^2.0.0" - babel-register "^6.24.1" - babylon "^6.17.0" - chalk "^1.1.1" - concat-stream "^1.6.0" - core-js "^2.2.2" - debug "^2.2.0" - denodeify "^1.2.1" - fbjs "0.8.12" - graceful-fs "^4.1.3" - image-size "^0.6.0" - jest-docblock "20.1.0-chi.1" - jest-haste-map "20.1.0-chi.1" - json-stable-stringify "^1.0.1" - json5 "^0.4.0" - left-pad "^1.1.3" - lodash "^4.16.6" - merge-stream "^1.0.1" - mime-types "2.1.11" - mkdirp "^0.5.1" - request "^2.79.0" - rimraf "^2.5.4" - source-map "^0.5.6" - temp "0.8.3" - throat "^4.1.0" - uglify-js "2.7.5" - write-file-atomic "^1.2.0" - xpipe "^1.0.5" - -micromatch@^2.1.5, micromatch@^2.3.11: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -"mime-db@>= 1.29.0 < 2", mime-db@~1.30.0: - version "1.30.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" - -mime-db@~1.23.0: - version "1.23.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" - -mime-types@2.1.11: - version "2.1.11" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" - dependencies: - mime-db "~1.23.0" - -mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.16, mime-types@~2.1.6, mime-types@~2.1.7, mime-types@~2.1.9: - version "2.1.17" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" - dependencies: - mime-db "~1.30.0" - -mime@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - -mime@^1.3.4: - version "1.4.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.0.tgz#69e9e0db51d44f2a3b56e48b7817d7d137f1a343" - -mimic-fn@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - dependencies: - dom-walk "^0.1.0" - -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8, minimist@~0.0.1: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - -"mkdirp@>=0.5 0", mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -morgan@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.6.1.tgz#5fd818398c6819cba28a7cd6664f292fe1c0bbf2" - dependencies: - basic-auth "~1.0.3" - debug "~2.2.0" - depd "~1.0.1" - on-finished "~2.3.0" - on-headers "~1.0.0" - -ms@0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" - -ms@0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -multiparty@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/multiparty/-/multiparty-3.3.2.tgz#35de6804dc19643e5249f3d3e3bdc6c8ce301d3f" - dependencies: - readable-stream "~1.1.9" - stream-counter "~0.2.0" - -multipipe@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" - dependencies: - duplexer2 "0.0.2" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - -nan@^2.3.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -negotiator@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" - -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - -node-fetch@^1.0.1, node-fetch@^1.3.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - -node-notifier@^5.0.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.1.2.tgz#2fa9e12605fa10009d44549d6fcd8a63dde0e4ff" - dependencies: - growly "^1.3.0" - semver "^5.3.0" - shellwords "^0.1.0" - which "^1.2.12" - -node-pre-gyp@^0.6.36: - version "0.6.37" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.37.tgz#3c872b236b2e266e4140578fe1ee88f693323a05" - dependencies: - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "^2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tape "^4.6.3" - tar "^2.2.1" - tar-pack "^3.4.0" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.0, normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - dependencies: - remove-trailing-separator "^1.0.1" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - dependencies: - path-key "^2.0.0" - -npmlog@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" - dependencies: - ansi "~0.3.1" - are-we-there-yet "~1.1.2" - gauge "~1.2.5" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -"nwmatcher@>= 1.3.9 < 2.0.0": - version "1.4.1" - resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.1.tgz#7ae9b07b0ea804db7e25f05cb5fe4097d4e4949f" - -oauth-sign@~0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" - -object-assign@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-inspect@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.3.0.tgz#5b1eb8e6742e2ee83342a637034d844928ba2f6d" - -object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.0, on-headers@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" - -once@^1.3.0, once@^1.3.3, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - dependencies: - mimic-fn "^1.0.0" - -opn@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/opn/-/opn-3.0.3.tgz#b6d99e7399f78d65c3baaffef1fb288e9b85243a" - dependencies: - object-assign "^4.0.1" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -optionator@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - dependencies: - lcid "^1.0.0" - -os-locale@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" - dependencies: - execa "^0.7.0" - lcid "^1.0.0" - mem "^1.1.0" - -os-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-2.0.1.tgz#b9a386361c17ae3a21736ef0599405c9a8c5dc5e" - dependencies: - macos-release "^1.0.0" - win-release "^1.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - -osenv@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -parse5@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" - -parseurl@~1.3.0, parseurl@~1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-key@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pause@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/pause/-/pause-0.1.0.tgz#ebc8a4a8619ff0b8a81ac1513c3434ff469fdb74" - -pegjs@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" - -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -plist@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/plist/-/plist-2.0.1.tgz#0a32ca9481b1c364e92e18dc55c876de9d01da8b" - dependencies: - base64-js "1.1.2" - xmlbuilder "8.2.2" - xmldom "0.1.x" - -plist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/plist/-/plist-1.2.0.tgz#084b5093ddc92506e259f874b8d9b1afb8c79593" - dependencies: - base64-js "0.0.8" - util-deprecate "1.0.2" - xmlbuilder "4.0.0" - xmldom "0.1.x" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - -pretty-format@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.0.2.tgz#76adcebd836c41ccd2e6b626e70f63050d2a3534" - dependencies: - ansi-regex "^3.0.0" - ansi-styles "^3.2.0" - -pretty-format@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-4.3.1.tgz#530be5c42b3c05b36414a7a2a4337aa80acd0e8d" - -private@^0.1.6, private@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - dependencies: - asap "~2.0.3" - -prop-types@^15.5.6, prop-types@^15.5.8: - version "15.5.10" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - -prr@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -punycode@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - -qs@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" - -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - -random-bytes@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" - -randomatic@^1.1.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -range-parser@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" - -raw-body@~2.1.2: - version "2.1.7" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774" - dependencies: - bytes "2.4.0" - iconv-lite "0.4.13" - unpipe "1.0.0" - -rc@^1.1.7: - version "1.2.1" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" - dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-clone-referenced-element@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/react-clone-referenced-element/-/react-clone-referenced-element-1.0.1.tgz#2bba8c69404c5e4a944398600bcc4c941f860682" - -react-deep-force-update@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.1.tgz#bcd31478027b64b3339f108921ab520b4313dc2c" - -react-devtools-core@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-2.5.0.tgz#5ad179f88f22d205940721e38e4ecc3a2d35bf03" - dependencies: - shell-quote "^1.6.1" - ws "^2.0.3" - -react-mixin@^3.0.5: - version "3.1.1" - resolved "https://registry.yarnpkg.com/react-mixin/-/react-mixin-3.1.1.tgz#68749756bfe32699e561372a4aeecb926db72b7f" - dependencies: - object-assign "^4.0.1" - smart-mixin "^2.0.0" - -react-native-gesture-responder@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/react-native-gesture-responder/-/react-native-gesture-responder-0.1.1.tgz#802552d8eb7153c0d81a396e98f4b80b404b6798" - dependencies: - react-timer-mixin "^0.13.3" - -react-native-image-gallery@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/react-native-image-gallery/-/react-native-image-gallery-1.1.0.tgz#68427dc0b376db3fee9d1c908ee1ba5746dd6658" - dependencies: - "@ldn0x7dc/react-native-view-pager" "0.0.9" - react-native-gesture-responder "0.1.1" - react-native-transformable-image "0.0.18" - -react-native-scroller@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/react-native-scroller/-/react-native-scroller-0.0.6.tgz#dea8c89bd1ca2d2445fbb6b3a90960df6c1767ff" - -react-native-transformable-image@0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/react-native-transformable-image/-/react-native-transformable-image-0.0.18.tgz#00229f2410c443a3a6b5fa53714121ecd882396f" - dependencies: - react-native-view-transformer "0.0.28" - -react-native-view-transformer@0.0.28: - version "0.0.28" - resolved "https://registry.yarnpkg.com/react-native-view-transformer/-/react-native-view-transformer-0.0.28.tgz#01bb8c9e6cfff70a8d400e061c0cd27602662acb" - dependencies: - react-native-gesture-responder "0.1.1" - react-native-scroller "0.0.6" - -react-native@0.48.2: - version "0.48.2" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.48.2.tgz#9907d5a73640ade3920701e7096fc109ba9cc6e4" - dependencies: - absolute-path "^0.0.0" - art "^0.10.0" - async "^2.4.0" - babel-core "^6.24.1" - babel-generator "^6.24.1" - babel-plugin-external-helpers "^6.18.0" - babel-plugin-syntax-trailing-function-commas "^6.20.0" - babel-plugin-transform-async-to-generator "6.16.0" - babel-plugin-transform-class-properties "^6.18.0" - babel-plugin-transform-flow-strip-types "^6.21.0" - babel-plugin-transform-object-rest-spread "^6.20.2" - babel-polyfill "^6.20.0" - babel-preset-es2015-node "^6.1.1" - babel-preset-fbjs "^2.1.4" - babel-preset-react-native "^2.0.0" - babel-register "^6.24.1" - babel-runtime "^6.23.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - babylon "^6.17.0" - base64-js "^1.1.2" - bser "^1.0.2" - chalk "^1.1.1" - commander "^2.9.0" - concat-stream "^1.6.0" - connect "^2.8.3" - core-js "^2.2.2" - create-react-class "^15.5.2" - debug "^2.2.0" - denodeify "^1.2.1" - envinfo "^3.0.0" - errno ">=0.1.1 <0.2.0-0" - event-target-shim "^1.0.5" - fbjs "0.8.12" - fbjs-scripts "^0.7.0" - form-data "^2.1.1" - fs-extra "^1.0.0" - glob "^7.1.1" - graceful-fs "^4.1.3" - inquirer "^3.0.6" - jest-haste-map "20.1.0-delta.4" - json-stable-stringify "^1.0.1" - json5 "^0.4.0" - left-pad "^1.1.3" - lodash "^4.16.6" - merge-stream "^1.0.1" - metro-bundler "^0.11.0" - mime "^1.3.4" - mime-types "2.1.11" - minimist "^1.2.0" - mkdirp "^0.5.1" - node-fetch "^1.3.3" - npmlog "^2.0.4" - opn "^3.0.2" - optimist "^0.6.1" - plist "^1.2.0" - pretty-format "^4.2.1" - promise "^7.1.1" - prop-types "^15.5.8" - react-clone-referenced-element "^1.0.1" - react-devtools-core "^2.5.0" - react-timer-mixin "^0.13.2" - react-transform-hmr "^1.0.4" - rebound "^0.0.13" - regenerator-runtime "^0.9.5" - request "^2.79.0" - rimraf "^2.5.4" - sane "~1.4.1" - semver "^5.0.3" - shell-quote "1.6.1" - source-map "^0.5.6" - stacktrace-parser "^0.1.3" - temp "0.8.3" - throat "^4.1.0" - whatwg-fetch "^1.0.0" - wordwrap "^1.0.0" - write-file-atomic "^1.2.0" - ws "^1.1.0" - xcode "^0.9.1" - xmldoc "^0.4.0" - xpipe "^1.0.5" - xtend ">=4.0.0 <4.1.0-0" - yargs "^6.4.0" - -react-proxy@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/react-proxy/-/react-proxy-1.1.8.tgz#9dbfd9d927528c3aa9f444e4558c37830ab8c26a" - dependencies: - lodash "^4.6.1" - react-deep-force-update "^1.0.0" - -react-test-renderer@16.0.0-alpha.12: - version "16.0.0-alpha.12" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.0.0-alpha.12.tgz#9e4cc5d8ce8bfca72778340de3e1454b9d6c0cc5" - dependencies: - fbjs "^0.8.9" - object-assign "^4.1.0" - -react-timer-mixin@^0.13.2, react-timer-mixin@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz#0da8b9f807ec07dc3e854d082c737c65605b3d22" - -react-transform-hmr@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz#e1a40bd0aaefc72e8dfd7a7cda09af85066397bb" - dependencies: - global "^4.3.0" - react-proxy "^1.1.7" - -react@16.0.0-alpha.12: - version "16.0.0-alpha.12" - resolved "https://registry.yarnpkg.com/react/-/react-16.0.0-alpha.12.tgz#8c59485281485df319b6f77682d8dd0621c08194" - dependencies: - create-react-class "^15.5.2" - fbjs "^0.8.9" - loose-envify "^1.1.0" - object-assign "^4.1.0" - prop-types "^15.5.6" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readable-stream@~1.1.8, readable-stream@~1.1.9: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -rebound@^0.0.13: - version "0.0.13" - resolved "https://registry.yarnpkg.com/rebound/-/rebound-0.0.13.tgz#4a225254caf7da756797b19c5817bf7a7941fac1" - -regenerate@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.2.tgz#d1941c67bad437e1be76433add5b385f95b19260" - -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - -regenerator-runtime@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" - -regenerator-runtime@^0.9.5: - version "0.9.6" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - dependencies: - is-equal-shallow "^0.1.3" - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - dependencies: - jsesc "~0.5.0" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - -repeat-element@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - -replace-ext@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" - -request@^2.79.0, request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - -resolve@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" - dependencies: - path-parse "^1.0.5" - -response-time@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/response-time/-/response-time-2.3.2.tgz#ffa71bab952d62f7c1d49b7434355fbc68dffc5a" - dependencies: - depd "~1.1.0" - on-headers "~1.0.1" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - dependencies: - through "~2.3.4" - -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" - dependencies: - glob "^7.0.5" - -rimraf@~2.2.6: - version "2.2.8" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" - -rndm@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" - -run-async@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" - dependencies: - is-promise "^2.1.0" - -rx-lite-aggregates@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" - dependencies: - rx-lite "*" - -rx-lite@*, rx-lite@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" - -safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -safe-buffer@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" - -sane@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-2.0.0.tgz#99cb79f21f4a53a69d4d0cd957c2db04024b8eb2" - dependencies: - anymatch "^1.3.0" - exec-sh "^0.2.0" - fb-watchman "^2.0.0" - minimatch "^3.0.2" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.10.0" - optionalDependencies: - fsevents "^1.1.1" - -sane@~1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sane/-/sane-1.4.1.tgz#88f763d74040f5f0c256b6163db399bf110ac715" - dependencies: - exec-sh "^0.2.0" - fb-watchman "^1.8.0" - minimatch "^3.0.2" - minimist "^1.1.1" - walker "~1.0.5" - watch "~0.10.0" - -sax@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - -sax@~1.1.1: - version "1.1.6" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.6.tgz#5d616be8a5e607d54e114afae55b7eaf2fcc3240" - -"semver@2 || 3 || 4 || 5", semver@5.x, semver@^5.0.1, semver@^5.0.3, semver@^5.1.0, semver@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - -send@0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz#765e7607c8055452bba6f0b052595350986036de" - dependencies: - debug "~2.2.0" - depd "~1.1.0" - destroy "~1.0.4" - escape-html "~1.0.3" - etag "~1.7.0" - fresh "0.3.0" - http-errors "~1.3.1" - mime "1.3.4" - ms "0.7.1" - on-finished "~2.3.0" - range-parser "~1.0.3" - statuses "~1.2.1" - -serve-favicon@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.3.2.tgz#dd419e268de012ab72b319d337f2105013f9381f" - dependencies: - etag "~1.7.0" - fresh "0.3.0" - ms "0.7.2" - parseurl "~1.3.1" - -serve-index@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.7.3.tgz#7a057fc6ee28dc63f64566e5fa57b111a86aecd2" - dependencies: - accepts "~1.2.13" - batch "0.5.3" - debug "~2.2.0" - escape-html "~1.0.3" - http-errors "~1.3.1" - mime-types "~2.1.9" - parseurl "~1.3.1" - -serve-static@~1.10.0: - version "1.10.3" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz#ce5a6ecd3101fed5ec09827dac22a9c29bfb0535" - dependencies: - escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.13.2" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - -shell-quote@1.6.1, shell-quote@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" - dependencies: - array-filter "~0.0.0" - array-map "~0.0.0" - array-reduce "~0.0.0" - jsonify "~0.0.0" - -shellwords@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - -simple-plist@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-0.2.1.tgz#71766db352326928cf3a807242ba762322636723" - dependencies: - bplist-creator "0.0.7" - bplist-parser "0.1.1" - plist "2.0.1" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - -smart-mixin@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/smart-mixin/-/smart-mixin-2.0.0.tgz#a34a1055e32a75b30d2b4e3ca323dc99cb53f437" - -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - dependencies: - source-map "^0.5.6" - -source-map@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -sparkles@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -sshpk@^1.7.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - dashdash "^1.12.0" - getpass "^0.1.1" - optionalDependencies: - bcrypt-pbkdf "^1.0.0" - ecc-jsbn "~0.1.1" - jsbn "~0.1.0" - tweetnacl "~0.14.0" - -stacktrace-parser@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz#01397922e5f62ecf30845522c95c4fe1d25e7d4e" - -statuses@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" - -statuses@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz#dded45cc18256d51ed40aec142489d5c61026d28" - -stream-buffers@~2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" - -stream-counter@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-0.2.0.tgz#ded266556319c8b0e222812b9cf3b26fa7d947de" - dependencies: - readable-stream "~1.1.8" - -string-length@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" - dependencies: - astral-regex "^1.0.0" - strip-ansi "^4.0.0" - -string-width@^1.0.1, string-width@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string.prototype.trim@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.0" - function-bind "^1.0.2" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - -stringstream@~0.0.4: - version "0.0.5" - resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-bom@3.0.0, strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -supports-color@^3.1.2: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - dependencies: - has-flag "^1.0.0" - -supports-color@^4.0.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" - dependencies: - has-flag "^2.0.0" - -symbol-tree@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" - -tape@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.8.0.tgz#f6a9fec41cc50a1de50fa33603ab580991f6068e" - dependencies: - deep-equal "~1.0.1" - defined "~1.0.0" - for-each "~0.3.2" - function-bind "~1.1.0" - glob "~7.1.2" - has "~1.0.1" - inherits "~2.0.3" - minimist "~1.2.0" - object-inspect "~1.3.0" - resolve "~1.4.0" - resumer "~0.0.0" - string.prototype.trim "~1.1.2" - through "~2.3.8" - -tar-pack@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" - dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" - -temp@0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" - dependencies: - os-tmpdir "^1.0.0" - rimraf "~2.2.6" - -test-exclude@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" - dependencies: - arrify "^1.0.1" - micromatch "^2.3.11" - object-assign "^4.1.0" - read-pkg-up "^1.0.1" - require-main-filename "^1.0.1" - -throat@^4.0.0, throat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" - -through2@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" - dependencies: - readable-stream "^2.1.5" - xtend "~4.0.1" - -through@^2.3.6, through@~2.3.4, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - -tmp@^0.0.31: - version "0.0.31" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" - dependencies: - os-tmpdir "~1.0.1" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -tough-cookie@^2.3.2, tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - -tsscmp@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -type-is@~1.6.6: - version "1.6.15" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.15" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -ua-parser-js@^0.7.9: - version "0.7.14" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" - -uglify-js@2.7.5, uglify-js@^2.6: - version "2.7.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" - dependencies: - async "~0.2.6" - source-map "~0.5.1" - uglify-to-browserify "~1.0.0" - yargs "~3.10.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - -uid-safe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.4.tgz#3ad6f38368c6d4c8c75ec17623fb79aa1d071d81" - dependencies: - random-bytes "~1.0.0" - -uid-safe@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.0.0.tgz#a7f3c6ca64a1f6a5d04ec0ef3e4c3d5367317137" - dependencies: - base64-url "1.2.1" - -ultron@1.0.x: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - -ultron@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - -util-deprecate@1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - -uuid@3.0.1, uuid@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" - -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -vary@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10" - -vary@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vhost@~3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/vhost/-/vhost-3.0.2.tgz#2fb1decd4c466aa88b0f9341af33dc1aff2478d5" - -vinyl@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" - dependencies: - clone "^1.0.0" - clone-stats "^0.0.1" - replace-ext "0.0.1" - -walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - dependencies: - makeerror "1.0.x" - -watch@~0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - -webidl-conversions@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - -whatwg-encoding@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz#3c6c451a198ee7aec55b1ec61d0920c67801a5f4" - dependencies: - iconv-lite "0.4.13" - -whatwg-fetch@>=0.10.0, whatwg-fetch@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" - -whatwg-url@^4.3.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - -which@^1.2.12, which@^1.2.14, which@^1.2.9: - version "1.3.0" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - dependencies: - string-width "^1.0.2" - -win-release@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" - dependencies: - semver "^5.0.1" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - -worker-farm@^1.3.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.0.tgz#adfdf0cd40581465ed0a1f648f9735722afd5c8d" - dependencies: - errno "^0.1.4" - xtend "^4.0.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write-file-atomic@^1.2.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - -write-file-atomic@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -ws@^1.1.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61" - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -ws@^2.0.3: - version "2.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-2.3.1.tgz#6b94b3e447cb6a363f785eaf94af6359e8e81c80" - dependencies: - safe-buffer "~5.0.1" - ultron "~1.1.0" - -xcode@^0.9.1: - version "0.9.3" - resolved "https://registry.yarnpkg.com/xcode/-/xcode-0.9.3.tgz#910a89c16aee6cc0b42ca805a6d0b4cf87211cf3" - dependencies: - pegjs "^0.10.0" - simple-plist "^0.2.1" - uuid "3.0.1" - -xml-name-validator@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" - -xmlbuilder@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.0.0.tgz#98b8f651ca30aa624036f127d11cc66dc7b907a3" - dependencies: - lodash "^3.5.0" - -xmlbuilder@8.2.2: - version "8.2.2" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773" - -xmldoc@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/xmldoc/-/xmldoc-0.4.0.tgz#d257224be8393eaacbf837ef227fd8ec25b36888" - dependencies: - sax "~1.1.1" - -xmldom@0.1.x: - version "0.1.27" - resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" - -xpipe@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" - -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.1, xtend@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" - -y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - -yargs-parser@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" - dependencies: - camelcase "^3.0.0" - -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" - dependencies: - camelcase "^4.1.0" - -yargs@^6.4.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^4.2.0" - -yargs@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.0.tgz#efe5b1ad3f94bdc20423411b90628eeec0b25f3c" - dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" - -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" - dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index f3ceb24..0000000 --- a/package-lock.json +++ /dev/null @@ -1,1866 +0,0 @@ -{ - "name": "react-native-image-gallery", - "version": "1.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", - "dev": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.8.2" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-eslint": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.3.tgz", - "integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0" - } - }, - "babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, - "requires": { - "core-js": "2.5.1", - "regenerator-runtime": "0.11.0" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.8", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" - } - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, - "core-js": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", - "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.30" - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" - } - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true, - "requires": { - "iconv-lite": "0.4.19" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es-abstract": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.8.2.tgz", - "integrity": "sha512-dvhwFL3yjQxNNsOWx6exMlaDrRHCRGMQlnx5lsXDCZ/J7G/frgIIl94zhZSp/galVAYp7VzPi1OrAHta89/yGQ==", - "dev": true, - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.1", - "has": "1.0.1", - "is-callable": "1.1.3", - "is-regex": "1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" - } - }, - "es5-ext": { - "version": "0.10.30", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", - "integrity": "sha1-cUGhaDZpfbq/qq7uQUlc4p9SyTk=", - "dev": true, - "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "requires": { - "babel-code-frame": "6.26.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "debug": "2.6.8", - "doctrine": "2.0.0", - "escope": "3.6.0", - "espree": "3.5.0", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.5", - "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.1", - "is-resolvable": "1.0.0", - "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", - "require-uncached": "1.0.3", - "shelljs": "0.7.8", - "strip-bom": "3.0.0", - "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" - } - }, - "eslint-config-standard": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", - "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", - "dev": true - }, - "eslint-config-standard-jsx": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", - "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", - "dev": true - }, - "eslint-config-standard-react": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-5.0.0.tgz", - "integrity": "sha1-ZMe4FAFyhSvoEKU9SO6HZJ/xeOM=", - "dev": true, - "requires": { - "eslint-config-standard-jsx": "4.0.2" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz", - "integrity": "sha512-yUtXS15gIcij68NmXmP9Ni77AQuCN0itXbCc/jWd8C6/yKZaSNXicpC8cgvjnxVdmfsosIXrjpzFq7GcDryb6A==", - "dev": true, - "requires": { - "debug": "2.6.8", - "resolve": "1.4.0" - } - }, - "eslint-module-utils": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", - "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", - "dev": true, - "requires": { - "debug": "2.6.8", - "pkg-dir": "1.0.0" - } - }, - "eslint-plugin-import": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz", - "integrity": "sha512-HGYmpU9f/zJaQiKNQOVfHUh2oLWW3STBrCgH0sHTX1xtsxYlH1zjLh8FlQGEIdZSdTbUMaV36WaZ6ImXkenGxQ==", - "dev": true, - "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.8", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.3.1", - "eslint-module-utils": "2.1.1", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.4", - "read-pkg-up": "2.0.0" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - } - } - }, - "eslint-plugin-node": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.1.1.tgz", - "integrity": "sha512-3xdoEbPyyQNyGhhqttjgSO3cU/non8QDBJF8ttGaHM2h8CaY5zFIngtqW6ZbLEIvhpoFPDVwiQg61b8zanx5zQ==", - "dev": true, - "requires": { - "ignore": "3.3.5", - "minimatch": "3.0.4", - "resolve": "1.4.0", - "semver": "5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "eslint-plugin-promise": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", - "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", - "dev": true - }, - "eslint-plugin-react": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.3.0.tgz", - "integrity": "sha512-7L6QEOxm7XhcDoe+U9Qt7GJjU6KeQOX9jCLGE8EPGF6FQbwZ9LgcBzsjXIZv9oYvNQlvQZmLjJs76xEeWsI4QA==", - "dev": true, - "requires": { - "doctrine": "2.0.0", - "has": "1.0.1", - "jsx-ast-utils": "2.0.1", - "prop-types": "15.5.10" - } - }, - "eslint-plugin-standard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", - "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", - "dev": true - }, - "espree": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", - "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", - "dev": true, - "requires": { - "acorn": "5.1.2", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "dev": true, - "requires": { - "estraverse": "4.2.0" - } - }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", - "dev": true, - "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.30" - } - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fbjs": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.15.tgz", - "integrity": "sha1-TwaV/fzBbDfAsH+s7Iy0xAkWhbk=", - "dev": true, - "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.14" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - } - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "1.2.2", - "object-assign": "4.1.1" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "dev": true, - "requires": { - "circular-json": "0.3.3", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "ignore": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.5.tgz", - "integrity": "sha512-JLH93mL8amZQhh/p6mfQgVBH3M6epNq3DfsXsTSuSrInVjwyYlFE1nv2AgfRCC8PoOhM0jwQ5v8s9LgbK7yGDw==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.2.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, - "interpret": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", - "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", - "dev": true - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "1.3.1" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-my-json-valid": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", - "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true, - "requires": { - "is-path-inside": "1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "1.0.1" - } - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true, - "requires": { - "tryit": "1.0.3" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true, - "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "2.0.3" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", - "dev": true, - "requires": { - "array-includes": "3.0.3" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, - "requires": { - "js-tokens": "3.0.2" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true, - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.4.1", - "validate-npm-package-license": "3.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "p-limit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", - "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", - "dev": true - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "1.1.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "1.1.2" - } - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "2.0.6" - } - }, - "prop-types": { - "version": "15.5.10", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", - "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", - "dev": true, - "requires": { - "fbjs": "0.8.15", - "loose-envify": "1.3.1" - } - }, - "react-mixin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/react-mixin/-/react-mixin-3.1.1.tgz", - "integrity": "sha512-z9fZ0aCRDjlgxLdMeWkJ9TwhmVLhQ09r8RFpin/cEPA2T6jsb7YHNWcIe0Oii+hhJNyMymdy91CSya5mRkuCkg==", - "requires": { - "object-assign": "4.1.1", - "smart-mixin": "2.0.0" - } - }, - "react-native-gesture-responder": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/react-native-gesture-responder/-/react-native-gesture-responder-0.1.1.tgz", - "integrity": "sha1-gCVS2OtxU8DYGjlumPS4C0BLZ5g=", - "requires": { - "react-timer-mixin": "0.13.3" - } - }, - "react-native-scroller": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/react-native-scroller/-/react-native-scroller-0.0.6.tgz", - "integrity": "sha1-3qjIm9HKLSRF+7azqQlg32wXZ/8=" - }, - "react-native-view-transformer": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/react-native-view-transformer/-/react-native-view-transformer-0.0.28.tgz", - "integrity": "sha1-AbuMnmz/9wqNQA4GHAzSdgJmKss=", - "requires": { - "react-native-gesture-responder": "0.1.1", - "react-native-scroller": "0.0.6" - } - }, - "react-timer-mixin": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz", - "integrity": "sha1-Dai5+AfsB9w+hU0ILHN8ZWBbPSI=" - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "2.0.0" - } - } - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", - "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - } - }, - "resolve": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", - "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - }, - "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "7.1.2", - "interpret": "1.0.3", - "rechoir": "0.6.2" - } - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "smart-mixin": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/smart-mixin/-/smart-mixin-2.0.0.tgz", - "integrity": "sha1-o0oQVeMqdbMNK048oyPcmctT9Dc=" - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz", - "integrity": "sha1-EQ1T+kw/MmwSEpK76skE0uAzh8o=", - "dev": true - }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "0.5.1" - } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - } - } -} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 81f217c..0000000 --- a/yarn.lock +++ /dev/null @@ -1,1298 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -acorn-jsx@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" - dependencies: - acorn "^3.0.4" - -acorn@^3.0.4: - version "3.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" - -acorn@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" - -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" - -ajv@^4.7.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - -ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - -argparse@^1.0.7: - version "1.0.9" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" - dependencies: - sprintf-js "~1.0.2" - -array-includes@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - -babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" - dependencies: - babel-code-frame "^6.22.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.17.0" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - dependencies: - babel-runtime "^6.22.0" - -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-traverse@^6.23.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.23.0, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.17.0, babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - -brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -builtin-modules@^1.0.0, builtin-modules@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - -cli-cursor@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - dependencies: - restore-cursor "^1.0.1" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - -concat-stream@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - -core-js@^2.4.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - -debug@^2.1.1, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - -define-properties@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" - dependencies: - foreach "^2.0.5" - object-keys "^1.0.8" - -del@^2.0.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" - dependencies: - globby "^5.0.0" - is-path-cwd "^1.0.0" - is-path-in-cwd "^1.0.0" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - rimraf "^2.2.8" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - -error-ex@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.7.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.2.tgz#25103263dc4decbda60e0c737ca32313518027ee" - dependencies: - es-to-primitive "^1.1.1" - function-bind "^1.1.1" - has "^1.0.1" - is-callable "^1.1.3" - is-regex "^1.0.4" - -es-to-primitive@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" - dependencies: - is-callable "^1.1.1" - is-date-object "^1.0.1" - is-symbol "^1.0.1" - -es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.30" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.30.tgz#7141a16836697dbabfaaaeee41495ce29f52c939" - dependencies: - es6-iterator "2" - es6-symbol "~3.1" - -es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-symbol "^3.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-config-standard-jsx@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz#009e53c4ddb1e9ee70b4650ffe63a7f39f8836e1" - -eslint-config-standard-react@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard-react/-/eslint-config-standard-react-5.0.0.tgz#64c7b8140172852be810a53d48ee87649ff178e3" - dependencies: - eslint-config-standard-jsx "^4.0.0" - -eslint-config-standard@^10.2.1: - version "10.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz#c061e4d066f379dc17cd562c64e819b4dd454591" - -eslint-import-resolver-node@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" - dependencies: - debug "^2.6.8" - resolve "^1.2.0" - -eslint-module-utils@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" - dependencies: - debug "^2.6.8" - pkg-dir "^1.0.0" - -eslint-plugin-import@^2.3.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.7.0.tgz#21de33380b9efb55f5ef6d2e210ec0e07e7fa69f" - dependencies: - builtin-modules "^1.1.1" - contains-path "^0.1.0" - debug "^2.6.8" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.1.1" - has "^1.0.1" - lodash.cond "^4.3.0" - minimatch "^3.0.3" - read-pkg-up "^2.0.0" - -eslint-plugin-node@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-5.1.1.tgz#a7ed956e780c22aef6afd1116005acd82f26eac6" - dependencies: - ignore "^3.3.3" - minimatch "^3.0.4" - resolve "^1.3.3" - semver "5.3.0" - -eslint-plugin-promise@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz#78fbb6ffe047201627569e85a6c5373af2a68fca" - -eslint-plugin-react@^7.0.1: - version "7.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.3.0.tgz#ca9368da36f733fbdc05718ae4e91f778f38e344" - dependencies: - doctrine "^2.0.0" - has "^1.0.1" - jsx-ast-utils "^2.0.0" - prop-types "^15.5.10" - -eslint-plugin-standard@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2" - -eslint@^3.19.0: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" - dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" - doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" - -espree@^3.4.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d" - dependencies: - acorn "^5.1.1" - acorn-jsx "^3.0.0" - -esprima@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" - -esquery@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" - dependencies: - estraverse "^4.0.0" - -esrecurse@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" - dependencies: - estraverse "^4.1.0" - object-assign "^4.0.1" - -estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" - -esutils@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" - -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - -fast-levenshtein@~2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - -fbjs@^0.8.9: - version "0.8.15" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.15.tgz#4f0695fdfcc16c37c0b07facec8cb4c4091685b9" - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.9" - -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - dependencies: - locate-path "^2.0.0" - -flat-cache@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" - dependencies: - circular-json "^0.3.1" - del "^2.0.2" - graceful-fs "^4.1.2" - write "^0.2.1" - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - -function-bind@^1.0.2, function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^9.14.0, globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - -globby@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" - dependencies: - array-union "^1.0.1" - arrify "^1.0.0" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -graceful-fs@^4.1.2: - version "4.1.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - dependencies: - ansi-regex "^2.0.0" - -has@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" - dependencies: - function-bind "^1.0.2" - -hosted-git-info@^2.1.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" - -iconv-lite@~0.4.13: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - -ignore@^3.2.0, ignore@^3.3.3: - version "3.3.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - -interpret@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90" - -invariant@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" - dependencies: - loose-envify "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - -is-builtin-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" - dependencies: - builtin-modules "^1.0.0" - -is-callable@^1.1.1, is-callable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" - -is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - -is-my-json-valid@^2.10.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz#5a846777e2c2620d1e69104e5d3a03b1f6088f11" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - -is-path-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" - -is-path-in-cwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" - dependencies: - is-path-inside "^1.0.0" - -is-path-inside@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" - dependencies: - path-is-inside "^1.0.1" - -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - dependencies: - has "^1.0.1" - -is-resolvable@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" - dependencies: - tryit "^1.0.1" - -is-stream@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - -is-symbol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" - -isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - -js-yaml@^3.5.1: - version "3.10.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - dependencies: - jsonify "~0.0.0" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - -jsonpointer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" - -jsx-ast-utils@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" - dependencies: - array-includes "^3.0.3" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -lodash.cond@^4.3.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" - -lodash@^4.0.0, lodash@^4.17.4, lodash@^4.3.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" - -loose-envify@^1.0.0, loose-envify@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" - dependencies: - js-tokens "^3.0.0" - -minimatch@^3.0.3, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - -mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - dependencies: - minimist "0.0.8" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -normalize-package-data@^2.3.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" - dependencies: - hosted-git-info "^2.1.4" - is-builtin-module "^1.0.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - -object-assign@^4.0.1, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - -object-keys@^1.0.8: - version "1.0.11" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - dependencies: - wrappy "1" - -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - -optionator@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.4" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - wordwrap "~1.0.0" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - -p-limit@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - dependencies: - p-limit "^1.1.0" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - -path-is-inside@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - -path-parse@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - dependencies: - pify "^2.0.0" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - -pkg-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" - dependencies: - find-up "^1.0.0" - -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - -process-nextick-args@~1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" - -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - dependencies: - asap "~2.0.3" - -prop-types@^15.5.10: - version "15.5.10" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - -react-mixin@^3.0.5: - version "3.1.1" - resolved "https://registry.yarnpkg.com/react-mixin/-/react-mixin-3.1.1.tgz#68749756bfe32699e561372a4aeecb926db72b7f" - dependencies: - object-assign "^4.0.1" - smart-mixin "^2.0.0" - -react-native-gesture-responder@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/react-native-gesture-responder/-/react-native-gesture-responder-0.1.1.tgz#802552d8eb7153c0d81a396e98f4b80b404b6798" - dependencies: - react-timer-mixin "^0.13.3" - -react-native-scroller@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/react-native-scroller/-/react-native-scroller-0.0.6.tgz#dea8c89bd1ca2d2445fbb6b3a90960df6c1767ff" - -react-native-view-transformer@0.0.28: - version "0.0.28" - resolved "https://registry.yarnpkg.com/react-native-view-transformer/-/react-native-view-transformer-0.0.28.tgz#01bb8c9e6cfff70a8d400e061c0cd27602662acb" - dependencies: - react-native-gesture-responder "0.1.1" - react-native-scroller "0.0.6" - -react-timer-mixin@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz#0da8b9f807ec07dc3e854d082c737c65605b3d22" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@^2.2.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~1.0.6" - safe-buffer "~5.1.1" - string_decoder "~1.0.3" - util-deprecate "~1.0.1" - -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - -regenerator-runtime@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" - -require-uncached@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - -resolve@^1.1.6, resolve@^1.2.0, resolve@^1.3.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.4.0.tgz#a75be01c53da25d934a98ebd0e4c4a7312f92a86" - dependencies: - path-parse "^1.0.5" - -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - -rimraf@^2.2.8: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" - dependencies: - glob "^7.0.5" - -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - dependencies: - once "^1.3.0" - -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - -"semver@2 || 3 || 4 || 5", semver@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - -shelljs@^0.7.5: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - -smart-mixin@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/smart-mixin/-/smart-mixin-2.0.0.tgz#a34a1055e32a75b30d2b4e3ca323dc99cb53f437" - -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" - dependencies: - spdx-license-ids "^1.0.2" - -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" - -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string_decoder@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - dependencies: - ansi-regex "^3.0.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" - dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" - -text-table@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - -tryit@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - dependencies: - prelude-ls "~1.1.2" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - -ua-parser-js@^0.7.9: - version "0.7.14" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" - -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - dependencies: - os-homedir "^1.0.0" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - -validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" - dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" - -whatwg-fetch@>=0.10.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" - -wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - dependencies: - mkdirp "^0.5.1" - -xtend@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From 6d9a666a557ec24da0dc8f534e20aa73237e1eb9 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 11:47:09 +0200 Subject: [PATCH 24/41] feat(Demo): add slide counter, captions, more images, & addImages/removeImages methods --- Demo/src/DemoGallery.js | 92 +++++++++++++++++++++++++++++++++++------ 1 file changed, 79 insertions(+), 13 deletions(-) diff --git a/Demo/src/DemoGallery.js b/Demo/src/DemoGallery.js index 8f974e2..94713c8 100644 --- a/Demo/src/DemoGallery.js +++ b/Demo/src/DemoGallery.js @@ -1,4 +1,5 @@ import React, { Component } from 'react'; +import { View, Text, ActivityIndicator } from 'react-native'; import Gallery from 'react-native-image-gallery'; export default class DemoGallery extends Component { @@ -6,16 +7,38 @@ export default class DemoGallery extends Component { constructor (props) { super(props); this.state = { + index: 0, images: [ - { source: require('./static/images/placehold.jpg'), dimensions: { width: 540, height: 720 } }, - { source: { uri: 'http://wrongdomain.tld/images/wrongimage.jpg' } }, - { source: { uri: 'http://i.imgur.com/gSmWCJF.jpg' } }, - { source: { uri: 'http://i.imgur.com/XP2BE7q.jpg' } }, - { source: { uri: 'http://i.imgur.com/5nltiUd.jpg' } } + { + caption: 'This image is bundled with the app, so you must provide dimensions for it', + source: require('./static/images/placehold.jpg'), + dimensions: { width: 540, height: 720 } + }, + { + caption: 'This image has a broken URL', + source: { uri: 'http://wrongdomain.tld/images/wrongimage.jpg' } + }, + { + caption: 'Remote image with supplied dimensions', + source: { uri: 'http://i.imgur.com/gSmWCJF.jpg' }, + dimensions: { width: 1200, height: 800 } + }, + { caption: 'Caption 4', source: { uri: 'http://i.imgur.com/XP2BE7q.jpg' } }, + { caption: 'Caption 5', source: { uri: 'http://i.imgur.com/5nltiUd.jpg' } }, + { caption: 'Caption 6', source: { uri: 'http://i.imgur.com/6vOahbP.jpg' } }, + { caption: 'Caption 7', source: { uri: 'http://i.imgur.com/kj5VXtG.jpg' } }, + { caption: 'Caption 8', source: { uri: 'http://i.imgur.com/BN8RVGa.jpg' } }, + { caption: 'Caption 9', source: { uri: 'http://i.imgur.com/jXbhTbv.jpg' } }, + { caption: 'Caption 10', source: { uri: 'http://i.imgur.com/30s12Qj.jpg' } }, + { caption: 'Caption 11', source: { uri: 'http://i.imgur.com/4A1Q49y.jpg' } }, + { caption: 'Caption 12', source: { uri: 'http://i.imgur.com/JfVDTF9.jpg' } }, + { caption: 'Caption 13', source: { uri: 'http://i.imgur.com/Vv4bmwR.jpg' } } ] }; - this.addImages(); - this.removeImages(); + this.onChangeImage = this.onChangeImage.bind(this); + + // this.addImages(); + // this.removeImages(); } addImages () { @@ -27,17 +50,60 @@ export default class DemoGallery extends Component { removeImages () { setInterval(() => { - const newArray = this.state.images.filter((element, index) => index !== 1); + const { images } = this.state; + console.log(images.length); + if (images.length <= 1) { + return; + } + const newArray = this.state.images.filter((element, index) => index !== this.state.images.length - 1); this.setState({ images: newArray }); - }, 7000); + }, 2000); + } + + onChangeImage (index) { + this.setState({ index }); + } + + renderError () { + return ( + + This image cannot be displayed... + ... but this is fine :) + + ); + } + + get caption () { + const { images, index } = this.state; + return ( + + { (images[index] && images[index].caption) || '' } + + ); + } + + get galleryCount () { + const { index, images } = this.state; + return ( + + { index + 1 } / { images.length } + + ); } render () { return ( - + + + { this.galleryCount } + { this.caption } + ); } } From 839431f65d99ffc7f655967cd28d8c15c6255c2f Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 11:47:24 +0200 Subject: [PATCH 25/41] doc(README): update the documentation --- README.md | 75 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 53 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index f11a99e..fd5483c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ # react-native-image-gallery +## Table of contents + +- [react-native-image-gallery](#react-native-image-gallery) + - [Table of contents](#table-of-contents) + - [Install](#install) + - [Usage example](#usage-example) + - [Remote and local images](#remote-and-local-images) + - [Props](#props) + - [Scroll state and events](#scroll-state-and-events) + >This used to be a fork of [ldn0x7dc/react-native-gallery](https://github.com/ldn0x7dc/react-native-image-gallery) but since the author has stopped maintaining it, here's our own repo. Props to him for his work ! A pure JavaScript image gallery component for react-native apps with common gestures like pan, pinch and doubleTap, supporting both iOS and Android. @@ -9,19 +19,19 @@ This component aims to be (one of) the best image viewer for react-native apps. * Gesture handle: besides common pan, pinch and doubleTap, this component does well in targeting foucs point( or pivot) when zoom-in and zoom-out. * Responder switch: the gesture responder switch is more flexible than any other component, that is, the scrollable container and the wrapped image children perform well in acquiring and releasing gesture responder from/to each other. +This component utilizes **[@ldn0x7dc/react-native-view-pager](https://github.com/ldn0x7dc/react-native-view-pager)** as the scrollable container and **[react-native-transformable-image](https://github.com/ldn0x7dc/react-native-transformable-image)** as the wrapped image. + This component works on react-native **0.28+**. -You can try this example live in **Archriss' showcase app** on [Android](https://play.google.com/store/apps/details?id=fr.archriss.demo.app) and [iOS](https://itunes.apple.com/lu/app/archriss-presentation-mobile/id1180954376?mt=8). +You can try this example live in **Archriss' showcase app** on [Android](https://play.google.com/store/apps/details?id=fr.archriss.demo.app) and [iOS](https://itunes.apple.com/lu/app/archriss-presentation-mobile/id1180954376?mt=8) or check out the demo. ![react-native-image-gallery](https://media.giphy.com/media/3o7bugPvJyqYWz9bK8/giphy.gif) ## Install -`npm install --save react-native-image-gallery@latest` - -## Documentaion +`npm install --save react-native-image-gallery` -Quite easy to use: +## Usage example ```javascript import Gallery from 'react-native-image-gallery'; @@ -29,34 +39,55 @@ import Gallery from 'react-native-image-gallery'; render() { return ( ); } ``` -You can now use either a remote image, by specifying `source.uri`, or a local image where `source` is the result of your `require()`. **Be aware that you need to pass the dimensions of your local images ! It's still not required for remotes images.** +## Remote and local images -This component utilizes **[@ldn0x7dc/react-native-view-pager](https://github.com/ldn0x7dc/react-native-view-pager)** as the scrollable container and **[react-native-transformable-image](https://github.com/ldn0x7dc/react-native-transformable-image)** as the wrapped image. +You can now use either a remote image, by specifying `source.uri`, or a local image where `source` is the result of your `require()`. + +**Be aware that you need to pass the dimensions of your local images ! It's still not required for remotes images**, although you can still provide their dimensions to prevent the gallery from fetching their height and width online, which can improve the perfs a bit. + +## Props + +Prop | Description | Type | Default +------ | ------ | ------ | ------ +`images` | Your array of images | `array` | Required +`initialPage` | Image displayed first | `number` | `0` +`imageComponent` | Custom function to render your images | `function` | `` component +`errorComponent` | Custom function to render the page of an image that couldn't be displayed | `function` | A `` with a stylized error +`pageMargin` | Blank space to show between images | `number` | `0` +`onPageSelected` | Fired with the index of page that has been selected | `function` +`onPageScrollStateChanged` | Called when page scrolling state has changed, see [scroll state and events](#scroll-state-and-events) | `function` +`onPageScroll` | Scroll event, see [scroll state and events](#scroll-state-and-events) | `function` +`scrollViewStyle` | Custom style for the `FlastList` component | `object` | `{}` +`onSingleTapConfirmed` | Fired after a single tap | `function` +`onLongPress` | Fire after a long press | `function` + +## Scroll state and events + +* `onPageScroll` : (event) => {}. -#### Props + The event object carries following data: -* **images**: array, contains image urls -* **initialPage**, **pageMargin**, **onPageSelected**, **onPageScrollStateChanged**, **onPageScroll**: inherited from **[@ldn0x7dc/react-native-view-pager](https://github.com/ldn0x7dc/react-native-view-pager)**. Check the link for more details. -* **onSingleTapConfirmed**: Called after user single taped( not a double tap) -* **onGalleryStateChanged**: function. (idle) => {}. -* **onLongPress**: (gestureState) => {} -* **loader**: React component that will be displayed before each image has been loaded. For instance, you could use `ActivityIndicator`. + * `position`: index of first page from the left that is currently visible. + * `offset`: value from range [0,1) describing stage between page transitions. + * `fraction`: means that (1 - x) fraction of the page at "position" index is visible, and x fraction of the next page is visible. -### Add your custom views above image +* `onPageScrollStateChanged` : (state) => {}. -It's a common practice to float a comment box or like button above the image. This component provides a convenient interface to implement this feature: + Called when the page scrolling state has changed. The page scrolling state can be in 3 states: -- onSingleTapConfirmed(): a good time for you to display the responding floating view. -- onGalleryStateChanged(idle): If *idle* is false, it's a good time for your to hide any floating views. + * `'idle'`: there is no interaction with the page scroller happening at the time. + * `'dragging'`: there is currently an interaction with the page scroller. + * ``settling'`: there was an interaction with the page scroller, and the page scroller is now finishing it's closing or opening animation. \ No newline at end of file From cfa38060b5c38951e49a0ff625570f579b64f728 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 11:47:47 +0200 Subject: [PATCH 26/41] refactor(Gallery): rename renderError prop into errorComponent --- src/Gallery.js | 9 +++------ src/TransformableImage.js | 4 ++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Gallery.js b/src/Gallery.js index e68fb58..e2240cd 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -17,14 +17,12 @@ export default class Gallery extends PureComponent { onSingleTapConfirmed: PropTypes.func, onGalleryStateChanged: PropTypes.func, onLongPress: PropTypes.func, - initialListSize: PropTypes.number, removeClippedSubviews: PropTypes.bool, imageComponent: PropTypes.func, - renderError: PropTypes.func + errorComponent: PropTypes.func }; static defaultProps = { - initialListSize: 10, removeClippedSubviews: true, imageComponent: undefined, scrollViewStyle: {} @@ -220,7 +218,7 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { - const { onViewTransformed, onTransformGestureReleased, renderError } = this.props; + const { onViewTransformed, onTransformGestureReleased, errorComponent } = this.props; return ( { @@ -231,7 +229,7 @@ export default class Gallery extends PureComponent { })} ref={((ref) => { this.imageRefs.set(pageId, ref); })} key={'innerImage#' + pageId} - renderError={renderError} + errorComponent={errorComponent} source={pageData.source} dimensions={pageData.dimensions} /> @@ -276,7 +274,6 @@ export default class Gallery extends PureComponent { onPageScrollStateChanged={this.onPageScrollStateChanged} onPageScroll={this.props.onPageScroll} removeClippedSubviews={this.props.removeClippedSubviews} - initialListSize={this.props.initialListSize} /> ); } diff --git a/src/TransformableImage.js b/src/TransformableImage.js index de1599f..2f9a305 100644 --- a/src/TransformableImage.js +++ b/src/TransformableImage.js @@ -22,7 +22,7 @@ export default class TransformableImage extends PureComponent { onViewTransformed: PropTypes.func, imageComponent: PropTypes.func, resizeMode: PropTypes.string, - renderError: PropTypes.func + errorComponent: PropTypes.func }; static defaultProps = { @@ -133,7 +133,7 @@ export default class TransformableImage extends PureComponent { } renderError () { - return (this.props.renderError && this.props.renderError()) || ( + return (this.props.errorComponent && this.props.errorComponent()) || ( This image cannot be displayed... From 23efdd500d8859668f2c6c1f4a078b6598db83cb Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 11:48:10 +0200 Subject: [PATCH 27/41] doc(CHANGES): add v2.0.0 changelog --- CHANGES.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 378bec5..12151ea 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,21 @@ +## v2.0.0 + +This is the first major update since we've taken over this project. It includes numerous changes, breaking changes, and perfs improvements. + +Huge thanks to [@chrusart](https://github.com/chrusart) who started these changes and helped highlighting problems. + +* **Breaking change** : remove the `loader`. Instead, you should use the `imageComponent` prop and implement your own image loading logic yourself so it doesn't affect the gallery's performance. +* A demo has been added ! It shows a basic usage of this module, with a slide counter on top and captions displayed at the bottom. Un-comment `addImages()` and `removeImages()` to check out the new improvements and fixes when the gallery re-renders. +* Refactor : `TransformableImage` and `ViewPager` dependencies are now backed-in the module. They weren't being maintained, so we won't have to wait for their respective pull requests to be merged. This allowed us to fix numerous bugs, faster. +* Refactor : Huge refactor of the whole codebase. We've rewritten a lot of code, most of the logic is intact but the library is now easier to read, and more importantly, it follows the good practices of react. There is still work to do, but most of it has been done. +* Removed the `initialListSize` prop. This was confusing, and it's not required anymore. +* Feature : the underlying `ListView` has been replaced with `FlatList` ! This should result in a significant improvement in performance. +* Feature : `errorComponent` prop. You can now provide a function to render the page of an image that couldn't be loaded. This is usually rendered with a remote image that has a broken URL. +* Feature : `scrollViewStyle` prop. Style the `FlatList` as you wish. +* Feature : you can now use the `dimensions` key in your remote images just like with your local images. That circumvents the `Image.getSize` logic, it's a little perf boost if you already know the dimensions of your remote images. +* Fix : the gallery won't crash if your remote image's URL is broken. It will now display a nice error that you can customize with the `errorComponent` prop. +* Fix : the gallery won't crash when adding or removing images. + ## v1.1.0 * Feature : add `onLongPress` prop From f1c0179ef54e29b3b225d230bd736d2bf7b65180 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 11:48:24 +0200 Subject: [PATCH 28/41] chore(package): bump to 1.2.0-rc.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6a3833f..21f2138 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-image-gallery", - "version": "1.1.0", + "version": "1.2.0-rc.1", "description": "Pure JavaScript image gallery component for iOS and Android", "main": "src/Gallery.js", "scripts": { From f5598a8f3b40f9f971c50f8cda93201b372dcf83 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 15:43:59 +0200 Subject: [PATCH 29/41] fix(Gallery): don't block scroll animation when going to the last slide --- src/ViewPager.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/ViewPager.js b/src/ViewPager.js index a686326..d95314e 100644 --- a/src/ViewPager.js +++ b/src/ViewPager.js @@ -90,7 +90,7 @@ export default class ViewPager extends PureComponent { } } - componentDidUpdate () { + componentDidUpdate (prevProps) { if (!this.initialPageSettled) { this.initialPageSettled = true; this.scrollToPage(this.props.initialPage, true); @@ -99,7 +99,8 @@ export default class ViewPager extends PureComponent { if (typeof this.currentPage === 'number') { this.scrollToPage(this.currentPage, true); } - } else if (this.currentPage + 1 >= this.props.images.length) { + } else if (this.currentPage + 1 >= this.props.images.length && + this.props.images.length !== prevProps.images.length) { this.scrollToPage(this.props.images.length, true); } } From 5bb897af8e397227b03f1d559063a29f2f659205 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 15:44:28 +0200 Subject: [PATCH 30/41] feat(Demo): add another method to debug some edge cases --- Demo/src/DemoGallery.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Demo/src/DemoGallery.js b/Demo/src/DemoGallery.js index 94713c8..8e965c6 100644 --- a/Demo/src/DemoGallery.js +++ b/Demo/src/DemoGallery.js @@ -39,16 +39,28 @@ export default class DemoGallery extends Component { // this.addImages(); // this.removeImages(); + // this.removeImage(2, 3000); } addImages () { + // Debugging helper : keep adding images at the end of the gallery. setInterval(() => { const newArray = [...this.state.images, { source: { uri: 'http://i.imgur.com/DYjAHAf.jpg' } }]; this.setState({ images: newArray }); }, 5000); } + removeImage (slideIndex, delay) { + // Debugging helper : remove a given image after some delay. + // Ensure the gallery doesn't crash and the scroll is updated accordingly. + setTimeout(() => { + const newArray = this.state.images.filter((element, index) => index !== slideIndex); + this.setState({ images: newArray }); + }, delay); + } + removeImages () { + // Debugging helper : keep removing the last slide of the gallery. setInterval(() => { const { images } = this.state; console.log(images.length); @@ -99,7 +111,7 @@ export default class DemoGallery extends Component { images={this.state.images} errorComponent={this.renderError} onPageSelected={this.onChangeImage} - initialPage={13} + initialPage={0} /> { this.galleryCount } { this.caption } From cce144d8c1f24fc3563d47a4cca6e277e88f98c9 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 15:45:36 +0200 Subject: [PATCH 31/41] chore(package): bump to 1.2.0-rc.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 21f2138..bd3ad7c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-image-gallery", - "version": "1.2.0-rc.1", + "version": "1.2.0-rc.2", "description": "Pure JavaScript image gallery component for iOS and Android", "main": "src/Gallery.js", "scripts": { From f6ec2345e7951f6fb475f98be5ff34760e87ad51 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 16:06:12 +0200 Subject: [PATCH 32/41] fix(Gallery): pass down missing prop imageComponent to TransformableImage --- src/Gallery.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Gallery.js b/src/Gallery.js index e2240cd..fd59e0e 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -218,7 +218,7 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { - const { onViewTransformed, onTransformGestureReleased, errorComponent } = this.props; + const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent } = this.props; return ( { @@ -230,6 +230,7 @@ export default class Gallery extends PureComponent { ref={((ref) => { this.imageRefs.set(pageId, ref); })} key={'innerImage#' + pageId} errorComponent={errorComponent} + imageComponent={imageComponent} source={pageData.source} dimensions={pageData.dimensions} /> From 3e052874cfdba369057e8822f7fae8c7961b77bf Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 16:34:32 +0200 Subject: [PATCH 33/41] feat(Gallery): add imageDimensions as the 2nd parameter of imageComponent This might be useful when trying to achieve some more complex layouts --- src/TransformableImage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TransformableImage.js b/src/TransformableImage.js index 2f9a305..926b462 100644 --- a/src/TransformableImage.js +++ b/src/TransformableImage.js @@ -170,7 +170,7 @@ export default class TransformableImage extends PureComponent { capInsets: { left: 0.1, top: 0.1, right: 0.1, bottom: 0.1 } }; - const image = imageComponent ? imageComponent(imageProps) : ; + const image = imageComponent ? imageComponent(imageProps, imageDimensions) : ; return ( Date: Wed, 13 Sep 2017 16:36:23 +0200 Subject: [PATCH 34/41] doc(README): update doc --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fd5483c..ae72b6b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ You can try this example live in **Archriss' showcase app** on [Android](https:/ ## Install -`npm install --save react-native-image-gallery` +`npm install --save react-native-image-gallery` or `yarn add react-native-image-gallery` ## Usage example @@ -64,7 +64,7 @@ Prop | Description | Type | Default ------ | ------ | ------ | ------ `images` | Your array of images | `array` | Required `initialPage` | Image displayed first | `number` | `0` -`imageComponent` | Custom function to render your images | `function` | `` component +`imageComponent` | Custom function to render your images, 1st param is the image props, 2nd is its dimensions | `function` | `` component `errorComponent` | Custom function to render the page of an image that couldn't be displayed | `function` | A `` with a stylized error `pageMargin` | Blank space to show between images | `number` | `0` `onPageSelected` | Fired with the index of page that has been selected | `function` From 26bacead64f9b26d212c2efd1ba11b535f782ed1 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Wed, 13 Sep 2017 16:36:33 +0200 Subject: [PATCH 35/41] chore(package): bump to 1.2.0-rc.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bd3ad7c..bed3ad1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-image-gallery", - "version": "1.2.0-rc.2", + "version": "1.2.0-rc.3", "description": "Pure JavaScript image gallery component for iOS and Android", "main": "src/Gallery.js", "scripts": { From 68507dcbede4a9b8c04078e76163f671d29cde61 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Thu, 14 Sep 2017 11:45:54 +0200 Subject: [PATCH 36/41] refactor(TransformableImage): rename source prop to image, include dimensions in it This is just cleaner overall. This has no impact on the usage of the gallery itself. --- src/Gallery.js | 4 ++-- src/TransformableImage.js | 38 +++++++++++++++++++++----------------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/Gallery.js b/src/Gallery.js index fd59e0e..7986ca2 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -218,6 +218,7 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { + console.log('pageData rendered', pageData); const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent } = this.props; return ( ); } diff --git a/src/TransformableImage.js b/src/TransformableImage.js index 926b462..6cf25e9 100644 --- a/src/TransformableImage.js +++ b/src/TransformableImage.js @@ -4,10 +4,13 @@ import ViewTransformer from 'react-native-view-transformer'; export default class TransformableImage extends PureComponent { static propTypes = { - source: PropTypes.oneOfType([ - PropTypes.shape({ uri: PropTypes.string.isRequired }), - PropTypes.number - ]).isRequired, + image: PropTypes.shape({ + source: PropTypes.oneOfType([ + PropTypes.object, + PropTypes.number + ]).isRequired, + dimensions: PropTypes.shape({ width: PropTypes.number, height: PropTypes.number }) + }).isRequired, style: ViewPropTypes ? ViewPropTypes.style : View.propTypes.style, onLoad: PropTypes.func, onLoadStart: PropTypes.func, @@ -46,14 +49,14 @@ export default class TransformableImage extends PureComponent { viewWidth: 0, viewHeight: 0, imageLoaded: false, - imageDimensions: props.source.dimensions, + imageDimensions: props.image.dimensions, keyAcumulator: 1 }; } componentWillMount () { if (!this.state.imageDimensions) { - this.getImageSize(this.props.source); + this.getImageSize(this.props.image); } } @@ -62,11 +65,11 @@ export default class TransformableImage extends PureComponent { } componentWillReceiveProps (nextProps) { - if (!sameSource(this.props.source, nextProps.source)) { + if (!sameImage(this.props.image, nextProps.image)) { // image source changed, clear last image's imageDimensions info if any - this.setState({ imageDimensions: nextProps.source.dimensions, keyAcumulator: this.state.keyAcumulator + 1 }); - if (!nextProps.source.dimensions) { // if we don't have image dimensions provided in source - this.getImageSize(nextProps.source); + this.setState({ imageDimensions: nextProps.image.dimensions, keyAcumulator: this.state.keyAcumulator + 1 }); + if (!nextProps.image.dimensions) { // if we don't have image dimensions provided in source + this.getImageSize(nextProps.image); } } } @@ -96,11 +99,11 @@ export default class TransformableImage extends PureComponent { } } - getImageSize (source) { - if (!source) { + getImageSize (image) { + if (!image) { return; } - const { dimensions } = this.props; + const { source, dimensions } = image; if (dimensions) { this.setState({ imageDimensions: dimensions }); @@ -142,7 +145,7 @@ export default class TransformableImage extends PureComponent { render () { const { imageDimensions, viewWidth, viewHeight, error, keyAccumulator, imageLoaded } = this.state; - const { style, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed } = this.props; + const { style, image, imageComponent, resizeMode, enableTransform, enableScale, enableTranslate, onTransformGestureReleased, onViewTransformed } = this.props; let maxScale = 1; let contentAspectRatio; @@ -163,6 +166,7 @@ export default class TransformableImage extends PureComponent { const imageProps = { ...this.props, + source: image.source, style: [style, { backgroundColor: 'transparent' }], resizeMode: resizeMode, onLoadStart: this.onLoadStart, @@ -170,7 +174,7 @@ export default class TransformableImage extends PureComponent { capInsets: { left: 0.1, top: 0.1, right: 0.1, bottom: 0.1 } }; - const image = imageComponent ? imageComponent(imageProps, imageDimensions) : ; + const content = imageComponent ? imageComponent(imageProps, imageDimensions) : ; return ( - { error ? this.renderError() : image } + { error ? this.renderError() : content } ); } } -function sameSource (source, nextSource) { +function sameImage (source, nextSource) { if (source === nextSource) { return true; } From a0c84fe93c8748f98a7ecb2254a400edc113d53d Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Thu, 14 Sep 2017 11:46:41 +0200 Subject: [PATCH 37/41] refactor(libraries): move TransformableImage & ViewPager in separate folders --- src/Gallery.js | 5 ++--- .../TransformableImage/index.js} | 4 ---- src/{ViewPager.js => libraries/ViewPager/index.js} | 0 3 files changed, 2 insertions(+), 7 deletions(-) rename src/{TransformableImage.js => libraries/TransformableImage/index.js} (98%) rename src/{ViewPager.js => libraries/ViewPager/index.js} (100%) diff --git a/src/Gallery.js b/src/Gallery.js index 7986ca2..138a0a4 100644 --- a/src/Gallery.js +++ b/src/Gallery.js @@ -1,8 +1,8 @@ import React, { PureComponent, PropTypes } from 'react'; import { View, ViewPropTypes } from 'react-native'; import { createResponder } from 'react-native-gesture-responder'; -import TransformableImage from './TransformableImage'; -import ViewPager from './ViewPager'; +import TransformableImage from './libraries/TransformableImage'; +import ViewPager from './libraries/ViewPager'; export default class Gallery extends PureComponent { static propTypes = { @@ -218,7 +218,6 @@ export default class Gallery extends PureComponent { } renderPage (pageData, pageId) { - console.log('pageData rendered', pageData); const { onViewTransformed, onTransformGestureReleased, errorComponent, imageComponent } = this.props; return ( Date: Thu, 14 Sep 2017 12:09:31 +0200 Subject: [PATCH 38/41] chore(package): import view-transformer inside the project, add prop-types --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index bed3ad1..d562c37 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ }, "homepage": "https://github.com/archriss/react-native-image-gallery#readme", "dependencies": { - "react-native-view-transformer": "0.0.28", + "prop-types": "15.5.10", "react-native-gesture-responder": "0.1.1", "react-native-scroller": "0.0.6", "react-mixin": "^3.0.5", From a962f815f46b3331d8b54600850e08edbbf2f784 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Thu, 14 Sep 2017 12:10:42 +0200 Subject: [PATCH 39/41] refactor(libraries): import ViewTransformer into the project's codebase Updated its code to match the rest of our style. Improve some parts by removing useless binds and so on. --- src/libraries/TransformableImage/index.js | 2 +- src/libraries/ViewTransformer/Rect.js | 57 +++ .../ViewTransformer/TransformUtils.js | 161 +++++++ src/libraries/ViewTransformer/index.js | 421 ++++++++++++++++++ 4 files changed, 640 insertions(+), 1 deletion(-) create mode 100644 src/libraries/ViewTransformer/Rect.js create mode 100644 src/libraries/ViewTransformer/TransformUtils.js create mode 100644 src/libraries/ViewTransformer/index.js diff --git a/src/libraries/TransformableImage/index.js b/src/libraries/TransformableImage/index.js index bfbed67..ed26f3a 100644 --- a/src/libraries/TransformableImage/index.js +++ b/src/libraries/TransformableImage/index.js @@ -1,6 +1,6 @@ import React, { PureComponent, PropTypes } from 'react'; import { View, Text, Image, ViewPropTypes } from 'react-native'; -import ViewTransformer from 'react-native-view-transformer'; +import ViewTransformer from '../ViewTransformer'; export default class TransformableImage extends PureComponent { static propTypes = { diff --git a/src/libraries/ViewTransformer/Rect.js b/src/libraries/ViewTransformer/Rect.js new file mode 100644 index 0000000..be3abe2 --- /dev/null +++ b/src/libraries/ViewTransformer/Rect.js @@ -0,0 +1,57 @@ +export default class Rect { + constructor (left, top, right, bottom) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + + set (left, top, right, bottom) { + this.left = left; + this.top = top; + this.right = right; + this.bottom = bottom; + } + + width () { + return this.right - this.left; + } + + height () { + return this.bottom - this.top; + } + + centerX () { + return (this.left + this.right) / 2; + } + + centerY () { + return (this.top + this.bottom) / 2; + } + + offset (dx, dy) { + this.left += dx; + this.right += dx; + this.top += dy; + this.bottom += dy; + return this; + } + + copy () { + return new Rect(this.left, this.top, this.right, this.bottom); + } + + equals (rect) { + return this.left === rect.left && this.top === rect.top && this.right === rect.right && this.bottom && rect.bottom; + } + + isValid () { + if (typeof this.left === 'number' && + typeof this.right === 'number' && + typeof this.top === 'number' && + typeof this.bottom === 'number') { + return true; + } + return false; + } +} diff --git a/src/libraries/ViewTransformer/TransformUtils.js b/src/libraries/ViewTransformer/TransformUtils.js new file mode 100644 index 0000000..bbdbd2f --- /dev/null +++ b/src/libraries/ViewTransformer/TransformUtils.js @@ -0,0 +1,161 @@ +import Rect from './Rect'; + +export { Rect }; + +export class Transform { + constructor (scale, translateX, translateY, pivot) { + this.scale = scale; + this.translateX = translateX; + this.translateY = translateY; + this.pivot = pivot; + } +} + +function isValidNumber (number) { + if (typeof number === 'number') { + if (!isNaN(number)) { + return true; + } + } + return false; +} + +function isValidRect (rect) { + if (rect instanceof Rect && rect.isValid()) { + return true; + } + return false; +} + +function isValidTransform (transform) { + if (transform && isValidNumber(transform.scale) && isValidNumber(transform.translateX) && isValidNumber(transform.translateY)) { + return true; + } + return false; +} + +export function fitCenterRect (contentAspectRatio, containerRect) { + let w = containerRect.width(); + let h = containerRect.height(); + let viewAspectRatio = w / h; + + if (contentAspectRatio > viewAspectRatio) { + h = w / contentAspectRatio; + } else { + w = h * contentAspectRatio; + } + + return new Rect( + containerRect.centerX() - w / 2, + containerRect.centerY() - h / 2, + containerRect.centerX() + w / 2, + containerRect.centerY() + h / 2 + ); +} + +/** + * The React Native transform system use the center of the view as the pivot when scaling. + * The translations are applied before scaling. + * @param rect + * @param transform + * @returns {*} + */ +export function transformedRect (rect, transform) { + if (!isValidRect(rect)) { + throw new Error('transformedRect...invalid rect'); + } + if (!isValidTransform(transform)) { + throw new Error('transformedRect...invalid transform'); + } + + let scale = transform.scale; + let translateX = transform.translateX; + let translateY = transform.translateY; + + let pivot = transform.pivot; + if (pivot === undefined || pivot === null) { + let width = rect.width() * scale; + let height = rect.height() * scale; + let centerX = rect.centerX() + translateX * scale; + let centerY = rect.centerY() + translateY * scale; + + return new Rect( + centerX - width / 2, + centerY - height / 2, + centerX + width / 2, + centerY + height / 2 + ); + } else { + let pivotX = pivot.x; + let pivotY = pivot.y; + if (!isValidNumber(pivotX) || !isValidNumber(pivotY)) { + throw new Error('transformedRect...invalid pivot x=' + pivot.x + ', y=' + pivot.y); + } + + // first make the center still + let resultRect = transformedRect(rect, { + scale, translateX, translateY + }); + + // the pivot moved during scaling, now move it back + let dx = (scale - 1) * (pivotX - resultRect.centerX()); + let dy = (scale - 1) * (pivotY - resultRect.centerY()); + return resultRect.offset(-dx, -dy); + } +} + +/** + * Calculate the transform from fromRect to toRect + * @param fromRect + * @param toRect + * @returns {Transform} + */ +export function getTransform (fromRect, toRect) { + let scale = toRect.width() / fromRect.width(); + let translateX = (toRect.centerX() - fromRect.centerX()) / scale; + let translateY = (toRect.centerY() - fromRect.centerY()) / scale; + + return new Transform(scale, translateX, translateY); +} + +/** + * Align edges of the rect with the viewport to avoid unnecessary blank space. NO scaling is performed here. + * @param rect + * @param viewPortRect + * @returns {*|{line, column}|{column, line}|{x}} + */ +export function alignedRect (rect, viewPortRect) { + let dx = 0; + let dy = 0; + + if (rect.width() > viewPortRect.width()) { + if (rect.left > viewPortRect.left) { + dx = viewPortRect.left - rect.left; + } else if (rect.right < viewPortRect.right) { + dx = viewPortRect.right - rect.right; + } + } else { + dx = viewPortRect.centerX() - rect.centerX(); + } + + if (rect.height() > viewPortRect.height()) { + if (rect.top > viewPortRect.top) { + dy = viewPortRect.top - rect.top; + } else if (rect.bottom < viewPortRect.bottom) { + dy = viewPortRect.bottom - rect.bottom; + } + } else { + dy = viewPortRect.centerY() - rect.centerY(); + } + + return rect.copy().offset(dx, dy); +} + +export function availableTranslateSpace (rect, viewPortRect) { + return { + left: viewPortRect.left - rect.left, + right: rect.right - viewPortRect.right, + top: viewPortRect.top - rect.top, + bottom: rect.bottom - viewPortRect.bottom + }; +} diff --git a/src/libraries/ViewTransformer/index.js b/src/libraries/ViewTransformer/index.js new file mode 100644 index 0000000..d09f6ed --- /dev/null +++ b/src/libraries/ViewTransformer/index.js @@ -0,0 +1,421 @@ +import React from 'react'; +import ReactNative, { View, Animated, Easing, NativeModules } from 'react-native'; +import Scroller from 'react-native-scroller'; +import PropTypes from 'prop-types'; +import { createResponder } from 'react-native-gesture-responder'; +import { Rect, Transform, transformedRect, availableTranslateSpace, fitCenterRect, alignedRect, getTransform } from './TransformUtils'; + +export default class ViewTransformer extends React.Component { + static Rect = Rect; + static getTransform = getTransform; + + static propTypes = { + enableTransform: PropTypes.bool, + enableScale: PropTypes.bool, + enableTranslate: PropTypes.bool, + maxOverScrollDistance: PropTypes.number, + maxScale: PropTypes.number, + contentAspectRatio: PropTypes.number, + enableResistance: PropTypes.bool, + onViewTransformed: PropTypes.func, + onTransformGestureReleased: PropTypes.func, + onSingleTapConfirmed: PropTypes.func, + onLayout: PropTypes.func, + onTransformStart: PropTypes.func, + children: PropTypes.node + }; + + static defaultProps = { + maxOverScrollDistance: 20, + enableScale: true, + enableTranslate: true, + enableTransform: true, + maxScale: 1, + enableResistance: false + }; + + constructor (props) { + super(props); + this.state = { + // transform state + scale: 1, + translateX: 0, + translateY: 0, + // animation state + animator: new Animated.Value(0), + // layout + width: 0, + height: 0, + pageX: 0, + pageY: 0 + }; + this._viewPortRect = new Rect(); // A holder to avoid new too much + + this.onLayout = this.onLayout.bind(this); + this.cancelAnimation = this.cancelAnimation.bind(this); + this.contentRect = this.contentRect.bind(this); + this.transformedContentRect = this.transformedContentRect.bind(this); + this.animate = this.animate.bind(this); + + this.scroller = new Scroller(true, (dx, dy, scroller) => { + if (dx === 0 && dy === 0 && scroller.isFinished()) { + this.animateBounce(); + return; + } + + this.updateTransform({ + translateX: this.state.translateX + dx / this.state.scale, + translateY: this.state.translateY + dy / this.state.scale + }); + }); + } + + viewPortRect () { + this._viewPortRect.set(0, 0, this.state.width, this.state.height); + return this._viewPortRect; + } + + contentRect () { + let rect = this.viewPortRect().copy(); + if (this.props.contentAspectRatio && this.props.contentAspectRatio > 0) { + rect = fitCenterRect(this.props.contentAspectRatio, rect); + } + return rect; + } + + transformedContentRect () { + let rect = transformedRect(this.viewPortRect(), this.currentTransform()); + if (this.props.contentAspectRatio && this.props.contentAspectRatio > 0) { + rect = fitCenterRect(this.props.contentAspectRatio, rect); + } + return rect; + } + + currentTransform () { + return new Transform(this.state.scale, this.state.translateX, this.state.translateY); + } + + componentWillMount () { + this.gestureResponder = createResponder({ + onStartShouldSetResponder: (evt, gestureState) => true, + onMoveShouldSetResponderCapture: (evt, gestureState) => true, + // onMoveShouldSetResponder: this.handleMove, + onResponderMove: this.onResponderMove, + onResponderGrant: this.onResponderGrant, + onResponderRelease: this.onResponderRelease, + onResponderTerminate: this.onResponderRelease, + onResponderTerminationRequest: (evt, gestureState) => false, // Do not allow parent view to intercept gesture + onResponderSingleTapConfirmed: (evt, gestureState) => { + this.props.onSingleTapConfirmed && this.props.onSingleTapConfirmed(); + } + }); + } + + componentDidUpdate (prevProps, prevState) { + this.props.onViewTransformed && this.props.onViewTransformed({ + scale: this.state.scale, + translateX: this.state.translateX, + translateY: this.state.translateY + }); + } + + componentWillUnmount () { + this.cancelAnimation(); + } + + render () { + let gestureResponder = this.gestureResponder; + if (!this.props.enableTransform) { + gestureResponder = {}; + } + + return ( + + + { this.props.children } + + + ); + } + + onLayout (e) { + const {width, height} = e.nativeEvent.layout; + if (width !== this.state.width || height !== this.state.height) { + this.setState({width, height}); + } + this.measureLayout(); + + this.props.onLayout && this.props.onLayout(e); + } + + measureLayout () { + let handle = ReactNative.findNodeHandle(this.refs['innerViewRef']); + NativeModules.UIManager.measure(handle, (x, y, width, height, pageX, pageY) => { + if (typeof pageX === 'number' && typeof pageY === 'number') { // avoid undefined values on Android devices + if (this.state.pageX !== pageX || this.state.pageY !== pageY) { + this.setState({ pageX: pageX, pageY: pageY }); + } + } + }); + } + + onResponderGrant (evt, gestureState) { + this.props.onTransformStart && this.props.onTransformStart(); + this.setState({responderGranted: true}); + this.measureLayout(); + } + + onResponderMove (evt, gestureState) { + this.cancelAnimation(); + + let dx = gestureState.moveX - gestureState.previousMoveX; + let dy = gestureState.moveY - gestureState.previousMoveY; + if (this.props.enableResistance) { + let d = this.applyResistance(dx, dy); + dx = d.dx; + dy = d.dy; + } + + if (!this.props.enableTranslate) { + dx = dy = 0; + } + + let transform = {}; + if (gestureState.previousPinch && gestureState.pinch && this.props.enableScale) { + let scaleBy = gestureState.pinch / gestureState.previousPinch; + let pivotX = gestureState.moveX - this.state.pageX; + let pivotY = gestureState.moveY - this.state.pageY; + + let rect = transformedRect( + transformedRect( + this.contentRect(), + this.currentTransform() + ), + new Transform(scaleBy, dx, dy, { x: pivotX, y: pivotY }) + ); + transform = getTransform(this.contentRect(), rect); + } else { + if (Math.abs(dx) > 2 * Math.abs(dy)) { + dy = 0; + } else if (Math.abs(dy) > 2 * Math.abs(dx)) { + dx = 0; + } + transform.translateX = this.state.translateX + dx / this.state.scale; + transform.translateY = this.state.translateY + dy / this.state.scale; + } + + this.updateTransform(transform); + return true; + } + + onResponderRelease (evt, gestureState) { + let handled = this.props.onTransformGestureReleased && this.props.onTransformGestureReleased({ + scale: this.state.scale, + translateX: this.state.translateX, + translateY: this.state.translateY + }); + if (handled) { + return; + } + + if (gestureState.doubleTapUp) { + if (!this.props.enableScale) { + this.animateBounce(); + return; + } + let pivotX = 0; + let pivotY = 0; + if (gestureState.dx || gestureState.dy) { + pivotX = gestureState.moveX - this.state.pageX; + pivotY = gestureState.moveY - this.state.pageY; + } else { + pivotX = gestureState.x0 - this.state.pageX; + pivotY = gestureState.y0 - this.state.pageY; + } + + this.performDoubleTapUp(pivotX, pivotY); + } else { + if (this.props.enableTranslate) { + this.performFling(gestureState.vx, gestureState.vy); + } else { + this.animateBounce(); + } + } + } + + performFling (vx, vy) { + let startX = 0; + let startY = 0; + let maxX, minX, maxY, minY; + let availablePanDistance = availableTranslateSpace(this.transformedContentRect(), this.viewPortRect()); + if (vx > 0) { + minX = 0; + if (availablePanDistance.left > 0) { + maxX = availablePanDistance.left + this.props.maxOverScrollDistance; + } else { + maxX = 0; + } + } else { + maxX = 0; + if (availablePanDistance.right > 0) { + minX = -availablePanDistance.right - this.props.maxOverScrollDistance; + } else { + minX = 0; + } + } + if (vy > 0) { + minY = 0; + if (availablePanDistance.top > 0) { + maxY = availablePanDistance.top + this.props.maxOverScrollDistance; + } else { + maxY = 0; + } + } else { + maxY = 0; + if (availablePanDistance.bottom > 0) { + minY = -availablePanDistance.bottom - this.props.maxOverScrollDistance; + } else { + minY = 0; + } + } + + vx *= 1000; // per second + vy *= 1000; + if (Math.abs(vx) > 2 * Math.abs(vy)) { + vy = 0; + } else if (Math.abs(vy) > 2 * Math.abs(vx)) { + vx = 0; + } + + this.scroller.fling(startX, startY, vx, vy, minX, maxX, minY, maxY); + } + + performDoubleTapUp (pivotX, pivotY) { + let curScale = this.state.scale; + let scaleBy; + if (curScale > (1 + this.props.maxScale) / 2) { + scaleBy = 1 / curScale; + } else { + scaleBy = this.props.maxScale / curScale; + } + + let rect = transformedRect( + this.transformedContentRect(), + new Transform(scaleBy, 0, 0, { x: pivotX, y: pivotY }) + ); + rect = transformedRect( + rect, + new Transform( + 1, + this.viewPortRect().centerX() - pivotX, + this.viewPortRect().centerY() - pivotY + ) + ); + rect = alignedRect(rect, this.viewPortRect()); + this.animate(rect); + } + + applyResistance (dx, dy) { + let availablePanDistance = availableTranslateSpace(this.transformedContentRect(), this.viewPortRect()); + + if ((dx > 0 && availablePanDistance.left < 0) || + (dx < 0 && availablePanDistance.right < 0)) { + dx /= 3; + } + if ((dy > 0 && availablePanDistance.top < 0) || + (dy < 0 && availablePanDistance.bottom < 0)) { + dy /= 3; + } + return { dx, dy }; + } + + cancelAnimation () { + this.state.animator.stopAnimation(); + } + + animate (targetRect, durationInMillis) { + let duration = 200; + if (durationInMillis) { + duration = durationInMillis; + } + + let fromRect = this.transformedContentRect(); + if (fromRect.equals(targetRect)) { + return; + } + + this.state.animator.removeAllListeners(); + this.state.animator.setValue(0); + this.state.animator.addListener((state) => { + let progress = state.value; + + let left = fromRect.left + (targetRect.left - fromRect.left) * progress; + let right = fromRect.right + (targetRect.right - fromRect.right) * progress; + let top = fromRect.top + (targetRect.top - fromRect.top) * progress; + let bottom = fromRect.bottom + (targetRect.bottom - fromRect.bottom) * progress; + + let transform = getTransform(this.contentRect(), new Rect(left, top, right, bottom)); + this.updateTransform(transform); + }); + + Animated.timing( + this.state.animator, + { + toValue: 1, + duration: duration, + easing: Easing.inOut(Easing.ease) + } + ).start(); + } + + animateBounce () { + let curScale = this.state.scale; + let minScale = 1; + let maxScale = this.props.maxScale; + let scaleBy = 1; + if (curScale > maxScale) { + scaleBy = maxScale / curScale; + } else if (curScale < minScale) { + scaleBy = minScale / curScale; + } + + let rect = transformedRect( + this.transformedContentRect(), + new Transform( + scaleBy, + 0, + 0, + { + x: this.viewPortRect().centerX(), + y: this.viewPortRect().centerY() + } + ) + ); + rect = alignedRect(rect, this.viewPortRect()); + this.animate(rect); + } + + updateTransform (transform) { + this.setState(transform); + } + + forceUpdateTransform (transform) { + this.setState(transform); + } + + getAvailableTranslateSpace () { + return availableTranslateSpace(this.transformedContentRect(), this.viewPortRect()); + } +} From f7b14a3c77abaae35c14e8b73e281ac3a1782cd2 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Thu, 14 Sep 2017 12:11:20 +0200 Subject: [PATCH 40/41] chore(package): bump to 1.2.0-rc.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d562c37..1c879d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-image-gallery", - "version": "1.2.0-rc.3", + "version": "1.2.0-rc.4", "description": "Pure JavaScript image gallery component for iOS and Android", "main": "src/Gallery.js", "scripts": { From 6a6399357aaa9e4a1741d226151f495c67c0a5b7 Mon Sep 17 00:00:00 2001 From: Maxime Bertonnier Date: Thu, 14 Sep 2017 15:55:13 +0200 Subject: [PATCH 41/41] doc(README): typos --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ae72b6b..39ac0e2 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ - [Props](#props) - [Scroll state and events](#scroll-state-and-events) ->This used to be a fork of [ldn0x7dc/react-native-gallery](https://github.com/ldn0x7dc/react-native-image-gallery) but since the author has stopped maintaining it, here's our own repo. Props to him for his work ! +>This used to be a fork of [ldn0x7dc/react-native-gallery](https://github.com/ldn0x7dc/react-native-gallery) but since the author has stopped maintaining it, here's our own repo. Props to him for his work ! A pure JavaScript image gallery component for react-native apps with common gestures like pan, pinch and doubleTap, supporting both iOS and Android. @@ -90,4 +90,4 @@ Prop | Description | Type | Default * `'idle'`: there is no interaction with the page scroller happening at the time. * `'dragging'`: there is currently an interaction with the page scroller. - * ``settling'`: there was an interaction with the page scroller, and the page scroller is now finishing it's closing or opening animation. \ No newline at end of file + * `'settling'`: there was an interaction with the page scroller, and the page scroller is now finishing it's closing or opening animation. \ No newline at end of file