mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	Upgrade eslint
This commit is contained in:
		
							parent
							
								
									e657d2936e
								
							
						
					
					
						commit
						6e0db0a998
					
				@ -67,10 +67,10 @@
 | 
				
			|||||||
    "babel-preset-stage-0": "^6.5.0",
 | 
					    "babel-preset-stage-0": "^6.5.0",
 | 
				
			||||||
    "babel-preset-stage-2": "^6.13.0",
 | 
					    "babel-preset-stage-2": "^6.13.0",
 | 
				
			||||||
    "css-loader": "^0.25.0",
 | 
					    "css-loader": "^0.25.0",
 | 
				
			||||||
    "eslint": "^3.4.0",
 | 
					    "eslint": "^4.1.1",
 | 
				
			||||||
    "eslint-config-finn": "1.0.0-alpha.11",
 | 
					    "eslint-config-finn": "^2.0.0",
 | 
				
			||||||
    "eslint-config-finn-react": "^1.0.0-alpha.2",
 | 
					    "eslint-config-finn-react": "^2.0.0",
 | 
				
			||||||
    "eslint-plugin-react": "^6.2.0",
 | 
					    "eslint-plugin-react": "^7.1.0",
 | 
				
			||||||
    "extract-text-webpack-plugin": "^1.0.1",
 | 
					    "extract-text-webpack-plugin": "^1.0.1",
 | 
				
			||||||
    "identity-obj-proxy": "^3.0.0",
 | 
					    "identity-obj-proxy": "^3.0.0",
 | 
				
			||||||
    "jest": "^19.0.2",
 | 
					    "jest": "^19.0.2",
 | 
				
			||||||
 | 
				
			|||||||
@ -146,42 +146,42 @@ export default class App extends Component {
 | 
				
			|||||||
                        </Navigation>
 | 
					                        </Navigation>
 | 
				
			||||||
                    </Drawer>
 | 
					                    </Drawer>
 | 
				
			||||||
                    <ScrollContainer scrollKey="container" shouldUpdateScroll={shouldUpdateScroll}>
 | 
					                    <ScrollContainer scrollKey="container" shouldUpdateScroll={shouldUpdateScroll}>
 | 
				
			||||||
                    <Content className="mdl-color--grey-50">
 | 
					                        <Content className="mdl-color--grey-50">
 | 
				
			||||||
                        <Grid noSpacing className={styles.content}>
 | 
					                            <Grid noSpacing className={styles.content}>
 | 
				
			||||||
                            <Cell col={12}>
 | 
					                                <Cell col={12}>
 | 
				
			||||||
                                {this.props.children}
 | 
					                                    {this.props.children}
 | 
				
			||||||
                                <ErrorContainer />
 | 
					                                    <ErrorContainer />
 | 
				
			||||||
                            </Cell>
 | 
					                                </Cell>
 | 
				
			||||||
                        </Grid>
 | 
					                            </Grid>
 | 
				
			||||||
                        <Footer size="mega">
 | 
					                            <Footer size="mega">
 | 
				
			||||||
                            <FooterSection type="middle">
 | 
					                                <FooterSection type="middle">
 | 
				
			||||||
                                <FooterDropDownSection title="Menu">
 | 
					                                    <FooterDropDownSection title="Menu">
 | 
				
			||||||
 | 
					                                        <FooterLinkList>
 | 
				
			||||||
 | 
					                                            {createListItem('/features', 'Feature Toggles')}
 | 
				
			||||||
 | 
					                                            {createListItem('/strategies', 'Strategies')}
 | 
				
			||||||
 | 
					                                            {createListItem('/history', 'Event History')}
 | 
				
			||||||
 | 
					                                            {createListItem('/archive', 'Archived Toggles')}
 | 
				
			||||||
 | 
					                                            {createListItem('/applications', 'Applications')}
 | 
				
			||||||
 | 
					                                        </FooterLinkList>
 | 
				
			||||||
 | 
					                                    </FooterDropDownSection>
 | 
				
			||||||
 | 
					                                    <FooterDropDownSection title="Clients">
 | 
				
			||||||
 | 
					                                        <FooterLinkList>
 | 
				
			||||||
 | 
					                                            <a href="https://github.com/Unleash/unleash-client-node/">Node.js</a>
 | 
				
			||||||
 | 
					                                            <a href="https://github.com/Unleash/unleash-client-java/">Java</a>
 | 
				
			||||||
 | 
					                                            <a href="https://github.com/Unleash/unleash-client-go/">Go</a>
 | 
				
			||||||
 | 
					                                        </FooterLinkList>
 | 
				
			||||||
 | 
					                                    </FooterDropDownSection>
 | 
				
			||||||
 | 
					                                </FooterSection>
 | 
				
			||||||
 | 
					                                <FooterSection type="bottom" logo="Unleash">
 | 
				
			||||||
                                    <FooterLinkList>
 | 
					                                    <FooterLinkList>
 | 
				
			||||||
                                        {createListItem('/features', 'Feature Toggles')}
 | 
					                                        <a href="https://github.com/Unleash/unleash/" target="_blank">
 | 
				
			||||||
                                        {createListItem('/strategies', 'Strategies')}
 | 
					 | 
				
			||||||
                                        {createListItem('/history', 'Event History')}
 | 
					 | 
				
			||||||
                                        {createListItem('/archive', 'Archived Toggles')}
 | 
					 | 
				
			||||||
                                        {createListItem('/applications', 'Applications')}
 | 
					 | 
				
			||||||
                                    </FooterLinkList>
 | 
					 | 
				
			||||||
                                </FooterDropDownSection>
 | 
					 | 
				
			||||||
                                <FooterDropDownSection title="Clients">
 | 
					 | 
				
			||||||
                                    <FooterLinkList>
 | 
					 | 
				
			||||||
                                        <a href="https://github.com/Unleash/unleash-client-node/">Node.js</a>
 | 
					 | 
				
			||||||
                                        <a href="https://github.com/Unleash/unleash-client-java/">Java</a>
 | 
					 | 
				
			||||||
                                        <a href="https://github.com/Unleash/unleash-client-go/">Go</a>
 | 
					 | 
				
			||||||
                                    </FooterLinkList>
 | 
					 | 
				
			||||||
                                </FooterDropDownSection>
 | 
					 | 
				
			||||||
                            </FooterSection>
 | 
					 | 
				
			||||||
                            <FooterSection type="bottom" logo="Unleash">
 | 
					 | 
				
			||||||
                                <FooterLinkList>
 | 
					 | 
				
			||||||
                                    <a href="https://github.com/Unleash/unleash/" target="_blank">
 | 
					 | 
				
			||||||
                                            GitHub
 | 
					                                            GitHub
 | 
				
			||||||
                                    </a>
 | 
					                                        </a>
 | 
				
			||||||
                                    <a href="https://finn.no" target="_blank"><small>A product by</small> FINN.no</a>
 | 
					                                        <a href="https://finn.no" target="_blank"><small>A product by</small> FINN.no</a>
 | 
				
			||||||
                                </FooterLinkList>
 | 
					                                    </FooterLinkList>
 | 
				
			||||||
                            </FooterSection>
 | 
					                                </FooterSection>
 | 
				
			||||||
                        </Footer>
 | 
					                            </Footer>
 | 
				
			||||||
                    </Content>
 | 
					                        </Content>
 | 
				
			||||||
                    </ScrollContainer>
 | 
					                    </ScrollContainer>
 | 
				
			||||||
                </Layout>
 | 
					                </Layout>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -69,25 +69,25 @@ class ClientApplications extends PureComponent {
 | 
				
			|||||||
                    <h6> Toggles</h6>
 | 
					                    <h6> Toggles</h6>
 | 
				
			||||||
                    <hr />
 | 
					                    <hr />
 | 
				
			||||||
                    <List>
 | 
					                    <List>
 | 
				
			||||||
                    {seenToggles.map(({ name, description, enabled, notFound }, i) =>
 | 
					                        {seenToggles.map(({ name, description, enabled, notFound }, i) =>
 | 
				
			||||||
                        (notFound ?
 | 
					                            (notFound ?
 | 
				
			||||||
                        <ListItem twoLine key={i}>
 | 
					                                <ListItem twoLine key={i}>
 | 
				
			||||||
                            <ListItemContent icon={'report'} subtitle={'Missing, want to create?'}>
 | 
					                                    <ListItemContent icon={'report'} subtitle={'Missing, want to create?'}>
 | 
				
			||||||
                                <Link to={`/features/create?name=${name}`}>
 | 
					                                        <Link to={`/features/create?name=${name}`}>
 | 
				
			||||||
                                    {name}
 | 
					                                            {name}
 | 
				
			||||||
                                </Link>
 | 
					                                        </Link>
 | 
				
			||||||
                            </ListItemContent>
 | 
					                                    </ListItemContent>
 | 
				
			||||||
                        </ListItem> :
 | 
					                                </ListItem> :
 | 
				
			||||||
                        <ListItem twoLine key={i}>
 | 
					                                <ListItem twoLine key={i}>
 | 
				
			||||||
                            <ListItemContent
 | 
					                                    <ListItemContent
 | 
				
			||||||
                                icon={<span><Switch disabled checked={!!enabled} /></span>}
 | 
					                                        icon={<span><Switch disabled checked={!!enabled} /></span>}
 | 
				
			||||||
                                subtitle={shorten(description, 60)}>
 | 
					                                        subtitle={shorten(description, 60)}>
 | 
				
			||||||
                                <Link to={`/features/view/${name}`}>
 | 
					                                        <Link to={`/features/view/${name}`}>
 | 
				
			||||||
                                    {shorten(name, 50)}
 | 
					                                            {shorten(name, 50)}
 | 
				
			||||||
                                </Link>
 | 
					                                        </Link>
 | 
				
			||||||
                            </ListItemContent>
 | 
					                                    </ListItemContent>
 | 
				
			||||||
                        </ListItem>)
 | 
					                                </ListItem>)
 | 
				
			||||||
                    )}
 | 
					                        )}
 | 
				
			||||||
                    </List>
 | 
					                    </List>
 | 
				
			||||||
                </Cell>
 | 
					                </Cell>
 | 
				
			||||||
                <Cell col={6} tablet={4} phone={12}>
 | 
					                <Cell col={6} tablet={4} phone={12}>
 | 
				
			||||||
@ -96,20 +96,20 @@ class ClientApplications extends PureComponent {
 | 
				
			|||||||
                    <List>
 | 
					                    <List>
 | 
				
			||||||
                        {strategies.map(({ name, description, notFound }, i) => (
 | 
					                        {strategies.map(({ name, description, notFound }, i) => (
 | 
				
			||||||
                            notFound ?
 | 
					                            notFound ?
 | 
				
			||||||
                            <ListItem twoLine key={`${name}-${i}`}>
 | 
					                                <ListItem twoLine key={`${name}-${i}`}>
 | 
				
			||||||
                                <ListItemContent icon={'report'} subtitle={'Missing, want to create?'}>
 | 
					                                    <ListItemContent icon={'report'} subtitle={'Missing, want to create?'}>
 | 
				
			||||||
                                    <Link to={`/strategies/create?name=${name}`}>
 | 
					                                        <Link to={`/strategies/create?name=${name}`}>
 | 
				
			||||||
                                        {name}
 | 
					                                            {name}
 | 
				
			||||||
                                    </Link>
 | 
					                                        </Link>
 | 
				
			||||||
                                </ListItemContent>
 | 
					                                    </ListItemContent>
 | 
				
			||||||
                            </ListItem> :
 | 
					                                </ListItem> :
 | 
				
			||||||
                            <ListItem twoLine key={`${name}-${i}`}>
 | 
					                                <ListItem twoLine key={`${name}-${i}`}>
 | 
				
			||||||
                                <ListItemContent icon={'extension'} subtitle={shorten(description, 60)}>
 | 
					                                    <ListItemContent icon={'extension'} subtitle={shorten(description, 60)}>
 | 
				
			||||||
                                    <Link to={`/strategies/view/${name}`}>
 | 
					                                        <Link to={`/strategies/view/${name}`}>
 | 
				
			||||||
                                        {shorten(name, 50)}
 | 
					                                            {shorten(name, 50)}
 | 
				
			||||||
                                    </Link>
 | 
					                                        </Link>
 | 
				
			||||||
                                </ListItemContent>
 | 
					                                    </ListItemContent>
 | 
				
			||||||
                            </ListItem>
 | 
					                                </ListItem>
 | 
				
			||||||
                        ))}
 | 
					                        ))}
 | 
				
			||||||
                    </List>
 | 
					                    </List>
 | 
				
			||||||
                </Cell>
 | 
					                </Cell>
 | 
				
			||||||
@ -117,17 +117,17 @@ class ClientApplications extends PureComponent {
 | 
				
			|||||||
                    <h6>{instances.length} Instances registered</h6>
 | 
					                    <h6>{instances.length} Instances registered</h6>
 | 
				
			||||||
                    <hr />
 | 
					                    <hr />
 | 
				
			||||||
                    <List>
 | 
					                    <List>
 | 
				
			||||||
                    {instances.map(({ instanceId, clientIp, lastSeen }, i) => (
 | 
					                        {instances.map(({ instanceId, clientIp, lastSeen }, i) => (
 | 
				
			||||||
                        <ListItem key={i} twoLine>
 | 
					                            <ListItem key={i} twoLine>
 | 
				
			||||||
                            <ListItemContent
 | 
					                                <ListItemContent
 | 
				
			||||||
                                icon="timeline"
 | 
					                                    icon="timeline"
 | 
				
			||||||
                                subtitle={
 | 
					                                    subtitle={
 | 
				
			||||||
                                    <span>{clientIp} last seen at <small>{formatFullDateTime(lastSeen)}</small></span>
 | 
					                                        <span>{clientIp} last seen at <small>{formatFullDateTime(lastSeen)}</small></span>
 | 
				
			||||||
                                }>
 | 
					                                    }>
 | 
				
			||||||
                                {instanceId}
 | 
					                                    {instanceId}
 | 
				
			||||||
                            </ListItemContent>
 | 
					                                </ListItemContent>
 | 
				
			||||||
                        </ListItem>
 | 
					                            </ListItem>
 | 
				
			||||||
                    ))}
 | 
					                        ))}
 | 
				
			||||||
                    </List>
 | 
					                    </List>
 | 
				
			||||||
                </Cell>
 | 
					                </Cell>
 | 
				
			||||||
            </Grid>) : (
 | 
					            </Grid>) : (
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,6 @@ import { ProgressBar, Card } from 'react-mdl';
 | 
				
			|||||||
import { AppsLinkList, styles as commonStyles } from '../common';
 | 
					import { AppsLinkList, styles as commonStyles } from '../common';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ClientStrategies extends Component {
 | 
					class ClientStrategies extends Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    componentDidMount () {
 | 
					    componentDidMount () {
 | 
				
			||||||
        this.props.fetchAll();
 | 
					        this.props.fetchAll();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -17,24 +17,24 @@ class ArchiveList extends Component {
 | 
				
			|||||||
            <Card shadow={0} className={commonStyles.fullwidth}>
 | 
					            <Card shadow={0} className={commonStyles.fullwidth}>
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    archive.length > 0 ?
 | 
					                    archive.length > 0 ?
 | 
				
			||||||
                    <div className={commonStyles.horisontalScroll}>
 | 
					                        <div className={commonStyles.horisontalScroll}>
 | 
				
			||||||
                        <DataTable
 | 
					                            <DataTable
 | 
				
			||||||
                            rows={archive}
 | 
					                                rows={archive}
 | 
				
			||||||
                            className={commonStyles.fullwidth}
 | 
					                                className={commonStyles.fullwidth}
 | 
				
			||||||
                            style={{ border: 0 }}>
 | 
					                                style={{ border: 0 }}>
 | 
				
			||||||
                            <TableHeader style={{ width: '25px' }} name="reviveName" cellFormatter={(reviveName) => (
 | 
					                                <TableHeader style={{ width: '25px' }} name="reviveName" cellFormatter={(reviveName) => (
 | 
				
			||||||
                                <IconButton colored name="undo" onClick={() => revive(reviveName)} />
 | 
					                                    <IconButton colored name="undo" onClick={() => revive(reviveName)} />
 | 
				
			||||||
                            )}>Revive</TableHeader>
 | 
					                                )}>Revive</TableHeader>
 | 
				
			||||||
                            <TableHeader style={{ width: '25px' }} name="enabled" cellFormatter={(v) => (v ? 'Yes' : '-')}>
 | 
					                                <TableHeader style={{ width: '25px' }} name="enabled" cellFormatter={(v) => (v ? 'Yes' : '-')}>
 | 
				
			||||||
                                Enabled</TableHeader>
 | 
					                                Enabled</TableHeader>
 | 
				
			||||||
                            <TableHeader name="name">Toggle name</TableHeader>
 | 
					                                <TableHeader name="name">Toggle name</TableHeader>
 | 
				
			||||||
                            <TableHeader numeric name="createdAt">Created</TableHeader>
 | 
					                                <TableHeader numeric name="createdAt">Created</TableHeader>
 | 
				
			||||||
                        </DataTable>
 | 
					                            </DataTable>
 | 
				
			||||||
                    </div> :
 | 
					                        </div> :
 | 
				
			||||||
                    <div className={commonStyles.emptyState}>
 | 
					                        <div className={commonStyles.emptyState}>
 | 
				
			||||||
                            <Icon name="archive" className="mdl-color-text--grey-300" style={{ fontSize: '56px' }}/><br />
 | 
					                            <Icon name="archive" className="mdl-color-text--grey-300" style={{ fontSize: '56px' }}/><br />
 | 
				
			||||||
                            No archived feature toggles, go see <Link to="/features">active toggles here</Link>
 | 
					                            No archived feature toggles, go see <Link to="/features">active toggles here</Link>
 | 
				
			||||||
                    </div>
 | 
					                        </div>
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            </Card>
 | 
					            </Card>
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
import React, { Component, PropTypes } from 'react';
 | 
					import React, { Component, PropTypes } from 'react';
 | 
				
			||||||
import { DataTable, TableHeader }  from 'react-mdl';
 | 
					import { DataTable, TableHeader } from 'react-mdl';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ClientStrategies extends Component {
 | 
					class ClientStrategies extends Component {
 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
 | 
				
			|||||||
@ -15,28 +15,28 @@ export const shorten = (str, len = 50) => (str && str.length > len ? `${str.subs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export const AppsLinkList = ({ apps }) => (
 | 
					export const AppsLinkList = ({ apps }) => (
 | 
				
			||||||
    <List>
 | 
					    <List>
 | 
				
			||||||
    {apps.length > 0 && apps.map(({ appName, description = '-', icon = 'apps' }) => (
 | 
					        {apps.length > 0 && apps.map(({ appName, description = '-', icon = 'apps' }) => (
 | 
				
			||||||
        <ListItem twoLine key={appName}>
 | 
					            <ListItem twoLine key={appName}>
 | 
				
			||||||
            <span className="mdl-list__item-primary-content" style={{ minWidth: 0 }}>
 | 
					                <span className="mdl-list__item-primary-content" style={{ minWidth: 0 }}>
 | 
				
			||||||
                <Icon name={icon} className="mdl-list__item-avatar"/>
 | 
					                    <Icon name={icon} className="mdl-list__item-avatar"/>
 | 
				
			||||||
                <Link to={`/applications/${appName}`} className={[styles.listLink, styles.truncate].join(' ')}>
 | 
					                    <Link to={`/applications/${appName}`} className={[styles.listLink, styles.truncate].join(' ')}>
 | 
				
			||||||
                    {appName}
 | 
					                        {appName}
 | 
				
			||||||
                    <span className={['mdl-list__item-sub-title', styles.truncate].join(' ')}>{description}</span>
 | 
					                        <span className={['mdl-list__item-sub-title', styles.truncate].join(' ')}>{description}</span>
 | 
				
			||||||
                </Link>
 | 
					                    </Link>
 | 
				
			||||||
            </span>
 | 
					                </span>
 | 
				
			||||||
        </ListItem>
 | 
					            </ListItem>
 | 
				
			||||||
    ))}
 | 
					        ))}
 | 
				
			||||||
    </List>
 | 
					    </List>
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const HeaderTitle = ({ title, actions, subtitle }) => (
 | 
					export const HeaderTitle = ({ title, actions, subtitle }) => (
 | 
				
			||||||
    <div style={{ display: 'flex', borderBottom: '1px solid #f1f1f1', marginBottom: '10px', padding: '16px 20px ' }}>
 | 
					    <div style={{ display: 'flex', borderBottom: '1px solid #f1f1f1', marginBottom: '10px', padding: '16px 20px ' }}>
 | 
				
			||||||
            <div style={{ flex: '2' }}>
 | 
					        <div style={{ flex: '2' }}>
 | 
				
			||||||
                <h6 style={{ margin: 0 }}>{title}</h6>
 | 
					            <h6 style={{ margin: 0 }}>{title}</h6>
 | 
				
			||||||
                {subtitle && <small>{subtitle}</small>}
 | 
					            {subtitle && <small>{subtitle}</small>}
 | 
				
			||||||
            </div>
 | 
					        </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            {actions && <div style={{ flex: '1', textAlign: 'right' }}>{actions}</div>}
 | 
					        {actions && <div style={{ flex: '1', textAlign: 'right' }}>{actions}</div>}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -78,15 +78,15 @@ export const SwitchWithLabel = ({ onChange, checked, children, ...switchProps })
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export const TogglesLinkList = ({ toggles }) => (
 | 
					export const TogglesLinkList = ({ toggles }) => (
 | 
				
			||||||
    <List style={{ textAlign: 'left' }} className={styles.truncate}>
 | 
					    <List style={{ textAlign: 'left' }} className={styles.truncate}>
 | 
				
			||||||
    {toggles.length > 0 && toggles.map(({ name, description = '-', icon = 'toggle' }) => (
 | 
					        {toggles.length > 0 && toggles.map(({ name, description = '-', icon = 'toggle' }) => (
 | 
				
			||||||
        <ListItem twoLine key={name}>
 | 
					            <ListItem twoLine key={name}>
 | 
				
			||||||
            <ListItemContent avatar={icon} subtitle={description}>
 | 
					                <ListItemContent avatar={icon} subtitle={description}>
 | 
				
			||||||
                <Link key={name} to={`/features/view/${name}`}>
 | 
					                    <Link key={name} to={`/features/view/${name}`}>
 | 
				
			||||||
                    {name}
 | 
					                        {name}
 | 
				
			||||||
                </Link>
 | 
					                    </Link>
 | 
				
			||||||
            </ListItemContent>
 | 
					                </ListItemContent>
 | 
				
			||||||
        </ListItem>
 | 
					            </ListItem>
 | 
				
			||||||
    ))}
 | 
					        ))}
 | 
				
			||||||
    </List>
 | 
					    </List>
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -103,7 +103,7 @@ export function getIcon (type) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export const IconLink = ({ url, icon }) => (
 | 
					export const IconLink = ({ url, icon }) => (
 | 
				
			||||||
    <a href={url} target="_blank" rel="noopener" className="mdl-color-text--grey-600">
 | 
					    <a href={url} target="_blank" rel="noopener" className="mdl-color-text--grey-600">
 | 
				
			||||||
         <Icon name={icon}/>
 | 
					        <Icon name={icon}/>
 | 
				
			||||||
    </a>
 | 
					    </a>
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,6 @@
 | 
				
			|||||||
import React, { PropTypes } from 'react';
 | 
					import React, { PropTypes } from 'react';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Snackbar, Icon }  from 'react-mdl';
 | 
					import { Snackbar, Icon } from 'react-mdl';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class ErrorComponent extends React.Component {
 | 
					class ErrorComponent extends React.Component {
 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@ const mapDispatchToProps = {
 | 
				
			|||||||
    muteError,
 | 
					    muteError,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const mapStateToProps = (state) =>  ({
 | 
					const mapStateToProps = (state) => ({
 | 
				
			||||||
    errors: state.error.get('list').toArray(),
 | 
					    errors: state.error.get('list').toArray(),
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -27,7 +27,7 @@ const Feature = ({
 | 
				
			|||||||
    const remainingStrategies = strategies.length - strategiesToShow;
 | 
					    const remainingStrategies = strategies.length - strategiesToShow;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const strategyChips = strategies && strategies.slice(0, strategiesToShow).map((s, i) =>
 | 
					    const strategyChips = strategies && strategies.slice(0, strategiesToShow).map((s, i) =>
 | 
				
			||||||
            <Chip className={styles.strategyChip} key={i}>{s.name}</Chip>);
 | 
					        <Chip className={styles.strategyChip} key={i}>{s.name}</Chip>);
 | 
				
			||||||
    const summaryChip = remainingStrategies > 0 &&
 | 
					    const summaryChip = remainingStrategies > 0 &&
 | 
				
			||||||
            <Chip className={styles.strategyChip}>+{remainingStrategies}</Chip>;
 | 
					            <Chip className={styles.strategyChip}>+{remainingStrategies}</Chip>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -58,7 +58,7 @@ const prepare = (methods, dispatch) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    methods.validateName = (featureToggleName) => {
 | 
					    methods.validateName = (featureToggleName) => {
 | 
				
			||||||
        validateName(featureToggleName)
 | 
					        validateName(featureToggleName)
 | 
				
			||||||
            .then(()  => methods.setValue('nameError', undefined))
 | 
					            .then(() => methods.setValue('nameError', undefined))
 | 
				
			||||||
            .catch((err) => methods.setValue('nameError', err.message));
 | 
					            .catch((err) => methods.setValue('nameError', err.message));
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -25,7 +25,7 @@ const mapStateToProps = createMapper({
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const prepare =  (methods, dispatch) => {
 | 
					const prepare = (methods, dispatch) => {
 | 
				
			||||||
    methods.onSubmit = (input) => (
 | 
					    methods.onSubmit = (input) => (
 | 
				
			||||||
        (e) => {
 | 
					        (e) => {
 | 
				
			||||||
            e.preventDefault();
 | 
					            e.preventDefault();
 | 
				
			||||||
@ -35,7 +35,7 @@ const prepare =  (methods, dispatch) => {
 | 
				
			|||||||
                    delete s.id;
 | 
					                    delete s.id;
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
             // TODO: should add error handling
 | 
					            // TODO: should add error handling
 | 
				
			||||||
            requestUpdateFeatureToggle(input)(dispatch)
 | 
					            requestUpdateFeatureToggle(input)(dispatch)
 | 
				
			||||||
                .then(() => methods.clear())
 | 
					                .then(() => methods.clear())
 | 
				
			||||||
                .then(() => hashHistory.push(`/features/view/${input.name}`));
 | 
					                .then(() => hashHistory.push(`/features/view/${input.name}`));
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,6 @@ const trim = (value) => {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AddFeatureToggleComponent extends Component {
 | 
					class AddFeatureToggleComponent extends Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    componentWillMount () {
 | 
					    componentWillMount () {
 | 
				
			||||||
        // TODO unwind this stuff
 | 
					        // TODO unwind this stuff
 | 
				
			||||||
        if (this.props.initCallRequired === true) {
 | 
					        if (this.props.initCallRequired === true) {
 | 
				
			||||||
@ -69,10 +68,10 @@ class AddFeatureToggleComponent extends Component {
 | 
				
			|||||||
                    {!editmode && <div>
 | 
					                    {!editmode && <div>
 | 
				
			||||||
                        <br />
 | 
					                        <br />
 | 
				
			||||||
                        <Switch
 | 
					                        <Switch
 | 
				
			||||||
                        checked={enabled}
 | 
					                            checked={enabled}
 | 
				
			||||||
                        onChange={() => {
 | 
					                            onChange={() => {
 | 
				
			||||||
                            setValue('enabled', !enabled);
 | 
					                                setValue('enabled', !enabled);
 | 
				
			||||||
                        }}>Enabled</Switch>
 | 
					                            }}>Enabled</Switch>
 | 
				
			||||||
                        <hr />
 | 
					                        <hr />
 | 
				
			||||||
                    </div>}
 | 
					                    </div>}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -92,7 +91,6 @@ class AddFeatureToggleComponent extends Component {
 | 
				
			|||||||
            </form>
 | 
					            </form>
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
AddFeatureToggleComponent.propTypes = {
 | 
					AddFeatureToggleComponent.propTypes = {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,7 @@
 | 
				
			|||||||
import React, { PropTypes } from 'react';
 | 
					import React, { PropTypes } from 'react';
 | 
				
			||||||
import { Menu, MenuItem, IconButton }  from 'react-mdl';
 | 
					import { Menu, MenuItem, IconButton } from 'react-mdl';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AddStrategy extends React.Component {
 | 
					class AddStrategy extends React.Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            strategies: PropTypes.array.isRequired,
 | 
					            strategies: PropTypes.array.isRequired,
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,6 @@ import HTML5Backend from 'react-dnd-html5-backend';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@DragDropContext(HTML5Backend) // eslint-disable-line new-cap
 | 
					@DragDropContext(HTML5Backend) // eslint-disable-line new-cap
 | 
				
			||||||
class StrategiesList extends React.Component {
 | 
					class StrategiesList extends React.Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            strategies: PropTypes.array.isRequired,
 | 
					            strategies: PropTypes.array.isRequired,
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,6 @@ import AddStrategy from './strategies-add';
 | 
				
			|||||||
import { HeaderTitle } from '../../common';
 | 
					import { HeaderTitle } from '../../common';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StrategiesSection extends React.Component {
 | 
					class StrategiesSection extends React.Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            strategies: PropTypes.array.isRequired,
 | 
					            strategies: PropTypes.array.isRequired,
 | 
				
			||||||
 | 
				
			|||||||
@ -45,7 +45,6 @@ const dragTarget = {
 | 
				
			|||||||
    isDragging: monitor.isDragging(),
 | 
					    isDragging: monitor.isDragging(),
 | 
				
			||||||
}))
 | 
					}))
 | 
				
			||||||
class StrategyConfigure extends React.Component {
 | 
					class StrategyConfigure extends React.Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            strategy: PropTypes.object.isRequired,
 | 
					            strategy: PropTypes.object.isRequired,
 | 
				
			||||||
@ -122,7 +121,7 @@ class StrategyConfigure extends React.Component {
 | 
				
			|||||||
                                label={name}
 | 
					                                label={name}
 | 
				
			||||||
                                onChange={this.handleConfigChange.bind(this, name)}
 | 
					                                onChange={this.handleConfigChange.bind(this, name)}
 | 
				
			||||||
                                value={value}
 | 
					                                value={value}
 | 
				
			||||||
                                />
 | 
					                            />
 | 
				
			||||||
                            {description && <p className={styles.helpText}>{description}</p>}
 | 
					                            {description && <p className={styles.helpText}>{description}</p>}
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
@ -138,7 +137,7 @@ class StrategyConfigure extends React.Component {
 | 
				
			|||||||
                                label={name}
 | 
					                                label={name}
 | 
				
			||||||
                                onChange={this.handleConfigChange.bind(this, name)}
 | 
					                                onChange={this.handleConfigChange.bind(this, name)}
 | 
				
			||||||
                                value={value}
 | 
					                                value={value}
 | 
				
			||||||
                                />
 | 
					                            />
 | 
				
			||||||
                            {description && <p className={styles.helpText}>{description}</p>}
 | 
					                            {description && <p className={styles.helpText}>{description}</p>}
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    );
 | 
					                    );
 | 
				
			||||||
@ -165,8 +164,8 @@ class StrategyConfigure extends React.Component {
 | 
				
			|||||||
                    </CardText>
 | 
					                    </CardText>
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        inputFields && <CardActions border style={{ padding: '20px' }}>
 | 
					                        inputFields && <CardActions border style={{ padding: '20px' }}>
 | 
				
			||||||
                            {inputFields}
 | 
					                        {inputFields}
 | 
				
			||||||
                        </CardActions>
 | 
					                    </CardActions>
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    <CardMenu className="mdl-color-text--white">
 | 
					                    <CardMenu className="mdl-color-text--white">
 | 
				
			||||||
 | 
				
			|||||||
@ -3,10 +3,9 @@ import {
 | 
				
			|||||||
    Textfield,
 | 
					    Textfield,
 | 
				
			||||||
    IconButton,
 | 
					    IconButton,
 | 
				
			||||||
    Chip,
 | 
					    Chip,
 | 
				
			||||||
}  from 'react-mdl';
 | 
					} from 'react-mdl';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class InputList extends Component {
 | 
					export default class InputList extends Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes = {
 | 
					    static propTypes = {
 | 
				
			||||||
        name: PropTypes.string.isRequired,
 | 
					        name: PropTypes.string.isRequired,
 | 
				
			||||||
        list: PropTypes.array.isRequired,
 | 
					        list: PropTypes.array.isRequired,
 | 
				
			||||||
@ -18,7 +17,7 @@ export default class InputList extends Component {
 | 
				
			|||||||
        window.removeEventListener('keydown', this.onKeyHandler, false);
 | 
					        window.removeEventListener('keydown', this.onKeyHandler, false);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    onFocus  = (e) => {
 | 
					    onFocus = (e) => {
 | 
				
			||||||
        e.preventDefault();
 | 
					        e.preventDefault();
 | 
				
			||||||
        e.stopPropagation();
 | 
					        e.stopPropagation();
 | 
				
			||||||
        window.addEventListener('keydown', this.onKeyHandler, false);
 | 
					        window.addEventListener('keydown', this.onKeyHandler, false);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
import React from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
import { Slider }  from 'react-mdl';
 | 
					import { Slider } from 'react-mdl';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const labelStyle = {
 | 
					const labelStyle = {
 | 
				
			||||||
    margin: '20px 0',
 | 
					    margin: '20px 0',
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,6 @@ import { MenuItemWithIcon, DropdownButton, styles as commonStyles } from '../com
 | 
				
			|||||||
import styles from './feature.scss';
 | 
					import styles from './feature.scss';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class FeatureListComponent extends React.PureComponent {
 | 
					export default class FeatureListComponent extends React.PureComponent {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            toggleFeature: PropTypes.func.isRequired,
 | 
					            toggleFeature: PropTypes.func.isRequired,
 | 
				
			||||||
@ -89,16 +88,16 @@ export default class FeatureListComponent extends React.PureComponent {
 | 
				
			|||||||
                <hr/>
 | 
					                <hr/>
 | 
				
			||||||
                <List>
 | 
					                <List>
 | 
				
			||||||
                    {features.map((feature, i) =>
 | 
					                    {features.map((feature, i) =>
 | 
				
			||||||
                        <Feature key={i}
 | 
					                        (<Feature key={i}
 | 
				
			||||||
                            settings={settings}
 | 
					                            settings={settings}
 | 
				
			||||||
                            metricsLastHour={featureMetrics.lastHour[feature.name]}
 | 
					                            metricsLastHour={featureMetrics.lastHour[feature.name]}
 | 
				
			||||||
                            metricsLastMinute={featureMetrics.lastMinute[feature.name]}
 | 
					                            metricsLastMinute={featureMetrics.lastMinute[feature.name]}
 | 
				
			||||||
                            feature={feature}
 | 
					                            feature={feature}
 | 
				
			||||||
                            toggleFeature={toggleFeature}/>
 | 
					                            toggleFeature={toggleFeature}/>)
 | 
				
			||||||
                    )}
 | 
					                    )}
 | 
				
			||||||
                </List>
 | 
					                </List>
 | 
				
			||||||
            </Card>
 | 
					            </Card>
 | 
				
			||||||
            </div>
 | 
					        </div>
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@ const mapStateToProps = (state) => {
 | 
				
			|||||||
        const regex = new RegExp(settings.filter, 'i');
 | 
					        const regex = new RegExp(settings.filter, 'i');
 | 
				
			||||||
        features = features.filter(feature =>
 | 
					        features = features.filter(feature =>
 | 
				
			||||||
            (
 | 
					            (
 | 
				
			||||||
                regex.test(feature.name) ||
 | 
					            regex.test(feature.name) ||
 | 
				
			||||||
                regex.test(feature.description) ||
 | 
					                regex.test(feature.description) ||
 | 
				
			||||||
                feature.strategies.some(s => s && s.name && regex.test(s.name))
 | 
					                feature.strategies.some(s => s && s.name && regex.test(s.name))
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
@ -72,8 +72,8 @@ const mapDispatchToProps = {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const FeatureListContainer = connect(
 | 
					const FeatureListContainer = connect(
 | 
				
			||||||
  mapStateToProps,
 | 
					    mapStateToProps,
 | 
				
			||||||
  mapDispatchToProps
 | 
					    mapDispatchToProps
 | 
				
			||||||
)(FeatureListComponent);
 | 
					)(FeatureListComponent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default FeatureListContainer;
 | 
					export default FeatureListContainer;
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,7 @@ const StrategyChipItem = ({ strategy }) => (
 | 
				
			|||||||
// TODO what about "missing" strategies here?
 | 
					// TODO what about "missing" strategies here?
 | 
				
			||||||
const StrategiesList = ({ strategies }) => (
 | 
					const StrategiesList = ({ strategies }) => (
 | 
				
			||||||
    <div style={{ verticalAlign: 'middle', paddingTop: '14px' }}>With {strategies.length > 1 ? 'strategies' : 'strategy'} {
 | 
					    <div style={{ verticalAlign: 'middle', paddingTop: '14px' }}>With {strategies.length > 1 ? 'strategies' : 'strategy'} {
 | 
				
			||||||
        strategies.map((strategy, i) => <StrategyChipItem key={i}  strategy={strategy} />)
 | 
					        strategies.map((strategy, i) => <StrategyChipItem key={i} strategy={strategy} />)
 | 
				
			||||||
    }</div>
 | 
					    }</div>
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -58,7 +58,7 @@ class Progress extends Component {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        const current = this.state.percentageText;
 | 
					        const current = this.state.percentageText;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        targetState.cyclesCounter --;
 | 
					        targetState.cyclesCounter--;
 | 
				
			||||||
        if (targetState.cyclesCounter <= 0) {
 | 
					        if (targetState.cyclesCounter <= 0) {
 | 
				
			||||||
            this.setState({ percentageText: targetState.target });
 | 
					            this.setState({ percentageText: targetState.target });
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
@ -99,7 +99,7 @@ class Progress extends Component {
 | 
				
			|||||||
        return (isFallback ?
 | 
					        return (isFallback ?
 | 
				
			||||||
            <svg viewBox="0 0 24 24" className="mdl-color-text--grey-300">{
 | 
					            <svg viewBox="0 0 24 24" className="mdl-color-text--grey-300">{
 | 
				
			||||||
                // eslint-disable-next-line max-len
 | 
					                // eslint-disable-next-line max-len
 | 
				
			||||||
                }<path fill="currentColor" d="M17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.2,16.7 10,16 12,16C14,16 15.9,16.7 17.3,18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M14.4,6.1C14.9,6.3 15.1,6.9 15,7.4L13.6,10.8C13.8,11.1 14,11.5 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12C10,11 10.7,10.1 11.7,10L13.1,6.7C13.3,6.1 13.9,5.9 14.4,6.1Z" />
 | 
					            }<path fill="currentColor" d="M17.3,18C19,16.5 20,14.4 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12C4,14.4 5,16.5 6.7,18C8.2,16.7 10,16 12,16C14,16 15.9,16.7 17.3,18M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M7,9A1,1 0 0,1 8,10A1,1 0 0,1 7,11A1,1 0 0,1 6,10A1,1 0 0,1 7,9M10,6A1,1 0 0,1 11,7A1,1 0 0,1 10,8A1,1 0 0,1 9,7A1,1 0 0,1 10,6M17,9A1,1 0 0,1 18,10A1,1 0 0,1 17,11A1,1 0 0,1 16,10A1,1 0 0,1 17,9M14.4,6.1C14.9,6.3 15.1,6.9 15,7.4L13.6,10.8C13.8,11.1 14,11.5 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12C10,11 10.7,10.1 11.7,10L13.1,6.7C13.3,6.1 13.9,5.9 14.4,6.1Z" />
 | 
				
			||||||
            </svg> :
 | 
					            </svg> :
 | 
				
			||||||
            <svg viewBox="0 0 100 100">
 | 
					            <svg viewBox="0 0 100 100">
 | 
				
			||||||
                <path
 | 
					                <path
 | 
				
			||||||
@ -107,7 +107,7 @@ class Progress extends Component {
 | 
				
			|||||||
                    d={pathDescription}
 | 
					                    d={pathDescription}
 | 
				
			||||||
                    strokeWidth={strokeWidth}
 | 
					                    strokeWidth={strokeWidth}
 | 
				
			||||||
                    fillOpacity={0}
 | 
					                    fillOpacity={0}
 | 
				
			||||||
                    />
 | 
					                />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <path
 | 
					                <path
 | 
				
			||||||
                    className={[styles.path, colorClassName].join(' ')}
 | 
					                    className={[styles.path, colorClassName].join(' ')}
 | 
				
			||||||
@ -115,13 +115,13 @@ class Progress extends Component {
 | 
				
			|||||||
                    strokeWidth={strokeWidth}
 | 
					                    strokeWidth={strokeWidth}
 | 
				
			||||||
                    fillOpacity={0}
 | 
					                    fillOpacity={0}
 | 
				
			||||||
                    style={progressStyle}
 | 
					                    style={progressStyle}
 | 
				
			||||||
                    />
 | 
					                />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <text
 | 
					                <text
 | 
				
			||||||
                    className={styles.text}
 | 
					                    className={styles.text}
 | 
				
			||||||
                    x={50}
 | 
					                    x={50}
 | 
				
			||||||
                    y={50}
 | 
					                    y={50}
 | 
				
			||||||
                    >{this.state.percentageText}%</text>
 | 
					                >{this.state.percentageText}%</text>
 | 
				
			||||||
            </svg>
 | 
					            </svg>
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,6 @@ const TABS = {
 | 
				
			|||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default class ViewFeatureToggleComponent extends React.Component {
 | 
					export default class ViewFeatureToggleComponent extends React.Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    constructor (props) {
 | 
					    constructor (props) {
 | 
				
			||||||
        super(props);
 | 
					        super(props);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -73,7 +72,7 @@ export default class ViewFeatureToggleComponent extends React.Component {
 | 
				
			|||||||
            return (
 | 
					            return (
 | 
				
			||||||
                <span>
 | 
					                <span>
 | 
				
			||||||
                    Could not find the toggle <Link to={{ pathname: '/features/create', query: { name: featureToggleName } }}>
 | 
					                    Could not find the toggle <Link to={{ pathname: '/features/create', query: { name: featureToggleName } }}>
 | 
				
			||||||
                    {featureToggleName}</Link>
 | 
					                        {featureToggleName}</Link>
 | 
				
			||||||
                </span>
 | 
					                </span>
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -82,7 +81,7 @@ export default class ViewFeatureToggleComponent extends React.Component {
 | 
				
			|||||||
        const tabContent = this.getTabContent(activeTab);
 | 
					        const tabContent = this.getTabContent(activeTab);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const removeToggle = () => {
 | 
					        const removeToggle = () => {
 | 
				
			||||||
            if (window.confirm('Are you sure you want to remove this toggle?')) {  // eslint-disable-line no-alert
 | 
					            if (window.confirm('Are you sure you want to remove this toggle?')) { // eslint-disable-line no-alert
 | 
				
			||||||
                removeFeatureToggle(featureToggle.name);
 | 
					                removeFeatureToggle(featureToggle.name);
 | 
				
			||||||
                hashHistory.push('/features');
 | 
					                hashHistory.push('/features');
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -4,7 +4,6 @@ import HistoryList from './history-list-container';
 | 
				
			|||||||
import { styles as commonStyles } from '../common';
 | 
					import { styles as commonStyles } from '../common';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class History extends PureComponent {
 | 
					class History extends PureComponent {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    componentDidMount () {
 | 
					    componentDidMount () {
 | 
				
			||||||
        this.props.fetchHistory();
 | 
					        this.props.fetchHistory();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -50,7 +50,7 @@ function buildDiff (diff, idx) {
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        const spadenClass = KLASSES[diff.kind];
 | 
					        const spadenClass = KLASSES[diff.kind];
 | 
				
			||||||
        const prefix      = DIFF_PREFIXES[diff.kind];
 | 
					        const prefix = DIFF_PREFIXES[diff.kind];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        change = (<div className={spadenClass}>{prefix} {key}: {JSON.stringify(diff.rhs || diff.item)}</div>);
 | 
					        change = (<div className={spadenClass}>{prefix} {key}: {JSON.stringify(diff.rhs || diff.item)}</div>);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -59,7 +59,6 @@ function buildDiff (diff, idx) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HistoryItem extends PureComponent {
 | 
					class HistoryItem extends PureComponent {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            entry: PropTypes.object,
 | 
					            entry: PropTypes.object,
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,6 @@ import React, { PropTypes, PureComponent } from 'react';
 | 
				
			|||||||
import style from './history.scss';
 | 
					import style from './history.scss';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HistoryItem extends PureComponent {
 | 
					class HistoryItem extends PureComponent {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            entry: PropTypes.object,
 | 
					            entry: PropTypes.object,
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,6 @@ import { formatFullDateTime } from '../common/util';
 | 
				
			|||||||
import styles from './history.scss';
 | 
					import styles from './history.scss';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HistoryList extends Component {
 | 
					class HistoryList extends Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    toggleShowDiff () {
 | 
					    toggleShowDiff () {
 | 
				
			||||||
        this.props.updateSetting('showData', !this.props.settings.showData);
 | 
					        this.props.updateSetting('showData', !this.props.settings.showData);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -27,18 +26,18 @@ class HistoryList extends Component {
 | 
				
			|||||||
        let entries;
 | 
					        let entries;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (showData) {
 | 
					        if (showData) {
 | 
				
			||||||
            entries =  history.map((entry) => <HistoryItemJson  key={`log${entry.id}`} entry={entry} />);
 | 
					            entries = history.map((entry) => <HistoryItemJson key={`log${entry.id}`} entry={entry} />);
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            entries = (<Table
 | 
					            entries = (<Table
 | 
				
			||||||
                    sortable
 | 
					                sortable
 | 
				
			||||||
                    rows={
 | 
					                rows={
 | 
				
			||||||
                        history.map((entry) => Object.assign({
 | 
					                    history.map((entry) => Object.assign({
 | 
				
			||||||
                            diff: (<HistoryItemDiff  entry={entry} />),
 | 
					                        diff: (<HistoryItemDiff entry={entry} />),
 | 
				
			||||||
                        }, entry))
 | 
					                    }, entry))
 | 
				
			||||||
                    }
 | 
					                }
 | 
				
			||||||
                    className={commonStyles.fullwidth}
 | 
					                className={commonStyles.fullwidth}
 | 
				
			||||||
                    style={{ border: 0, tableLayout: 'fixed', minWidth: '840px' }}
 | 
					                style={{ border: 0, tableLayout: 'fixed', minWidth: '840px' }}
 | 
				
			||||||
                >
 | 
					            >
 | 
				
			||||||
                <TableHeader name="type" cellFormatter={truncateTableCell} style={{ width: '136px' }}>Type</TableHeader>
 | 
					                <TableHeader name="type" cellFormatter={truncateTableCell} style={{ width: '136px' }}>Type</TableHeader>
 | 
				
			||||||
                <TableHeader name="createdBy" cellFormatter={truncateTableCell} style={{ width: '115px' }}>User</TableHeader>
 | 
					                <TableHeader name="createdBy" cellFormatter={truncateTableCell} style={{ width: '115px' }}>User</TableHeader>
 | 
				
			||||||
                <TableHeader name="diff">Diff</TableHeader>
 | 
					                <TableHeader name="diff">Diff</TableHeader>
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,6 @@ import React, { Component, PropTypes } from 'react';
 | 
				
			|||||||
import HistoryList from './history-list-container';
 | 
					import HistoryList from './history-list-container';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class HistoryListToggle extends Component {
 | 
					class HistoryListToggle extends Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            toggleName: PropTypes.string.isRequired,
 | 
					            toggleName: PropTypes.string.isRequired,
 | 
				
			||||||
@ -19,9 +18,9 @@ class HistoryListToggle extends Component {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        const { history } = this.props;
 | 
					        const { history } = this.props;
 | 
				
			||||||
        return (
 | 
					        return (
 | 
				
			||||||
                <HistoryList
 | 
					            <HistoryList
 | 
				
			||||||
                    history={history}
 | 
					                history={history}
 | 
				
			||||||
                    title="Change log"/>
 | 
					                title="Change log"/>
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,7 @@ function gerArrayWithEntries (num) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Parameter = ({ set, input = {}, index }) => (
 | 
					const Parameter = ({ set, input = {}, index }) => (
 | 
				
			||||||
    <div  style={{ background: '#f1f1f1', padding: '16px 20px', marginBottom: '20px' }}>
 | 
					    <div style={{ background: '#f1f1f1', padding: '16px 20px', marginBottom: '20px' }}>
 | 
				
			||||||
        <Textfield
 | 
					        <Textfield
 | 
				
			||||||
            style={{ width: '50%' }}
 | 
					            style={{ width: '50%' }}
 | 
				
			||||||
            floatingLabel
 | 
					            floatingLabel
 | 
				
			||||||
@ -65,7 +65,7 @@ const Parameter = ({ set, input = {}, index }) => (
 | 
				
			|||||||
const EditHeader = () => (
 | 
					const EditHeader = () => (
 | 
				
			||||||
    <div>
 | 
					    <div>
 | 
				
			||||||
        <h4 style={{ marginTop: '16px' }}>Edit strategy</h4>
 | 
					        <h4 style={{ marginTop: '16px' }}>Edit strategy</h4>
 | 
				
			||||||
        <p style={{ background: '#ffb7b7', padding: '16px 20px'  }}>
 | 
					        <p style={{ background: '#ffb7b7', padding: '16px 20px' }}>
 | 
				
			||||||
            Be carefull! Changing a strategy definition might also require changes to the
 | 
					            Be carefull! Changing a strategy definition might also require changes to the
 | 
				
			||||||
            implementation in the clients.
 | 
					            implementation in the clients.
 | 
				
			||||||
        </p>
 | 
					        </p>
 | 
				
			||||||
@ -80,18 +80,17 @@ const CreateHeader = () => (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Parameters = ({ input = [], count = 0, updateInList }) => (
 | 
					const Parameters = ({ input = [], count = 0, updateInList }) => (
 | 
				
			||||||
<div>{
 | 
					    <div>{
 | 
				
			||||||
    gerArrayWithEntries(count)
 | 
					        gerArrayWithEntries(count)
 | 
				
			||||||
    .map((v, i) => <Parameter
 | 
					            .map((v, i) => (<Parameter
 | 
				
			||||||
        key={i}
 | 
					                key={i}
 | 
				
			||||||
        set={(v) => updateInList('parameters', i, v, true)}
 | 
					                set={(v) => updateInList('parameters', i, v, true)}
 | 
				
			||||||
        index={i}
 | 
					                index={i}
 | 
				
			||||||
        input={input[i]}
 | 
					                input={input[i]}
 | 
				
			||||||
    />)
 | 
					            />))
 | 
				
			||||||
}</div>);
 | 
					    }</div>);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class AddStrategy extends Component {
 | 
					class AddStrategy extends Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static propTypes () {
 | 
					    static propTypes () {
 | 
				
			||||||
        return {
 | 
					        return {
 | 
				
			||||||
            input: PropTypes.object,
 | 
					            input: PropTypes.object,
 | 
				
			||||||
@ -142,7 +141,7 @@ class AddStrategy extends Component {
 | 
				
			|||||||
                            pattern="^[0-9a-zA-Z\.\-]+$"
 | 
					                            pattern="^[0-9a-zA-Z\.\-]+$"
 | 
				
			||||||
                            onChange={({ target }) => setValue('name', trim(target.value))}
 | 
					                            onChange={({ target }) => setValue('name', trim(target.value))}
 | 
				
			||||||
                            value={input.name}
 | 
					                            value={input.name}
 | 
				
			||||||
                            />
 | 
					                        />
 | 
				
			||||||
                        <br />
 | 
					                        <br />
 | 
				
			||||||
                        <Textfield
 | 
					                        <Textfield
 | 
				
			||||||
                            floatingLabel
 | 
					                            floatingLabel
 | 
				
			||||||
@ -152,7 +151,7 @@ class AddStrategy extends Component {
 | 
				
			|||||||
                            name="description"
 | 
					                            name="description"
 | 
				
			||||||
                            onChange={({ target }) => setValue('description', target.value)}
 | 
					                            onChange={({ target }) => setValue('description', target.value)}
 | 
				
			||||||
                            value={input.description}
 | 
					                            value={input.description}
 | 
				
			||||||
                            />
 | 
					                        />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        <Parameters input={input.parameters} count={input._params} updateInList={updateInList} />
 | 
					                        <Parameters input={input.parameters} count={input._params} updateInList={updateInList} />
 | 
				
			||||||
 | 
				
			|||||||
@ -5,7 +5,6 @@ import { List, ListItem, ListItemContent, IconButton, Grid, Cell } from 'react-m
 | 
				
			|||||||
import { HeaderTitle } from '../common';
 | 
					import { HeaderTitle } from '../common';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class StrategiesListComponent extends Component {
 | 
					class StrategiesListComponent extends Component {
 | 
				
			||||||
 | 
					 | 
				
			||||||
    static contextTypes = {
 | 
					    static contextTypes = {
 | 
				
			||||||
        router: React.PropTypes.object,
 | 
					        router: React.PropTypes.object,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -28,15 +27,15 @@ class StrategiesListComponent extends Component {
 | 
				
			|||||||
                                title="Add new strategy" />} />
 | 
					                                title="Add new strategy" />} />
 | 
				
			||||||
                    <List>
 | 
					                    <List>
 | 
				
			||||||
                        {strategies.length > 0 ? strategies.map((strategy, i) => (
 | 
					                        {strategies.length > 0 ? strategies.map((strategy, i) => (
 | 
				
			||||||
                                <ListItem key={i} twoLine>
 | 
					                            <ListItem key={i} twoLine>
 | 
				
			||||||
                                    <ListItemContent icon="extension" subtitle={strategy.description}>
 | 
					                                <ListItemContent icon="extension" subtitle={strategy.description}>
 | 
				
			||||||
                                        <Link to={`/strategies/view/${strategy.name}`}>
 | 
					                                    <Link to={`/strategies/view/${strategy.name}`}>
 | 
				
			||||||
                                            <strong>{strategy.name}</strong>
 | 
					                                        <strong>{strategy.name}</strong>
 | 
				
			||||||
                                        </Link>
 | 
					                                    </Link>
 | 
				
			||||||
                                        </ListItemContent>
 | 
					                                </ListItemContent>
 | 
				
			||||||
                                    <IconButton name="delete" onClick={() => removeStrategy(strategy)} />
 | 
					                                <IconButton name="delete" onClick={() => removeStrategy(strategy)} />
 | 
				
			||||||
                                </ListItem>
 | 
					                            </ListItem>
 | 
				
			||||||
                            )) : <ListItem>No entries</ListItem>}
 | 
					                        )) : <ListItem>No entries</ListItem>}
 | 
				
			||||||
                    </List>
 | 
					                    </List>
 | 
				
			||||||
                </Cell>
 | 
					                </Cell>
 | 
				
			||||||
            </Grid>
 | 
					            </Grid>
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,7 @@ const mapStateToProps = (state) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const mapDispatchToProps = (dispatch) => ({
 | 
					const mapDispatchToProps = (dispatch) => ({
 | 
				
			||||||
    removeStrategy: (strategy) => {
 | 
					    removeStrategy: (strategy) => {
 | 
				
			||||||
        if (window.confirm('Are you sure you want to remove this strategy?')) {  // eslint-disable-line no-alert
 | 
					        if (window.confirm('Are you sure you want to remove this strategy?')) { // eslint-disable-line no-alert
 | 
				
			||||||
            removeStrategy(strategy)(dispatch);
 | 
					            removeStrategy(strategy)(dispatch);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@ const mapDispatchToProps = {
 | 
				
			|||||||
    openEdit,
 | 
					    openEdit,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const mapStateToProps = (state) =>  ({
 | 
					const mapStateToProps = (state) => ({
 | 
				
			||||||
    user: state.user.toJS(),
 | 
					    user: state.user.toJS(),
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@ const mapDispatchToProps = {
 | 
				
			|||||||
    save,
 | 
					    save,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const mapStateToProps = (state) =>  ({
 | 
					const mapStateToProps = (state) => ({
 | 
				
			||||||
    user: state.user.toJS(),
 | 
					    user: state.user.toJS(),
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -55,7 +55,7 @@ function toggle (name) {
 | 
				
			|||||||
        headers,
 | 
					        headers,
 | 
				
			||||||
        credentials: 'include',
 | 
					        credentials: 'include',
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    .then(throwIfNotSuccess);
 | 
					        .then(throwIfNotSuccess);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function remove (featureToggleName) {
 | 
					function remove (featureToggleName) {
 | 
				
			||||||
 | 
				
			|||||||
@ -61,7 +61,7 @@ ReactDOM.render(
 | 
				
			|||||||
                </Route>
 | 
					                </Route>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <Route pageTitle="Event History" link="/history">
 | 
					                <Route pageTitle="Event History" link="/history">
 | 
				
			||||||
                    <Route pageTitle="Event history"  path="/history" component={HistoryPage} />
 | 
					                    <Route pageTitle="Event history" path="/history" component={HistoryPage} />
 | 
				
			||||||
                    <Route pageTitle=":toggleName" path="/history/:toggleName" component={HistoryTogglePage} />
 | 
					                    <Route pageTitle=":toggleName" path="/history/:toggleName" component={HistoryTogglePage} />
 | 
				
			||||||
                </Route>
 | 
					                </Route>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
import api from '../data/archive-api';
 | 
					import api from '../data/archive-api';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const REVIVE_TOGGLE          = 'REVIVE_TOGGLE';
 | 
					export const REVIVE_TOGGLE = 'REVIVE_TOGGLE';
 | 
				
			||||||
export const RECEIVE_ARCHIVE        = 'RECEIVE_ARCHIVE';
 | 
					export const RECEIVE_ARCHIVE = 'RECEIVE_ARCHIVE';
 | 
				
			||||||
export const ERROR_RECEIVE_ARCHIVE  = 'ERROR_RECEIVE_ARCHIVE';
 | 
					export const ERROR_RECEIVE_ARCHIVE = 'ERROR_RECEIVE_ARCHIVE';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const receiveArchive = (json) => ({
 | 
					const receiveArchive = (json) => ({
 | 
				
			||||||
    type: RECEIVE_ARCHIVE,
 | 
					    type: RECEIVE_ARCHIVE,
 | 
				
			||||||
 | 
				
			|||||||
@ -1,19 +1,19 @@
 | 
				
			|||||||
import api from '../data/feature-api';
 | 
					import api from '../data/feature-api';
 | 
				
			||||||
const debug = require('debug')('unleash:feature-actions');
 | 
					const debug = require('debug')('unleash:feature-actions');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const ADD_FEATURE_TOGGLE             = 'ADD_FEATURE_TOGGLE';
 | 
					export const ADD_FEATURE_TOGGLE = 'ADD_FEATURE_TOGGLE';
 | 
				
			||||||
export const REMOVE_FEATURE_TOGGLE          = 'REMOVE_FEATURE_TOGGLE';
 | 
					export const REMOVE_FEATURE_TOGGLE = 'REMOVE_FEATURE_TOGGLE';
 | 
				
			||||||
export const UPDATE_FEATURE_TOGGLE          = 'UPDATE_FEATURE_TOGGLE';
 | 
					export const UPDATE_FEATURE_TOGGLE = 'UPDATE_FEATURE_TOGGLE';
 | 
				
			||||||
export const TOGGLE_FEATURE_TOGGLE          = 'TOGGLE_FEATURE_TOGGLE';
 | 
					export const TOGGLE_FEATURE_TOGGLE = 'TOGGLE_FEATURE_TOGGLE';
 | 
				
			||||||
export const START_FETCH_FEATURE_TOGGLES    = 'START_FETCH_FEATURE_TOGGLES';
 | 
					export const START_FETCH_FEATURE_TOGGLES = 'START_FETCH_FEATURE_TOGGLES';
 | 
				
			||||||
export const START_UPDATE_FEATURE_TOGGLE    = 'START_UPDATE_FEATURE_TOGGLE';
 | 
					export const START_UPDATE_FEATURE_TOGGLE = 'START_UPDATE_FEATURE_TOGGLE';
 | 
				
			||||||
export const START_CREATE_FEATURE_TOGGLE    = 'START_CREATE_FEATURE_TOGGLE';
 | 
					export const START_CREATE_FEATURE_TOGGLE = 'START_CREATE_FEATURE_TOGGLE';
 | 
				
			||||||
export const START_REMOVE_FEATURE_TOGGLE    = 'START_REMOVE_FEATURE_TOGGLE';
 | 
					export const START_REMOVE_FEATURE_TOGGLE = 'START_REMOVE_FEATURE_TOGGLE';
 | 
				
			||||||
export const RECEIVE_FEATURE_TOGGLES        = 'RECEIVE_FEATURE_TOGGLES';
 | 
					export const RECEIVE_FEATURE_TOGGLES = 'RECEIVE_FEATURE_TOGGLES';
 | 
				
			||||||
export const ERROR_FETCH_FEATURE_TOGGLES    = 'ERROR_FETCH_FEATURE_TOGGLES';
 | 
					export const ERROR_FETCH_FEATURE_TOGGLES = 'ERROR_FETCH_FEATURE_TOGGLES';
 | 
				
			||||||
export const ERROR_CREATING_FEATURE_TOGGLE  = 'ERROR_CREATING_FEATURE_TOGGLE';
 | 
					export const ERROR_CREATING_FEATURE_TOGGLE = 'ERROR_CREATING_FEATURE_TOGGLE';
 | 
				
			||||||
export const ERROR_UPDATE_FEATURE_TOGGLE    = 'ERROR_UPDATE_FEATURE_TOGGLE';
 | 
					export const ERROR_UPDATE_FEATURE_TOGGLE = 'ERROR_UPDATE_FEATURE_TOGGLE';
 | 
				
			||||||
export const ERROR_REMOVE_FEATURE_TOGGLE    = 'ERROR_REMOVE_FEATURE_TOGGLE';
 | 
					export const ERROR_REMOVE_FEATURE_TOGGLE = 'ERROR_REMOVE_FEATURE_TOGGLE';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function toggleFeature (name) {
 | 
					export function toggleFeature (name) {
 | 
				
			||||||
    debug('Toggle feature toggle ', name);
 | 
					    debug('Toggle feature toggle ', name);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,12 @@
 | 
				
			|||||||
import api from '../data/feature-metrics-api';
 | 
					import api from '../data/feature-metrics-api';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const START_FETCH_FEATURE_METRICS    = 'START_FETCH_FEATURE_METRICS';
 | 
					export const START_FETCH_FEATURE_METRICS = 'START_FETCH_FEATURE_METRICS';
 | 
				
			||||||
export const RECEIVE_FEATURE_METRICS        = 'RECEIVE_FEATURE_METRICS';
 | 
					export const RECEIVE_FEATURE_METRICS = 'RECEIVE_FEATURE_METRICS';
 | 
				
			||||||
export const ERROR_FETCH_FEATURE_TOGGLES    = 'ERROR_FETCH_FEATURE_TOGGLES';
 | 
					export const ERROR_FETCH_FEATURE_TOGGLES = 'ERROR_FETCH_FEATURE_TOGGLES';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const START_FETCH_SEEN_APP    = 'START_FETCH_SEEN_APP';
 | 
					export const START_FETCH_SEEN_APP = 'START_FETCH_SEEN_APP';
 | 
				
			||||||
export const RECEIVE_SEEN_APPS       = 'RECEIVE_SEEN_APPS';
 | 
					export const RECEIVE_SEEN_APPS = 'RECEIVE_SEEN_APPS';
 | 
				
			||||||
export const ERROR_FETCH_SEEN_APP    = 'ERROR_FETCH_SEEN_APP';
 | 
					export const ERROR_FETCH_SEEN_APP = 'ERROR_FETCH_SEEN_APP';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function receiveFeatureMetrics (json) {
 | 
					function receiveFeatureMetrics (json) {
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,9 @@
 | 
				
			|||||||
import api from '../data/history-api';
 | 
					import api from '../data/history-api';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const RECEIVE_HISTORY        = 'RECEIVE_HISTORY';
 | 
					export const RECEIVE_HISTORY = 'RECEIVE_HISTORY';
 | 
				
			||||||
export const ERROR_RECEIVE_HISTORY  = 'ERROR_RECEIVE_HISTORY';
 | 
					export const ERROR_RECEIVE_HISTORY = 'ERROR_RECEIVE_HISTORY';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const RECEIVE_HISTORY_FOR_TOGGLE        = 'RECEIVE_HISTORY_FOR_TOGGLE';
 | 
					export const RECEIVE_HISTORY_FOR_TOGGLE = 'RECEIVE_HISTORY_FOR_TOGGLE';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const receiveHistory = (json) => ({
 | 
					const receiveHistory = (json) => ({
 | 
				
			||||||
    type: RECEIVE_HISTORY,
 | 
					    type: RECEIVE_HISTORY,
 | 
				
			||||||
 | 
				
			|||||||
@ -31,7 +31,7 @@ function setKeyValue (state, { id, key, value }) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function increment (state, { id, key }) {
 | 
					function increment (state, { id, key }) {
 | 
				
			||||||
    state = assertId(state, id);
 | 
					    state = assertId(state, id);
 | 
				
			||||||
    return state.updateIn(id.concat([key]), (value = 0)  => value + 1);
 | 
					    return state.updateIn(id.concat([key]), (value = 0) => value + 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function clear (state, { id }) {
 | 
					function clear (state, { id }) {
 | 
				
			||||||
 | 
				
			|||||||
@ -78,8 +78,8 @@ export function updateStrategy (strategy) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export function removeStrategy (strategy) {
 | 
					export function removeStrategy (strategy) {
 | 
				
			||||||
    return dispatch => api.remove(strategy)
 | 
					    return dispatch => api.remove(strategy)
 | 
				
			||||||
            .then(() => dispatch(createRemoveStrategy(strategy)))
 | 
					        .then(() => dispatch(createRemoveStrategy(strategy)))
 | 
				
			||||||
            .catch(error => dispatch(errorCreatingStrategy(error)));
 | 
					        .catch(error => dispatch(errorCreatingStrategy(error)));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function getApplicationsWithStrategy (strategyName) {
 | 
					export function getApplicationsWithStrategy (strategyName) {
 | 
				
			||||||
 | 
				
			|||||||
@ -68,10 +68,14 @@ amdefine@>=0.0.4:
 | 
				
			|||||||
  version "1.0.1"
 | 
					  version "1.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
 | 
					  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ansi-escapes@^1.1.0, ansi-escapes@^1.4.0:
 | 
					ansi-escapes@^1.4.0:
 | 
				
			||||||
  version "1.4.0"
 | 
					  version "1.4.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
 | 
					  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ansi-escapes@^2.0.0:
 | 
				
			||||||
 | 
					  version "2.0.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ansi-regex@^2.0.0:
 | 
					ansi-regex@^2.0.0:
 | 
				
			||||||
  version "2.1.1"
 | 
					  version "2.1.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
 | 
					  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
 | 
				
			||||||
@ -156,13 +160,6 @@ array-unique@^0.2.1:
 | 
				
			|||||||
  version "0.2.1"
 | 
					  version "0.2.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
 | 
					  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
array.prototype.find@^2.0.1:
 | 
					 | 
				
			||||||
  version "2.0.4"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    define-properties "^1.1.2"
 | 
					 | 
				
			||||||
    es-abstract "^1.7.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
arrify@^1.0.0, arrify@^1.0.1:
 | 
					arrify@^1.0.0, arrify@^1.0.1:
 | 
				
			||||||
  version "1.0.1"
 | 
					  version "1.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
 | 
					  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
 | 
				
			||||||
@ -238,7 +235,7 @@ aws4@^1.2.1:
 | 
				
			|||||||
  version "1.6.0"
 | 
					  version "1.6.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
 | 
					  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0:
 | 
					babel-code-frame@^6.11.0, babel-code-frame@^6.22.0:
 | 
				
			||||||
  version "6.22.0"
 | 
					  version "6.22.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
 | 
					  resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -1198,11 +1195,11 @@ classnames@^2.2.3:
 | 
				
			|||||||
  version "2.2.5"
 | 
					  version "2.2.5"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
 | 
					  resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cli-cursor@^1.0.1:
 | 
					cli-cursor@^2.1.0:
 | 
				
			||||||
  version "1.0.2"
 | 
					  version "2.1.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
 | 
					  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    restore-cursor "^1.0.1"
 | 
					    restore-cursor "^2.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cli-width@^2.0.0:
 | 
					cli-width@^2.0.0:
 | 
				
			||||||
  version "2.1.0"
 | 
					  version "2.1.0"
 | 
				
			||||||
@ -1309,7 +1306,7 @@ concat-map@0.0.1:
 | 
				
			|||||||
  version "0.0.1"
 | 
					  version "0.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 | 
					  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
concat-stream@^1.5.2:
 | 
					concat-stream@^1.6.0:
 | 
				
			||||||
  version "1.6.0"
 | 
					  version "1.6.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
 | 
					  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -1502,12 +1499,6 @@ currently-unhandled@^0.4.1:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    array-find-index "^1.0.1"
 | 
					    array-find-index "^1.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
d@1:
 | 
					 | 
				
			||||||
  version "1.0.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    es5-ext "^0.10.9"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
dashdash@^1.12.0:
 | 
					dashdash@^1.12.0:
 | 
				
			||||||
  version "1.14.1"
 | 
					  version "1.14.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
 | 
					  resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
 | 
				
			||||||
@ -1524,7 +1515,7 @@ debug@2.6.7:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    ms "2.0.0"
 | 
					    ms "2.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.6.3, debug@^2.6.6:
 | 
					debug@2.6.8, debug@^2.1.1, debug@^2.2.0, debug@^2.6.3, debug@^2.6.6, debug@^2.6.8:
 | 
				
			||||||
  version "2.6.8"
 | 
					  version "2.6.8"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
 | 
					  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -1554,13 +1545,6 @@ default-require-extensions@^1.0.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    strip-bom "^2.0.0"
 | 
					    strip-bom "^2.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define-properties@^1.1.2:
 | 
					 | 
				
			||||||
  version "1.1.2"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    foreach "^2.0.5"
 | 
					 | 
				
			||||||
    object-keys "^1.0.8"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
defined@^1.0.0:
 | 
					defined@^1.0.0:
 | 
				
			||||||
  version "1.0.0"
 | 
					  version "1.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
 | 
					  resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
 | 
				
			||||||
@ -1616,13 +1600,6 @@ dnd-core@^2.4.0:
 | 
				
			|||||||
    lodash "^4.2.0"
 | 
					    lodash "^4.2.0"
 | 
				
			||||||
    redux "^3.2.0"
 | 
					    redux "^3.2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
doctrine@^1.2.2:
 | 
					 | 
				
			||||||
  version "1.5.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    esutils "^2.0.2"
 | 
					 | 
				
			||||||
    isarray "^1.0.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
doctrine@^2.0.0:
 | 
					doctrine@^2.0.0:
 | 
				
			||||||
  version "2.0.0"
 | 
					  version "2.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
 | 
					  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
 | 
				
			||||||
@ -1700,75 +1677,6 @@ error-stack-parser@^1.3.6:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    stackframe "^0.3.1"
 | 
					    stackframe "^0.3.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
es-abstract@^1.7.0:
 | 
					 | 
				
			||||||
  version "1.7.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    es-to-primitive "^1.1.1"
 | 
					 | 
				
			||||||
    function-bind "^1.1.0"
 | 
					 | 
				
			||||||
    is-callable "^1.1.3"
 | 
					 | 
				
			||||||
    is-regex "^1.0.3"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
es-to-primitive@^1.1.1:
 | 
					 | 
				
			||||||
  version "1.1.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    is-callable "^1.1.1"
 | 
					 | 
				
			||||||
    is-date-object "^1.0.1"
 | 
					 | 
				
			||||||
    is-symbol "^1.0.1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14:
 | 
					 | 
				
			||||||
  version "0.10.23"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.23.tgz#7578b51be974207a5487821b56538c224e4e7b38"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    es6-iterator "2"
 | 
					 | 
				
			||||||
    es6-symbol "~3.1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1:
 | 
					 | 
				
			||||||
  version "2.0.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    d "1"
 | 
					 | 
				
			||||||
    es5-ext "^0.10.14"
 | 
					 | 
				
			||||||
    es6-symbol "^3.1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
es6-map@^0.1.3:
 | 
					 | 
				
			||||||
  version "0.1.5"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    d "1"
 | 
					 | 
				
			||||||
    es5-ext "~0.10.14"
 | 
					 | 
				
			||||||
    es6-iterator "~2.0.1"
 | 
					 | 
				
			||||||
    es6-set "~0.1.5"
 | 
					 | 
				
			||||||
    es6-symbol "~3.1.1"
 | 
					 | 
				
			||||||
    event-emitter "~0.3.5"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
es6-set@~0.1.5:
 | 
					 | 
				
			||||||
  version "0.1.5"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    d "1"
 | 
					 | 
				
			||||||
    es5-ext "~0.10.14"
 | 
					 | 
				
			||||||
    es6-iterator "~2.0.1"
 | 
					 | 
				
			||||||
    es6-symbol "3.1.1"
 | 
					 | 
				
			||||||
    event-emitter "~0.3.5"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1:
 | 
					 | 
				
			||||||
  version "3.1.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    d "1"
 | 
					 | 
				
			||||||
    es5-ext "~0.10.14"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
es6-weak-map@^2.0.1:
 | 
					 | 
				
			||||||
  version "2.0.2"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    d "1"
 | 
					 | 
				
			||||||
    es5-ext "^0.10.14"
 | 
					 | 
				
			||||||
    es6-iterator "^2.0.1"
 | 
					 | 
				
			||||||
    es6-symbol "^3.1.1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
escape-html@~1.0.3:
 | 
					escape-html@~1.0.3:
 | 
				
			||||||
  version "1.0.3"
 | 
					  version "1.0.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
 | 
					  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
 | 
				
			||||||
@ -1788,86 +1696,80 @@ escodegen@^1.6.1:
 | 
				
			|||||||
  optionalDependencies:
 | 
					  optionalDependencies:
 | 
				
			||||||
    source-map "~0.2.0"
 | 
					    source-map "~0.2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
escope@^3.6.0:
 | 
					eslint-config-finn-react@^2.0.0:
 | 
				
			||||||
  version "3.6.0"
 | 
					  version "2.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3"
 | 
					  resolved "https://registry.yarnpkg.com/eslint-config-finn-react/-/eslint-config-finn-react-2.0.0.tgz#94d11891168eeb110aedd39285c31700e9f09bc2"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    eslint-config-schibsted-react "^4.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eslint-config-finn@^2.0.0:
 | 
				
			||||||
 | 
					  version "2.0.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/eslint-config-finn/-/eslint-config-finn-2.0.0.tgz#0c4a89ccbc8c48b065c8e42df9965276199ae053"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    eslint-config-schibsted "^4.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eslint-config-schibsted-react@^4.0.1:
 | 
				
			||||||
 | 
					  version "4.0.1"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/eslint-config-schibsted-react/-/eslint-config-schibsted-react-4.0.1.tgz#c1fca494bcb142b32cc413885b93eff5ff541e2a"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					eslint-config-schibsted@^4.0.0:
 | 
				
			||||||
 | 
					  version "4.0.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/eslint-config-schibsted/-/eslint-config-schibsted-4.0.0.tgz#7c0dacdc18d56a2dac006923917ef40df29438ed"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    doctrine "^2.0.0"
 | 
				
			||||||
 | 
					    has "^1.0.1"
 | 
				
			||||||
 | 
					    jsx-ast-utils "^1.4.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:
 | 
					  dependencies:
 | 
				
			||||||
    es6-map "^0.1.3"
 | 
					 | 
				
			||||||
    es6-weak-map "^2.0.1"
 | 
					 | 
				
			||||||
    esrecurse "^4.1.0"
 | 
					    esrecurse "^4.1.0"
 | 
				
			||||||
    estraverse "^4.1.1"
 | 
					    estraverse "^4.1.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eslint-config-finn-react@^1.0.0-alpha.2:
 | 
					eslint@^4.1.1:
 | 
				
			||||||
  version "1.0.2"
 | 
					  version "4.1.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-config-finn-react/-/eslint-config-finn-react-1.0.2.tgz#52b43261c8f45b459dbdbf427745ce03ef79a7b6"
 | 
					  resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.1.1.tgz#facbdfcfe3e0facd3a8b80dc98c4e6c13ae582df"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    eslint-config-schibsted-react "^3.0.1"
 | 
					    babel-code-frame "^6.22.0"
 | 
				
			||||||
 | 
					 | 
				
			||||||
eslint-config-finn@1.0.0-alpha.11:
 | 
					 | 
				
			||||||
  version "1.0.0-alpha.11"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-config-finn/-/eslint-config-finn-1.0.0-alpha.11.tgz#bd005e8a98b36d97a05595eded354b1309a59c84"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    eslint-config-spt "^3.0.0-beta-2"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eslint-config-schibsted-react@^3.0.1:
 | 
					 | 
				
			||||||
  version "3.0.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-config-schibsted-react/-/eslint-config-schibsted-react-3.0.1.tgz#658abaf16528684d0258468432745ab798644838"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eslint-config-spt@^3.0.0-beta-2:
 | 
					 | 
				
			||||||
  version "3.0.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-config-spt/-/eslint-config-spt-3.0.0.tgz#5529e844f24edbcc03188aac9d36fbab65bcb20e"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eslint-plugin-react@^6.2.0:
 | 
					 | 
				
			||||||
  version "6.10.3"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    array.prototype.find "^2.0.1"
 | 
					 | 
				
			||||||
    doctrine "^1.2.2"
 | 
					 | 
				
			||||||
    has "^1.0.1"
 | 
					 | 
				
			||||||
    jsx-ast-utils "^1.3.4"
 | 
					 | 
				
			||||||
    object.assign "^4.0.4"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eslint@^3.4.0:
 | 
					 | 
				
			||||||
  version "3.19.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    babel-code-frame "^6.16.0"
 | 
					 | 
				
			||||||
    chalk "^1.1.3"
 | 
					    chalk "^1.1.3"
 | 
				
			||||||
    concat-stream "^1.5.2"
 | 
					    concat-stream "^1.6.0"
 | 
				
			||||||
    debug "^2.1.1"
 | 
					    debug "^2.6.8"
 | 
				
			||||||
    doctrine "^2.0.0"
 | 
					    doctrine "^2.0.0"
 | 
				
			||||||
    escope "^3.6.0"
 | 
					    eslint-scope "^3.7.1"
 | 
				
			||||||
    espree "^3.4.0"
 | 
					    espree "^3.4.3"
 | 
				
			||||||
    esquery "^1.0.0"
 | 
					    esquery "^1.0.0"
 | 
				
			||||||
    estraverse "^4.2.0"
 | 
					    estraverse "^4.2.0"
 | 
				
			||||||
    esutils "^2.0.2"
 | 
					    esutils "^2.0.2"
 | 
				
			||||||
    file-entry-cache "^2.0.0"
 | 
					    file-entry-cache "^2.0.0"
 | 
				
			||||||
    glob "^7.0.3"
 | 
					    glob "^7.1.2"
 | 
				
			||||||
    globals "^9.14.0"
 | 
					    globals "^9.17.0"
 | 
				
			||||||
    ignore "^3.2.0"
 | 
					    ignore "^3.3.3"
 | 
				
			||||||
    imurmurhash "^0.1.4"
 | 
					    imurmurhash "^0.1.4"
 | 
				
			||||||
    inquirer "^0.12.0"
 | 
					    inquirer "^3.0.6"
 | 
				
			||||||
    is-my-json-valid "^2.10.0"
 | 
					    is-my-json-valid "^2.16.0"
 | 
				
			||||||
    is-resolvable "^1.0.0"
 | 
					    is-resolvable "^1.0.0"
 | 
				
			||||||
    js-yaml "^3.5.1"
 | 
					    js-yaml "^3.8.4"
 | 
				
			||||||
    json-stable-stringify "^1.0.0"
 | 
					    json-stable-stringify "^1.0.1"
 | 
				
			||||||
    levn "^0.3.0"
 | 
					    levn "^0.3.0"
 | 
				
			||||||
    lodash "^4.0.0"
 | 
					    lodash "^4.17.4"
 | 
				
			||||||
    mkdirp "^0.5.0"
 | 
					    minimatch "^3.0.2"
 | 
				
			||||||
 | 
					    mkdirp "^0.5.1"
 | 
				
			||||||
    natural-compare "^1.4.0"
 | 
					    natural-compare "^1.4.0"
 | 
				
			||||||
    optionator "^0.8.2"
 | 
					    optionator "^0.8.2"
 | 
				
			||||||
    path-is-inside "^1.0.1"
 | 
					    path-is-inside "^1.0.2"
 | 
				
			||||||
    pluralize "^1.2.1"
 | 
					    pluralize "^4.0.0"
 | 
				
			||||||
    progress "^1.1.8"
 | 
					    progress "^2.0.0"
 | 
				
			||||||
    require-uncached "^1.0.2"
 | 
					    require-uncached "^1.0.3"
 | 
				
			||||||
    shelljs "^0.7.5"
 | 
					 | 
				
			||||||
    strip-bom "^3.0.0"
 | 
					 | 
				
			||||||
    strip-json-comments "~2.0.1"
 | 
					    strip-json-comments "~2.0.1"
 | 
				
			||||||
    table "^3.7.8"
 | 
					    table "^4.0.1"
 | 
				
			||||||
    text-table "~0.2.0"
 | 
					    text-table "~0.2.0"
 | 
				
			||||||
    user-home "^2.0.0"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
espree@^3.4.0:
 | 
					espree@^3.4.3:
 | 
				
			||||||
  version "3.4.3"
 | 
					  version "3.4.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
 | 
					  resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -1911,13 +1813,6 @@ etag@~1.8.0:
 | 
				
			|||||||
  version "1.8.0"
 | 
					  version "1.8.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
 | 
					  resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
event-emitter@~0.3.5:
 | 
					 | 
				
			||||||
  version "0.3.5"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    d "1"
 | 
					 | 
				
			||||||
    es5-ext "~0.10.14"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eventemitter3@1.x.x:
 | 
					eventemitter3@1.x.x:
 | 
				
			||||||
  version "1.2.0"
 | 
					  version "1.2.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
 | 
					  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
 | 
				
			||||||
@ -1942,10 +1837,6 @@ exenv@1.2.0:
 | 
				
			|||||||
  version "1.2.0"
 | 
					  version "1.2.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.0.tgz#3835f127abf075bfe082d0aed4484057c78e3c89"
 | 
					  resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.0.tgz#3835f127abf075bfe082d0aed4484057c78e3c89"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
exit-hook@^1.0.0:
 | 
					 | 
				
			||||||
  version "1.1.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
expand-brackets@^0.1.4:
 | 
					expand-brackets@^0.1.4:
 | 
				
			||||||
  version "0.1.5"
 | 
					  version "0.1.5"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
 | 
					  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
 | 
				
			||||||
@ -1995,6 +1886,14 @@ extend@~3.0.0:
 | 
				
			|||||||
  version "3.0.1"
 | 
					  version "3.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
 | 
					  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					external-editor@^2.0.4:
 | 
				
			||||||
 | 
					  version "2.0.4"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    iconv-lite "^0.4.17"
 | 
				
			||||||
 | 
					    jschardet "^1.4.2"
 | 
				
			||||||
 | 
					    tmp "^0.0.31"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extglob@^0.3.1:
 | 
					extglob@^0.3.1:
 | 
				
			||||||
  version "0.3.2"
 | 
					  version "0.3.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
 | 
					  resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
 | 
				
			||||||
@ -2057,12 +1956,11 @@ fbjs@^0.8.9:
 | 
				
			|||||||
    setimmediate "^1.0.5"
 | 
					    setimmediate "^1.0.5"
 | 
				
			||||||
    ua-parser-js "^0.7.9"
 | 
					    ua-parser-js "^0.7.9"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
figures@^1.3.5:
 | 
					figures@^2.0.0:
 | 
				
			||||||
  version "1.7.0"
 | 
					  version "2.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
 | 
					  resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    escape-string-regexp "^1.0.5"
 | 
					    escape-string-regexp "^1.0.5"
 | 
				
			||||||
    object-assign "^4.1.0"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
file-entry-cache@^2.0.0:
 | 
					file-entry-cache@^2.0.0:
 | 
				
			||||||
  version "2.0.0"
 | 
					  version "2.0.0"
 | 
				
			||||||
@ -2148,10 +2046,6 @@ for-own@^0.1.4:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    for-in "^1.0.1"
 | 
					    for-in "^1.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
foreach@^2.0.5:
 | 
					 | 
				
			||||||
  version "2.0.5"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
forever-agent@~0.6.1:
 | 
					forever-agent@~0.6.1:
 | 
				
			||||||
  version "0.6.1"
 | 
					  version "0.6.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
 | 
					  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
 | 
				
			||||||
@ -2200,7 +2094,7 @@ fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
 | 
				
			|||||||
    mkdirp ">=0.5 0"
 | 
					    mkdirp ">=0.5 0"
 | 
				
			||||||
    rimraf "2"
 | 
					    rimraf "2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function-bind@^1.0.2, function-bind@^1.1.0:
 | 
					function-bind@^1.0.2:
 | 
				
			||||||
  version "1.1.0"
 | 
					  version "1.1.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
 | 
					  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2260,7 +2154,7 @@ glob-parent@^2.0.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    is-glob "^2.0.0"
 | 
					    is-glob "^2.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@~7.1.1:
 | 
					glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1:
 | 
				
			||||||
  version "7.1.2"
 | 
					  version "7.1.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
 | 
					  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -2278,7 +2172,7 @@ global@^4.3.0:
 | 
				
			|||||||
    min-document "^2.19.0"
 | 
					    min-document "^2.19.0"
 | 
				
			||||||
    process "~0.5.1"
 | 
					    process "~0.5.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
globals@^9.0.0, globals@^9.14.0:
 | 
					globals@^9.0.0, globals@^9.17.0:
 | 
				
			||||||
  version "9.18.0"
 | 
					  version "9.18.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
 | 
					  resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2446,7 +2340,7 @@ iconv-lite@0.4.13:
 | 
				
			|||||||
  version "0.4.13"
 | 
					  version "0.4.13"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
 | 
					  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
iconv-lite@~0.4.13:
 | 
					iconv-lite@^0.4.17, iconv-lite@~0.4.13:
 | 
				
			||||||
  version "0.4.18"
 | 
					  version "0.4.18"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2"
 | 
					  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2464,7 +2358,7 @@ ieee754@^1.1.4:
 | 
				
			|||||||
  version "1.1.8"
 | 
					  version "1.1.8"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
 | 
					  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ignore@^3.2.0:
 | 
					ignore@^3.3.3:
 | 
				
			||||||
  version "3.3.3"
 | 
					  version "3.3.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
 | 
					  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2519,21 +2413,22 @@ ini@~1.3.0:
 | 
				
			|||||||
  version "1.3.4"
 | 
					  version "1.3.4"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
 | 
					  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
inquirer@^0.12.0:
 | 
					inquirer@^3.0.6:
 | 
				
			||||||
  version "0.12.0"
 | 
					  version "3.1.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e"
 | 
					  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.1.1.tgz#87621c4fba4072f48a8dd71c9f9df6f100b2d534"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    ansi-escapes "^1.1.0"
 | 
					    ansi-escapes "^2.0.0"
 | 
				
			||||||
    ansi-regex "^2.0.0"
 | 
					 | 
				
			||||||
    chalk "^1.0.0"
 | 
					    chalk "^1.0.0"
 | 
				
			||||||
    cli-cursor "^1.0.1"
 | 
					    cli-cursor "^2.1.0"
 | 
				
			||||||
    cli-width "^2.0.0"
 | 
					    cli-width "^2.0.0"
 | 
				
			||||||
    figures "^1.3.5"
 | 
					    external-editor "^2.0.4"
 | 
				
			||||||
 | 
					    figures "^2.0.0"
 | 
				
			||||||
    lodash "^4.3.0"
 | 
					    lodash "^4.3.0"
 | 
				
			||||||
    readline2 "^1.0.1"
 | 
					    mute-stream "0.0.7"
 | 
				
			||||||
    run-async "^0.1.0"
 | 
					    run-async "^2.2.0"
 | 
				
			||||||
    rx-lite "^3.1.2"
 | 
					    rx-lite "^4.0.8"
 | 
				
			||||||
    string-width "^1.0.1"
 | 
					    rx-lite-aggregates "^4.0.8"
 | 
				
			||||||
 | 
					    string-width "^2.0.0"
 | 
				
			||||||
    strip-ansi "^3.0.0"
 | 
					    strip-ansi "^3.0.0"
 | 
				
			||||||
    through "^2.3.6"
 | 
					    through "^2.3.6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2541,10 +2436,6 @@ interpret@^0.6.4:
 | 
				
			|||||||
  version "0.6.6"
 | 
					  version "0.6.6"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
 | 
					  resolved "https://registry.yarnpkg.com/interpret/-/interpret-0.6.6.tgz#fecd7a18e7ce5ca6abfb953e1f86213a49f1625b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interpret@^1.0.0:
 | 
					 | 
				
			||||||
  version "1.0.3"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.1:
 | 
					invariant@^2.0.0, invariant@^2.1.0, invariant@^2.2.0, invariant@^2.2.1:
 | 
				
			||||||
  version "2.2.2"
 | 
					  version "2.2.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
 | 
					  resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
 | 
				
			||||||
@ -2583,20 +2474,12 @@ is-builtin-module@^1.0.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    builtin-modules "^1.0.0"
 | 
					    builtin-modules "^1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is-callable@^1.1.1, is-callable@^1.1.3:
 | 
					 | 
				
			||||||
  version "1.1.3"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
is-ci@^1.0.9:
 | 
					is-ci@^1.0.9:
 | 
				
			||||||
  version "1.0.10"
 | 
					  version "1.0.10"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
 | 
					  resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.0.10.tgz#f739336b2632365061a9d48270cd56ae3369318e"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    ci-info "^1.0.0"
 | 
					    ci-info "^1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is-date-object@^1.0.1:
 | 
					 | 
				
			||||||
  version "1.0.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
is-dotfile@^1.0.0:
 | 
					is-dotfile@^1.0.0:
 | 
				
			||||||
  version "1.0.3"
 | 
					  version "1.0.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
 | 
					  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
 | 
				
			||||||
@ -2647,7 +2530,7 @@ is-glob@^3.1.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    is-extglob "^2.1.0"
 | 
					    is-extglob "^2.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is-my-json-valid@^2.10.0:
 | 
					is-my-json-valid@^2.16.0:
 | 
				
			||||||
  version "2.16.0"
 | 
					  version "2.16.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693"
 | 
					  resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -2696,16 +2579,14 @@ is-primitive@^2.0.0:
 | 
				
			|||||||
  version "2.0.0"
 | 
					  version "2.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
 | 
					  resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					is-promise@^2.1.0:
 | 
				
			||||||
 | 
					  version "2.1.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is-property@^1.0.0:
 | 
					is-property@^1.0.0:
 | 
				
			||||||
  version "1.0.2"
 | 
					  version "1.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
 | 
					  resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is-regex@^1.0.3:
 | 
					 | 
				
			||||||
  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:
 | 
					is-resolvable@^1.0.0:
 | 
				
			||||||
  version "1.0.0"
 | 
					  version "1.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
 | 
					  resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
 | 
				
			||||||
@ -2722,10 +2603,6 @@ is-svg@^2.0.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    html-comment-regex "^1.1.0"
 | 
					    html-comment-regex "^1.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
is-symbol@^1.0.1:
 | 
					 | 
				
			||||||
  version "1.0.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
is-typedarray@~1.0.0:
 | 
					is-typedarray@~1.0.0:
 | 
				
			||||||
  version "1.0.0"
 | 
					  version "1.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
 | 
					  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
 | 
				
			||||||
@ -3032,7 +2909,7 @@ js-tokens@^3.0.0:
 | 
				
			|||||||
  version "3.0.2"
 | 
					  version "3.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
 | 
					  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
js-yaml@^3.5.1, js-yaml@^3.7.0:
 | 
					js-yaml@^3.7.0, js-yaml@^3.8.4:
 | 
				
			||||||
  version "3.8.4"
 | 
					  version "3.8.4"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
 | 
					  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -3050,6 +2927,10 @@ jsbn@~0.1.0:
 | 
				
			|||||||
  version "0.1.1"
 | 
					  version "0.1.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
 | 
					  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jschardet@^1.4.2:
 | 
				
			||||||
 | 
					  version "1.4.2"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.4.2.tgz#2aa107f142af4121d145659d44f50830961e699a"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jsdom@^9.11.0:
 | 
					jsdom@^9.11.0:
 | 
				
			||||||
  version "9.12.0"
 | 
					  version "9.12.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
 | 
					  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4"
 | 
				
			||||||
@ -3086,7 +2967,7 @@ json-schema@0.2.3:
 | 
				
			|||||||
  version "0.2.3"
 | 
					  version "0.2.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
 | 
					  resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1:
 | 
					json-stable-stringify@^1.0.1:
 | 
				
			||||||
  version "1.0.1"
 | 
					  version "1.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
 | 
					  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -3121,7 +3002,7 @@ jsprim@^1.2.2:
 | 
				
			|||||||
    json-schema "0.2.3"
 | 
					    json-schema "0.2.3"
 | 
				
			||||||
    verror "1.3.6"
 | 
					    verror "1.3.6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jsx-ast-utils@^1.3.4:
 | 
					jsx-ast-utils@^1.4.1:
 | 
				
			||||||
  version "1.4.1"
 | 
					  version "1.4.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
 | 
					  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3245,7 +3126,7 @@ lodash.words@^3.0.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    lodash._root "^3.0.0"
 | 
					    lodash._root "^3.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1, lodash@~4.17.4:
 | 
					lodash@^4.0.0, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.6.1, lodash@~4.17.4:
 | 
				
			||||||
  version "4.17.4"
 | 
					  version "4.17.4"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
 | 
					  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3376,6 +3257,10 @@ mime@^1.3.4:
 | 
				
			|||||||
  version "1.3.6"
 | 
					  version "1.3.6"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0"
 | 
					  resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					mimic-fn@^1.0.0:
 | 
				
			||||||
 | 
					  version "1.1.0"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
min-document@^2.19.0:
 | 
					min-document@^2.19.0:
 | 
				
			||||||
  version "2.19.0"
 | 
					  version "2.19.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
 | 
					  resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
 | 
				
			||||||
@ -3410,9 +3295,9 @@ ms@2.0.0:
 | 
				
			|||||||
  version "2.0.0"
 | 
					  version "2.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
 | 
					  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mute-stream@0.0.5:
 | 
					mute-stream@0.0.7:
 | 
				
			||||||
  version "0.0.5"
 | 
					  version "0.0.7"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0"
 | 
					  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nan@^2.3.0, nan@^2.3.2:
 | 
					nan@^2.3.0, nan@^2.3.2:
 | 
				
			||||||
  version "2.6.2"
 | 
					  version "2.6.2"
 | 
				
			||||||
@ -3601,18 +3486,6 @@ object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
 | 
				
			|||||||
  version "4.1.1"
 | 
					  version "4.1.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
 | 
					  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
object-keys@^1.0.10, object-keys@^1.0.8:
 | 
					 | 
				
			||||||
  version "1.0.11"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
object.assign@^4.0.4:
 | 
					 | 
				
			||||||
  version "4.0.4"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.0.4.tgz#b1c9cc044ef1b9fe63606fc141abbb32e14730cc"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    define-properties "^1.1.2"
 | 
					 | 
				
			||||||
    function-bind "^1.1.0"
 | 
					 | 
				
			||||||
    object-keys "^1.0.10"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
object.omit@^2.0.0:
 | 
					object.omit@^2.0.0:
 | 
				
			||||||
  version "2.0.1"
 | 
					  version "2.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
 | 
					  resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
 | 
				
			||||||
@ -3636,9 +3509,11 @@ once@^1.3.0, once@^1.3.3, once@^1.4.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    wrappy "1"
 | 
					    wrappy "1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
onetime@^1.0.0:
 | 
					onetime@^2.0.0:
 | 
				
			||||||
  version "1.1.0"
 | 
					  version "2.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789"
 | 
					  resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    mimic-fn "^1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
open@0.0.5:
 | 
					open@0.0.5:
 | 
				
			||||||
  version "0.0.5"
 | 
					  version "0.0.5"
 | 
				
			||||||
@ -3682,7 +3557,7 @@ os-locale@^1.4.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    lcid "^1.0.0"
 | 
					    lcid "^1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
 | 
					os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.1:
 | 
				
			||||||
  version "1.0.2"
 | 
					  version "1.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
 | 
					  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3748,7 +3623,7 @@ path-is-absolute@^1.0.0:
 | 
				
			|||||||
  version "1.0.1"
 | 
					  version "1.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
 | 
					  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
path-is-inside@^1.0.1:
 | 
					path-is-inside@^1.0.1, path-is-inside@^1.0.2:
 | 
				
			||||||
  version "1.0.2"
 | 
					  version "1.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
 | 
					  resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -3796,9 +3671,9 @@ pkg-dir@^1.0.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    find-up "^1.0.0"
 | 
					    find-up "^1.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pluralize@^1.2.1:
 | 
					pluralize@^4.0.0:
 | 
				
			||||||
  version "1.2.1"
 | 
					  version "4.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
 | 
					  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
postcss-calc@^5.2.0:
 | 
					postcss-calc@^5.2.0:
 | 
				
			||||||
  version "5.3.1"
 | 
					  version "5.3.1"
 | 
				
			||||||
@ -4087,9 +3962,9 @@ process@~0.5.1:
 | 
				
			|||||||
  version "0.5.2"
 | 
					  version "0.5.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
 | 
					  resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
progress@^1.1.8:
 | 
					progress@^2.0.0:
 | 
				
			||||||
  version "1.1.8"
 | 
					  version "2.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
 | 
					  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
promise@^7.1.1:
 | 
					promise@^7.1.1:
 | 
				
			||||||
  version "7.3.1"
 | 
					  version "7.3.1"
 | 
				
			||||||
@ -4350,20 +4225,6 @@ readdirp@^2.0.0:
 | 
				
			|||||||
    readable-stream "^2.0.2"
 | 
					    readable-stream "^2.0.2"
 | 
				
			||||||
    set-immediate-shim "^1.0.1"
 | 
					    set-immediate-shim "^1.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
readline2@^1.0.1:
 | 
					 | 
				
			||||||
  version "1.0.1"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    code-point-at "^1.0.0"
 | 
					 | 
				
			||||||
    is-fullwidth-code-point "^1.0.0"
 | 
					 | 
				
			||||||
    mute-stream "0.0.5"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
rechoir@^0.6.2:
 | 
					 | 
				
			||||||
  version "0.6.2"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    resolve "^1.1.6"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
redbox-react@^1.2.2:
 | 
					redbox-react@^1.2.2:
 | 
				
			||||||
  version "1.4.2"
 | 
					  version "1.4.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.4.2.tgz#7fe35d3c567301e97938cc7fd6a10918f424c6b4"
 | 
					  resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.4.2.tgz#7fe35d3c567301e97938cc7fd6a10918f424c6b4"
 | 
				
			||||||
@ -4524,7 +4385,7 @@ require-main-filename@^1.0.1:
 | 
				
			|||||||
  version "1.0.1"
 | 
					  version "1.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
 | 
					  resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require-uncached@^1.0.2:
 | 
					require-uncached@^1.0.3:
 | 
				
			||||||
  version "1.0.3"
 | 
					  version "1.0.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
 | 
					  resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
@ -4543,18 +4404,18 @@ resolve@1.1.7:
 | 
				
			|||||||
  version "1.1.7"
 | 
					  version "1.1.7"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
 | 
					  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
resolve@^1.1.6, resolve@^1.2.0:
 | 
					resolve@^1.2.0:
 | 
				
			||||||
  version "1.3.3"
 | 
					  version "1.3.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
 | 
					  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    path-parse "^1.0.5"
 | 
					    path-parse "^1.0.5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
restore-cursor@^1.0.1:
 | 
					restore-cursor@^2.0.0:
 | 
				
			||||||
  version "1.0.1"
 | 
					  version "2.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541"
 | 
					  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    exit-hook "^1.0.0"
 | 
					    onetime "^2.0.0"
 | 
				
			||||||
    onetime "^1.0.0"
 | 
					    signal-exit "^3.0.2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
right-align@^0.1.1:
 | 
					right-align@^0.1.1:
 | 
				
			||||||
  version "0.1.3"
 | 
					  version "0.1.3"
 | 
				
			||||||
@ -4572,15 +4433,21 @@ ripemd160@0.2.0:
 | 
				
			|||||||
  version "0.2.0"
 | 
					  version "0.2.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
 | 
					  resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-0.2.0.tgz#2bf198bde167cacfa51c0a928e84b68bbe171fce"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
run-async@^0.1.0:
 | 
					run-async@^2.2.0:
 | 
				
			||||||
  version "0.1.0"
 | 
					  version "2.3.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389"
 | 
					  resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    once "^1.3.0"
 | 
					    is-promise "^2.1.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rx-lite@^3.1.2:
 | 
					rx-lite-aggregates@^4.0.8:
 | 
				
			||||||
  version "3.1.2"
 | 
					  version "4.0.8"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102"
 | 
					  resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    rx-lite "*"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rx-lite@*, rx-lite@^4.0.8:
 | 
				
			||||||
 | 
					  version "4.0.8"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
safe-buffer@^5.0.1, safe-buffer@~5.1.0:
 | 
					safe-buffer@^5.0.1, safe-buffer@~5.1.0:
 | 
				
			||||||
  version "5.1.1"
 | 
					  version "5.1.1"
 | 
				
			||||||
@ -4696,19 +4563,11 @@ sha.js@2.2.6:
 | 
				
			|||||||
  version "2.2.6"
 | 
					  version "2.2.6"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
 | 
					  resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.2.6.tgz#17ddeddc5f722fb66501658895461977867315ba"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
shelljs@^0.7.5:
 | 
					 | 
				
			||||||
  version "0.7.8"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    glob "^7.0.0"
 | 
					 | 
				
			||||||
    interpret "^1.0.0"
 | 
					 | 
				
			||||||
    rechoir "^0.6.2"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
shellwords@^0.1.0:
 | 
					shellwords@^0.1.0:
 | 
				
			||||||
  version "0.1.0"
 | 
					  version "0.1.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14"
 | 
					  resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.0.tgz#66afd47b6a12932d9071cbfd98a52e785cd0ba14"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
signal-exit@^3.0.0:
 | 
					signal-exit@^3.0.0, signal-exit@^3.0.2:
 | 
				
			||||||
  version "3.0.2"
 | 
					  version "3.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
 | 
					  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4894,7 +4753,7 @@ strip-ansi@^4.0.0:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    ansi-regex "^3.0.0"
 | 
					    ansi-regex "^3.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
strip-bom@3.0.0, strip-bom@^3.0.0:
 | 
					strip-bom@3.0.0:
 | 
				
			||||||
  version "3.0.0"
 | 
					  version "3.0.0"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
 | 
					  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4956,9 +4815,9 @@ symbol-tree@^3.2.1:
 | 
				
			|||||||
  version "3.2.2"
 | 
					  version "3.2.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
 | 
					  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
table@^3.7.8:
 | 
					table@^4.0.1:
 | 
				
			||||||
  version "3.8.3"
 | 
					  version "4.0.1"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
 | 
					  resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435"
 | 
				
			||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    ajv "^4.7.0"
 | 
					    ajv "^4.7.0"
 | 
				
			||||||
    ajv-keywords "^1.0.0"
 | 
					    ajv-keywords "^1.0.0"
 | 
				
			||||||
@ -5020,6 +4879,12 @@ timers-browserify@^2.0.2:
 | 
				
			|||||||
  dependencies:
 | 
					  dependencies:
 | 
				
			||||||
    setimmediate "^1.0.4"
 | 
					    setimmediate "^1.0.4"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tmp@^0.0.31:
 | 
				
			||||||
 | 
					  version "0.0.31"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    os-tmpdir "~1.0.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tmpl@1.0.x:
 | 
					tmpl@1.0.x:
 | 
				
			||||||
  version "1.0.4"
 | 
					  version "1.0.4"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
 | 
					  resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
 | 
				
			||||||
@ -5149,12 +5014,6 @@ url@^0.11.0:
 | 
				
			|||||||
    punycode "1.3.2"
 | 
					    punycode "1.3.2"
 | 
				
			||||||
    querystring "0.2.0"
 | 
					    querystring "0.2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
user-home@^2.0.0:
 | 
					 | 
				
			||||||
  version "2.0.0"
 | 
					 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
 | 
					 | 
				
			||||||
  dependencies:
 | 
					 | 
				
			||||||
    os-homedir "^1.0.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
util-deprecate@~1.0.1:
 | 
					util-deprecate@~1.0.1:
 | 
				
			||||||
  version "1.0.2"
 | 
					  version "1.0.2"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
 | 
					  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user