diff --git a/.eslintrc b/.eslintrc index 0e5a14b..1ffe2bd 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,148 +1,30 @@ { - "parser": "babel-eslint", - "env": { - "browser": true, - "node": true, - "es6": true + "browser": true }, - "parserOptions": { - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, + "extends": ["callstack-io"], - "extends": [ - "prettier", - "prettier/flowtype", - "prettier/react" - ], - - "plugins": [ - "babel", - "flowtype", - "import", - "react", - "react-native", - "prettier", - ], + "plugins": ["react-native"], "rules": { - "constructor-super": "error", - "no-case-declarations": "error", - "no-class-assign": "error", - "no-cond-assign": "error", - "no-const-assign": "error", - "no-constant-condition": "error", - "no-control-regex": "error", - "no-delete-var": "error", - "no-dupe-args": "error", - "no-dupe-class-members": "error", - "no-dupe-keys": "error", - "no-duplicate-case": "error", - "no-empty": "error", - "no-empty-character-class": "error", - "no-empty-pattern": "error", - "no-ex-assign": "error", - "no-extra-boolean-cast": "error", - "no-extra-semi": "error", - "no-fallthrough": "error", - "no-func-assign": "error", - "no-global-assign": "error", - "no-inner-declarations": "error", - "no-invalid-regexp": "error", - "no-new-symbol": "error", - "no-obj-calls": "error", - "no-octal": "error", - "no-redeclare": "error", - "no-regex-spaces": "error", - "no-self-assign": "error", - "no-sparse-arrays": "error", - "no-this-before-super": "error", - "no-undef": "error", - "no-unexpected-multiline": "error", - "no-unreachable": "error", - "no-unsafe-finally": "error", - "no-unsafe-negation": "error", - "no-unused-labels": "error", - "no-unused-vars": "error", - "require-yield": "error", - "use-isnan": "error", - "valid-typeof": "error", + "one-var": "off", + "no-multi-assign": "off", + "no-nested-ternary": "off", + "global-require": "off", - "babel/new-cap": "off", - "babel/object-curly-spacing": "off", - "babel/arrow-parens": "off", - - "flowtype/boolean-style": ["error", "boolean"], "flowtype/define-flow-type": "error", - "flowtype/no-dupe-keys": "error", - "flowtype/no-types-missing-file-annotation": "error", - "flowtype/no-primitive-constructor-types": "error", "flowtype/no-weak-types": "off", - "flowtype/require-parameter-type": "off", - "flowtype/require-return-type": "off", - "flowtype/require-valid-file-annotation": "error", "flowtype/require-variable-type": "off", "flowtype/sort-keys": "off", "flowtype/type-id-match": "off", "flowtype/use-flow-type": "error", "flowtype/valid-syntax": "error", - "import/no-unresolved": "error", - "import/named": "error", - "import/default": "off", - "import/namespace": "off", - "import/export": "error", - "import/no-named-as-default": "off", - "import/no-named-as-default-member": "off", - "import/no-deprecated": "off", "import/no-extraneous-dependencies": "off", - "import/no-commonjs": "error", - "import/no-amd": "error", - "import/no-nodejs-modules": "off", - "import/imports-first": "error", - "import/no-duplicates": "error", - "import/no-namespace": "off", - "import/extensions": ["error", { "js": "never", "json": "always" }], - "import/order": "off", - - "react/display-name": "off", - "react/forbid-prop-types": "off", - "react/no-danger": "error", - "react/no-deprecated": "error", - "react/no-did-mount-set-state": "error", - "react/no-did-update-set-state": "error", - "react/no-direct-mutation-state": "error", - "react/no-is-mounted": "error", - "react/no-multi-comp": "off", - "react/no-set-state": "off", - "react/no-string-refs": "error", - "react/no-unknown-property": "error", - "react/prefer-es6-class": "error", - "react/prop-types": "error", - "react/react-in-jsx-scope": "error", - "react/require-render-return": "error", - "react/self-closing-comp": "error", - "react/sort-comp": "error", - "react/sort-prop-types": "off", - "react/jsx-boolean-value": ["error", "never"], - "react/jsx-handler-names": "off", - "react/jsx-key": "error", - "react/jsx-no-bind": "off", - "react/jsx-no-duplicate-props": "error", - "react/jsx-no-literals": "off", - "react/jsx-no-undef": "error", - "react/jsx-pascal-case": "off", - "react/jsx-sort-props": "off", - "react/jsx-uses-react": "error", - "react/jsx-uses-vars": "error", + "import/first": "off", "react-native/no-unused-styles": "error", - "react-native/split-platform-components": "off", - - "prettier/prettier": ["error", {"trailingComma": "es5", "singleQuote": true}] + "react-native/split-platform-components": "off" } } diff --git a/docs/pages/src/Home.js b/docs/pages/src/Home.js index bfa7983..776911a 100644 --- a/docs/pages/src/Home.js +++ b/docs/pages/src/Home.js @@ -131,6 +131,7 @@ export default class Home extends React.Component<{}> { {...styles(button, secondary)} href="https://github.com/callstack/react-native-paper" target="_blank" + rel="noopener noreferrer" > GitHub @@ -138,7 +139,11 @@ export default class Home extends React.Component<{}> {
Scan with{' '} - + Expo {' '} to try it out @@ -146,13 +151,19 @@ export default class Home extends React.Component<{}> { - + Expo QR Code
- {screenshots.map((image, i) => )} + {// eslint-disable-next-line react/no-array-index-key + screenshots.map((image, i) => )}
); diff --git a/example/.eslintrc b/example/.eslintrc index 5e330ef..32373b5 100644 --- a/example/.eslintrc +++ b/example/.eslintrc @@ -6,6 +6,6 @@ }, "rules": { - "react/prop-types": "off", + "react/prop-types": "off" } } diff --git a/example/src/PaperExample.js b/example/src/PaperExample.js index eb7425e..8f7b43f 100644 --- a/example/src/PaperExample.js +++ b/example/src/PaperExample.js @@ -19,13 +19,11 @@ class PaperExample extends React.Component { style={[styles.container, { backgroundColor: background }]} contentContainerStyle={styles.content} > - {[1, 2, 4, 6, 12].map(i => { - return ( - - {i} - - ); - })} + {[1, 2, 4, 6, 12].map(i => ( + + {i} + + ))} ); } diff --git a/example/src/TextInputExample.js b/example/src/TextInputExample.js index 5b67d0a..3eaa3eb 100644 --- a/example/src/TextInputExample.js +++ b/example/src/TextInputExample.js @@ -1,7 +1,6 @@ /* @flow */ import * as React from 'react'; -import PropTypes from 'prop-types'; import { ScrollView, StyleSheet } from 'react-native'; import { TextInput, withTheme } from 'react-native-paper'; import type { Theme } from 'react-native-paper/types'; @@ -16,9 +15,6 @@ type State = { class TextInputExample extends React.Component { static title = 'TextInput'; - static propTypes = { - theme: PropTypes.object.isRequired, - }; state = { text: '', diff --git a/package.json b/package.json index 7e112f7..41e149b 100644 --- a/package.json +++ b/package.json @@ -23,14 +23,9 @@ }, "devDependencies": { "babel-cli": "^6.26.0", - "babel-eslint": "^8.0.2", - "eslint": "^4.11.0", - "eslint-config-prettier": "^2.8.0", - "eslint-plugin-babel": "^4.1.2", - "eslint-plugin-flowtype": "^2.39.1", - "eslint-plugin-import": "^2.8.0", - "eslint-plugin-prettier": "^2.3.1", - "eslint-plugin-react": "^7.5.1", + "eslint": "^4.18.1", + "eslint-config-callstack-io": "^1.1.1", + "eslint-plugin-prettier": "^2.1.2", "eslint-plugin-react-native": "^3.2.0", "flow-bin": "~0.56.0", "husky": "^0.14.3", diff --git a/src/components/Button.js b/src/components/Button.js index 8e9e1b4..4e77edd 100644 --- a/src/components/Button.js +++ b/src/components/Button.js @@ -141,16 +141,12 @@ class Button extends React.Component { .alpha(0.12) .rgb() .string(); + } else if (buttonColor) { + backgroundColor = buttonColor; + } else if (primary) { + backgroundColor = colors.primary; } else { - if (buttonColor) { - backgroundColor = buttonColor; - } else { - if (primary) { - backgroundColor = colors.primary; - } else { - backgroundColor = theme.dark ? '#535354' : white; - } - } + backgroundColor = theme.dark ? '#535354' : white; } } else { backgroundColor = 'transparent'; @@ -175,20 +171,14 @@ class Button extends React.Component { .alpha(0.26) .rgb() .string(); + } else if (raised) { + textColor = isDark ? white : black; + } else if (buttonColor) { + textColor = buttonColor; + } else if (primary) { + textColor = colors.primary; } else { - if (raised) { - textColor = isDark ? white : black; - } else { - if (buttonColor) { - textColor = buttonColor; - } else { - if (primary) { - textColor = colors.primary; - } else { - textColor = theme.dark ? white : black; - } - } - } + textColor = theme.dark ? white : black; } const rippleColor = color(textColor) diff --git a/src/components/Card/CardActions.js b/src/components/Card/CardActions.js index 464de04..1b57700 100644 --- a/src/components/Card/CardActions.js +++ b/src/components/Card/CardActions.js @@ -26,23 +26,21 @@ type Props = { * ); * ``` */ -const CardActions = (props: Props) => { - return ( - - {React.Children.map( - props.children, - child => - typeof child === 'object' && child !== null - ? /* $FlowFixMe */ - React.cloneElement(child, { - /* $FlowFixMe */ - compact: child.props.compact !== false, - }) - : child - )} - - ); -}; +const CardActions = (props: Props) => ( + + {React.Children.map( + props.children, + child => + typeof child === 'object' && child !== null + ? /* $FlowFixMe */ + React.cloneElement(child, { + /* $FlowFixMe */ + compact: child.props.compact !== false, + }) + : child + )} + +); const styles = StyleSheet.create({ container: { diff --git a/src/components/Card/CardContent.js b/src/components/Card/CardContent.js index 144e05f..44d2ddd 100644 --- a/src/components/Card/CardContent.js +++ b/src/components/Card/CardContent.js @@ -47,26 +47,22 @@ const CardContent = (props: Props) => { if ((prev === cover && next === cover) || total === 1) { contentStyle = styles.only; - } else { - if (index === 0) { - if (next === cover) { - contentStyle = styles.only; - } else { - contentStyle = styles.first; - } - } else if (typeof total === 'number' && index === total - 1) { - if (prev === cover) { - contentStyle = styles.only; - } else { - contentStyle = styles.last; - } + } else if (index === 0) { + if (next === cover) { + contentStyle = styles.only; } else { - if (prev === cover) { - contentStyle = styles.first; - } else if (next === cover) { - contentStyle = styles.last; - } + contentStyle = styles.first; } + } else if (typeof total === 'number' && index === total - 1) { + if (prev === cover) { + contentStyle = styles.only; + } else { + contentStyle = styles.last; + } + } else if (prev === cover) { + contentStyle = styles.first; + } else if (next === cover) { + contentStyle = styles.last; } return ; diff --git a/src/components/Card/CardCover.js b/src/components/Card/CardCover.js index 99ac743..4690533 100644 --- a/src/components/Card/CardCover.js +++ b/src/components/Card/CardCover.js @@ -51,12 +51,10 @@ const CardCover = (props: Props) => { borderTopRightRadius: roundness, }; } - } else { - if (typeof total === 'number' && index === total - 1) { - coverStyle = { - borderBottomLeftRadius: roundness, - }; - } + } else if (typeof total === 'number' && index === total - 1) { + coverStyle = { + borderBottomLeftRadius: roundness, + }; } return ( diff --git a/src/components/Dialog/Dialog.js b/src/components/Dialog/Dialog.js index 3e40c73..87a5b6f 100644 --- a/src/components/Dialog/Dialog.js +++ b/src/components/Dialog/Dialog.js @@ -118,9 +118,8 @@ class Dialog extends React.Component { return React.cloneElement(child, { style: { paddingTop: 24 }, }); - } else { - return child; } + return child; }); } return ( diff --git a/src/components/Dialog/DialogActions.js b/src/components/Dialog/DialogActions.js index b10f290..af67170 100644 --- a/src/components/Dialog/DialogActions.js +++ b/src/components/Dialog/DialogActions.js @@ -38,22 +38,20 @@ type Props = { * } * ``` */ -const DialogActions = (props: Props) => { - return ( - - {React.Children.map( - props.children, - child => - typeof child === 'object' && child !== null - ? /* $FlowFixMe */ - React.cloneElement(child, { - compact: true, - }) - : child - )} - - ); -}; +const DialogActions = (props: Props) => ( + + {React.Children.map( + props.children, + child => + typeof child === 'object' && child !== null + ? /* $FlowFixMe */ + React.cloneElement(child, { + compact: true, + }) + : child + )} + +); const styles = StyleSheet.create({ container: { diff --git a/src/components/Icon.js b/src/components/Icon.js index 7954df3..be30b0c 100644 --- a/src/components/Icon.js +++ b/src/components/Icon.js @@ -19,7 +19,8 @@ const Icon = ({ name, ...props }: Props) => { } else if ( (typeof name === 'object' && name !== null && - (name.hasOwnProperty('uri') && typeof name.uri === 'string')) || + (Object.prototype.hasOwnProperty.call(name, 'uri') && + typeof name.uri === 'string')) || typeof name === 'number' ) { return ( @@ -36,23 +37,22 @@ const Icon = ({ name, ...props }: Props) => { ]} /> ); - } else { - return ( - - {(name: any)} - - ); } + return ( + + {(name: any)} + + ); }; export default Icon; diff --git a/src/components/Portal/PortalHost.js b/src/components/Portal/PortalHost.js index 2e0f16f..fbf58e8 100644 --- a/src/components/Portal/PortalHost.js +++ b/src/components/Portal/PortalHost.js @@ -86,10 +86,9 @@ export default class Portals extends React.Component { } return g; }); - } else { - group = { position, items: [children] }; - return [...acc, group]; } + group = { position, items: [children] }; + return [...acc, group]; }, []) .map(({ position, items }) => ( diff --git a/src/components/ProgressBar.js b/src/components/ProgressBar.js index fc0c00d..33069e0 100644 --- a/src/components/ProgressBar.js +++ b/src/components/ProgressBar.js @@ -7,9 +7,9 @@ import { ProgressViewIOS, ProgressBarAndroid, } from 'react-native'; +import setColor from 'color'; import withTheme from '../core/withTheme'; import type { Theme } from '../types'; -import setColor from 'color'; type Props = { /** diff --git a/src/components/Switch.js b/src/components/Switch.js index 8582410..86ddc37 100644 --- a/src/components/Switch.js +++ b/src/components/Switch.js @@ -3,8 +3,8 @@ import * as React from 'react'; import { grey400, grey800, grey50, white, black } from '../styles/colors'; import { Switch as NativeSwitch, Platform } from 'react-native'; -import withTheme from '../core/withTheme'; import setColor from 'color'; +import withTheme from '../core/withTheme'; import type { Theme } from '../types'; type Props = { diff --git a/src/components/TextInput.js b/src/components/TextInput.js index e9d3339..76bbaa8 100644 --- a/src/components/TextInput.js +++ b/src/components/TextInput.js @@ -151,7 +151,9 @@ class TextInput extends React.Component { _timer: any; _root: any; - _setRef: any = (c: Object) => (this._root = c); + _setRef: any = (c: Object) => { + this._root = c; + }; _animateFocus = () => { Animated.timing(this.state.focused, { diff --git a/src/components/TouchableIcon.js b/src/components/TouchableIcon.js index 8fab0e1..750f3c4 100644 --- a/src/components/TouchableIcon.js +++ b/src/components/TouchableIcon.js @@ -13,14 +13,12 @@ type Props = { onPress: Function, }; -const TouchableIcon = ({ name, iconStyle, onPress, ...rest }: Props) => { - return ( - - - - - - ); -}; +const TouchableIcon = ({ name, iconStyle, onPress, ...rest }: Props) => ( + + + + + +); export default TouchableIcon; diff --git a/src/components/Typography/Text.js b/src/components/Typography/Text.js index 799de39..1aa8789 100644 --- a/src/components/Typography/Text.js +++ b/src/components/Typography/Text.js @@ -31,7 +31,9 @@ class Text extends React.Component { return ( (this._root = c)} + ref={c => { + this._root = c; + }} style={[ { fontFamily: theme.fonts.regular, color: theme.colors.text }, style, diff --git a/src/core/withTheme.js b/src/core/withTheme.js index 9d67ab6..ea15006 100644 --- a/src/core/withTheme.js +++ b/src/core/withTheme.js @@ -68,13 +68,10 @@ export default function withTheme( this._subscription && this._subscription.remove(); } - _merge = (theme: Theme, props: *) => { + _merge = (theme: Theme, props: *) => // Only merge if both theme from context and props are present // Avoiding unnecessary merge allows us to check equality by reference - return theme && props.theme - ? merge(theme, props.theme) - : theme || props.theme; - }; + theme && props.theme ? merge(theme, props.theme) : theme || props.theme; _subscription: { remove: Function }; _root: any; @@ -88,7 +85,9 @@ export default function withTheme( element = ( (this._root = c)} + ref={c => { + this._root = c; + }} theme={this.state.theme} /> ); diff --git a/yarn.lock b/yarn.lock index 5588bc8..abb6390 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,53 +2,70 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-beta.32", "@babel/code-frame@^7.0.0-beta.31": - version "7.0.0-beta.32" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.32.tgz#04f231b8ec70370df830d9926ce0f5add074ec4c" +"@babel/code-frame@7.0.0-beta.40", "@babel/code-frame@^7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.40.tgz#37e2b0cf7c56026b4b21d3927cadf81adec32ac6" + dependencies: + "@babel/highlight" "7.0.0-beta.40" + +"@babel/generator@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.40.tgz#ab61f9556f4f71dbd1138949c795bb9a21e302ea" + dependencies: + "@babel/types" "7.0.0-beta.40" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.40.tgz#9d033341ab16517f40d43a73f2d81fc431ccd7b6" + dependencies: + "@babel/helper-get-function-arity" "7.0.0-beta.40" + "@babel/template" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.40" + +"@babel/helper-get-function-arity@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.40.tgz#ac0419cf067b0ec16453e1274f03878195791c6e" + dependencies: + "@babel/types" "7.0.0-beta.40" + +"@babel/highlight@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.40.tgz#b43d67d76bf46e1d10d227f68cddcd263786b255" dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^3.0.0" -"@babel/helper-function-name@7.0.0-beta.32": - version "7.0.0-beta.32" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.32.tgz#6161af4419f1b4e3ed2d28c0c79c160e218be1f3" +"@babel/template@7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.40.tgz#034988c6424eb5c3268fe6a608626de1f4410fc8" dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.32" - "@babel/template" "7.0.0-beta.32" - "@babel/types" "7.0.0-beta.32" - -"@babel/helper-get-function-arity@7.0.0-beta.32": - version "7.0.0-beta.32" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.32.tgz#93721a99db3757de575a83bab7c453299abca568" - dependencies: - "@babel/types" "7.0.0-beta.32" - -"@babel/template@7.0.0-beta.32": - version "7.0.0-beta.32" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.32.tgz#e1d9fdbd2a7bcf128f2f920744a67dab18072495" - dependencies: - "@babel/code-frame" "7.0.0-beta.32" - "@babel/types" "7.0.0-beta.32" - babylon "7.0.0-beta.32" + "@babel/code-frame" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.40" + babylon "7.0.0-beta.40" lodash "^4.2.0" -"@babel/traverse@^7.0.0-beta.31": - version "7.0.0-beta.32" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.32.tgz#b78b754c6e1af3360626183738e4c7a05951bc99" +"@babel/traverse@^7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.40.tgz#d140e449b2e093ef9fe1a2eecc28421ffb4e521e" dependencies: - "@babel/code-frame" "7.0.0-beta.32" - "@babel/helper-function-name" "7.0.0-beta.32" - "@babel/types" "7.0.0-beta.32" - babylon "7.0.0-beta.32" + "@babel/code-frame" "7.0.0-beta.40" + "@babel/generator" "7.0.0-beta.40" + "@babel/helper-function-name" "7.0.0-beta.40" + "@babel/types" "7.0.0-beta.40" + babylon "7.0.0-beta.40" debug "^3.0.1" - globals "^10.0.0" + globals "^11.1.0" invariant "^2.2.0" lodash "^4.2.0" -"@babel/types@7.0.0-beta.32", "@babel/types@^7.0.0-beta.31": - version "7.0.0-beta.32" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.32.tgz#c317d0ecc89297b80bbcb2f50608e31f6452a5ff" +"@babel/types@7.0.0-beta.40", "@babel/types@^7.0.0-beta.40": + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.40.tgz#25c3d7aae14126abe05fcb098c65a66b6d6b8c14" dependencies: esutils "^2.0.2" lodash "^4.2.0" @@ -169,6 +186,13 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +aria-query@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e" + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -240,6 +264,10 @@ assert-plus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -266,6 +294,12 @@ aws4@^1.2.1, aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" +axobject-query@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" + dependencies: + ast-types-flow "0.0.7" + babel-cli@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" @@ -327,14 +361,16 @@ babel-core@^6.24.1, babel-core@^6.26.0, babel-core@^6.7.2: slash "^1.0.0" source-map "^0.5.6" -babel-eslint@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.0.2.tgz#e44fb9a037d749486071d52d65312f5c20aa7530" +babel-eslint@^8.2.1: + version "8.2.2" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.2.2.tgz#1102273354c6f0b29b4ea28a65f97d122296b68b" dependencies: - "@babel/code-frame" "^7.0.0-beta.31" - "@babel/traverse" "^7.0.0-beta.31" - "@babel/types" "^7.0.0-beta.31" - babylon "^7.0.0-beta.31" + "@babel/code-frame" "^7.0.0-beta.40" + "@babel/traverse" "^7.0.0-beta.40" + "@babel/types" "^7.0.0-beta.40" + babylon "^7.0.0-beta.40" + eslint-scope "~3.7.1" + eslint-visitor-keys "^1.0.0" babel-generator@^6.24.1: version "6.25.0" @@ -887,9 +923,9 @@ babel-types@^6.24.1: lodash "^4.2.0" to-fast-properties "^1.0.1" -babylon@7.0.0-beta.32, babylon@^7.0.0-beta.31: - version "7.0.0-beta.32" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.32.tgz#e9033cb077f64d6895f4125968b37dc0a8c3bc6e" +babylon@7.0.0-beta.40, babylon@^7.0.0-beta.40: + version "7.0.0-beta.40" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.40.tgz#91fc8cd56d5eb98b28e6fde41045f2957779940a" babylon@^6.17.2, babylon@^6.18.0: version "6.18.0" @@ -1336,6 +1372,10 @@ csurf@~1.8.3: csrf "~3.0.0" http-errors "~1.3.1" +damerau-levenshtein@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1364,6 +1404,12 @@ debug@^3.0.1: dependencies: ms "2.0.0" +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + 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" @@ -1449,6 +1495,12 @@ doctrine@^2.0.0: esutils "^2.0.2" isarray "^1.0.0" +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" @@ -1469,6 +1521,10 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" +emoji-regex@^6.1.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -1532,9 +1588,36 @@ 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" -eslint-config-prettier@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.8.0.tgz#929861a11de0249677686eba908118175d1a26bc" +eslint-config-airbnb-base@^11.3.0: + version "11.3.2" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz#8703b11abe3c88ac7ec2b745b7fdf52e00ae680a" + dependencies: + eslint-restricted-globals "^0.1.1" + +eslint-config-airbnb@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-15.1.0.tgz#fd432965a906e30139001ba830f58f73aeddae8e" + dependencies: + eslint-config-airbnb-base "^11.3.0" + +eslint-config-callstack-io@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/eslint-config-callstack-io/-/eslint-config-callstack-io-1.1.1.tgz#3bd46d2ce8f99abf940e2189142dd6c283431ade" + dependencies: + babel-eslint "^8.2.1" + eslint-config-airbnb "^15.1.0" + eslint-config-prettier "^2.6.0" + eslint-plugin-flowtype "^2.35.0" + eslint-plugin-import "^2.7.0" + eslint-plugin-jest "^20.0.3" + eslint-plugin-jsx-a11y "^5.1.1" + eslint-plugin-prettier "^2.1.2" + eslint-plugin-react "^7.5.1" + prettier "^1.10.2" + +eslint-config-prettier@^2.6.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-2.9.0.tgz#5ecd65174d486c22dff389fe036febf502d468a3" dependencies: get-stdin "^5.0.1" @@ -1552,19 +1635,15 @@ eslint-module-utils@^2.1.1: debug "^2.6.8" pkg-dir "^1.0.0" -eslint-plugin-babel@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz#79202a0e35757dd92780919b2336f1fa2fe53c1e" - -eslint-plugin-flowtype@^2.39.1: - version "2.39.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.39.1.tgz#b5624622a0388bcd969f4351131232dcb9649cd5" +eslint-plugin-flowtype@^2.35.0: + version "2.46.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.46.1.tgz#c4f81d580cd89c82bc3a85a1ccf4ae3a915143a4" dependencies: lodash "^4.15.0" -eslint-plugin-import@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" +eslint-plugin-import@^2.7.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz#26002efbfca5989b7288ac047508bd24f217b169" dependencies: builtin-modules "^1.1.1" contains-path "^0.1.0" @@ -1573,13 +1652,29 @@ eslint-plugin-import@^2.8.0: eslint-import-resolver-node "^0.3.1" eslint-module-utils "^2.1.1" has "^1.0.1" - lodash.cond "^4.3.0" + lodash "^4.17.4" minimatch "^3.0.3" read-pkg-up "^2.0.0" -eslint-plugin-prettier@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.3.1.tgz#e7a746c67e716f335274b88295a9ead9f544e44d" +eslint-plugin-jest@^20.0.3: + version "20.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-20.0.3.tgz#ec15eba6ac0ab44a67ebf6e02672ca9d7e7cba29" + +eslint-plugin-jsx-a11y@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1" + dependencies: + aria-query "^0.7.0" + array-includes "^3.0.3" + ast-types-flow "0.0.7" + axobject-query "^0.1.0" + damerau-levenshtein "^1.0.0" + emoji-regex "^6.1.0" + jsx-ast-utils "^1.4.0" + +eslint-plugin-prettier@^2.1.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7" dependencies: fast-diff "^1.1.1" jest-docblock "^21.0.0" @@ -1597,33 +1692,41 @@ eslint-plugin-react@^7.5.1: jsx-ast-utils "^2.0.0" prop-types "^15.6.0" -eslint-scope@^3.7.1: +eslint-restricted-globals@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" + +eslint-scope@^3.7.1, eslint-scope@~3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" dependencies: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint@^4.11.0: - version "4.11.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.11.0.tgz#39a8c82bc0a3783adf5a39fa27fdd9d36fac9a34" +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@^4.18.1: + version "4.18.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.18.1.tgz#b9138440cb1e98b2f44a0d578c6ecf8eae6150b0" dependencies: ajv "^5.3.0" babel-code-frame "^6.22.0" chalk "^2.1.0" concat-stream "^1.6.0" cross-spawn "^5.1.0" - debug "^3.0.1" - doctrine "^2.0.0" + debug "^3.1.0" + doctrine "^2.1.0" eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" espree "^3.5.2" 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" + globals "^11.0.1" ignore "^3.3.3" imurmurhash "^0.1.4" inquirer "^3.0.6" @@ -1670,7 +1773,7 @@ esrecurse@^4.1.0: 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: +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -2038,11 +2141,11 @@ global@^4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-10.1.0.tgz#4425a1881be0d336b4a823a82a7be725d5dd987c" +globals@^11.0.1, globals@^11.1.0: + version "11.3.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.3.0.tgz#e04fdb7b9796d8adac9c8f64c14837b2313378b0" -globals@^9.0.0, globals@^9.17.0, globals@^9.18.0: +globals@^9.0.0, globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -2501,6 +2604,10 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -2554,6 +2661,10 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jsx-ast-utils@^1.4.0: + 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.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" @@ -2647,10 +2758,6 @@ lodash._root@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" -lodash.cond@^4.3.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" - lodash.escape@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" @@ -3279,6 +3386,10 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +prettier@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.10.2.tgz#1af8356d1842276a99a5b5529c82dd9e9ad3cc93" + prettier@^1.8.2: version "1.8.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.8.2.tgz#bff83e7fd573933c607875e5ba3abbdffb96aeb8"