Compare commits

...

21 Commits

Author SHA1 Message Date
Nicolas Gallagher
e34e4e38d3 0.0.121 2017-09-07 13:31:47 -07:00
Unknown
b23a4f55dc [add] support for Keyboard API
Close #625
2017-09-07 13:07:33 -07:00
Nicolas Gallagher
26bdf44a4c [fix] TextInput keyPress events when child of Touchable
Fix #612
2017-09-07 11:40:00 -07:00
Nicolas Gallagher
5e98107617 [fix] support "System" as a font-family on web
Fix #622
2017-09-02 12:26:36 -07:00
Nicolas Gallagher
86ea0e5eff Fix source code URLs in docs 2017-08-31 17:42:03 -07:00
Nicolas Gallagher
6e02c5690c [add] support for AssetRegistry
Applies changes from @fmoo to help with Metro packager support. Also
fixed a Flow exposed by this change.
2017-08-31 12:32:24 -07:00
Nicolas Gallagher
c50d808a2b [change] remove 'core' module export 2017-08-31 12:06:48 -07:00
Nicolas Gallagher
130b10c3f7 0.0.120 2017-08-16 16:02:33 -07:00
Nicolas Gallagher
03ddf074ea Update fbjs and inline-style-prefixer 2017-08-16 14:09:31 -07:00
Nicolas Gallagher
f201a0347d Update prettier 2017-08-16 14:07:25 -07:00
Nicolas Gallagher
fffbdff6ca Update eslint packages 2017-08-16 14:04:32 -07:00
Nicolas Gallagher
23e5c8479c Update webpack packages 2017-08-16 14:03:38 -07:00
Nicolas Gallagher
17e5e374ee Update babel packages 2017-08-16 14:01:58 -07:00
Nicolas Gallagher
ef907dce22 [add] StyleSheet validation allows table styles
Fix #605
2017-08-16 11:27:47 -07:00
Nicolas Gallagher
586f134f76 [fix] Text's CSS box-sizing default
Fix #606
2017-08-16 11:01:26 -07:00
Nicolas Gallagher
70e2a75b43 [add] don't warn about use of position:sticky 2017-08-10 17:00:21 -07:00
Nicolas Gallagher
8756c20ade Minor changes and fixes to docs 2017-08-09 09:44:36 -07:00
Nicolas Gallagher
4081d17f25 0.0.119 2017-08-01 12:08:44 -07:00
Sam
4fa6f77d25 [fix] TouchableMixin async race condition
When a Touchable component returns 0 for
`touchableGetHighlightDelayMS()` the mixin may occasionally try to
detect if the press event occurred on the hit area before the hit area
has been determined. Clearing out this value ensures that
`positionOnActivate` is recalculated before that takes place.

Close #586
2017-08-01 11:58:46 -07:00
Andrew Kennedy
17d723559d Add tests for 'Button' component
Close #583
2017-08-01 11:55:37 -07:00
Nicolas Gallagher
8d80885f5d [fix] Dimensions.get when called on the server 2017-08-01 11:55:23 -07:00
51 changed files with 720 additions and 253 deletions

View File

@@ -3,7 +3,11 @@
[![Build Status][travis-image]][travis-url]
[![npm version][npm-image]][npm-url]
[React Native][react-native-url] components and APIs for the Web.
"React Native for Web" brings [React Native][react-native-url]'s
building blocks and touch handling to the Web.
* [UI Explorer and documentation](https://necolas.github.io/react-native-web/storybook/).
* [React Native for Web: Playground](https://glitch.com/edit/#!/react-native-web-playground) using create-react-app.
Browser support: Chrome, Firefox, Safari >= 7, IE 10, Edge.
@@ -13,16 +17,6 @@ Browser support: Chrome, Firefox, Safari >= 7, IE 10, Edge.
[travis-image]: https://travis-ci.org/necolas/react-native-web.svg?branch=master
[travis-url]: https://travis-ci.org/necolas/react-native-web
## Overview
"React Native for Web" is a project to bring React Native's building blocks and
touch handling to the Web.
Browse the [UI Explorer](https://necolas.github.io/react-native-web/storybook/)
to see React Native examples running on Web. Or remix the [React Native for
Web: Playground](https://glitch.com/edit/#!/react-native-web-playground) on
Glitch.
## Quick start
NOTE: React Native for Web supports React/ReactDOM 15.4, 15.5, or 15.6.
@@ -38,7 +32,7 @@ Then read the [Getting Started](docs/guides/getting-started.md) guide.
## Documentation
The [UI Explorer](https://necolas.github.io/react-native-web/storybook/)
interactively documents all the APIs and Components.
interactively documents all the supported APIs and Components.
Guides:

View File

@@ -1 +0,0 @@
module.exports = require('./dist/core');

View File

@@ -12,7 +12,7 @@ import React from 'react';
import UIExplorer, { Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const ActivityIndicatorScreen = () =>
<UIExplorer title="ActivityIndicator" url="components/ActivityIndicator">
<UIExplorer title="ActivityIndicator" url="1-components/ActivityIndicator">
<Description>Displays a customizable activity indicator</Description>
<Section title="Props">
<DocItem name="...View props" />

View File

@@ -18,7 +18,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const ButtonScreen = () =>
<UIExplorer title="Button" url="components/Button">
<UIExplorer title="Button" url="1-components/Button">
<Description>
<AppText>
A basic button component. Supports a minimal level of customization. You can build your own

View File

@@ -26,7 +26,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const ImageScreen = () =>
<UIExplorer title="Image" url="components/Image">
<UIExplorer title="Image" url="1-components/Image">
<Description>
An accessibile image component with support for image resizing, default image, and child
content.

View File

@@ -11,7 +11,7 @@ import React from 'react';
import UIExplorer, { Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const ProgressBarScreen = () =>
<UIExplorer title="ProgressBar" url="components/ProgressBar">
<UIExplorer title="ProgressBar" url="1-components/ProgressBar">
<Description>Display an activity progress bar</Description>
<Section title="Props">
<DocItem name="...View props" />

View File

@@ -19,7 +19,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const ScrollViewScreen = () =>
<UIExplorer title="ScrollView" url="components/ScrollView">
<UIExplorer title="ScrollView" url="1-components/ScrollView">
<Description>
<AppText>
A scrollable <Code>View</Code> that provides itegration with the touch-locking responder

View File

@@ -23,7 +23,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const SwitchScreen = () =>
<UIExplorer title="Switch" url="components/Switch">
<UIExplorer title="Switch" url="1-components/Switch">
<Description>
<AppText>
This is a controlled component that requires an <Code>onValueChange</Code> callback that

View File

@@ -19,7 +19,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const TextScreen = () =>
<UIExplorer title="Text" url="components/Text">
<UIExplorer title="Text" url="1-components/Text">
<Description>
<AppText>
Text is component for displaying text. It supports style, basic touch handling, and inherits

View File

@@ -18,6 +18,7 @@ import PropSecureTextEntry from './examples/PropSecureTextEntry';
import PropSelectTextOnFocus from './examples/PropSelectTextOnFocus';
import TextInputEvents from './examples/TextInputEvents';
import TextInputRewrite, { TextInputRewriteInvalidCharacters } from './examples/Rewrite';
import TouchableWrapper from './examples/TouchableWrapper';
import React from 'react';
import UIExplorer, {
AppText,
@@ -31,7 +32,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const TextInputScreen = () =>
<UIExplorer title="TextInput" url="components/TextInput">
<UIExplorer title="TextInput" url="1-components/TextInput">
<Description>
<AppText>
Accessible single- and multi-line text input via a keyboard. Supports features such as
@@ -362,6 +363,13 @@ nativeEvent: { key: keyValue } }`}</Code>{' '}
render: () => <TextInputRewriteInvalidCharacters />
}}
/>
<DocItem
description="Wrapped in a TouchableWithoutFeedback"
example={{
render: () => <TouchableWrapper />
}}
/>
</Section>
</UIExplorer>;

View File

@@ -0,0 +1,37 @@
/**
* @flow
*/
import React from 'react';
import { styles as helperStyles } from '../helpers';
import { StyleSheet, TextInput, TouchableWithoutFeedback, View } from 'react-native';
export default class TouchableWrapper extends React.Component {
render() {
return (
<TouchableWithoutFeedback onPress={this._handlePress}>
<View style={styles.container}>
<TextInput multiline={false} ref={this._setRef} style={helperStyles.textinput} />
</View>
</TouchableWithoutFeedback>
);
}
_handlePress = () => {
if (this._input) {
this._input.focus();
}
};
_setRef = c => {
this._input = c;
};
}
const styles = StyleSheet.create({
container: {
flexDirection: 'row',
alignItems: 'center',
padding: 50
}
});

View File

@@ -12,7 +12,7 @@ import { TouchableHighlightDisabled } from './examples/PropDisabled';
import UIExplorer, { AppText, Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const TouchableHighlightScreen = () =>
<UIExplorer title="TouchableHighlight" url="components/Touchable">
<UIExplorer title="TouchableHighlight" url="1-components/Touchable">
<Description>
<AppText>
A wrapper for making views respond properly to touches. On press down, the opacity of the

View File

@@ -11,7 +11,7 @@ import { TouchableOpacityDisabled } from './examples/PropDisabled';
import UIExplorer, { AppText, Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const TouchableOpacityScreen = () =>
<UIExplorer title="TouchableOpacity" url="components/Touchable">
<UIExplorer title="TouchableOpacity" url="1-components/Touchable">
<Description>
<AppText>
A wrapper for making views respond properly to touches. On press down, the opacity of the

View File

@@ -19,7 +19,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const TouchableWithoutFeedbackScreen = () =>
<UIExplorer title="TouchableWithoutFeedback" url="components/Touchable">
<UIExplorer title="TouchableWithoutFeedback" url="1-components/Touchable">
<Description>
<AppText>
Do not use unless you have a very good reason. All the elements that respond to press should
@@ -34,6 +34,7 @@ const TouchableWithoutFeedbackScreen = () =>
<Section title="Props">
<DocItem name="...View props" />
<DocItem
name="delayLongPress"
typeInfo="?number"
@@ -43,6 +44,7 @@ const TouchableWithoutFeedbackScreen = () =>
</AppText>
}
/>
<DocItem
name="delayPressIn"
typeInfo="?number"
@@ -52,6 +54,7 @@ const TouchableWithoutFeedbackScreen = () =>
</AppText>
}
/>
<DocItem
name="delayPressOut"
typeInfo="?number"
@@ -61,6 +64,7 @@ const TouchableWithoutFeedbackScreen = () =>
</AppText>
}
/>
<DocItem
name="disabled"
typeInfo="?boolean"
@@ -73,14 +77,19 @@ const TouchableWithoutFeedbackScreen = () =>
render: () => <TouchableWithoutFeedbackDisabled />
}}
/>
<DocItem name="onLongPress" typeInfo="?function" />,
<DocItem name="onLongPress" typeInfo="?function" />
<DocItem
name="onPress"
typeInfo="?function"
description="Called when the touch is released, but not if cancelled (e.g. by a scroll that steals the responder lock)."
/>
<DocItem name="onPressIn" typeInfo="?function" />
<DocItem name="onPressOut" typeInfo="?function" />
<DocItem
name="pressRetentionOffset"
typeInfo="?{top: number, left: number, bottom: number, right: number}"
@@ -90,6 +99,7 @@ back and you'll see that the button is once again reactivated! Move it back and
forth several times while the scroll view is disabled. Ensure you pass in a
constant to reduce memory allocations.`}
/>
<DocItem name="style" typeInfo="?style" />
</Section>

View File

@@ -20,7 +20,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const ViewScreen = () =>
<UIExplorer title="View" url="components/View">
<UIExplorer title="View" url="1-components/View">
<Description>
<AppText>
View is the fundamental UI building block. It is a component that supports style, layout
@@ -233,9 +233,9 @@ const ViewScreen = () =>
<AppText>
Controls whether the View can be the target of touch events. The enhanced{' '}
<Code>pointerEvents</Code> modes provided are not part of the CSS spec, therefore,{' '}
<Code>pointerEvents</Code> is excluded from <Code>style</Code>.
<Code>box-none</Code> preserves pointer events on the element's children;{' '}
<Code>box-only</Code> disables pointer events on the element's children.
<Code>pointerEvents</Code> is excluded from <Code>style</Code>. <Code>box-none</Code>{' '}
preserves pointer events on the element's children; <Code>box-only</Code> disables
pointer events on the element's children.
</AppText>
}
example={{

View File

@@ -13,7 +13,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const AppRegistryScreen = () =>
<UIExplorer title="AppRegistry" url="apis/AppRegistry">
<UIExplorer title="AppRegistry" url="2-apis/AppRegistry">
<Description>
<AppText>
AppRegistry is the control point for registering, running, prerendering, and unmounting all

View File

@@ -16,7 +16,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const AppStateScreen = () =>
<UIExplorer title="AppState" url="apis/AppState">
<UIExplorer title="AppState" url="2-apis/AppState">
<Description>
<AppText>
AppState can tell you if the app is in the foreground or background, and notify you when the

View File

@@ -13,7 +13,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const AsyncStorageScreen = () =>
<UIExplorer title="AsyncStorage" url="apis/AsyncStorage">
<UIExplorer title="AsyncStorage" url="2-apis/AsyncStorage">
<Description>
<AppText>
AsyncStorage is a simple, unencrypted, asynchronous, persistent, key-value storage system

View File

@@ -7,7 +7,7 @@ import SetStringExample from './examples/SetString';
import UIExplorer, { Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const ClipboardScreen = () =>
<UIExplorer title="Clipboard" url="apis/Clipboard">
<UIExplorer title="Clipboard" url="2-apis/Clipboard">
<Description>
Clipboard gives you an interface for setting to the clipboard. (Getting clipboard content is
not supported on web.)

View File

@@ -17,7 +17,7 @@ import UIExplorer, {
import React from 'react';
const DimensionsScreen = () =>
<UIExplorer title="Dimensions" url="apis/Dimensions">
<UIExplorer title="Dimensions" url="2-apis/Dimensions">
<Description>
Note: dimensions may change (e.g., due to device rotation) so any rendering logic or styles
that depend on these constants should try to call this function on every render, rather than

View File

@@ -9,7 +9,7 @@ import React from 'react';
import UIExplorer, { Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const I18nManagerScreen = () =>
<UIExplorer title="I18nManager" url="apis/I18nManager">
<UIExplorer title="I18nManager" url="2-apis/I18nManager">
<Description>Control and set the layout and writing direction of the application.</Description>
<Section title="Properties">
<DocItem

View File

@@ -9,7 +9,7 @@ import React from 'react';
import UIExplorer, { Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const LinkingScreen = () =>
<UIExplorer title="Linking" url="apis/Linking">
<UIExplorer title="Linking" url="2-apis/Linking">
<Description>
Linking gives you a general interface for securely opening external URLs from JavaScript.
</Description>

View File

@@ -14,7 +14,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const NetInfoScreen = () =>
<UIExplorer title="NetInfo" url="apis/NetInfo">
<UIExplorer title="NetInfo" url="2-apis/NetInfo">
<Description>
<AppText>
NetInfo asynchronously determines the online/offline status of the application.

View File

@@ -7,7 +7,7 @@ import React from 'react';
import UIExplorer, { AppText, Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const PanResponderScreen = () =>
<UIExplorer title="PanResponder" url="apis/PanResponder">
<UIExplorer title="PanResponder" url="2-apis/PanResponder">
<Description>
PanResponder reconciles several touches into a single gesture. It makes single-touch gestures
resilient to extra touches, and can be used to recognize simple multi-touch gestures. For more

View File

@@ -13,7 +13,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const PixelRatioScreen = () =>
<UIExplorer title="PixelRatio" url="apis/PixelRatio">
<UIExplorer title="PixelRatio" url="2-apis/PixelRatio">
<Description>PixelRatio class gives access to the device pixel density.</Description>
<Section title="Methods">
<DocItem

View File

@@ -6,7 +6,7 @@ import React from 'react';
import UIExplorer, { Description, DocItem, Section, storiesOf } from '../../ui-explorer';
const PlatformScreen = () =>
<UIExplorer title="Platform" url="apis/Platform">
<UIExplorer title="Platform" url="2-apis/Platform">
<Description>
Detect what is the platform in which the app is running. This piece of functionality can be
useful when only small parts of a component are platform specific.

View File

@@ -13,7 +13,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const StyleSheetScreen = () =>
<UIExplorer title="StyleSheet" url="apis/StyleSheet">
<UIExplorer title="StyleSheet" url="2-apis/StyleSheet">
<Description>
The StyleSheet abstraction converts predefined styles to (vendor-prefixed) CSS without
requiring a compile-time step. Styles that cannot be resolved outside of the render loop

View File

@@ -13,7 +13,7 @@ import UIExplorer, {
} from '../../ui-explorer';
const VibrationScreen = () =>
<UIExplorer title="Vibration" url="apis/Vibration">
<UIExplorer title="Vibration" url="2-apis/Vibration">
<Description>
<AppText>
Vibration is described as a pattern of on-off pulses, which may be of varying lengths. The

View File

@@ -11,6 +11,19 @@ import { StyleSheet, Text, View } from 'react-native';
const Divider = () => <View style={styles.verticalDivider} />;
const createDescription = description => {
const nodeList = React.Children.toArray(description);
if (nodeList.length === 1) {
return (
<Text>
{nodeList}
</Text>
);
} else {
return insertBetween(() => <Divider key={Math.random()} />, nodeList);
}
};
const DocItem = ({ description, example = {}, name, typeInfo, label }) =>
<View style={styles.example}>
{name &&
@@ -19,7 +32,7 @@ const DocItem = ({ description, example = {}, name, typeInfo, label }) =>
</AppText>}
{description &&
<View style={styles.description}>
{insertBetween(() => <Divider key={Math.random()} />, React.Children.toArray(description))}
{createDescription(description)}
</View>}
{(example.render || example.code) &&
<View style={styles.renderBox}>

View File

@@ -1,6 +1,6 @@
{
"name": "react-native-web",
"version": "0.0.118",
"version": "0.0.121",
"description": "React Native for Web",
"main": "dist/index.js",
"files": [
@@ -56,43 +56,43 @@
"dependencies": {
"animated": "^0.2.0",
"array-find-index": "^1.0.2",
"babel-runtime": "^6.23.0",
"babel-runtime": "^6.26.0",
"create-react-class": "^15.6.0",
"debounce": "1.0.2",
"deep-assign": "^2.0.0",
"fbjs": "^0.8.12",
"fbjs": "^0.8.14",
"hyphenate-style-name": "^1.0.2",
"inline-style-prefixer": "^3.0.6",
"inline-style-prefixer": "^3.0.7",
"normalize-css-color": "^1.0.2",
"prop-types": "^15.5.10",
"react-timer-mixin": "^0.13.3"
},
"devDependencies": {
"babel-cli": "^6.24.1",
"babel-core": "^6.25.0",
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-eslint": "^7.2.3",
"babel-loader": "^7.1.1",
"babel-plugin-transform-react-remove-prop-types": "^0.4.6",
"babel-preset-react-native": "^2.1.0",
"babel-plugin-transform-react-remove-prop-types": "^0.4.8",
"babel-preset-react-native": "2.1.0",
"caniuse-api": "^2.0.0",
"del-cli": "^1.1.0",
"enzyme": "^2.9.1",
"enzyme-to-json": "^1.5.1",
"eslint": "^4.2.0",
"eslint": "^4.4.1",
"eslint-config-prettier": "^2.3.0",
"eslint-plugin-promise": "^3.5.0",
"eslint-plugin-react": "^7.1.0",
"eslint-plugin-react": "^7.2.1",
"file-loader": "^0.11.2",
"flow-bin": "^0.49.1",
"jest": "^20.0.4",
"lint-staged": "^4.0.1",
"prettier": "^1.5.2",
"lint-staged": "^4.0.3",
"prettier": "^1.5.3",
"react": "^15.6.1",
"react-dom": "^15.6.1",
"react-test-renderer": "^15.6.1",
"url-loader": "^0.5.9",
"webpack": "^3.1.0",
"webpack-bundle-analyzer": "^2.8.2"
"webpack": "^3.5.5",
"webpack-bundle-analyzer": "^2.9.0"
},
"peerDependencies": {
"react": "15.4.x || 15.5.x || 15.6.x",

View File

@@ -0,0 +1,19 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`apis/Dimensions get 1`] = `
Object {
"fontScale": 1,
"height": 0,
"scale": 1,
"width": 0,
}
`;
exports[`apis/Dimensions get 2`] = `
Object {
"fontScale": 1,
"height": 768,
"scale": 1,
"width": 1024,
}
`;

View File

@@ -3,6 +3,15 @@
import Dimensions from '..';
describe('apis/Dimensions', () => {
test('get', () => {
expect(Dimensions.get('screen')).toMatchSnapshot();
expect(Dimensions.get('window')).toMatchSnapshot();
});
test('set', () => {
expect(() => Dimensions.set({})).toThrow();
});
test('addEventListener', () => {
const handler = jest.fn();
Dimensions.addEventListener('change', handler);

View File

@@ -78,7 +78,8 @@ export default class Dimensions {
}
}
Dimensions._update();
if (canUseDOM) {
Dimensions._update();
window.addEventListener('resize', debounce(Dimensions._update, 16), false);
}

View File

@@ -0,0 +1,24 @@
/**
* Copyright (c) 2016-present, Nicolas Gallagher.
* 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.
*
* @providesModule Keyboard
* @flow
*/
import dismissKeyboard from '../../modules/dismissKeyboard';
const Keyboard = {
addListener() {},
dismiss() {
dismissKeyboard();
},
removeAllListeners() {},
removeListener() {}
};
export default Keyboard;

View File

@@ -15,7 +15,7 @@ import TextInputStylePropTypes from '../../components/TextInput/TextInputStylePr
import TextStylePropTypes from '../../components/Text/TextStylePropTypes';
import ViewStylePropTypes from '../../components/View/ViewStylePropTypes';
import warning from 'fbjs/lib/warning';
import { oneOf, string } from 'prop-types';
import { number, oneOf, string } from 'prop-types';
// Hardcoded because this is a legit case but we don't want to load it from
// a private API. We might likely want to unify style sheet creation with how it
@@ -84,12 +84,16 @@ StyleSheetValidation.addValidStylePropTypes(ImageStylePropTypes);
StyleSheetValidation.addValidStylePropTypes(TextStylePropTypes);
StyleSheetValidation.addValidStylePropTypes(TextInputStylePropTypes);
StyleSheetValidation.addValidStylePropTypes(ViewStylePropTypes);
StyleSheetValidation.addValidStylePropTypes({
appearance: string,
borderCollapse: string,
borderSpacing: oneOf([number, string]),
clear: string,
cursor: string,
float: oneOf(['left', 'none', 'right']),
font: string /* @private */,
listStyle: string,
pointerEvents: string
pointerEvents: string,
tableLayout: string
});

View File

@@ -1,5 +1,17 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`apis/StyleSheet/createReactDOMStyle fontFamily fontFamily: "System" 1`] = `
Object {
"fontFamily": "-apple-system, BlinkMacSystemFont, \\"Segoe UI\\", Roboto, Ubuntu, \\"Helvetica Neue\\", sans-serif",
}
`;
exports[`apis/StyleSheet/createReactDOMStyle fontFamily general case 1`] = `
Object {
"fontFamily": "Georgia, Times",
}
`;
exports[`apis/StyleSheet/createReactDOMStyle shortform -> longform 1`] = `
Object {
"borderBottomColor": "white",

View File

@@ -102,6 +102,16 @@ describe('apis/StyleSheet/createReactDOMStyle', () => {
});
});
describe('fontFamily', () => {
test('general case', () => {
expect(createReactDOMStyle({ fontFamily: 'Georgia, Times' })).toMatchSnapshot();
});
test('fontFamily: "System"', () => {
expect(createReactDOMStyle({ fontFamily: 'System' })).toMatchSnapshot();
});
});
test('shortform -> longform', () => {
const style = {
borderStyle: 'solid',

View File

@@ -52,6 +52,9 @@ const colorProps = {
color: true
};
const systemFontStack =
'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu, "Helvetica Neue", sans-serif';
const alphaSortProps = propsArray =>
propsArray.sort((a, b) => {
if (a < b) {
@@ -144,6 +147,15 @@ const createReducer = (style, styleProps) => {
}
switch (prop) {
// ignore React Native styles
case 'aspectRatio':
case 'elevation':
case 'overlayColor':
case 'resizeMode':
case 'tintColor': {
break;
}
case 'display': {
resolvedStyle.display = value;
// defaults of 'flexBasis:auto' and 'flexShrink:0' have lowest precedence
@@ -157,14 +169,7 @@ const createReducer = (style, styleProps) => {
}
break;
}
// ignore React Native styles
case 'aspectRatio':
case 'elevation':
case 'overlayColor':
case 'resizeMode':
case 'tintColor': {
break;
}
case 'flex': {
if (value > 0) {
resolvedStyle.flexGrow = value;
@@ -179,6 +184,13 @@ const createReducer = (style, styleProps) => {
}
break;
}
case 'fontFamily': {
const isSystem = value === 'System';
resolvedStyle.fontFamily = isSystem ? systemFontStack : value;
break;
}
case 'shadowColor':
case 'shadowOffset':
case 'shadowOpacity':
@@ -189,10 +201,12 @@ const createReducer = (style, styleProps) => {
hasResolvedShadow = true;
break;
}
case 'textAlignVertical': {
resolvedStyle.verticalAlign = value === 'center' ? 'middle' : value;
break;
}
case 'textShadowColor':
case 'textShadowOffset':
case 'textShadowRadius': {
@@ -202,11 +216,13 @@ const createReducer = (style, styleProps) => {
hasResolvedTextShadow = true;
break;
}
case 'transform':
case 'transformMatrix': {
resolveTransform(resolvedStyle, style);
break;
}
default: {
// normalize color values
let finalValue = value;

View File

@@ -1,5 +1,30 @@
/* eslint-env jasmine, jest */
import React from 'react';
import Button from '..';
import { mount, shallow } from 'enzyme';
const findNativeButton = wrapper => wrapper.getDOMNode();
describe('components/Button', () => {
test.skip('NO TEST COVERAGE', () => {});
test('prop "color"', () => {
const onPress = () => {};
const color = 'blue';
const button = findNativeButton(mount(<Button color={color} onPress={onPress} title="" />));
expect(button.style.backgroundColor).toEqual(color);
});
test('prop "onPress"', () => {
const onPress = jest.fn();
const component = shallow(<Button onPress={onPress} title="" />);
component.simulate('press');
expect(onPress).toHaveBeenCalled();
});
test('prop "title"', () => {
const onPress = () => {};
const text = 'Click me';
const component = mount(<Button onPress={onPress} title={text} />);
expect(component.text()).toEqual(text);
});
});

View File

@@ -13,6 +13,7 @@
import applyNativeMethods from '../../modules/applyNativeMethods';
import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';
import createDOMElement from '../../modules/createDOMElement';
import { getAssetByID } from '../../modules/AssetRegistry';
import ImageLoader from '../../modules/ImageLoader';
import ImageResizeMode from './ImageResizeMode';
import ImageStylePropTypes from './ImageStylePropTypes';
@@ -34,6 +35,7 @@ const STATUS_PENDING = 'PENDING';
const STATUS_IDLE = 'IDLE';
const ImageSourcePropType = oneOfType([
number,
shape({
height: number,
uri: string.isRequired,
@@ -47,7 +49,10 @@ const getImageState = (uri, shouldDisplaySource) => {
};
const resolveAssetDimensions = source => {
if (typeof source === 'object') {
if (typeof source === 'number') {
const { height, width } = getAssetByID(source);
return { height, width };
} else if (typeof source === 'object') {
const { height, width } = source;
return { height, width };
}
@@ -55,14 +60,27 @@ const resolveAssetDimensions = source => {
const svgDataUriPattern = /^data:image\/svg\+xml;/;
const resolveAssetSource = source => {
const uri = typeof source === 'object' ? source.uri : source || '';
let uri;
if (typeof source === 'number') {
// get the URI from the packager
const asset = getAssetByID(source);
const scale = asset.scales[0];
const scaleSuffix = scale !== 1 ? `@${scale}x` : '';
uri = asset ? `${asset.httpServerLocation}/${asset.name}${scaleSuffix}.${asset.type}` : '';
} else if (source && source.uri) {
uri = source.uri;
} else {
uri = source || '';
}
// SVG data may contain characters (e.g., #, ") that need to be escaped
if (svgDataUriPattern.test(uri)) {
const parts = uri.split('<svg');
const [prefix, ...svgFragment] = parts;
const svg = encodeURIComponent(`<svg${svgFragment}`);
const svg = encodeURIComponent(`<svg${svgFragment.join('<svg')}`);
return `${prefix}${svg}`;
}
return uri;
};

View File

@@ -2,22 +2,24 @@
exports[`components/Text prop "onPress" 1`] = `
<div
class="rn-borderTopWidth-13yce4e rn-borderRightWidth-fnigne rn-borderBottomWidth-ndvcnb rn-borderLeftWidth-gxnn5r rn-color-homxoj rn-cursor-1loqt21 rn-display-1471scf rn-font-1lw9tu2 rn-marginTop-1mnahxq rn-marginRight-61z16t rn-marginBottom-p1pxzi rn-marginLeft-11wrixw rn-paddingTop-wk8lta rn-paddingRight-9aemit rn-paddingBottom-1mdbw0j rn-paddingLeft-gy4na3 rn-textDecoration-bauka4 rn-whiteSpace-q42fyq rn-wordWrap-qvutc0"
className="rn-borderTopWidth-13yce4e rn-borderRightWidth-fnigne rn-borderBottomWidth-ndvcnb rn-borderLeftWidth-gxnn5r rn-boxSizing-deolkf rn-color-homxoj rn-cursor-1loqt21 rn-display-1471scf rn-font-1lw9tu2 rn-marginTop-1mnahxq rn-marginRight-61z16t rn-marginBottom-p1pxzi rn-marginLeft-11wrixw rn-paddingTop-wk8lta rn-paddingRight-9aemit rn-paddingBottom-1mdbw0j rn-paddingLeft-gy4na3 rn-textDecoration-bauka4 rn-whiteSpace-q42fyq rn-wordWrap-qvutc0"
dir="auto"
tabindex="0"
onClick={[Function]}
onKeyDown={[Function]}
tabIndex="0"
/>
`;
exports[`components/Text prop "selectable" 1`] = `
<div
class="rn-borderTopWidth-13yce4e rn-borderRightWidth-fnigne rn-borderBottomWidth-ndvcnb rn-borderLeftWidth-gxnn5r rn-color-homxoj rn-display-1471scf rn-font-1lw9tu2 rn-marginTop-1mnahxq rn-marginRight-61z16t rn-marginBottom-p1pxzi rn-marginLeft-11wrixw rn-paddingTop-wk8lta rn-paddingRight-9aemit rn-paddingBottom-1mdbw0j rn-paddingLeft-gy4na3 rn-textDecoration-bauka4 rn-whiteSpace-q42fyq rn-wordWrap-qvutc0"
className="rn-borderTopWidth-13yce4e rn-borderRightWidth-fnigne rn-borderBottomWidth-ndvcnb rn-borderLeftWidth-gxnn5r rn-boxSizing-deolkf rn-color-homxoj rn-display-1471scf rn-font-1lw9tu2 rn-marginTop-1mnahxq rn-marginRight-61z16t rn-marginBottom-p1pxzi rn-marginLeft-11wrixw rn-paddingTop-wk8lta rn-paddingRight-9aemit rn-paddingBottom-1mdbw0j rn-paddingLeft-gy4na3 rn-textDecoration-bauka4 rn-whiteSpace-q42fyq rn-wordWrap-qvutc0"
dir="auto"
/>
`;
exports[`components/Text prop "selectable" 2`] = `
<div
class="rn-borderTopWidth-13yce4e rn-borderRightWidth-fnigne rn-borderBottomWidth-ndvcnb rn-borderLeftWidth-gxnn5r rn-color-homxoj rn-display-1471scf rn-font-1lw9tu2 rn-marginTop-1mnahxq rn-marginRight-61z16t rn-marginBottom-p1pxzi rn-marginLeft-11wrixw rn-paddingTop-wk8lta rn-paddingRight-9aemit rn-paddingBottom-1mdbw0j rn-paddingLeft-gy4na3 rn-textDecoration-bauka4 rn-userSelect-lrvibr rn-whiteSpace-q42fyq rn-wordWrap-qvutc0"
className="rn-borderTopWidth-13yce4e rn-borderRightWidth-fnigne rn-borderBottomWidth-ndvcnb rn-borderLeftWidth-gxnn5r rn-boxSizing-deolkf rn-color-homxoj rn-display-1471scf rn-font-1lw9tu2 rn-marginTop-1mnahxq rn-marginRight-61z16t rn-marginBottom-p1pxzi rn-marginLeft-11wrixw rn-paddingTop-wk8lta rn-paddingRight-9aemit rn-paddingBottom-1mdbw0j rn-paddingLeft-gy4na3 rn-textDecoration-bauka4 rn-userSelect-lrvibr rn-whiteSpace-q42fyq rn-wordWrap-qvutc0"
dir="auto"
/>
`;

View File

@@ -37,14 +37,14 @@ describe('components/Text', () => {
test('prop "onPress"', () => {
const onPress = e => {};
const component = render(<Text onPress={onPress} />);
const component = shallow(<Text onPress={onPress} />);
expect(component).toMatchSnapshot();
});
test('prop "selectable"', () => {
let component = render(<Text />);
let component = shallow(<Text />);
expect(component).toMatchSnapshot();
component = render(<Text selectable={false} />);
component = shallow(<Text selectable={false} />);
expect(component).toMatchSnapshot();
});
});

View File

@@ -90,6 +90,7 @@ class Text extends Component {
const styles = StyleSheet.create({
initial: {
borderWidth: 0,
boxSizing: 'border-box',
color: 'inherit',
display: 'inline',
font: 'inherit',

View File

@@ -301,6 +301,9 @@ class TextInput extends Component {
};
_handleKeyDown = e => {
// prevent key events bubbling (see #612)
e.stopPropagation();
// Backspace, Tab, and Cmd+Enter only fire 'keydown' DOM events
if (e.which === 8 || e.which === 9 || (e.which === 13 && e.metaKey)) {
this._handleKeyPress(e);

View File

@@ -399,6 +399,7 @@ const TouchableMixin = {
if (delayMS !== 0) {
this.touchableDelayTimeout = setTimeout(this._handleDelay.bind(this, e), delayMS);
} else {
this.state.touchable.positionOnActivate = null;
this._handleDelay(e);
}

View File

@@ -1,45 +0,0 @@
import findNodeHandle from './modules/findNodeHandle';
import { render, unmountComponentAtNode } from 'react-dom';
// APIs
import I18nManager from './apis/I18nManager';
import Platform from './apis/Platform';
import StyleSheet from './apis/StyleSheet';
// components
import Image from './components/Image';
import Text from './components/Text';
import TextInput from './components/TextInput';
import Touchable from './components/Touchable/Touchable';
import TouchableHighlight from './components/Touchable/TouchableHighlight';
import TouchableOpacity from './components/Touchable/TouchableOpacity';
import TouchableWithoutFeedback from './components/Touchable/TouchableWithoutFeedback';
import View from './components/View';
// modules
import createDOMElement from './modules/createDOMElement';
import modality from './modules/modality';
modality();
const ReactNativeCore = {
createDOMElement,
findNodeHandle,
render,
unmountComponentAtNode,
// APIs
I18nManager,
Platform,
StyleSheet,
// components
Image,
Text,
TextInput,
Touchable,
TouchableHighlight,
TouchableOpacity,
TouchableWithoutFeedback,
View
};
export default ReactNativeCore;

View File

@@ -20,6 +20,7 @@ import {
Easing,
I18nManager,
InteractionManager,
Keyboard,
Linking,
NetInfo,
PanResponder,
@@ -85,6 +86,7 @@ const ReactNative = {
Easing,
I18nManager,
InteractionManager,
Keyboard,
Linking,
NetInfo,
PanResponder,

View File

@@ -14,6 +14,7 @@ export { default as Clipboard } from './apis/Clipboard';
export { default as Dimensions } from './apis/Dimensions';
export { default as Easing } from 'animated/lib/Easing';
export { default as I18nManager } from './apis/I18nManager';
export { default as Keyboard } from './apis/Keyboard';
export { default as InteractionManager } from './apis/InteractionManager';
export { default as Linking } from './apis/Linking';
export { default as NetInfo } from './apis/NetInfo';

View File

@@ -0,0 +1,35 @@
/**
* 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.
*
* @providesModule AssetRegistry
* @flow
*/
export type PackagerAsset = {
__packager_asset: boolean,
fileSystemLocation: string,
httpServerLocation: string,
width: ?number,
height: ?number,
scales: Array<number>,
hash: string,
name: string,
type: string
};
const assets: Array<PackagerAsset> = [];
export function registerAsset(asset: PackagerAsset): number {
// `push` returns new array length, so the first asset will
// get id 1 (not 0) to make the value truthy
return assets.push(asset);
}
export function getAssetByID(assetId: number): PackagerAsset {
return assets[assetId - 1];
}

View File

@@ -65,7 +65,7 @@ const LayoutPropTypes = {
paddingRight: numberOrString,
paddingTop: numberOrString,
paddingVertical: numberOrString,
position: oneOf(['absolute', 'fixed', 'relative', 'static']),
position: oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky']),
right: numberOrString,
top: numberOrString,
visibility: hiddenOrVisible,

524
yarn.lock
View File

@@ -43,10 +43,14 @@ acorn@^4.0.3, acorn@^4.0.4:
version "4.0.11"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.11.tgz#edcda3bd937e7556410d42ed5860f67399c794c0"
acorn@^5.0.0, acorn@^5.0.1, acorn@^5.0.3:
acorn@^5.0.0:
version "5.0.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d"
acorn@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
ajv-keywords@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.1.1.tgz#02550bc605a3e576041565628af972e06c549d50"
@@ -178,6 +182,13 @@ array-flatten@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
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"
@@ -252,24 +263,24 @@ aws4@^1.2.1:
version "1.5.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
babel-cli@^6.24.1:
version "6.24.1"
resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.24.1.tgz#207cd705bba61489b2ea41b5312341cf6aca2283"
babel-cli@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1"
dependencies:
babel-core "^6.24.1"
babel-polyfill "^6.23.0"
babel-register "^6.24.1"
babel-runtime "^6.22.0"
commander "^2.8.1"
convert-source-map "^1.1.0"
babel-core "^6.26.0"
babel-polyfill "^6.26.0"
babel-register "^6.26.0"
babel-runtime "^6.26.0"
commander "^2.11.0"
convert-source-map "^1.5.0"
fs-readdir-recursive "^1.0.0"
glob "^7.0.0"
lodash "^4.2.0"
output-file-sync "^1.1.0"
path-is-absolute "^1.0.0"
glob "^7.1.2"
lodash "^4.17.4"
output-file-sync "^1.1.2"
path-is-absolute "^1.0.1"
slash "^1.0.0"
source-map "^0.5.0"
v8flags "^2.0.10"
source-map "^0.5.6"
v8flags "^2.1.1"
optionalDependencies:
chokidar "^1.6.1"
@@ -281,7 +292,15 @@ babel-code-frame@^6.22.0:
esutils "^2.0.2"
js-tokens "^3.0.0"
babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.25.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-core@^6.0.0, babel-core@^6.24.1:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.25.0.tgz#7dd42b0463c742e9d5296deb3ec67a9322dad729"
dependencies:
@@ -305,6 +324,30 @@ babel-core@^6.0.0, babel-core@^6.24.1, babel-core@^6.25.0:
slash "^1.0.0"
source-map "^0.5.0"
babel-core@^6.26.0:
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-eslint@^7.2.3:
version "7.2.3"
resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827"
@@ -327,6 +370,19 @@ babel-generator@^6.18.0, babel-generator@^6.25.0:
source-map "^0.5.0"
trim-right "^1.0.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.8.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.18.0.tgz#ab02f19a2eb7ace936dd87fa55896d02be59bf71"
@@ -624,11 +680,11 @@ babel-plugin-transform-react-jsx@^6.5.0:
babel-plugin-syntax-jsx "^6.8.0"
babel-runtime "^6.0.0"
babel-plugin-transform-react-remove-prop-types@^0.4.6:
version "0.4.6"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.6.tgz#c3d20ff4e97fb08fa63e86a97b2daab6ad365a19"
babel-plugin-transform-react-remove-prop-types@^0.4.8:
version "0.4.8"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.8.tgz#0aff04bc1d6564ec49cf23bcffb99c11881958db"
dependencies:
babel-traverse "^6.24.1"
babel-traverse "^6.25.0"
babel-plugin-transform-regenerator@^6.5.0:
version "6.16.1"
@@ -645,13 +701,13 @@ babel-plugin-transform-strict-mode@^6.24.1:
babel-runtime "^6.22.0"
babel-types "^6.24.1"
babel-polyfill@^6.23.0:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d"
babel-polyfill@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
dependencies:
babel-runtime "^6.22.0"
core-js "^2.4.0"
regenerator-runtime "^0.10.0"
babel-runtime "^6.26.0"
core-js "^2.5.0"
regenerator-runtime "^0.10.5"
babel-preset-jest@^20.0.3:
version "20.0.3"
@@ -659,7 +715,7 @@ babel-preset-jest@^20.0.3:
dependencies:
babel-plugin-jest-hoist "^20.0.3"
babel-preset-react-native@^2.1.0:
babel-preset-react-native@2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/babel-preset-react-native/-/babel-preset-react-native-2.1.0.tgz#9013ebd82da1c88102bf588810ff59e209ca2b8a"
dependencies:
@@ -705,13 +761,32 @@ babel-register@^6.24.1:
mkdirp "^0.5.1"
source-map-support "^0.4.2"
babel-runtime@^6.0.0, babel-runtime@^6.22.0, babel-runtime@^6.23.0, babel-runtime@^6.9.0, babel-runtime@^6.9.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.22.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1:
version "6.23.0"
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.23.0.tgz#0a9489f144de70efb3ce4300accdb329e2fc543b"
dependencies:
core-js "^2.4.0"
regenerator-runtime "^0.10.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.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071"
@@ -722,6 +797,16 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.25.0:
babylon "^6.17.2"
lodash "^4.2.0"
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.23.1, babel-traverse@^6.24.1, babel-traverse@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1"
@@ -736,6 +821,20 @@ babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-tr
invariant "^2.2.0"
lodash "^4.2.0"
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.16.0, babel-types@^6.18.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.25.0:
version "6.25.0"
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e"
@@ -745,10 +844,23 @@ babel-types@^6.16.0, babel-types@^6.18.0, babel-types@^6.23.0, babel-types@^6.24
lodash "^4.2.0"
to-fast-properties "^1.0.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.13.0, babylon@^6.17.0, babylon@^6.17.2:
version "6.17.3"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.3.tgz#1327d709950b558f204e5352587fd0290f8d8e48"
babylon@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
balanced-match@^0.4.1:
version "0.4.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
@@ -970,7 +1082,7 @@ camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
camelcase@^4.0.0:
camelcase@^4.0.0, camelcase@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@@ -1033,7 +1145,7 @@ cheerio@^0.22.0:
lodash.reject "^4.4.0"
lodash.some "^4.4.0"
chokidar@^1.4.3, chokidar@^1.6.1:
chokidar@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
dependencies:
@@ -1048,6 +1160,21 @@ chokidar@^1.4.3, chokidar@^1.6.1:
optionalDependencies:
fsevents "^1.0.0"
chokidar@^1.7.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
dependencies:
anymatch "^1.3.0"
async-each "^1.0.0"
glob-parent "^2.0.0"
inherits "^2.0.1"
is-binary-path "^1.0.0"
is-glob "^2.0.0"
path-is-absolute "^1.0.0"
readdirp "^2.0.0"
optionalDependencies:
fsevents "^1.0.0"
ci-info@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.0.0.tgz#dc5285f2b4e251821683681c381c3388f46ec534"
@@ -1133,7 +1260,11 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
commander@^2.8.1, commander@^2.9.0:
commander@^2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
commander@^2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
dependencies:
@@ -1196,7 +1327,7 @@ convert-source-map@^1.1.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.3.0.tgz#e9f3e9c6e2728efc2676696a70eb382f73106a67"
convert-source-map@^1.4.0:
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"
@@ -1216,6 +1347,10 @@ core-js@^2.4.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
core-js@^2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.0.tgz#569c050918be6486b3837552028ae0466b717086"
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"
@@ -1277,7 +1412,7 @@ cross-spawn-async@^2.1.1:
lru-cache "^4.0.0"
which "^1.2.8"
cross-spawn@^5.0.1:
cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
dependencies:
@@ -1607,14 +1742,14 @@ encoding@^0.1.11:
dependencies:
iconv-lite "~0.4.13"
enhanced-resolve@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3"
enhanced-resolve@^3.4.0:
version "3.4.1"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e"
dependencies:
graceful-fs "^4.1.2"
memory-fs "^0.4.0"
object-assign "^4.0.1"
tapable "^0.2.5"
tapable "^0.2.7"
entities@^1.1.1, entities@~1.1.1:
version "1.1.1"
@@ -1668,6 +1803,16 @@ es-abstract@^1.6.1:
is-callable "^1.1.3"
is-regex "^1.0.3"
es-abstract@^1.7.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.8.0.tgz#3b00385e85729932beffa9163bbea1234e932914"
dependencies:
es-to-primitive "^1.1.1"
function-bind "^1.1.0"
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"
@@ -1766,13 +1911,13 @@ 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.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.1.0.tgz#27770acf39f5fd49cd0af4083ce58104eb390d4c"
eslint-plugin-react@^7.2.1:
version "7.2.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.2.1.tgz#c2673526ed6571b08c69c5f453d03f5f13e8ddbe"
dependencies:
doctrine "^2.0.0"
has "^1.0.1"
jsx-ast-utils "^1.4.1"
jsx-ast-utils "^2.0.0"
eslint-scope@^3.7.1:
version "3.7.1"
@@ -1781,29 +1926,31 @@ eslint-scope@^3.7.1:
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.2.0.tgz#a2b3184111b198e02e9c7f3cca625a5e01c56b3d"
eslint@^4.4.1:
version "4.4.1"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.4.1.tgz#99cd7eafcffca2ff99a5c8f5f2a474d6364b4bd3"
dependencies:
ajv "^5.2.0"
babel-code-frame "^6.22.0"
chalk "^1.1.3"
concat-stream "^1.6.0"
cross-spawn "^5.1.0"
debug "^2.6.8"
doctrine "^2.0.0"
eslint-scope "^3.7.1"
espree "^3.4.3"
espree "^3.5.0"
esquery "^1.0.0"
estraverse "^4.2.0"
esutils "^2.0.2"
file-entry-cache "^2.0.0"
functional-red-black-tree "^1.0.1"
glob "^7.1.2"
globals "^9.17.0"
ignore "^3.3.3"
imurmurhash "^0.1.4"
inquirer "^3.0.6"
is-resolvable "^1.0.0"
js-yaml "^3.8.4"
js-yaml "^3.9.1"
json-stable-stringify "^1.0.1"
levn "^0.3.0"
lodash "^4.17.4"
@@ -1815,15 +1962,16 @@ eslint@^4.2.0:
pluralize "^4.0.0"
progress "^2.0.0"
require-uncached "^1.0.3"
semver "^5.3.0"
strip-json-comments "~2.0.1"
table "^4.0.1"
text-table "~0.2.0"
espree@^3.4.3:
version "3.4.3"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
espree@^3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.0.tgz#98358625bdd055861ea27e2867ea729faf463d8d"
dependencies:
acorn "^5.0.1"
acorn "^5.1.1"
acorn-jsx "^3.0.0"
esprima@^2.7.1:
@@ -1834,6 +1982,10 @@ esprima@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.1.tgz#02dbcc5ac3ece81070377f99158ec742ab5dda06"
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"
@@ -1913,6 +2065,18 @@ execa@^0.7.0:
signal-exit "^3.0.0"
strip-eof "^1.0.0"
execa@^0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da"
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"
exit-hook@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
@@ -2004,7 +2168,19 @@ fb-watchman@^2.0.0:
dependencies:
bser "^2.0.0"
fbjs@^0.8.12, fbjs@^0.8.9:
fbjs@^0.8.14:
version "0.8.14"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.14.tgz#d1dbe2be254c35a91e09f31f9cd50a40b2a0ed1c"
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"
fbjs@^0.8.9:
version "0.8.12"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.12.tgz#10b5d92f76d45575fd63a217d4ea02bea2f8ed04"
dependencies:
@@ -2094,7 +2270,7 @@ find-up@^1.0.0:
path-exists "^2.0.0"
pinkie-promise "^2.0.0"
find-up@^2.1.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:
@@ -2191,6 +2367,10 @@ function.prototype.name@^1.0.0:
function-bind "^1.1.0"
is-callable "^1.1.2"
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
gauge@~2.7.1:
version "2.7.1"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.1.tgz#388473894fe8be5e13ffcdb8b93e4ed0616428c7"
@@ -2250,17 +2430,6 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
glob@^7.0.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.2"
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
@@ -2279,7 +2448,7 @@ global@^4.3.0:
min-document "^2.19.0"
process "~0.5.1"
globals@^9.0.0, globals@^9.17.0:
globals@^9.0.0, globals@^9.17.0, globals@^9.18.0:
version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
@@ -2371,6 +2540,10 @@ 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-unicode@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -2518,9 +2691,9 @@ ini@~1.3.0:
version "1.3.4"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
inline-style-prefixer@^3.0.6:
version "3.0.6"
resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.6.tgz#b27fe309b4168a31eaf38c8e8c60ab9e7c11731f"
inline-style-prefixer@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-3.0.7.tgz#0ccc92e5902fe6e0d28d975c4258443f880615f8"
dependencies:
bowser "^1.6.0"
css-in-js-utils "^1.0.3"
@@ -2548,7 +2721,7 @@ interpret@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c"
invariant@^2.2.0:
invariant@^2.2.0, invariant@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
dependencies:
@@ -2699,6 +2872,12 @@ is-regex@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.3.tgz#0d55182bddf9f2fde278220aec3a75642c908637"
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"
@@ -3059,13 +3238,24 @@ js-tokens@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.8.4:
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.4.3, js-yaml@^3.7.0:
version "3.8.4"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
dependencies:
argparse "^1.0.7"
esprima "^3.1.1"
js-yaml@^3.9.1:
version "3.9.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.1.tgz#08775cebdfdd359209f0d2acd383c8f86a6904a0"
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
jsbn@~0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
@@ -3148,9 +3338,11 @@ jsprim@^1.2.2:
json-schema "0.2.3"
verror "1.3.6"
jsx-ast-utils@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
jsx-ast-utils@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.0.tgz#ec06a3d60cf307e5e119dac7bad81e89f096f0f8"
dependencies:
array-includes "^3.0.3"
kind-of@^3.0.2:
version "3.0.4"
@@ -3185,13 +3377,13 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
lint-staged@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.0.1.tgz#05365469898439dbade8a455893cf11e24d12b0f"
lint-staged@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.0.3.tgz#1ce55591bc2c83a781a90b69a0a0c8aa0fc6370b"
dependencies:
app-root-path "^2.0.0"
cosmiconfig "^1.1.0"
execa "^0.7.0"
execa "^0.8.0"
listr "^0.12.0"
lodash.chunk "^4.2.0"
minimatch "^3.0.0"
@@ -3256,6 +3448,15 @@ load-json-file@^1.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"
loader-runner@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2"
@@ -3420,6 +3621,12 @@ 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"
memory-fs@^0.4.0, memory-fs@~0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
@@ -3825,11 +4032,19 @@ os-locale@^1.4.0:
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-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"
output-file-sync@^1.1.0:
output-file-sync@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
dependencies:
@@ -3915,7 +4130,7 @@ 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.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"
@@ -3947,6 +4162,12 @@ path-type@^1.0.0:
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"
pbkdf2@^3.0.3:
version "3.0.9"
resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
@@ -3993,9 +4214,9 @@ preserve@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
prettier@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.2.tgz#7ea0751da27b93bfb6cecfcec509994f52d83bb3"
prettier@^1.5.3:
version "1.5.3"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.5.3.tgz#59dadc683345ec6b88f88b94ed4ae7e1da394bfe"
pretty-format@^20.0.3:
version "20.0.3"
@@ -4008,6 +4229,10 @@ private@^0.1.6, private@~0.1.5:
version "0.1.6"
resolved "https://registry.yarnpkg.com/private/-/private-0.1.6.tgz#55c6a976d0f9bafb9924851350fe47b9b5fbb7c1"
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"
@@ -4165,6 +4390,13 @@ read-pkg-up@^1.0.1:
find-up "^1.0.0"
read-pkg "^1.0.0"
read-pkg-up@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
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"
@@ -4173,6 +4405,14 @@ read-pkg@^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.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.6:
version "2.2.9"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
@@ -4217,6 +4457,14 @@ regenerator-runtime@^0.10.0:
version "0.10.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.1.tgz#257f41961ce44558b18f7814af48c17559f9faeb"
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"
regex-cache@^0.4.2:
version "0.4.3"
resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
@@ -4489,6 +4737,12 @@ source-list-map@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085"
source-map-support@^0.4.15:
version "0.4.15"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.15.tgz#03202df65c06d2bd8c7ec2362a193056fef8d3b1"
dependencies:
source-map "^0.5.6"
source-map-support@^0.4.2:
version "0.4.6"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.6.tgz#32552aa64b458392a85eab3b0b5ee61527167aeb"
@@ -4614,7 +4868,7 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1:
dependencies:
ansi-regex "^2.0.0"
strip-bom@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"
@@ -4646,12 +4900,18 @@ supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
supports-color@^3.1.0, supports-color@^3.1.2:
supports-color@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
dependencies:
has-flag "^1.0.0"
supports-color@^4.2.1:
version "4.2.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.1.tgz#65a4bb2631e90e02420dba5554c375a4754bb836"
dependencies:
has-flag "^2.0.0"
symbol-observable@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
@@ -4671,9 +4931,9 @@ table@^4.0.1:
slice-ansi "0.0.4"
string-width "^2.0.0"
tapable@^0.2.5, tapable@~0.2.5:
version "0.2.6"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
tapable@^0.2.7:
version "0.2.8"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22"
tar-pack@~3.3.0:
version "3.3.0"
@@ -4752,6 +5012,10 @@ to-fast-properties@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
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"
@@ -4905,9 +5169,9 @@ uuid@^3.0.0, uuid@^3.0.1:
version "3.1.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
v8flags@^2.0.10:
version "2.0.11"
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
v8flags@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
dependencies:
user-home "^1.1.1"
@@ -4944,12 +5208,12 @@ watch@~0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc"
watchpack@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.3.1.tgz#7d8693907b28ce6013e7f3610aa2a1acf07dad87"
watchpack@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac"
dependencies:
async "^2.1.2"
chokidar "^1.4.3"
chokidar "^1.7.0"
graceful-fs "^4.1.2"
webidl-conversions@^3.0.0:
@@ -4960,11 +5224,11 @@ webidl-conversions@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.1.tgz#8015a17ab83e7e1b311638486ace81da6ce206a0"
webpack-bundle-analyzer@^2.8.2:
version "2.8.2"
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.8.2.tgz#8b6240c29a9d63bc72f09d920fb050adbcce9fe8"
webpack-bundle-analyzer@^2.9.0:
version "2.9.0"
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.0.tgz#b58bc34cc30b27ffdbaf3d00bf27aba6fa29c6e3"
dependencies:
acorn "^5.0.3"
acorn "^5.1.1"
chalk "^1.1.3"
commander "^2.9.0"
ejs "^2.5.6"
@@ -4983,16 +5247,16 @@ webpack-sources@^1.0.1:
source-list-map "^2.0.0"
source-map "~0.5.3"
webpack@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.1.0.tgz#ac0675e500db835f9ab2369d29ba096f51ad0731"
webpack@^3.5.5:
version "3.5.5"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.5.5.tgz#3226f09fc8b3e435ff781e7af34f82b68b26996c"
dependencies:
acorn "^5.0.0"
acorn-dynamic-import "^2.0.0"
ajv "^5.1.5"
ajv-keywords "^2.0.0"
async "^2.1.2"
enhanced-resolve "^3.3.0"
enhanced-resolve "^3.4.0"
escope "^3.6.0"
interpret "^1.0.0"
json-loader "^0.5.4"
@@ -5003,12 +5267,12 @@ webpack@^3.1.0:
mkdirp "~0.5.0"
node-libs-browser "^2.0.0"
source-map "^0.5.3"
supports-color "^3.1.0"
tapable "~0.2.5"
supports-color "^4.2.1"
tapable "^0.2.7"
uglifyjs-webpack-plugin "^0.4.6"
watchpack "^1.3.1"
watchpack "^1.4.0"
webpack-sources "^1.0.1"
yargs "^6.0.0"
yargs "^8.0.2"
whatwg-encoding@^1.0.1:
version "1.0.1"
@@ -5031,6 +5295,10 @@ 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.10, which@^1.2.12, which@^1.2.8, which@^1.2.9:
version "1.2.12"
resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192"
@@ -5119,35 +5387,17 @@ yallist@^2.0.0:
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@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
dependencies:
camelcase "^3.0.0"
yargs@^6.0.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
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 "^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"
camelcase "^4.1.0"
yargs@^7.0.2:
version "7.1.0"
@@ -5167,6 +5417,24 @@ yargs@^7.0.2:
y18n "^3.2.1"
yargs-parser "^5.0.0"
yargs@^8.0.2:
version "8.0.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
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"