diff --git a/.eslintignore b/.eslintignore old mode 100644 new mode 100755 diff --git a/.eslintrc b/.eslintrc old mode 100644 new mode 100755 diff --git a/.gitattributes b/.gitattributes old mode 100644 new mode 100755 diff --git a/LICENSE.md b/LICENSE.md old mode 100644 new mode 100755 diff --git a/ROADMAP.md b/ROADMAP.md old mode 100644 new mode 100755 diff --git a/lerna.json b/lerna.json old mode 100644 new mode 100755 diff --git a/package.json b/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/.editorconfig b/packages/strapi-admin/.editorconfig old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/LICENSE.md b/packages/strapi-admin/LICENSE.md old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/README.md b/packages/strapi-admin/README.md old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/app.js b/packages/strapi-admin/admin/src/app.js old mode 100644 new mode 100755 index 160a7c5599..4bcd6f0130 --- a/packages/strapi-admin/admin/src/app.js +++ b/packages/strapi-admin/admin/src/app.js @@ -7,12 +7,10 @@ import 'babel-polyfill'; // Import all the third party stuff -import React from 'react'; -import ReactDOM from 'react-dom'; import { Provider } from 'react-redux'; import { ConnectedRouter } from 'react-router-redux'; import createHistory from 'history/createBrowserHistory'; -import _ from 'lodash'; +import { merge, isFunction } from 'lodash'; import 'sanitize.css/sanitize.css'; import 'whatwg-fetch'; @@ -79,14 +77,19 @@ window.onload = function onLoad() { * @param params */ const registerPlugin = (plugin) => { - const formattedPlugin = plugin; - // Merge admin translation messages - _.merge(translationMessages, formattedPlugin.translationMessages); + merge(translationMessages, plugin.translationMessages); - formattedPlugin.leftMenuSections = formattedPlugin.leftMenuSections || []; + plugin.leftMenuSections = plugin.leftMenuSections || []; - store.dispatch(pluginLoaded(formattedPlugin)); + // Execute bootstrap function. + if (isFunction(plugin.bootstrap)) { + plugin.bootstrap(plugin).then(plugin => { + store.dispatch(pluginLoaded(plugin)); + }); + } else { + store.dispatch(pluginLoaded(plugin)); + } }; const displayNotification = (message, status) => { @@ -116,7 +119,7 @@ window.Strapi = { apiUrl, refresh: (pluginId) => ({ translationMessages: (translationMessagesUpdated) => { - render(_.merge({}, translationMessages, translationMessagesUpdated)); + render(merge({}, translationMessages, translationMessagesUpdated)); }, leftMenuSections: (leftMenuSectionsUpdated) => { store.dispatch(updatePlugin(pluginId, 'leftMenuSections', leftMenuSectionsUpdated)); @@ -146,4 +149,4 @@ if (window.location.hostname === 'localhost') { const dispatch = store.dispatch; export { dispatch, -}; \ No newline at end of file +}; diff --git a/packages/strapi-admin/admin/src/assets/images/logo-strapi.png b/packages/strapi-admin/admin/src/assets/images/logo-strapi.png old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/components/Header/index.js b/packages/strapi-admin/admin/src/components/Header/index.js old mode 100644 new mode 100755 index a447e8311c..0309c4e660 --- a/packages/strapi-admin/admin/src/components/Header/index.js +++ b/packages/strapi-admin/admin/src/components/Header/index.js @@ -4,8 +4,6 @@ * */ -import React from 'react'; - import styles from './styles.scss'; class Header extends React.Component { // eslint-disable-line react/prefer-stateless-function diff --git a/packages/strapi-admin/admin/src/components/Header/styles.scss b/packages/strapi-admin/admin/src/components/Header/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js b/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js old mode 100644 new mode 100755 index a9ad2b2a1b..57398e6c8d --- a/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js +++ b/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js @@ -4,7 +4,6 @@ * */ -import React from 'react'; import { defineMessages, FormattedMessage } from 'react-intl'; import LocaleToggle from 'containers/LocaleToggle'; diff --git a/packages/strapi-admin/admin/src/components/LeftMenuFooter/messages.json b/packages/strapi-admin/admin/src/components/LeftMenuFooter/messages.json old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/components/LeftMenuFooter/styles.scss b/packages/strapi-admin/admin/src/components/LeftMenuFooter/styles.scss old mode 100644 new mode 100755 index 5606a60189..9dff07c8ad --- a/packages/strapi-admin/admin/src/components/LeftMenuFooter/styles.scss +++ b/packages/strapi-admin/admin/src/components/LeftMenuFooter/styles.scss @@ -6,11 +6,17 @@ width: 100%; bottom: 0; height: 3rem; - padding-left: 1rem; - padding-right: 1rem; + padding-left: 15px; + padding-right: 15px; line-height: 3rem; + font-family: 'Lato'; + font-size: 1rem; + font-weight: 300; + letter-spacing: 0.05rem; vertical-align: middle; color: $strapi-gray-light; - border-top: 1px solid $strapi-gray; - font-size: $font-size-xs; + + select{ + outline: none; + } } diff --git a/packages/strapi-admin/admin/src/components/LeftMenuHeader/index.js b/packages/strapi-admin/admin/src/components/LeftMenuHeader/index.js old mode 100644 new mode 100755 index fc114b0593..c8843a71e7 --- a/packages/strapi-admin/admin/src/components/LeftMenuHeader/index.js +++ b/packages/strapi-admin/admin/src/components/LeftMenuHeader/index.js @@ -4,7 +4,6 @@ * */ -import React from 'react'; import { Link } from 'react-router-dom'; import styles from './styles.scss'; diff --git a/packages/strapi-admin/admin/src/components/LeftMenuHeader/styles.scss b/packages/strapi-admin/admin/src/components/LeftMenuHeader/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/components/LeftMenuLink/index.js b/packages/strapi-admin/admin/src/components/LeftMenuLink/index.js old mode 100644 new mode 100755 index 33f952067f..dc8bb81bd5 --- a/packages/strapi-admin/admin/src/components/LeftMenuLink/index.js +++ b/packages/strapi-admin/admin/src/components/LeftMenuLink/index.js @@ -5,7 +5,7 @@ */ import _ from 'lodash'; -import React from 'react'; +import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { Link } from 'react-router-dom'; @@ -21,7 +21,14 @@ class LeftMenuLink extends React.Component { // eslint-disable-line react/prefer
  • - +
  • ); @@ -29,9 +36,9 @@ class LeftMenuLink extends React.Component { // eslint-disable-line react/prefer } LeftMenuLink.propTypes = { - destination: React.PropTypes.string.isRequired, - icon: React.PropTypes.string.isRequired, - label: React.PropTypes.string.isRequired, + destination: PropTypes.string.isRequired, + icon: PropTypes.string.isRequired, + label: PropTypes.string.isRequired, }; export default LeftMenuLink; diff --git a/packages/strapi-admin/admin/src/components/LeftMenuLink/styles.scss b/packages/strapi-admin/admin/src/components/LeftMenuLink/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/index.js b/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/index.js old mode 100644 new mode 100755 index 1abad02d1b..932f70455f --- a/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/index.js +++ b/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/index.js @@ -4,7 +4,7 @@ * */ -import React from 'react'; +import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { map } from 'lodash'; @@ -16,17 +16,17 @@ import messages from './messages.json'; class LeftMenuLinkContainer extends React.Component { // eslint-disable-line react/prefer-stateless-function render() { // Generate the list of sections - const linkSections = this.props.plugins.valueSeq().map(plugin => ( - plugin.get('leftMenuSections').map((leftMenuSection, j) => { - return ( -
    -

    {leftMenuSection.get('name')}

    - -
    - ); - }) + const linkSections = map(this.props.plugins.toJS(), plugin => ( + plugin.leftMenuSections.map((leftMenuSection, j) => ( +
    +

    {leftMenuSection.name}

    + +
    + )) )); // Check if the plugins list is empty or not @@ -80,7 +80,7 @@ class LeftMenuLinkContainer extends React.Component { // eslint-disable-line rea } LeftMenuLinkContainer.propTypes = { - plugins: React.PropTypes.object.isRequired, + plugins: PropTypes.object.isRequired, }; export default LeftMenuLinkContainer; diff --git a/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/styles.scss b/packages/strapi-admin/admin/src/components/LeftMenuLinkContainer/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/components/Notification/index.js b/packages/strapi-admin/admin/src/components/Notification/index.js old mode 100644 new mode 100755 index fbe24ec598..4847493322 --- a/packages/strapi-admin/admin/src/components/Notification/index.js +++ b/packages/strapi-admin/admin/src/components/Notification/index.js @@ -4,7 +4,7 @@ * */ -import React from 'react'; +import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import styles from './styles.scss'; @@ -53,8 +53,8 @@ class Notification extends React.Component { // eslint-disable-line react/prefer } Notification.propTypes = { - notification: React.PropTypes.object.isRequired, - onHideNotification: React.PropTypes.func.isRequired, + notification: PropTypes.object.isRequired, + onHideNotification: PropTypes.func.isRequired, }; export default Notification; diff --git a/packages/strapi-admin/admin/src/components/Notification/styles.scss b/packages/strapi-admin/admin/src/components/Notification/styles.scss index 99c3945843..1075db8df0 100644 --- a/packages/strapi-admin/admin/src/components/Notification/styles.scss +++ b/packages/strapi-admin/admin/src/components/Notification/styles.scss @@ -4,69 +4,71 @@ .notification { position: relative; display: flex; - width: 28.6rem; align-items: stretch; + width: 300px; + min-height: 60px; + margin-bottom: 14px; background: $white; - margin-bottom: 1.4rem; - transition: all 0.2s ease; - border-radius: 0.1rem; + border-radius: 2px; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.15); color: #333740; + transition: all 0.15s ease; + overflow: hidden; } .notification:hover { - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.5); + cursor: pointer; + box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.2); } .notificationIcon { position: relative; display: block; - width: 18%; + width: 60px; text-align: center; font-size: 2.4rem; &:before { position: absolute; - top: calc(50% - 1rem); - left: calc(50% - 1rem); + top: calc(50% - 10px); left: calc(50% - 10px); + width: 20px; + height: 20px; + padding-top: 4px; border-radius: 100%; border: 1px solid $brand-success; color: $brand-success; - height: 2rem; - width: 2rem; font-size: 1.2rem; - padding-top: .3rem; - padding-left: 0.1rem; text-align: center; } } .notificationContent { - display: block; + display: flex; + align-items: center; + width: 220px; margin: 0; - padding-top: 1.5rem; - padding-bottom: 1.5rem; - padding-right: 1rem; + padding-right: 10px; border-right: 1px solid rgba(255, 255, 255, 0.3); - width: 70%; } .notificationTitle { - font-weight: 500; - font-size: 1.4rem; margin-bottom: 0; + font-size: 1.4rem; + font-weight: 400; + line-height: 1.8rem; } .notificationClose { + cursor: pointer; + opacity: 0.6; position: relative; display: block; - cursor: pointer; - width: 12%; - opacity: 0.6; - transition: opacity 0.1s ease; + + width: 20px; font-size: 1.6rem; - color: #c2c4c7; + color: #BBC2BF; + transition: opacity 0.1s ease; &:hover { opacity: 1; @@ -74,28 +76,39 @@ &:before { position: absolute; - top: calc(50% - .9rem); - left: calc(50% - 0.5rem); + top: calc(50% - 6px); + height: 100%; + font-size: 1.4rem; } } +.notificationSuccess{ + background: linear-gradient(100deg , #FFFFFF 50%, rgba(39, 183, 15, .05)), $white; +} + .notificationWarning { + background: linear-gradient(100deg , #FFFFFF 50%, rgba(250, 156, 0, .05)), $white; + .notificationIcon:before { + padding-top: 4px; border-color: $brand-warning; color: $brand-warning; - padding-top: .4rem; } } .notificationError { + background: linear-gradient(100deg , #FFFFFF 50%, rgba(255, 93, 0, .05)), $white; + .notificationIcon:before { + padding-top: 4px; border-color: $brand-danger; color: $brand-danger; - padding-top: .4rem; } } .notificationInfo { + background: linear-gradient(100deg , #FFFFFF 50%, rgba(28, 93, 231, .05)), $white; + .notificationIcon:before { border-color: $brand-primary; color: $brand-primary; diff --git a/packages/strapi-admin/admin/src/components/NotificationsContainer/index.js b/packages/strapi-admin/admin/src/components/NotificationsContainer/index.js old mode 100644 new mode 100755 index e8f7832fae..f14616778c --- a/packages/strapi-admin/admin/src/components/NotificationsContainer/index.js +++ b/packages/strapi-admin/admin/src/components/NotificationsContainer/index.js @@ -4,42 +4,47 @@ * */ -import React from 'react'; -import ReactCSSTransitionGroup from 'react/lib/ReactCSSTransitionGroup'; +import PropTypes from 'prop-types'; import Notification from 'components/Notification'; import styles from './styles.scss'; +const { CSSTransition, TransitionGroup } = ReactTransitionGroup; + class NotificationsContainer extends React.Component { // eslint-disable-line react/prefer-stateless-function render() { - let notifications; + if (this.props.notifications.length === 0) { + return (false); + } - if (this.props.notifications) { - notifications = this.props.notifications.map((notification) => ( + const notifications = this.props.notifications.map((notification, i) => ( + )); - } + /> + + )); return ( - + + {notifications} + ); } } NotificationsContainer.propTypes = { - notifications: React.PropTypes.object.isRequired, - onHideNotification: React.PropTypes.func.isRequired, + notifications: PropTypes.object.isRequired, + onHideNotification: PropTypes.func.isRequired, }; export default NotificationsContainer; diff --git a/packages/strapi-admin/admin/src/components/NotificationsContainer/styles.scss b/packages/strapi-admin/admin/src/components/NotificationsContainer/styles.scss old mode 100644 new mode 100755 index 815939e65e..7f9216f413 --- a/packages/strapi-admin/admin/src/components/NotificationsContainer/styles.scss +++ b/packages/strapi-admin/admin/src/components/NotificationsContainer/styles.scss @@ -3,8 +3,8 @@ .notificationsContainer { /* stylelint-disable */ position: absolute; - top: 7rem; - right: 1rem; + top: 72px; + right: 15px; z-index: 1000; list-style: none; } diff --git a/packages/strapi-admin/admin/src/components/Toggle/index.js b/packages/strapi-admin/admin/src/components/Toggle/index.js old mode 100644 new mode 100755 index 9c4931d78e..9f7fe59424 --- a/packages/strapi-admin/admin/src/components/Toggle/index.js +++ b/packages/strapi-admin/admin/src/components/Toggle/index.js @@ -4,7 +4,7 @@ * */ -import React from 'react'; +import PropTypes from 'prop-types'; import ToggleOption from 'components/ToggleOption'; @@ -28,10 +28,10 @@ function Toggle(props) { // eslint-disable-line react/prefer-stateless-function } Toggle.propTypes = { - messages: React.PropTypes.object.isRequired, - onToggle: React.PropTypes.func.isRequired, - value: React.PropTypes.string.isRequired, - values: React.PropTypes.array.isRequired, + messages: PropTypes.object.isRequired, + onToggle: PropTypes.func.isRequired, + value: PropTypes.string.isRequired, + values: PropTypes.array.isRequired, }; export default Toggle; diff --git a/packages/strapi-admin/admin/src/components/Toggle/styles.scss b/packages/strapi-admin/admin/src/components/Toggle/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/components/ToggleOption/index.js b/packages/strapi-admin/admin/src/components/ToggleOption/index.js old mode 100644 new mode 100755 index 2f13fcc4f7..6fb67a44b5 --- a/packages/strapi-admin/admin/src/components/ToggleOption/index.js +++ b/packages/strapi-admin/admin/src/components/ToggleOption/index.js @@ -4,7 +4,7 @@ * */ -import React from 'react'; +import PropTypes from 'prop-types'; import { injectIntl, intlShape } from 'react-intl'; const ToggleOption = ({ value, message, intl }) => ( @@ -15,11 +15,11 @@ const ToggleOption = ({ value, message, intl }) => ( ToggleOption.propTypes = { intl: intlShape.isRequired, - message: React.PropTypes.oneOfType([ - React.PropTypes.object.isRequired, - React.PropTypes.string.isRequired, + message: PropTypes.oneOfType([ + PropTypes.object.isRequired, + PropTypes.string.isRequired, ]).isRequired, - value: React.PropTypes.string.isRequired, + value: PropTypes.string.isRequired, }; export default injectIntl(ToggleOption); diff --git a/packages/strapi-admin/admin/src/containers/AdminPage/index.js b/packages/strapi-admin/admin/src/containers/AdminPage/index.js index 9f57e9e1f0..a5ec88f087 100644 --- a/packages/strapi-admin/admin/src/containers/AdminPage/index.js +++ b/packages/strapi-admin/admin/src/containers/AdminPage/index.js @@ -9,7 +9,7 @@ * the linting exception. */ -import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { createStructuredSelector } from 'reselect'; import { Switch, Route } from 'react-router-dom'; @@ -26,7 +26,7 @@ import { hideNotification } from 'containers/NotificationProvider/actions'; import Header from 'components/Header/index'; -import styles from './syles.scss'; +import styles from './styles.scss'; export class AdminPage extends React.Component { // eslint-disable-line react/prefer-stateless-function render() { @@ -53,11 +53,11 @@ export class AdminPage extends React.Component { // eslint-disable-line react/pr } AdminPage.contextTypes = { - router: React.PropTypes.object.isRequired, + router: PropTypes.object.isRequired, }; AdminPage.propTypes = { - plugins: React.PropTypes.object.isRequired, + plugins: PropTypes.object.isRequired, }; const mapStateToProps = createStructuredSelector({ diff --git a/packages/strapi-admin/admin/src/containers/AdminPage/syles.scss b/packages/strapi-admin/admin/src/containers/AdminPage/styles.scss old mode 100644 new mode 100755 similarity index 100% rename from packages/strapi-admin/admin/src/containers/AdminPage/syles.scss rename to packages/strapi-admin/admin/src/containers/AdminPage/styles.scss diff --git a/packages/strapi-admin/admin/src/containers/App/actions.js b/packages/strapi-admin/admin/src/containers/App/actions.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/App/constants.js b/packages/strapi-admin/admin/src/containers/App/constants.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/App/index.js b/packages/strapi-admin/admin/src/containers/App/index.js index 77fc7d38af..2d832477b1 100644 --- a/packages/strapi-admin/admin/src/containers/App/index.js +++ b/packages/strapi-admin/admin/src/containers/App/index.js @@ -11,7 +11,7 @@ * the linting exception. */ -import React from 'react'; +import PropTypes from 'prop-types'; import { Switch, Route } from 'react-router-dom'; import AdminPage from 'containers/AdminPage'; @@ -20,6 +20,7 @@ import NotFoundPage from 'containers/NotFoundPage'; import NotificationProvider from 'containers/NotificationProvider'; import '../../styles/main.scss'; + import styles from './styles.scss'; export class App extends React.Component { // eslint-disable-line react/prefer-stateless-function @@ -39,7 +40,7 @@ export class App extends React.Component { // eslint-disable-line react/prefer-s } App.contextTypes = { - router: React.PropTypes.object.isRequired, + router: PropTypes.object.isRequired, }; App.propTypes = {}; diff --git a/packages/strapi-admin/admin/src/containers/App/reducer.js b/packages/strapi-admin/admin/src/containers/App/reducer.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/App/styles.scss b/packages/strapi-admin/admin/src/containers/App/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/ComingSoonPage/index.js b/packages/strapi-admin/admin/src/containers/ComingSoonPage/index.js old mode 100644 new mode 100755 index 2e768f9f3a..aea3a0c74e --- a/packages/strapi-admin/admin/src/containers/ComingSoonPage/index.js +++ b/packages/strapi-admin/admin/src/containers/ComingSoonPage/index.js @@ -4,21 +4,33 @@ * */ -import React from 'react'; import { connect } from 'react-redux'; import Helmet from 'react-helmet'; -import { FormattedMessage } from 'react-intl'; -import messages from './messages.json'; + +import PluginHeader from 'components/PluginHeader'; + import styles from './styles.scss'; export class ComingSoonPage extends React.Component { // eslint-disable-line react/prefer-stateless-function render() { return ( -
    +
    -

    .

    +
    +
    + +
    +
    ); } diff --git a/packages/strapi-admin/admin/src/containers/ComingSoonPage/styles.scss b/packages/strapi-admin/admin/src/containers/ComingSoonPage/styles.scss old mode 100644 new mode 100755 index 5c51919c86..69c2fa05ba --- a/packages/strapi-admin/admin/src/containers/ComingSoonPage/styles.scss +++ b/packages/strapi-admin/admin/src/containers/ComingSoonPage/styles.scss @@ -1,3 +1,4 @@ -.wrapper { - padding: 2.3rem; +.containerFluid { /* stylelint-disable */ + padding: 18px 30px !important; + overflow: hidden; } diff --git a/packages/strapi-admin/admin/src/containers/Content/index.js b/packages/strapi-admin/admin/src/containers/Content/index.js old mode 100644 new mode 100755 index 628ee1f8a9..38b6bf4d00 --- a/packages/strapi-admin/admin/src/containers/Content/index.js +++ b/packages/strapi-admin/admin/src/containers/Content/index.js @@ -4,7 +4,7 @@ * */ -import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; @@ -23,7 +23,7 @@ export class Content extends React.Component { // eslint-disable-line react/pref } Content.propTypes = { - children: React.PropTypes.node.isRequired, + children: PropTypes.node.isRequired, }; const mapStateToProps = createSelector( diff --git a/packages/strapi-admin/admin/src/containers/Content/styles.scss b/packages/strapi-admin/admin/src/containers/Content/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/HomePage/index.js b/packages/strapi-admin/admin/src/containers/HomePage/index.js index d3fc554480..e256d315cd 100644 --- a/packages/strapi-admin/admin/src/containers/HomePage/index.js +++ b/packages/strapi-admin/admin/src/containers/HomePage/index.js @@ -4,7 +4,6 @@ * */ -import React from 'react'; import { connect } from 'react-redux'; import Helmet from 'react-helmet'; import { FormattedMessage } from 'react-intl'; diff --git a/packages/strapi-admin/admin/src/containers/LanguageProvider/actions.js b/packages/strapi-admin/admin/src/containers/LanguageProvider/actions.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/LanguageProvider/constants.js b/packages/strapi-admin/admin/src/containers/LanguageProvider/constants.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js b/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js old mode 100644 new mode 100755 index 3d7e64751d..5fc465c591 --- a/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js +++ b/packages/strapi-admin/admin/src/containers/LanguageProvider/index.js @@ -6,7 +6,7 @@ * IntlProvider component and i18n messages (loaded from `app/translations`) */ -import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; import { IntlProvider } from 'react-intl'; @@ -23,9 +23,9 @@ export class LanguageProvider extends React.Component { // eslint-disable-line r } LanguageProvider.propTypes = { - children: React.PropTypes.element.isRequired, - locale: React.PropTypes.string.isRequired, - messages: React.PropTypes.object.isRequired, + children: PropTypes.element.isRequired, + locale: PropTypes.string.isRequired, + messages: PropTypes.object.isRequired, }; diff --git a/packages/strapi-admin/admin/src/containers/LanguageProvider/selectors.js b/packages/strapi-admin/admin/src/containers/LanguageProvider/selectors.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/LeftMenu/index.js b/packages/strapi-admin/admin/src/containers/LeftMenu/index.js old mode 100644 new mode 100755 index d9226fcfe0..35cd08b6d6 --- a/packages/strapi-admin/admin/src/containers/LeftMenu/index.js +++ b/packages/strapi-admin/admin/src/containers/LeftMenu/index.js @@ -4,7 +4,7 @@ * */ -import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import LeftMenuHeader from 'components/LeftMenuHeader'; @@ -26,7 +26,7 @@ export class LeftMenu extends React.Component { // eslint-disable-line react/pre } LeftMenu.propTypes = { - plugins: React.PropTypes.object.isRequired, + plugins: PropTypes.object.isRequired, }; function mapDispatchToProps(dispatch) { diff --git a/packages/strapi-admin/admin/src/containers/LeftMenu/styles.scss b/packages/strapi-admin/admin/src/containers/LeftMenu/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/LocaleToggle/index.js b/packages/strapi-admin/admin/src/containers/LocaleToggle/index.js old mode 100644 new mode 100755 index af45c417b2..e4aec6fd4d --- a/packages/strapi-admin/admin/src/containers/LocaleToggle/index.js +++ b/packages/strapi-admin/admin/src/containers/LocaleToggle/index.js @@ -4,7 +4,7 @@ * */ -import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { createSelector } from 'reselect'; @@ -32,8 +32,8 @@ export class LocaleToggle extends React.Component { // eslint-disable-line } LocaleToggle.propTypes = { - locale: React.PropTypes.string.isRequired, - onLocaleToggle: React.PropTypes.func.isRequired, + locale: PropTypes.string.isRequired, + onLocaleToggle: PropTypes.func.isRequired, }; const mapStateToProps = createSelector( diff --git a/packages/strapi-admin/admin/src/containers/LocaleToggle/styles.scss b/packages/strapi-admin/admin/src/containers/LocaleToggle/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/NotFoundPage/index.js b/packages/strapi-admin/admin/src/containers/NotFoundPage/index.js old mode 100644 new mode 100755 index 107d8da036..9c379c3d72 --- a/packages/strapi-admin/admin/src/containers/NotFoundPage/index.js +++ b/packages/strapi-admin/admin/src/containers/NotFoundPage/index.js @@ -9,9 +9,10 @@ * the linting exception. */ -import React from 'react'; +import PropTypes from 'prop-types'; import { defineMessages, FormattedMessage } from 'react-intl'; -import { Link } from 'react-router-dom'; + +import Button from 'components/Button'; import styles from './styles.scss'; import messages from './messages.json'; @@ -28,8 +29,23 @@ export default class NotFound extends React.Component { // eslint-disable-line r

    - Back to home page. +
    ); } } + +NotFound.propTypes = { + history: PropTypes.shape({ + goBack: PropTypes.func.isRequired, + }).isRequired, +}; diff --git a/packages/strapi-admin/admin/src/containers/NotFoundPage/messages.json b/packages/strapi-admin/admin/src/containers/NotFoundPage/messages.json old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/NotFoundPage/styles.scss b/packages/strapi-admin/admin/src/containers/NotFoundPage/styles.scss old mode 100644 new mode 100755 index 08bb8f2266..1d72ffefd1 --- a/packages/strapi-admin/admin/src/containers/NotFoundPage/styles.scss +++ b/packages/strapi-admin/admin/src/containers/NotFoundPage/styles.scss @@ -2,24 +2,29 @@ @import "../../styles/variables/variables"; .notFound { /* stylelint-ignore */ - height: 100vh; - background: $strapi-blue-darker; display: -webkit-flex; display: flex; flex-direction: column; align-items: center; justify-content: center; -} + padding-top: 114px; -.notFoundTitle { - color: $white; - font-size: 20rem; - margin-bottom: 2rem; - text-shadow: 0 1rem 4rem rgba(255, 255, 255, 0.8); - letter-spacing: 2rem; -} + h1{ + margin-bottom: 12px; + text-shadow: 0 1rem 4rem rgba(255, 255, 255, 0.8); + color: #2C3138; + font-size: 6.4rem; + letter-spacing: 2px; + } -.notFoundDescription { - color: $white; - margin-bottom: 2rem; -} \ No newline at end of file + h2{ + color: #2C3138; + font-size: 1.4rem; + font-weight: 400; + margin-bottom: 50px; + } + + button{ + margin: 0; + } +} diff --git a/packages/strapi-admin/admin/src/containers/NotificationProvider/actions.js b/packages/strapi-admin/admin/src/containers/NotificationProvider/actions.js old mode 100644 new mode 100755 index 1c475054ef..be2a2a5229 --- a/packages/strapi-admin/admin/src/containers/NotificationProvider/actions.js +++ b/packages/strapi-admin/admin/src/containers/NotificationProvider/actions.js @@ -20,7 +20,7 @@ export function showNotification(message, status) { ((id) => { setTimeout(() => { dispatch(hideNotification(id)); - }, 5000); + }, 2500); })(nextNotificationId); return { diff --git a/packages/strapi-admin/admin/src/containers/NotificationProvider/constants.js b/packages/strapi-admin/admin/src/containers/NotificationProvider/constants.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/NotificationProvider/index.js b/packages/strapi-admin/admin/src/containers/NotificationProvider/index.js index 093663fdce..1106f37860 100644 --- a/packages/strapi-admin/admin/src/containers/NotificationProvider/index.js +++ b/packages/strapi-admin/admin/src/containers/NotificationProvider/index.js @@ -4,7 +4,7 @@ * */ -import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { createStructuredSelector } from 'reselect'; @@ -25,8 +25,8 @@ export class NotificationProvider extends React.Component { // eslint-disable-li } NotificationProvider.propTypes = { - notifications: React.PropTypes.object.isRequired, - onHideNotification: React.PropTypes.func.isRequired, + notifications: PropTypes.object.isRequired, + onHideNotification: PropTypes.func.isRequired, }; const mapStateToProps = createStructuredSelector({ diff --git a/packages/strapi-admin/admin/src/containers/NotificationProvider/reducer.js b/packages/strapi-admin/admin/src/containers/NotificationProvider/reducer.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/NotificationProvider/selectors.js b/packages/strapi-admin/admin/src/containers/NotificationProvider/selectors.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/containers/PluginPage/index.js b/packages/strapi-admin/admin/src/containers/PluginPage/index.js old mode 100644 new mode 100755 index d6ba8497dd..2db1f6f6d8 --- a/packages/strapi-admin/admin/src/containers/PluginPage/index.js +++ b/packages/strapi-admin/admin/src/containers/PluginPage/index.js @@ -3,8 +3,8 @@ * PluginPage * */ - -import React from 'react'; + +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import Helmet from 'react-helmet'; import { createSelector } from 'reselect'; @@ -12,23 +12,27 @@ import { selectPlugins } from 'containers/App/selectors'; export class PluginPage extends React.Component { // eslint-disable-line react/prefer-stateless-function render() { + let pluginName; + // Detect plugin id from url params const pluginId = this.props.match.params.pluginId; + const plugins = this.props.plugins.toJS(); - const containers = this.props.plugins.valueSeq().map((plugin) => { - if (plugin.get('id') === pluginId) { - const Elem = plugin.get('mainComponent'); - return ; + const containers = Object.keys(plugins).map((name) => { + const plugin = plugins[name]; + + if (plugin.id === pluginId) { + pluginName = plugin.name; + + const Elem = plugin.mainComponent; + return ; } }); return (
    {containers}
    @@ -36,13 +40,9 @@ export class PluginPage extends React.Component { // eslint-disable-line react/p } } -PluginPage.contextTypes = { - router: React.PropTypes.object.isRequired, -}; - PluginPage.propTypes = { - match: React.PropTypes.object.isRequired, - plugins: React.PropTypes.object.isRequired, + match: PropTypes.object.isRequired, + plugins: PropTypes.object.isRequired, }; const mapStateToProps = createSelector( diff --git a/packages/strapi-admin/admin/src/i18n.js b/packages/strapi-admin/admin/src/i18n.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/index.html b/packages/strapi-admin/admin/src/index.html old mode 100644 new mode 100755 index ff86160ebd..f9b3624764 --- a/packages/strapi-admin/admin/src/index.html +++ b/packages/strapi-admin/admin/src/index.html @@ -12,5 +12,9 @@
    + + + + diff --git a/packages/strapi-admin/admin/src/reducers.js b/packages/strapi-admin/admin/src/reducers.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/store.js b/packages/strapi-admin/admin/src/store.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/base/animations.scss b/packages/strapi-admin/admin/src/styles/base/animations.scss old mode 100644 new mode 100755 index 665ca63024..2d309e6d27 --- a/packages/strapi-admin/admin/src/styles/base/animations.scss +++ b/packages/strapi-admin/admin/src/styles/base/animations.scss @@ -13,13 +13,13 @@ right: 0; } -.notification-leave { +.notification-exit { opacity: 1; right: 0; } -.notification-leave.notification-leave-active { +.notification-exit.notification-exit-active { opacity: 0.01; transition: all 400ms ease-in; right: -45rem; -} \ No newline at end of file +} diff --git a/packages/strapi-admin/admin/src/styles/base/bootstrap-override.scss b/packages/strapi-admin/admin/src/styles/base/bootstrap-override.scss index 11e9dbcf37..a39d1e6c2e 100644 --- a/packages/strapi-admin/admin/src/styles/base/bootstrap-override.scss +++ b/packages/strapi-admin/admin/src/styles/base/bootstrap-override.scss @@ -8,8 +8,6 @@ border-radius: .2rem; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); border: none; - padding-left: 3rem; - padding-right: 3rem; } .modal-backdrop.show { diff --git a/packages/strapi-admin/admin/src/styles/base/fonts.scss b/packages/strapi-admin/admin/src/styles/base/fonts.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/base/helpers.scss b/packages/strapi-admin/admin/src/styles/base/helpers.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.eot b/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.eot old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.svg b/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.svg old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.ttf b/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.ttf old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.woff b/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.woff old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.woff2 b/packages/strapi-admin/admin/src/styles/fonts/bootstrap/glyphicons-halflings-regular.woff2 old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/fontawesome/FontAwesome.otf b/packages/strapi-admin/admin/src/styles/fonts/fontawesome/FontAwesome.otf old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.eot b/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.eot old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.svg b/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.svg old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.ttf b/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.ttf old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.woff b/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.woff old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.woff2 b/packages/strapi-admin/admin/src/styles/fonts/fontawesome/fontawesome-webfont.woff2 old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/libs/bootstrap/_variables.scss b/packages/strapi-admin/admin/src/styles/libs/bootstrap/_variables.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/libs/fontawesome/_fontawesome.scss b/packages/strapi-admin/admin/src/styles/libs/fontawesome/_fontawesome.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/main.scss b/packages/strapi-admin/admin/src/styles/main.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/admin/src/styles/variables/variables.scss b/packages/strapi-admin/admin/src/styles/variables/variables.scss old mode 100644 new mode 100755 index 191ad25a5c..b33d95fc6c --- a/packages/strapi-admin/admin/src/styles/variables/variables.scss +++ b/packages/strapi-admin/admin/src/styles/variables/variables.scss @@ -23,6 +23,7 @@ $left-menu-title-color: #5B626F; $header-height: 6rem; // -- content -$content-background: $strapi-gray-light; +$content-background: #FAFAFB; + // Import bootstrap variables @import "variables.bootstrap"; diff --git a/packages/strapi-admin/admin/src/translations/en.json b/packages/strapi-admin/admin/src/translations/en.json old mode 100644 new mode 100755 index 4b46adceac..725671d08b --- a/packages/strapi-admin/admin/src/translations/en.json +++ b/packages/strapi-admin/admin/src/translations/en.json @@ -1,5 +1,6 @@ { "app.components.ComingSoonPage.comingSoon": "Coming soon", + "app.components.ComingSoonPage.featuresNotAvailable": "This feature is still under active development.", "app.components.HomePage.welcome": "Welcome to the home page", "app.components.LeftMenuFooter.poweredBy": "Proudly powered by", "app.components.LeftMenuLinkContainer.configuration": "Configuration", @@ -8,5 +9,6 @@ "app.components.LeftMenuLinkContainer.listPlugins": "List plugins", "app.components.LeftMenuLinkContainer.noPluginsInstalled": "No plugins installed yet", "app.components.LeftMenuLinkContainer.plugins": "Plugins", - "app.components.NotFoundPage.description": "" -} \ No newline at end of file + "app.components.NotFoundPage.description": "Not Found", + "app.components.NotFoundPage.back": "Back to homepage" +} diff --git a/packages/strapi-admin/admin/src/translations/fr.json b/packages/strapi-admin/admin/src/translations/fr.json old mode 100644 new mode 100755 index d00088bf3d..c5bf22d06e --- a/packages/strapi-admin/admin/src/translations/fr.json +++ b/packages/strapi-admin/admin/src/translations/fr.json @@ -1,5 +1,6 @@ { "app.components.ComingSoonPage.comingSoon": "Bientôt disponible", + "app.components.ComingSoonPage.featuresNotAvailable": "Cette fonctionnalité est toujours en cours de développement.", "app.components.HomePage.welcome": "Bienvenue sur la page d'accueil", "app.components.LeftMenuFooter.poweredBy": "Propulsé par", "app.components.LeftMenuLinkContainer.configuration": "Configuration", @@ -8,5 +9,6 @@ "app.components.LeftMenuLinkContainer.listPlugins": "Liste des plugins", "app.components.LeftMenuLinkContainer.noPluginsInstalled": "Aucun plugin installé", "app.components.LeftMenuLinkContainer.plugins": "Plugins", - "app.components.NotFoundPage.description": "Page introuvable" -} \ No newline at end of file + "app.components.NotFoundPage.description": "Page introuvable", + "app.components.NotFoundPage.back": "Retourner à la page d'accueil" +} diff --git a/packages/strapi-admin/admin/src/utils/injectReducer.js b/packages/strapi-admin/admin/src/utils/injectReducer.js index 1e46dbb3b8..27f2751b2e 100644 --- a/packages/strapi-admin/admin/src/utils/injectReducer.js +++ b/packages/strapi-admin/admin/src/utils/injectReducer.js @@ -1,4 +1,4 @@ -import React from 'react'; + import PropTypes from 'prop-types'; import hoistNonReactStatics from 'hoist-non-react-statics'; diff --git a/packages/strapi-admin/admin/src/utils/injectSaga.js b/packages/strapi-admin/admin/src/utils/injectSaga.js index 1679cf9a99..161993fe19 100644 --- a/packages/strapi-admin/admin/src/utils/injectSaga.js +++ b/packages/strapi-admin/admin/src/utils/injectSaga.js @@ -1,4 +1,4 @@ -import React from 'react'; + import PropTypes from 'prop-types'; import hoistNonReactStatics from 'hoist-non-react-statics'; diff --git a/packages/strapi-admin/config/routes.json b/packages/strapi-admin/config/routes.json old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/controllers/Admin.js b/packages/strapi-admin/controllers/Admin.js old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/files/package.json b/packages/strapi-admin/files/package.json new file mode 100755 index 0000000000..4069bc42e5 --- /dev/null +++ b/packages/strapi-admin/files/package.json @@ -0,0 +1,28 @@ +{ + "name": "strapi-admin", + "version": "0.0.0", + "description": "Strapi Admin", + "repository": { + "type": "git", + "url": "git://github.com/strapi/strapi-admin.git" + }, + "engines": { + "npm": ">=3" + }, + "author": "Strapi", + "license": "MIT", + "scripts": { + "setup": "npm install && cd public && npm install && npm run build", + "test": "cd public && npm run test" + }, + "pre-commit": [ + "test" + ], + "dependencies": { + "cheerio": "0.22.0", + "lodash": "^4.17.2" + }, + "devDependencies": { + "pre-commit": "1.1.3" + } +} diff --git a/packages/strapi-admin/files/public/.github/CONTRIBUTING.md b/packages/strapi-admin/files/public/.github/CONTRIBUTING.md new file mode 100755 index 0000000000..f5cc234dd5 --- /dev/null +++ b/packages/strapi-admin/files/public/.github/CONTRIBUTING.md @@ -0,0 +1,122 @@ +# Contributing to react-boilerplate + +Love react-boilerplate and want to help? Thanks so much, there's something to do for everybody! + +Please take a moment to review this document in order to make the contribution process easy and effective for everyone involved. + +Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue or assessing patches and features. + +## Using the issue tracker + +The [issue tracker](https://github.com/mxstbr/react-boilerplate/issues) is +the preferred channel for [bug reports](#bugs), [features requests](#features) +and [submitting pull requests](#pull-requests). + + +## Bug reports + +A bug is a _demonstrable problem_ that is caused by the code in the repository. +Good bug reports are extremely helpful - thank you! + +Guidelines for bug reports: + +1. **Use the GitHub issue search** — check if the issue has already been reported. + +2. **Check if the issue has been fixed** — try to reproduce it using the latest `master` or development branch in the repository. + +3. **Isolate the problem** — ideally create a [reduced test case](https://css-tricks.com/reduced-test-cases/) and a live example. + +A good bug report shouldn't leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What browser(s) and OS +experience the problem? What would you expect to be the outcome? All these details will help people to fix any potential bugs. + +Example: + +> Short and descriptive example bug report title +> +> A summary of the issue and the browser/OS environment in which it occurs. If +> suitable, include the steps required to reproduce the bug. +> +> 1. This is the first step +> 2. This is the second step +> 3. Further steps, etc. +> +> `` - a link to the reduced test case +> +> Any other information you want to share that is relevant to the issue being +> reported. This might include the lines of code that you have identified as +> causing the bug, and potential solutions (and your opinions on their +> merits). + + + +## Feature requests + +Feature requests are welcome. But take a moment to find out whether your idea fits with the scope and aims of the project. It's up to *you* to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible. + + + +## Pull requests + +Good pull requests - patches, improvements, new features - are a fantastic +help. They should remain focused in scope and avoid containing unrelated +commits. + +**Please ask first** before embarking on any significant pull request (e.g. +implementing features, refactoring code, porting to a different language), +otherwise you risk spending a lot of time working on something that the +project's developers might not want to merge into the project. + +Please adhere to the coding conventions used throughout a project (indentation, +accurate comments, etc.) and any other requirements (such as test coverage). + +Since the `master` branch is what people actually use in production, we have a +`dev` branch that unstable changes get merged into first. Only when we +consider that stable we merge it into the `master` branch and release the +changes for real. + +Adhering to the following process is the best way to get your work +included in the project: + +1. [Fork](https://help.github.com/articles/fork-a-repo/) the project, clone your fork, and configure the remotes: + + ```bash + # Clone your fork of the repo into the current directory + git clone https://github.com//react-boilerplate.git + # Navigate to the newly cloned directory + cd react-boilerplate + # Assign the original repo to a remote called "upstream" + git remote add upstream https://github.com/mxstbr/react-boilerplate.git + ``` + +2. If you cloned a while ago, get the latest changes from upstream: + + ```bash + git checkout dev + git pull upstream dev + ``` + +3. Create a new topic branch (off the `dev` branch) to contain your feature, change, or fix: + + ```bash + git checkout -b + ``` + +4. Commit your changes in logical chunks. Please adhere to these [git commit message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) or your code is unlikely be merged into the main project. Use Git's [interactive rebase](https://help.github.com/articles/about-git-rebase/) feature to tidy up your commits before making them public. + +5. Locally merge (or rebase) the upstream dev branch into your topic branch: + + ```bash + git pull [--rebase] upstream dev + ``` + +6. Push your topic branch up to your fork: + + ```bash + git push origin + ``` + +7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) + with a clear title and description. + +**IMPORTANT**: By submitting a patch, you agree to allow the project +owners to license your work under the terms of the [MIT License](https://github.com/mxstbr/react-boilerplate/blob/master/LICENSE.md). diff --git a/packages/strapi-admin/files/public/.github/ISSUE_TEMPLATE.md b/packages/strapi-admin/files/public/.github/ISSUE_TEMPLATE.md new file mode 100755 index 0000000000..2d17ae4150 --- /dev/null +++ b/packages/strapi-admin/files/public/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,30 @@ +# React Boilerplate + +Before opening a new issue, please take a moment to review our [**community guidelines**](https://github.com/mxstbr/react-boilerplate/blob/master/.github/CONTRIBUTING.md) to make the contribution process easy and effective for everyone involved. + +Please direct redux-saga related questions to stack overflow: +http://stackoverflow.com/questions/tagged/redux-saga + +For questions related to the boilerplate itself, you can also find answers on our gitter chat: +https://gitter.im/mxstbr/react-boilerplate + +**Before opening a new issue, you may find an answer in already closed issues**: +https://github.com/mxstbr/react-boilerplate/issues?q=is%3Aissue+is%3Aclosed + +## Issue Type + +- [ ] Bug (https://github.com/mxstbr/react-boilerplate/blob/master/.github/CONTRIBUTING.md#bug-reports) +- [ ] Feature (https://github.com/mxstbr/react-boilerplate/blob/master/.github/CONTRIBUTING.md#feature-requests) + +## Description + +(Add images if possible) + +## Steps to reproduce + +(Add link to a demo on https://jsfiddle.net or similar if possible) + +# Versions + +- Node/NPM: +- Browser: diff --git a/packages/strapi-admin/files/public/.github/PULL_REQUEST_TEMPLATE.md b/packages/strapi-admin/files/public/.github/PULL_REQUEST_TEMPLATE.md new file mode 100755 index 0000000000..95659d837b --- /dev/null +++ b/packages/strapi-admin/files/public/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,22 @@ +## React Boilerplate + +Thank you for contributing! Please take a moment to review our [**contributing guidelines**](https://github.com/mxstbr/react-boilerplate/blob/master/.github/CONTRIBUTING.md) +to make the process easy and effective for everyone involved. + +**Please open an issue** before embarking on any significant pull request, especially those that +add a new library or change existing tests, otherwise you risk spending a lot of time working +on something that might not end up being merged into the project. + +Before opening a pull request, please ensure: + +- [ ] You have followed our [**contributing guidelines**](https://github.com/mxstbr/react-boilerplate/blob/master/.github/CONTRIBUTING.md) +- [ ] Pull request has tests (we are going for 100% coverage!) +- [ ] Code is well-commented, linted and follows project conventions +- [ ] Documentation is updated (if necessary) +- [ ] Internal code generators and templates are updated (if necessary) +- [ ] Description explains the issue/use-case resolved and auto-closes related issues + +Be kind to code reviewers, please try to keep pull requests as small and focused as possible :) + +**IMPORTANT**: By submitting a patch, you agree to allow the project +owners to license your work under the terms of the [MIT License](https://github.com/mxstbr/react-boilerplate/blob/master/LICENSE.md). diff --git a/packages/strapi-admin/files/public/.gitignore b/packages/strapi-admin/files/public/.gitignore new file mode 100755 index 0000000000..5d06c054ed --- /dev/null +++ b/packages/strapi-admin/files/public/.gitignore @@ -0,0 +1,10 @@ +# Don't check auto-generated stuff into git +coverage +build +node_modules +stats.json + +# Cruft +.DS_Store +npm-debug.log +.idea diff --git a/packages/strapi-admin/files/public/.travis.yml b/packages/strapi-admin/files/public/.travis.yml new file mode 100755 index 0000000000..e522d8e370 --- /dev/null +++ b/packages/strapi-admin/files/public/.travis.yml @@ -0,0 +1,18 @@ +language: node_js +sudo: true +dist: trusty +node_js: + - "5.0" +script: npm run build +before_install: + - export CHROME_BIN=/usr/bin/google-chrome + - export DISPLAY=:99.0 + - sudo apt-get update + - sudo apt-get install -y libappindicator1 fonts-liberation + - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb + - sudo dpkg -i google-chrome*.deb + - sh -e /etc/init.d/xvfb start +notifications: + email: + on_failure: change +after_success: 'npm run coveralls' diff --git a/packages/strapi-admin/files/public/app/.htaccess b/packages/strapi-admin/files/public/app/.htaccess new file mode 100755 index 0000000000..5204b4b3a3 --- /dev/null +++ b/packages/strapi-admin/files/public/app/.htaccess @@ -0,0 +1,44 @@ + + + + ####################################################################### + # GENERAL # + ####################################################################### + + # Make apache follow sym links to files + Options +FollowSymLinks + # If somebody opens a folder, hide all files from the resulting folder list + IndexIgnore */* + + + ####################################################################### + # REWRITING # + ####################################################################### + + # Enable rewriting + RewriteEngine On + + # If its not HTTPS + RewriteCond %{HTTPS} off + + # Comment out the RewriteCond above, and uncomment the RewriteCond below if you're using a load balancer (e.g. CloudFlare) for SSL + # RewriteCond %{HTTP:X-Forwarded-Proto} !https + + # Redirect to the same URL with https://, ignoring all further rules if this one is in effect + RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [R,L] + + # If we get to here, it means we are on https:// + + # If the file with the specified name in the browser doesn't exist + RewriteCond %{REQUEST_FILENAME} !-f + + # and the directory with the specified name in the browser doesn't exist + RewriteCond %{REQUEST_FILENAME} !-d + + # and we are not opening the root already (otherwise we get a redirect loop) + RewriteCond %{REQUEST_FILENAME} !\/$ + + # Rewrite all requests to the root + RewriteRule ^(.*) / + + diff --git a/packages/strapi-admin/files/public/app/.nginx.conf b/packages/strapi-admin/files/public/app/.nginx.conf new file mode 100755 index 0000000000..cf6b6ca6c6 --- /dev/null +++ b/packages/strapi-admin/files/public/app/.nginx.conf @@ -0,0 +1,66 @@ +## +# Put this file in /etc/nginx/conf.d folder and make sure +# you have line 'include /etc/nginx/conf.d/*.conf;' +# in your main nginx configuration file +## + +## +# Redirect to the same URL with https:// +## + +server { + + listen 80; + +# Type your domain name below + server_name example.com; + + return 301 https://$server_name$request_uri; + +} + +## +# HTTPS configurations +## + +server { + + listen 443; + +# Type your domain name below + server_name example.com; + + ssl on; + ssl_certificate /path/to/certificate.crt; + ssl_certificate_key /path/to/server.key; + +# Use only TSL protocols for more secure + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + +# Always serve index.html for any request + location / { + # Set path + root /var/www/; + try_files $uri /index.html; + } + +## +# If you want to use Node/Rails/etc. API server +# on the same port (443) config Nginx as a reverse proxy. +# For security reasons use a firewall like ufw in Ubuntu +# and deny port 3000/tcp. +## + +# location /api/ { +# +# proxy_pass http://localhost:3000; +# proxy_http_version 1.1; +# proxy_set_header X-Forwarded-Proto https; +# proxy_set_header Upgrade $http_upgrade; +# proxy_set_header Connection 'upgrade'; +# proxy_set_header Host $host; +# proxy_cache_bypass $http_upgrade; +# +# } + +} diff --git a/packages/strapi-admin/files/public/app/assets/images/baseline-18.png b/packages/strapi-admin/files/public/app/assets/images/baseline-18.png new file mode 100755 index 0000000000..69ef4359cc Binary files /dev/null and b/packages/strapi-admin/files/public/app/assets/images/baseline-18.png differ diff --git a/packages/strapi-admin/files/public/app/assets/images/baseline-20.png b/packages/strapi-admin/files/public/app/assets/images/baseline-20.png new file mode 100755 index 0000000000..0453b6dc57 Binary files /dev/null and b/packages/strapi-admin/files/public/app/assets/images/baseline-20.png differ diff --git a/packages/strapi-admin/files/public/app/components/Header/tests/index.test.js b/packages/strapi-admin/files/public/app/components/Header/tests/index.test.js new file mode 100755 index 0000000000..0143715cab --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/Header/tests/index.test.js @@ -0,0 +1,11 @@ +// import Header from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('
    ', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuFooter/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuFooter/tests/index.test.js new file mode 100755 index 0000000000..204781bbd5 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuFooter/tests/index.test.js @@ -0,0 +1,11 @@ +// import LeftMenuFooter from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuHeader/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuHeader/tests/index.test.js new file mode 100755 index 0000000000..7192ae1225 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuHeader/tests/index.test.js @@ -0,0 +1,11 @@ +// import LeftMenuHeader from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuLink/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuLink/tests/index.test.js new file mode 100755 index 0000000000..ebadef1337 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuLink/tests/index.test.js @@ -0,0 +1,11 @@ +// import LeftMenuLink from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/tests/index.test.js new file mode 100755 index 0000000000..2f053a8462 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuLinkContainer/tests/index.test.js @@ -0,0 +1,11 @@ +// import LeftMenuLinkContainer from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/index.js b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/index.js new file mode 100755 index 0000000000..363b907d1a --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/index.js @@ -0,0 +1,28 @@ +/** +* +* LeftMenuLink +* +*/ + +import React from 'react'; +import styles from './styles.scss'; +import { Link } from 'react-router'; + +class LeftMenuSubLink extends React.Component { // eslint-disable-line react/prefer-stateless-function + render() { + return ( +
  • + + {this.props.label} + +
  • + ); + } +} + +LeftMenuSubLink.propTypes = { + label: React.PropTypes.string, + destination: React.PropTypes.string, +}; + +export default LeftMenuSubLink; diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/styles.scss b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/styles.scss new file mode 100755 index 0000000000..132bd7cc51 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/styles.scss @@ -0,0 +1,31 @@ +// Import +@import "../../styles/variables/variables"; + +.leftMenuLink { /* stylelint-ignore */ + padding-top: 0.5rem; + padding-bottom: 0.2rem; + min-height: 3rem; + cursor: pointer; + font-size: 1.2rem; +} + +.link { + color: $left-menu-link-color; + padding-left: 5.8rem; + text-decoration: none; + display: block; + + &:hover { + color: $white; + text-decoration: none; + } +} + +.linkActive { + color: $white; +} + +.linkLabel { + display: inline-block; + padding-right: 1rem; +} diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/tests/index.test.js new file mode 100755 index 0000000000..c8182310e8 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuSubLink/tests/index.test.js @@ -0,0 +1,11 @@ +// import LeftMenuLink from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/index.js b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/index.js new file mode 100755 index 0000000000..a5aba88f8f --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/index.js @@ -0,0 +1,35 @@ +/** +* +* LeftMenuLinkContainer +* +*/ + +import React from 'react'; +import LeftMenuSubLink from 'components/LeftMenuSubLink'; +import styles from './styles.scss'; + +class LeftMenuSubLinkContainer extends React.Component { // eslint-disable-line react/prefer-stateless-function + render() { + // List of links + let links = this.props.subLinks.map((subLink, i) => ( + + )); + + return ( +
      + {links} +
    + ); + } +} + +LeftMenuSubLinkContainer.propTypes = { + subLinks: React.PropTypes.object, + destinationPrefix: React.PropTypes.string, +}; + +export default LeftMenuSubLinkContainer; diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/styles.scss b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/styles.scss new file mode 100755 index 0000000000..2a57c03899 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/styles.scss @@ -0,0 +1,28 @@ +// Import +@import "../../styles/variables/variables"; + +.leftMenuLinkContainer { /* stylelint-ignore */ + padding-top: 2.2rem; +} + +.title { + //min-height: 3rem; + padding-left: 1.6rem; + padding-right: 1.6rem; + margin-bottom: 1rem; + color: $left-menu-title-color; + text-transform: uppercase; +} + +.list { + list-style: none; + padding: 0; + margin-bottom: 0.9rem; +} + +.noPluginsInstalled { + color: $white; + padding-left: 1.6rem; + padding-right: 1.6rem; + font-weight: 300; +} \ No newline at end of file diff --git a/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/tests/index.test.js b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/tests/index.test.js new file mode 100755 index 0000000000..2f053a8462 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/LeftMenuSubLinkContainer/tests/index.test.js @@ -0,0 +1,11 @@ +// import LeftMenuLinkContainer from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/Notification/styles.scss b/packages/strapi-admin/files/public/app/components/Notification/styles.scss new file mode 100755 index 0000000000..8293f6a2c7 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/Notification/styles.scss @@ -0,0 +1,82 @@ +/* Import */ +@import '../../styles/variables/variables'; + +.notification { + position: relative; + display: flex; + width: 45rem; + align-items: stretch; + background: #5fc2a3; + margin-bottom: 1.4rem; + transition: box-shadow 0.2s ease; + border-radius: 0.1rem; + box-shadow: 0 2px 6px $gray-light; + color: $white; +} + +.notificationWarning { + background: $brand-warning; +} + +.notificationError { + background: $brand-danger; +} + +.notificationInfo { + background: $brand-info; +} + +.notification:hover { + box-shadow: 0 1px 4px $gray-light; +} + +.notificationIcon { + position: relative; + display: block; + float: left; + width: 18%; + text-align: center; + font-size: 2.4rem; +} + +.notificationIcon:before { + position: absolute; + top: calc(50% - 1rem); + left: calc(50% - 1rem); +} + +.notificationContent { + display: block; + float: left; + margin: 0; + padding-top: 1.4rem; + padding-bottom: 1.4rem; + padding-right: 1rem; + border-right: 1px solid rgba(255, 255, 255, 0.3); + width: 70%; +} + +.notificationTitle { + font-weight: bold; +} + +.notificationClose { + position: relative; + display: block; + float: left; + cursor: pointer; + width: 12%; + opacity: 0.6; + transition: opacity 0.1s ease; + + &:hover { + opacity: 1; + } + + &:before { + position: absolute; + top: calc(50% - 1.5rem); + left: calc(50% - 0.5rem); + font-size: 3rem; + } +} \ No newline at end of file diff --git a/packages/strapi-admin/files/public/app/components/Notification/tests/index.test.js b/packages/strapi-admin/files/public/app/components/Notification/tests/index.test.js new file mode 100755 index 0000000000..508d2015ef --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/Notification/tests/index.test.js @@ -0,0 +1,11 @@ +// import Notification from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/NotificationsContainer/tests/index.test.js b/packages/strapi-admin/files/public/app/components/NotificationsContainer/tests/index.test.js new file mode 100755 index 0000000000..8cdfeaf430 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/NotificationsContainer/tests/index.test.js @@ -0,0 +1,11 @@ +// import NotificationsContainer from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/Plugin/index.js b/packages/strapi-admin/files/public/app/components/Plugin/index.js new file mode 100755 index 0000000000..7e8c6c8e75 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/Plugin/index.js @@ -0,0 +1,30 @@ +/** +* +* Plugin +* +*/ + +import React from 'react'; + +import PluginHeader from 'components/PluginHeader'; + + +class Plugin extends React.Component { // eslint-disable-line react/prefer-stateless-function + render() { + return ( +
    + +
    + ); + } +} + +Plugin.propTypes = { + title: React.PropTypes.object, + description: React.PropTypes.object, +}; + +export default Plugin; diff --git a/packages/strapi-admin/files/public/app/components/Plugin/tests/index.test.js b/packages/strapi-admin/files/public/app/components/Plugin/tests/index.test.js new file mode 100755 index 0000000000..0e8eccde98 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/Plugin/tests/index.test.js @@ -0,0 +1,11 @@ +// import Plugin from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/PluginHeader/styles.scss b/packages/strapi-admin/files/public/app/components/PluginHeader/styles.scss new file mode 100755 index 0000000000..7f526db859 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/PluginHeader/styles.scss @@ -0,0 +1,3 @@ +.pluginHeader { /* stylelint-disable */ + margin-bottom: 3.4rem; +} diff --git a/packages/strapi-admin/files/public/app/components/PluginHeader/tests/index.test.js b/packages/strapi-admin/files/public/app/components/PluginHeader/tests/index.test.js new file mode 100755 index 0000000000..95485cdec1 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/PluginHeader/tests/index.test.js @@ -0,0 +1,11 @@ +// import PluginHeader from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/PluginHeaderActions/tests/index.test.js b/packages/strapi-admin/files/public/app/components/PluginHeaderActions/tests/index.test.js new file mode 100755 index 0000000000..1a79209b66 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/PluginHeaderActions/tests/index.test.js @@ -0,0 +1,11 @@ +// import PluginHeaderActions from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(false); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/tests/index.test.js b/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/tests/index.test.js new file mode 100755 index 0000000000..7da191658d --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/PluginHeaderTitle/tests/index.test.js @@ -0,0 +1,11 @@ +// import PluginHeaderTitle from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/Toggle/tests/index.test.js b/packages/strapi-admin/files/public/app/components/Toggle/tests/index.test.js new file mode 100755 index 0000000000..708704bbe1 --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/Toggle/tests/index.test.js @@ -0,0 +1,29 @@ +import Toggle from '../index'; + +import expect from 'expect'; +import { shallow } from 'enzyme'; +import { IntlProvider, defineMessages } from 'react-intl'; +import React from 'react'; + +describe('', () => { + it('should contain default text', () => { + const defaultEnMessage = 'someContent'; + const defaultDeMessage = 'someOtherContent'; + const messages = defineMessages({ + en: { + id: 'app.components.LocaleToggle.en', + defaultMessage: defaultEnMessage, + }, + de: { + id: 'app.components.LocaleToggle.en', + defaultMessage: defaultDeMessage, + }, + }); + const renderedComponent = shallow( + + + + ); + expect(renderedComponent.contains()).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/components/ToggleOption/tests/index.test.js b/packages/strapi-admin/files/public/app/components/ToggleOption/tests/index.test.js new file mode 100755 index 0000000000..0c208dd74d --- /dev/null +++ b/packages/strapi-admin/files/public/app/components/ToggleOption/tests/index.test.js @@ -0,0 +1,24 @@ +import ToggleOption from '../index'; + +import expect from 'expect'; +import { shallow } from 'enzyme'; +import { IntlProvider, defineMessages } from 'react-intl'; +import React from 'react'; + +describe('', () => { + it('should render default language messages', () => { + const defaultEnMessage = 'someContent'; + const message = defineMessages({ + enMessage: { + id: 'app.components.LocaleToggle.en', + defaultMessage: defaultEnMessage, + }, + }); + const renderedComponent = shallow( + + + + ); + expect(renderedComponent.contains()).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/App/index.js b/packages/strapi-admin/files/public/app/containers/App/index.js new file mode 100755 index 0000000000..43f62a6ca9 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/App/index.js @@ -0,0 +1,60 @@ +/** + * + * App.react.js + * + * This component is the skeleton around the actual pages, and should only + * contain code that should be seen on all pages. (e.g. navigation bar) + * + * NOTE: while this component should technically be a stateless functional + * component (SFC), hot reloading does not currently support SFCs. If hot + * reloading is not a neccessity for you then you can refactor it and remove + * the linting exception. + */ + +import React from 'react'; +import { connect } from 'react-redux'; +import { createStructuredSelector } from 'reselect'; +import { selectPlugins } from './selectors'; +import { hideNotification } from 'containers/NotificationProvider/actions'; +import { selectNotifications } from 'containers/NotificationProvider/selectors'; +import NotificationsContainer from 'components/NotificationsContainer'; +import '../../styles/main.scss'; +import styles from './styles.scss'; + +export class App extends React.Component { // eslint-disable-line react/prefer-stateless-function + render() { + return ( +
    + +
    + {React.Children.toArray(this.props.children)} +
    +
    + ); + } +} + +App.contextTypes = { + router: React.PropTypes.object.isRequired, +}; + +App.propTypes = { + children: React.PropTypes.node, + plugins: React.PropTypes.object, + notifications: React.PropTypes.object, + onHideNotification: React.PropTypes.func, +}; + +const mapStateToProps = createStructuredSelector({ + plugins: selectPlugins(), + notifications: selectNotifications(), +}); + +function mapDispatchToProps(dispatch) { + return { + onHideNotification: (id) => { dispatch(hideNotification(id)); }, + dispatch, + }; +} + +export default connect(mapStateToProps, mapDispatchToProps)(App); diff --git a/packages/strapi-admin/files/public/app/containers/App/selectors.js b/packages/strapi-admin/files/public/app/containers/App/selectors.js new file mode 100755 index 0000000000..c16da094d5 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/App/selectors.js @@ -0,0 +1,39 @@ +// selectLocationState expects a plain JS object for the routing state +const selectLocationState = () => { + let prevRoutingState; + let prevRoutingStateJS; + + return (state) => { + const routingState = state.get('route'); // or state.route + + if (!routingState.equals(prevRoutingState)) { + prevRoutingState = routingState; + prevRoutingStateJS = routingState.toJS(); + } + + return prevRoutingStateJS; + }; +}; + +import { createSelector } from 'reselect'; + +/** + * Direct selector to the languageToggle state domain + */ +const selectApp = () => state => state.get('app'); + +/** + * Select the language locale + */ + +const selectPlugins = () => createSelector( + selectApp(), + (languageState) => languageState.get('plugins') +); + +export { + selectApp, + selectPlugins, + selectLocationState, +}; + diff --git a/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js b/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js new file mode 100755 index 0000000000..cb0e798e47 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js @@ -0,0 +1,16 @@ +import { fromJS } from 'immutable'; +import expect from 'expect'; + +import { selectLocationState } from 'containers/App/selectors'; + +describe('selectLocationState', () => { + it('should select the route as a plain JS object', () => { + const route = fromJS({ + locationBeforeTransitions: null, + }); + const mockedState = fromJS({ + route, + }); + expect(selectLocationState()(mockedState)).toEqual(route.toJS()); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/ComingSoonPage/messages.js b/packages/strapi-admin/files/public/app/containers/ComingSoonPage/messages.js new file mode 100755 index 0000000000..f1207aee8c --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/ComingSoonPage/messages.js @@ -0,0 +1,13 @@ +/* + * ComingSoonPage Messages + * + * This contains all the text for the ComingSoonPage component. + */ +import { defineMessages } from 'react-intl'; + +export default defineMessages({ + header: { + id: 'app.containers.ComingSoonPage.header', + defaultMessage: 'Coming soon.', + }, +}); diff --git a/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js new file mode 100755 index 0000000000..a621dc18b4 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js @@ -0,0 +1,11 @@ +// import ComingSoonPage from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(false); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js new file mode 100755 index 0000000000..730d472306 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js @@ -0,0 +1,11 @@ +// import Content from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/HomePage/index.js b/packages/strapi-admin/files/public/app/containers/HomePage/index.js new file mode 100755 index 0000000000..953627be45 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/HomePage/index.js @@ -0,0 +1,51 @@ +/* + * HomePage + * + * This is the first thing users see of our App, at the '/' route + * + * NOTE: while this component should technically be a stateless functional + * component (SFC), hot reloading does not currently support SFCs. If hot + * reloading is not a neccessity for you then you can refactor it and remove + * the linting exception. + */ + +import React from 'react'; +import { connect } from 'react-redux'; +import { createStructuredSelector } from 'reselect'; +import { selectPlugins } from 'containers/App/selectors'; +import LeftMenu from 'containers/LeftMenu'; +import Header from 'components/Header/index'; +import Content from 'containers/Content'; +import styles from './syles.scss'; + +export class HomePage extends React.Component { // eslint-disable-line react/prefer-stateless-function + render() { + return ( +
    + +
    +
    + + + +
    +
    + ); + } +} + +HomePage.propTypes = { + plugins: React.PropTypes.object, +}; + +const mapStateToProps = createStructuredSelector({ + plugins: selectPlugins(), +}); + +function mapDispatchToProps(dispatch) { + return { + dispatch, + }; +} + +export default connect(mapStateToProps, mapDispatchToProps)(HomePage); diff --git a/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js new file mode 100755 index 0000000000..6d710cb20e --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js @@ -0,0 +1,11 @@ +// import HomePage from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/LanguageProvider/reducer.js b/packages/strapi-admin/files/public/app/containers/LanguageProvider/reducer.js new file mode 100755 index 0000000000..2908bcc26c --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/LanguageProvider/reducer.js @@ -0,0 +1,26 @@ +/* + * + * LanguageProvider reducer + * + */ + +import { fromJS } from 'immutable'; +import { + CHANGE_LOCALE, +} from './constants'; + +const initialState = fromJS({ + locale: 'en', +}); + +function languageProviderReducer(state = initialState, action) { + switch (action.type) { + case CHANGE_LOCALE: + return state + .set('locale', action.locale); + default: + return state; + } +} + +export default languageProviderReducer; diff --git a/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js new file mode 100755 index 0000000000..e4978dbbc1 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js @@ -0,0 +1,11 @@ +// import LeftMenu from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js new file mode 100755 index 0000000000..2bbbd2ce2a --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js @@ -0,0 +1,60 @@ +import LocaleToggle, { mapDispatchToProps } from '../index'; +import { changeLocale } from '../../LanguageProvider/actions'; +import LanguageProvider from '../../LanguageProvider'; + +import expect from 'expect'; +import { shallow, mount } from 'enzyme'; +import configureStore from '../../../store'; +import React from 'react'; +import { Provider } from 'react-redux'; +import { browserHistory } from 'react-router'; +import { translationMessages } from '../../../i18n'; + +describe('', () => { + let store; + + before(() => { + store = configureStore({}, browserHistory); + }); + + it('should render the default language messages', () => { + const renderedComponent = shallow( + + + + + + ); + expect(renderedComponent.contains()).toEqual(true); + }); + + it('should present the default `en` english language option', () => { + const renderedComponent = mount( + + + + + + ); + expect(renderedComponent.contains()).toEqual(true); + }); + + describe('mapDispatchToProps', () => { + describe('onLocaleToggle', () => { + it('should be injected', () => { + const dispatch = expect.createSpy(); + const result = mapDispatchToProps(dispatch); + expect(result.onLocaleToggle).toExist(); + }); + + it('should dispatch changeLocale when called', () => { + const dispatch = expect.createSpy(); + const result = mapDispatchToProps(dispatch); + const locale = 'de'; + const evt = { target: { value: locale } }; + result.onLocaleToggle(evt); + expect(dispatch).toHaveBeenCalledWith(changeLocale(locale)); + }); + }); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/index.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/index.js new file mode 100755 index 0000000000..4ad14a3d01 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/NotificationProvider/index.js @@ -0,0 +1,33 @@ +/* + * + * NotificationProvider + * + */ + +import React from 'react'; +import { connect } from 'react-redux'; +import selectNotificationProvider from './selectors'; + +export class NotificationProvider extends React.Component { // eslint-disable-line react/prefer-stateless-function + render() { + return ( +
    + {React.Children.only(this.props.children)} +
    + ); + } +} + +NotificationProvider.propTypes = { + children: React.PropTypes.object, +}; + +const mapStateToProps = selectNotificationProvider(); + +function mapDispatchToProps(dispatch) { + return { + dispatch, + }; +} + +export default connect(mapStateToProps, mapDispatchToProps)(NotificationProvider); diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js new file mode 100755 index 0000000000..f8017baeb0 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js @@ -0,0 +1,24 @@ +import expect from 'expect'; +import { + showNotification, +} from '../actions'; +import { + SHOW_NOTIFICATION, +} from '../constants'; + +describe('NotificationProvider actions', () => { + describe('Default Action', () => { + it('has a type of SHOW_NOTIFICATION', () => { + const message = 'Well done!'; + const status = 'success'; + + const expected = { + type: SHOW_NOTIFICATION, + message, + status, + id: 1, + }; + expect(showNotification(expected.message, expected.status)).toEqual(expected); + }); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js new file mode 100755 index 0000000000..02b3094178 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js @@ -0,0 +1,11 @@ +// import NotificationProvider from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js new file mode 100755 index 0000000000..2bae1949c7 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js @@ -0,0 +1,11 @@ +import expect from 'expect'; +import notificationProviderReducer from '../reducer'; +import { fromJS } from 'immutable'; + +describe('notificationProviderReducer', () => { + it('returns the initial state', () => { + expect(notificationProviderReducer(undefined, {})).toEqual(fromJS({ + notifications: [], + })); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js new file mode 100755 index 0000000000..0327607ee7 --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js @@ -0,0 +1,11 @@ +// import { selectNotificationProviderDomain } from '../selectors'; +// import { fromJS } from 'immutable'; +import expect from 'expect'; + +// const selector = selectNotificationProviderDomain(); + +describe('selectNotificationProviderDomain', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js new file mode 100755 index 0000000000..76ca281b4d --- /dev/null +++ b/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js @@ -0,0 +1,11 @@ +// import PluginPage from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(true); + }); +}); diff --git a/packages/strapi-admin/files/public/app/favicon.ico b/packages/strapi-admin/files/public/app/favicon.ico new file mode 100755 index 0000000000..a041392a60 Binary files /dev/null and b/packages/strapi-admin/files/public/app/favicon.ico differ diff --git a/packages/strapi-admin/files/public/app/manifest.json b/packages/strapi-admin/files/public/app/manifest.json new file mode 100755 index 0000000000..e07264bdd3 --- /dev/null +++ b/packages/strapi-admin/files/public/app/manifest.json @@ -0,0 +1,33 @@ +{ + "name": "React Boilerplate", + "icons": [ + { + "src": "favicon.png", + "sizes": "48x48", + "type": "image/png", + "density": 1.0 + }, + { + "src": "favicon.png", + "sizes": "96x96", + "type": "image/png", + "density": 2.0 + }, + { + "src": "favicon.png", + "sizes": "144x144", + "type": "image/png", + "density": 3.0 + }, + { + "src": "favicon.png", + "sizes": "192x192", + "type": "image/png", + "density": 4.0 + } + ], + "start_url": "index.html", + "display": "standalone", + "orientation": "portrait", + "background_color": "#FFFFFF" +} \ No newline at end of file diff --git a/packages/strapi-admin/files/public/app/routes.js b/packages/strapi-admin/files/public/app/routes.js new file mode 100755 index 0000000000..53228f4c0c --- /dev/null +++ b/packages/strapi-admin/files/public/app/routes.js @@ -0,0 +1,117 @@ +// These are the pages you can go to. +// They are all wrapped in the App component, which should contain the navbar etc +// See http://blog.mxstbr.com/2016/01/react-apps-with-pages for more information +// about the code splitting business +import { getAsyncInjectors } from 'utils/asyncInjectors'; + +const errorLoading = (err) => { + console.error('Dynamic page loading failed', err); // eslint-disable-line no-console +}; + +const loadModule = (cb) => (componentModule) => { + cb(null, componentModule.default); +}; + +export default function createRoutes(store) { + // Create reusable async injectors using getAsyncInjectors factory + const { injectReducer, injectSagas } = getAsyncInjectors(store); // eslint-disable-line no-unused-vars + + return [ + { + path: '/', + name: 'home', + getComponent(nextState, cb) { + const importModules = Promise.all([ + System.import('containers/HomePage'), + ]); + + const renderRoute = loadModule(cb); + + importModules.then(([component]) => { + renderRoute(component); + }); + + importModules.catch(errorLoading); + }, + childRoutes: [ + { + path: '/plugins', + name: 'plugins', + getComponent(nextState, cb) { + const importModules = Promise.all([ + System.import('containers/PluginPage'), + ]); + + const renderRoute = loadModule(cb); + + importModules.then(([component]) => { + renderRoute(component); + }); + + importModules.catch(errorLoading); + }, + childRoutes: [], + }, + { + path: '/list-plugins', + name: 'pluginsList', + getComponent(nextState, cb) { + const importModules = Promise.all([ + System.import('containers/ComingSoonPage'), + ]); + + const renderRoute = loadModule(cb); + + importModules.then(([component]) => { + renderRoute(component); + }); + + importModules.catch(errorLoading); + }, + }, + { + path: '/install-plugin', + name: 'pluginsList', + getComponent(nextState, cb) { + const importModules = Promise.all([ + System.import('containers/ComingSoonPage'), + ]); + + const renderRoute = loadModule(cb); + + importModules.then(([component]) => { + renderRoute(component); + }); + + importModules.catch(errorLoading); + }, + }, + { + path: '/configuration', + name: 'pluginsList', + getComponent(nextState, cb) { + const importModules = Promise.all([ + System.import('containers/ComingSoonPage'), + ]); + + const renderRoute = loadModule(cb); + + importModules.then(([component]) => { + renderRoute(component); + }); + + importModules.catch(errorLoading); + }, + }, + ], + }, { + path: '*', + name: '404', + getComponent(nextState, cb) { + System.import('containers/NotFoundPage') + .then(loadModule(cb)) + .catch(errorLoading); + }, + }, + ]; +} diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot new file mode 100755 index 0000000000..444bc3aa2e Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf new file mode 100755 index 0000000000..3f7819f609 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot new file mode 100755 index 0000000000..7749a28aa8 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf new file mode 100755 index 0000000000..2dc1173c54 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot new file mode 100755 index 0000000000..3361183a41 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf new file mode 100755 index 0000000000..29f691d5ed Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot new file mode 100755 index 0000000000..3d4154936b Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf new file mode 100755 index 0000000000..f402040b3e Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot new file mode 100755 index 0000000000..ca02c79540 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf new file mode 100755 index 0000000000..a7365b8a0d Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot new file mode 100755 index 0000000000..9b5fd86aeb Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf new file mode 100755 index 0000000000..919d2d697f Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot new file mode 100755 index 0000000000..8d3784f4c7 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf new file mode 100755 index 0000000000..ce528ef394 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot new file mode 100755 index 0000000000..f77a576623 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf new file mode 100755 index 0000000000..ae73655f2b Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot new file mode 100755 index 0000000000..3f826421a1 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf new file mode 100755 index 0000000000..b4bfc9b24a Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot new file mode 100755 index 0000000000..f449ed562d Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf new file mode 100755 index 0000000000..834d1c0566 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot new file mode 100755 index 0000000000..a4e2e31d09 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf new file mode 100755 index 0000000000..c6ef9e05fe Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot new file mode 100755 index 0000000000..c4114dd395 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf new file mode 100755 index 0000000000..4684a7e143 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot new file mode 100755 index 0000000000..bc05daf923 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf new file mode 100755 index 0000000000..673b6e4728 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot new file mode 100755 index 0000000000..11e3f2a5f0 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf new file mode 100755 index 0000000000..74decd9ebb Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot new file mode 100755 index 0000000000..d46c5f99fe Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf new file mode 100755 index 0000000000..faf591e283 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot new file mode 100755 index 0000000000..373a1ca548 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf new file mode 100755 index 0000000000..4ea1e8f1aa Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot new file mode 100755 index 0000000000..28022c95e9 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf new file mode 100755 index 0000000000..4fca8bd4fa Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot new file mode 100755 index 0000000000..673f52298d Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot differ diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf new file mode 100755 index 0000000000..223c133e94 Binary files /dev/null and b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf differ diff --git a/packages/strapi-admin/files/public/app/tests/store.test.js b/packages/strapi-admin/files/public/app/tests/store.test.js new file mode 100755 index 0000000000..b21e6d57e1 --- /dev/null +++ b/packages/strapi-admin/files/public/app/tests/store.test.js @@ -0,0 +1,27 @@ +/** + * Test store addons + */ + +import expect from 'expect'; +import configureStore from '../store'; // eslint-disable-line +import { browserHistory } from 'react-router'; + +describe('configureStore', () => { + let store; + + before(() => { + store = configureStore({}, browserHistory); + }); + + describe('asyncReducers', () => { + it('should contain an object for async reducers', () => { + expect(typeof store.asyncReducers).toEqual('object'); + }); + }); + + describe('runSaga', () => { + it('should contain a hook for `sagaMiddleware.run`', () => { + expect(typeof store.runSaga).toEqual('function'); + }); + }); +}); diff --git a/packages/strapi-admin/files/public/app/utils/asyncInjectors.js b/packages/strapi-admin/files/public/app/utils/asyncInjectors.js new file mode 100755 index 0000000000..1ff068d16e --- /dev/null +++ b/packages/strapi-admin/files/public/app/utils/asyncInjectors.js @@ -0,0 +1,72 @@ +import { conformsTo, isEmpty, isFunction, isObject, isString } from 'lodash'; +import invariant from 'invariant'; +import warning from 'warning'; +import createReducer from 'reducers'; + +/** + * Validate the shape of redux store + */ +export function checkStore(store) { + const shape = { + dispatch: isFunction, + subscribe: isFunction, + getState: isFunction, + replaceReducer: isFunction, + runSaga: isFunction, + asyncReducers: isObject, + }; + invariant( + conformsTo(store, shape), + '(app/utils...) asyncInjectors: Expected a valid redux store' + ); +} + +/** + * Inject an asynchronously loaded reducer + */ +export function injectAsyncReducer(store, isValid) { + return function injectReducer(name, asyncReducer) { + if (!isValid) checkStore(store); + + invariant( + isString(name) && !isEmpty(name) && isFunction(asyncReducer), + '(app/utils...) injectAsyncReducer: Expected `asyncReducer` to be a reducer function' + ); + + store.asyncReducers[name] = asyncReducer; // eslint-disable-line no-param-reassign + store.replaceReducer(createReducer(store.asyncReducers)); + }; +} + +/** + * Inject an asynchronously loaded saga + */ +export function injectAsyncSagas(store, isValid) { + return function injectSagas(sagas) { + if (!isValid) checkStore(store); + + invariant( + Array.isArray(sagas), + '(app/utils...) injectAsyncSagas: Expected `sagas` to be an array of generator functions' + ); + + warning( + !isEmpty(sagas), + '(app/utils...) injectAsyncSagas: Received an empty `sagas` array' + ); + + sagas.map(store.runSaga); + }; +} + +/** + * Helper for creating injectors + */ +export function getAsyncInjectors(store) { + checkStore(store); + + return { + injectReducer: injectAsyncReducer(store, true), + injectSagas: injectAsyncSagas(store, true), + }; +} diff --git a/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js b/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js new file mode 100755 index 0000000000..bbb83c43dc --- /dev/null +++ b/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js @@ -0,0 +1,164 @@ +/** + * Test async injectors + */ + +import expect from 'expect'; +import configureStore from 'store.js'; +import { memoryHistory } from 'react-router'; +import { put } from 'redux-saga/effects'; +import { fromJS } from 'immutable'; + +import { + injectAsyncReducer, + injectAsyncSagas, + getAsyncInjectors, +} from 'utils/asyncInjectors'; + +// Fixtures + +const initialState = fromJS({ reduced: 'soon' }); + +const reducer = (state = initialState, action) => { + switch (action.type) { + case 'TEST': + return state.set('reduced', action.payload); + default: + return state; + } +}; + +function* testSaga() { + yield put({ type: 'TEST', payload: 'yup' }); +} + +const sagas = [ + testSaga, +]; + +describe('asyncInjectors', () => { + let store; + + describe('getAsyncInjectors', () => { + before(() => { + store = configureStore({}, memoryHistory); + }); + + it('given a store, should return all async injectors', () => { + const { injectReducer, injectSagas } = getAsyncInjectors(store); + + injectReducer('test', reducer); + injectSagas(sagas); + + const actual = store.getState().get('test'); + const expected = initialState.merge({ reduced: 'yup' }); + + expect(actual.toJS()).toEqual(expected.toJS()); + }); + + it('should throw if passed invalid store shape', () => { + let result = false; + + Reflect.deleteProperty(store, 'dispatch'); + + try { + getAsyncInjectors(store); + } catch (err) { + result = err.name === 'Invariant Violation'; + } + + expect(result).toEqual(true); + }); + }); + + describe('helpers', () => { + before(() => { + store = configureStore({}, memoryHistory); + }); + + describe('injectAsyncReducer', () => { + it('given a store, it should provide a function to inject a reducer', () => { + const injectReducer = injectAsyncReducer(store); + + injectReducer('test', reducer); + + const actual = store.getState().get('test'); + const expected = initialState; + + expect(actual.toJS()).toEqual(expected.toJS()); + }); + + it('should throw if passed invalid name', () => { + let result = false; + + const injectReducer = injectAsyncReducer(store); + + try { + injectReducer('', reducer); + } catch (err) { + result = err.name === 'Invariant Violation'; + } + + try { + injectReducer(999, reducer); + } catch (err) { + result = err.name === 'Invariant Violation'; + } + + expect(result).toEqual(true); + }); + + it('should throw if passed invalid reducer', () => { + let result = false; + + const injectReducer = injectAsyncReducer(store); + + try { + injectReducer('bad', 'nope'); + } catch (err) { + result = err.name === 'Invariant Violation'; + } + + try { + injectReducer('coolio', 12345); + } catch (err) { + result = err.name === 'Invariant Violation'; + } + + expect(result).toEqual(true); + }); + }); + + describe('injectAsyncSagas', () => { + it('given a store, it should provide a function to inject a saga', () => { + const injectSagas = injectAsyncSagas(store); + + injectSagas(sagas); + + const actual = store.getState().get('test'); + const expected = initialState.merge({ reduced: 'yup' }); + + expect(actual.toJS()).toEqual(expected.toJS()); + }); + + it('should throw if passed invalid saga', () => { + let result = false; + + const injectSagas = injectAsyncSagas(store); + + try { + injectSagas({ testSaga }); + } catch (err) { + result = err.name === 'Invariant Violation'; + } + + try { + injectSagas(testSaga); + } catch (err) { + result = err.name === 'Invariant Violation'; + } + + expect(result).toEqual(true); + }); + }); + }); +}); diff --git a/packages/strapi-admin/files/public/internals/config.js b/packages/strapi-admin/files/public/internals/config.js new file mode 100755 index 0000000000..968cd05b08 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/config.js @@ -0,0 +1,56 @@ +// const resolve = require('path').resolve; +const pullAll = require('lodash/pullAll'); +const uniq = require('lodash/uniq'); + +const ReactBoilerplate = { + // This refers to the react-boilerplate version this project is based on. + version: '3.1.0', + + /** + * The DLL Plugin provides a dramatic speed increase to webpack build and hot module reloading + * by caching the module metadata for all of our npm dependencies. We enable it by default + * in development. + * + * + * To disable the DLL Plugin, set this value to false. + */ + dllPlugin: { + defaults: { + /** + * we need to exclude dependencies which are not intended for the browser + * by listing them here. + */ + exclude: [ + 'chalk', + 'compression', + 'cross-env', + 'express', + 'ip', + 'minimist', + 'sanitize.css', + ], + + /** + * Specify any additional dependencies here. We include core-js and lodash + * since a lot of our dependencies depend on them and they get picked up by webpack. + */ + include: ['core-js', 'eventsource-polyfill', 'babel-polyfill', 'lodash'], + + // The path where the DLL manifest and bundle will get built + // path: resolve('../node_modules/react-boilerplate-dlls'), + }, + + entry(pkg) { + const dependencyNames = Object.keys(pkg.dependencies); + const exclude = pkg.dllPlugin.exclude || ReactBoilerplate.dllPlugin.defaults.exclude; + const include = pkg.dllPlugin.include || ReactBoilerplate.dllPlugin.defaults.include; + const includeDependencies = uniq(dependencyNames.concat(include)); + + return { + reactBoilerplateDeps: pullAll(includeDependencies, exclude), + }; + }, + }, +}; + +module.exports = ReactBoilerplate; diff --git a/packages/strapi-admin/files/public/internals/generators/component/es6.js.hbs b/packages/strapi-admin/files/public/internals/generators/component/es6.js.hbs new file mode 100755 index 0000000000..5a8b1ce481 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/component/es6.js.hbs @@ -0,0 +1,33 @@ +/** +* +* {{ properCase name }} +* +*/ + +import React from 'react'; + +{{#if wantMessages}} +import { FormattedMessage } from 'react-intl'; +import messages from './messages'; +{{/if}} +{{#if wantCSS}} +import styles from './styles.css'; +{{/if}} + +class {{ properCase name }} extends React.Component { // eslint-disable-line react/prefer-stateless-function + render() { + return ( + {{#if wantCSS}} +
    + {{else}} +
    + {{/if}} + {{#if wantMessages}} + + {{/if}} +
    + ); + } +} + +export default {{ properCase name }}; diff --git a/packages/strapi-admin/files/public/internals/generators/component/index.js b/packages/strapi-admin/files/public/internals/generators/component/index.js new file mode 100755 index 0000000000..2b522711ce --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/component/index.js @@ -0,0 +1,74 @@ +/** + * Component Generator + */ + +const componentExists = require('../utils/componentExists'); + +module.exports = { + description: 'Add an unconnected component', + prompts: [{ + type: 'list', + name: 'type', + message: 'Select the type of component', + default: 'Stateless Function', + choices: () => ['ES6 Class', 'Stateless Function'], + }, { + type: 'input', + name: 'name', + message: 'What should it be called?', + default: 'Button', + validate: value => { + if ((/.+/).test(value)) { + return componentExists(value) ? 'A component or container with this name already exists' : true; + } + + return 'The name is required'; + }, + }, { + type: 'confirm', + name: 'wantCSS', + default: true, + message: 'Does it have styling?', + }, { + type: 'confirm', + name: 'wantMessages', + default: true, + message: 'Do you want i18n messages (i.e. will this component use text)?', + }], + actions: data => { + // Generate index.js and index.test.js + const actions = [{ + type: 'add', + path: '../../app/components/{{properCase name}}/index.js', + templateFile: data.type === 'ES6 Class' ? './component/es6.js.hbs' : './component/stateless.js.hbs', + abortOnFail: true, + }, { + type: 'add', + path: '../../app/components/{{properCase name}}/tests/index.test.js', + templateFile: './component/test.js.hbs', + abortOnFail: true, + }]; + + // If they want a CSS file, add styles.css + if (data.wantCSS) { + actions.push({ + type: 'add', + path: '../../app/components/{{properCase name}}/styles.css', + templateFile: './component/styles.css.hbs', + abortOnFail: true, + }); + } + + // If they want a i18n messages file + if (data.wantMessages) { + actions.push({ + type: 'add', + path: '../../app/components/{{properCase name}}/messages.js', + templateFile: './component/messages.js.hbs', + abortOnFail: true, + }); + } + + return actions; + }, +}; diff --git a/packages/strapi-admin/files/public/internals/generators/component/messages.js.hbs b/packages/strapi-admin/files/public/internals/generators/component/messages.js.hbs new file mode 100755 index 0000000000..ef317e90bf --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/component/messages.js.hbs @@ -0,0 +1,13 @@ +/* + * {{ properCase name }} Messages + * + * This contains all the text for the {{ properCase name }} component. + */ +import { defineMessages } from 'react-intl'; + +export default defineMessages({ + header: { + id: 'app.components.{{ properCase name }}.header', + defaultMessage: 'This is the {{ properCase name}} component !', + }, +}); diff --git a/packages/strapi-admin/files/public/internals/generators/component/stateless.js.hbs b/packages/strapi-admin/files/public/internals/generators/component/stateless.js.hbs new file mode 100755 index 0000000000..7ff8824f8a --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/component/stateless.js.hbs @@ -0,0 +1,32 @@ +/** +* +* {{ properCase name }} +* +*/ + +import React from 'react'; + +{{#if wantMessages}} +import { FormattedMessage } from 'react-intl'; +import messages from './messages'; +{{/if}} + +{{#if wantCSS}} +import styles from './styles.css'; +{{/if}} + +function {{ properCase name }}() { + return ( + {{#if wantCSS}} +
    + {{else}} +
    + {{/if}} + {{#if wantMessages}} + + {{/if}} +
    + ); +} + +export default {{ properCase name }}; diff --git a/packages/strapi-admin/files/public/internals/generators/component/styles.css.hbs b/packages/strapi-admin/files/public/internals/generators/component/styles.css.hbs new file mode 100755 index 0000000000..1dc727bb55 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/component/styles.css.hbs @@ -0,0 +1,3 @@ +.{{ camelCase name }} { /* stylelint-disable */ + +} diff --git a/packages/strapi-admin/files/public/internals/generators/component/test.js.hbs b/packages/strapi-admin/files/public/internals/generators/component/test.js.hbs new file mode 100755 index 0000000000..19f00f0e0c --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/component/test.js.hbs @@ -0,0 +1,11 @@ +// import {{ properCase name }} from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('<{{ properCase name }} />', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(false); + }); +}); diff --git a/packages/strapi-admin/files/public/internals/generators/container/actions.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/actions.js.hbs new file mode 100755 index 0000000000..8b9d68b81e --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/actions.js.hbs @@ -0,0 +1,15 @@ +/* + * + * {{ properCase name }} actions + * + */ + +import { + DEFAULT_ACTION, +} from './constants'; + +export function defaultAction() { + return { + type: DEFAULT_ACTION, + }; +} diff --git a/packages/strapi-admin/files/public/internals/generators/container/actions.test.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/actions.test.js.hbs new file mode 100755 index 0000000000..8e79eb606c --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/actions.test.js.hbs @@ -0,0 +1,18 @@ +import expect from 'expect'; +import { + defaultAction, +} from '../actions'; +import { + DEFAULT_ACTION, +} from '../constants'; + +describe('{{ properCase name }} actions', () => { + describe('Default Action', () => { + it('has a type of DEFAULT_ACTION', () => { + const expected = { + type: DEFAULT_ACTION, + }; + expect(defaultAction()).toEqual(expected); + }); + }); +}); diff --git a/packages/strapi-admin/files/public/internals/generators/container/constants.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/constants.js.hbs new file mode 100755 index 0000000000..0a37bd1abc --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/constants.js.hbs @@ -0,0 +1,7 @@ +/* + * + * {{ properCase name }} constants + * + */ + +export const DEFAULT_ACTION = 'app/{{ properCase name }}/DEFAULT_ACTION'; diff --git a/packages/strapi-admin/files/public/internals/generators/container/index.js b/packages/strapi-admin/files/public/internals/generators/container/index.js new file mode 100755 index 0000000000..44dc4b4c34 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/index.js @@ -0,0 +1,153 @@ +/** + * Container Generator + */ + +const componentExists = require('../utils/componentExists'); + +module.exports = { + description: 'Add a container component', + prompts: [{ + type: 'input', + name: 'name', + message: 'What should it be called?', + default: 'Form', + validate: value => { + if ((/.+/).test(value)) { + return componentExists(value) ? 'A component or container with this name already exists' : true; + } + + return 'The name is required'; + }, + }, { + type: 'confirm', + name: 'wantHeaders', + default: false, + message: 'Do you want headers?', + }, { + type: 'confirm', + name: 'wantCSS', + default: false, + message: 'Does it have styling?', + }, { + type: 'confirm', + name: 'wantActionsAndReducer', + default: true, + message: 'Do you want an actions/constants/selectors/reducer tupel for this container?', + }, { + type: 'confirm', + name: 'wantSagas', + default: true, + message: 'Do you want sagas for asynchronous flows? (e.g. fetching data)', + }, { + type: 'confirm', + name: 'wantMessages', + default: true, + message: 'Do you want i18n messages (i.e. will this component use text)?', + }], + actions: data => { + // Generate index.js and index.test.js + const actions = [{ + type: 'add', + path: '../../app/containers/{{properCase name}}/index.js', + templateFile: './container/index.js.hbs', + abortOnFail: true, + }, { + type: 'add', + path: '../../app/containers/{{properCase name}}/tests/index.test.js', + templateFile: './container/test.js.hbs', + abortOnFail: true, + }]; + + // If they want a CSS file, add styles.css + if (data.wantCSS) { + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/styles.css', + templateFile: './container/styles.css.hbs', + abortOnFail: true, + }); + } + + // If component wants messages + if (data.wantMessages) { + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/messages.js', + templateFile: './container/messages.js.hbs', + abortOnFail: true, + }); + } + + // If they want actions and a reducer, generate actions.js, constants.js, + // reducer.js and the corresponding tests for actions and the reducer + if (data.wantActionsAndReducer) { + // Actions + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/actions.js', + templateFile: './container/actions.js.hbs', + abortOnFail: true, + }); + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/tests/actions.test.js', + templateFile: './container/actions.test.js.hbs', + abortOnFail: true, + }); + + // Constants + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/constants.js', + templateFile: './container/constants.js.hbs', + abortOnFail: true, + }); + + // Selectors + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/selectors.js', + templateFile: './container/selectors.js.hbs', + abortOnFail: true, + }); + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/tests/selectors.test.js', + templateFile: './container/selectors.test.js.hbs', + abortOnFail: true, + }); + + // Reducer + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/reducer.js', + templateFile: './container/reducer.js.hbs', + abortOnFail: true, + }); + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/tests/reducer.test.js', + templateFile: './container/reducer.test.js.hbs', + abortOnFail: true, + }); + } + + // Sagas + if (data.wantSagas) { + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/sagas.js', + templateFile: './container/sagas.js.hbs', + abortOnFail: true, + }); + actions.push({ + type: 'add', + path: '../../app/containers/{{properCase name}}/tests/sagas.test.js', + templateFile: './container/sagas.test.js.hbs', + abortOnFail: true, + }); + } + + return actions; + }, +}; diff --git a/packages/strapi-admin/files/public/internals/generators/container/index.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/index.js.hbs new file mode 100755 index 0000000000..420ae1fc0b --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/index.js.hbs @@ -0,0 +1,61 @@ +/* + * + * {{properCase name }} + * + */ + +import React from 'react'; +import { connect } from 'react-redux'; +{{#if wantHeaders}} +import Helmet from 'react-helmet'; +{{/if}} +{{#if wantActionsAndReducer}} +import select{{properCase name}} from './selectors'; +{{/if}} +{{#if wantMessages}} +import { FormattedMessage } from 'react-intl'; +import messages from './messages'; +{{/if}} +{{#if wantCSS}} +import styles from './styles.css'; +{{/if}} + +export class {{ properCase name }} extends React.Component { // eslint-disable-line react/prefer-stateless-function + render() { + return ( + {{#if wantCSS}} +
    + {{else}} +
    + {{/if}} + {{#if wantHeaders}} + + {{/if}} + {{#if wantMessages}} + + {{/if}} +
    + ); + } +} + +{{#if wantActionsAndReducer}} +const mapStateToProps = select{{properCase name}}(); +{{/if}} + +function mapDispatchToProps(dispatch) { + return { + dispatch, + }; +} + +{{#if wantActionsAndReducer}} +export default connect(mapStateToProps, mapDispatchToProps)({{ properCase name }}); +{{else}} +export default connect(mapDispatchToProps)({{ properCase name }}); +{{/if}} diff --git a/packages/strapi-admin/files/public/internals/generators/container/messages.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/messages.js.hbs new file mode 100755 index 0000000000..32dc1aa3da --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/messages.js.hbs @@ -0,0 +1,13 @@ +/* + * {{properCase name }} Messages + * + * This contains all the text for the {{properCase name }} component. + */ +import { defineMessages } from 'react-intl'; + +export default defineMessages({ + header: { + id: 'app.containers.{{properCase name }}.header', + defaultMessage: 'This is {{properCase name}} container !', + }, +}); diff --git a/packages/strapi-admin/files/public/internals/generators/container/reducer.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/reducer.js.hbs new file mode 100755 index 0000000000..fcf9371e4f --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/reducer.js.hbs @@ -0,0 +1,23 @@ +/* + * + * {{ properCase name }} reducer + * + */ + +import { fromJS } from 'immutable'; +import { + DEFAULT_ACTION, +} from './constants'; + +const initialState = fromJS({}); + +function {{ camelCase name }}Reducer(state = initialState, action) { + switch (action.type) { + case DEFAULT_ACTION: + return state; + default: + return state; + } +} + +export default {{ camelCase name }}Reducer; diff --git a/packages/strapi-admin/files/public/internals/generators/container/reducer.test.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/reducer.test.js.hbs new file mode 100755 index 0000000000..e43fae829f --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/reducer.test.js.hbs @@ -0,0 +1,9 @@ +import expect from 'expect'; +import {{ camelCase name }}Reducer from '../reducer'; +import { fromJS } from 'immutable'; + +describe('{{ camelCase name }}Reducer', () => { + it('returns the initial state', () => { + expect({{ camelCase name }}Reducer(undefined, {})).toEqual(fromJS({})); + }); +}); diff --git a/packages/strapi-admin/files/public/internals/generators/container/sagas.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/sagas.js.hbs new file mode 100755 index 0000000000..4401e77cdf --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/sagas.js.hbs @@ -0,0 +1,11 @@ +// import { take, call, put, select } from 'redux-saga/effects'; + +// Individual exports for testing +export function* defaultSaga() { + return; +} + +// All sagas to be loaded +export default [ + defaultSaga, +]; diff --git a/packages/strapi-admin/files/public/internals/generators/container/sagas.test.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/sagas.test.js.hbs new file mode 100755 index 0000000000..ec8febea35 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/sagas.test.js.hbs @@ -0,0 +1,15 @@ +/** + * Test sagas + */ + +import expect from 'expect'; +// import { take, call, put, select } from 'redux-saga/effects'; +// import { defaultSaga } from '../sagas'; + +// const generator = defaultSaga(); + +describe('defaultSaga Saga', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(false); + }); +}); diff --git a/packages/strapi-admin/files/public/internals/generators/container/selectors.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/selectors.js.hbs new file mode 100755 index 0000000000..0b5c138fcd --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/selectors.js.hbs @@ -0,0 +1,25 @@ +import { createSelector } from 'reselect'; + +/** + * Direct selector to the {{ camelCase name }} state domain + */ +const select{{ properCase name }}Domain = () => state => state.get('{{ camelCase name }}'); + +/** + * Other specific selectors + */ + + +/** + * Default selector used by {{ properCase name }} + */ + +const select{{ properCase name }} = () => createSelector( + select{{ properCase name }}Domain(), + (substate) => substate.toJS() +); + +export default select{{ properCase name }}; +export { + select{{ properCase name }}Domain, +}; diff --git a/packages/strapi-admin/files/public/internals/generators/container/selectors.test.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/selectors.test.js.hbs new file mode 100755 index 0000000000..f53bf6520e --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/selectors.test.js.hbs @@ -0,0 +1,11 @@ +// import { select{{ properCase name }}Domain } from '../selectors'; +// import { fromJS } from 'immutable'; +import expect from 'expect'; + +// const selector = select{{ properCase name}}Domain(); + +describe('select{{ properCase name }}Domain', () => { + it('Expect to have unit tests specified', () => { + expect('Test case').toEqual(false); + }); +}); diff --git a/packages/strapi-admin/files/public/internals/generators/container/styles.css.hbs b/packages/strapi-admin/files/public/internals/generators/container/styles.css.hbs new file mode 100755 index 0000000000..1dc727bb55 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/styles.css.hbs @@ -0,0 +1,3 @@ +.{{ camelCase name }} { /* stylelint-disable */ + +} diff --git a/packages/strapi-admin/files/public/internals/generators/container/test.js.hbs b/packages/strapi-admin/files/public/internals/generators/container/test.js.hbs new file mode 100755 index 0000000000..19f00f0e0c --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/container/test.js.hbs @@ -0,0 +1,11 @@ +// import {{ properCase name }} from '../index'; + +import expect from 'expect'; +// import { shallow } from 'enzyme'; +// import React from 'react'; + +describe('<{{ properCase name }} />', () => { + it('Expect to have unit tests specified', () => { + expect(true).toEqual(false); + }); +}); diff --git a/packages/strapi-admin/files/public/internals/generators/index.js b/packages/strapi-admin/files/public/internals/generators/index.js new file mode 100755 index 0000000000..4bc7392ce4 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/index.js @@ -0,0 +1,27 @@ +/** + * generator/index.js + * + * Exports the generators so plop knows them + */ + +const fs = require('fs'); +const componentGenerator = require('./component/index.js'); +const containerGenerator = require('./container/index.js'); +const routeGenerator = require('./route/index.js'); +const languageGenerator = require('./language/index.js'); + +module.exports = (plop) => { + plop.setGenerator('component', componentGenerator); + plop.setGenerator('container', containerGenerator); + plop.setGenerator('route', routeGenerator); + plop.setGenerator('language', languageGenerator); + plop.addHelper('directory', (comp) => { + try { + fs.accessSync(`app/containers/${comp}`, fs.F_OK); + return `containers/${comp}`; + } catch (e) { + return `components/${comp}`; + } + }); + plop.addHelper('curly', (object, open) => (open ? '{' : '}')); +}; diff --git a/packages/strapi-admin/files/public/internals/generators/language/add-locale-data.hbs b/packages/strapi-admin/files/public/internals/generators/language/add-locale-data.hbs new file mode 100755 index 0000000000..80727c73cd --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/language/add-locale-data.hbs @@ -0,0 +1 @@ +$1addLocaleData({{language}}LocaleData); diff --git a/packages/strapi-admin/files/public/internals/generators/language/app-locale.hbs b/packages/strapi-admin/files/public/internals/generators/language/app-locale.hbs new file mode 100755 index 0000000000..9e99e845f8 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/language/app-locale.hbs @@ -0,0 +1,2 @@ +$1 + '{{language}}', diff --git a/packages/strapi-admin/files/public/internals/generators/language/format-translation-messages.hbs b/packages/strapi-admin/files/public/internals/generators/language/format-translation-messages.hbs new file mode 100755 index 0000000000..74c78b4632 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/language/format-translation-messages.hbs @@ -0,0 +1 @@ +$1 {{language}}: formatTranslationMessages({{language}}TranslationMessages), diff --git a/packages/strapi-admin/files/public/internals/generators/language/index.js b/packages/strapi-admin/files/public/internals/generators/language/index.js new file mode 100755 index 0000000000..83899c61a4 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/language/index.js @@ -0,0 +1,80 @@ +/** + * Language Generator + */ +const exec = require('child_process').exec; + +module.exports = { + description: 'Add a langauge', + prompts: [{ + type: 'input', + name: 'language', + message: 'What is the language you want to add i18n support for (e.g. "fr", "de")?', + default: 'fr', + validate: value => { + if ((/.+/).test(value) && value.length === 2) { + return true; + } + + return '2 character language specifier is required'; + }, + }], + + actions: () => { + const actions = []; + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /('react-intl\/locale-data\/[a-z]+';\n)(?!.*'react-intl\/locale-data\/[a-z]+';)/g, + templateFile: './language/intl-locale-data.hbs', + }); + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /([\n\s'[a-z]+',)(?!.*[\n\s'[a-z]+',)/g, + templateFile: './language/app-locale.hbs', + }); + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /(from\s'.\/translations\/[a-z]+.json';\n)(?!.*from\s'.\/translations\/[a-z]+.json';)/g, + templateFile: './language/translation-messages.hbs', + }); + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /(addLocaleData\([a-z]+LocaleData\);\n)(?!.*addLocaleData\([a-z]+LocaleData\);)/g, + templateFile: './language/add-locale-data.hbs', + }); + actions.push({ + type: 'modify', + path: '../../app/i18n.js', + pattern: /([a-z]+:\sformatTranslationMessages\([a-z]+TranslationMessages\),\n)(?!.*[a-z]+:\sformatTranslationMessages\([a-z]+TranslationMessages\),)/g, + templateFile: './language/format-translation-messages.hbs', + }); + actions.push({ + type: 'add', + path: '../../app/translations/{{language}}.json', + templateFile: './language/translations-json.hbs', + abortOnFail: true, + }); + actions.push({ + type: 'modify', + path: '../../app/app.js', + pattern: /(System\.import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),\n)(?!.*System\.import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),)/g, + templateFile: './language/polyfill-intl-locale.hbs', + }); + actions.push( + () => { + const cmd = 'npm run extract-intl'; + exec(cmd, (err, result, stderr) => { + if (err || stderr) { + throw err || stderr; + } + process.stdout.write(result); + }); + } + ); + + return actions; + }, +}; diff --git a/packages/strapi-admin/files/public/internals/generators/language/intl-locale-data.hbs b/packages/strapi-admin/files/public/internals/generators/language/intl-locale-data.hbs new file mode 100755 index 0000000000..b790a1333f --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/language/intl-locale-data.hbs @@ -0,0 +1 @@ +$1import {{language}}LocaleData from 'react-intl/locale-data/{{language}}'; diff --git a/packages/strapi-admin/files/public/internals/generators/language/polyfill-intl-locale.hbs b/packages/strapi-admin/files/public/internals/generators/language/polyfill-intl-locale.hbs new file mode 100755 index 0000000000..ea1586e7ed --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/language/polyfill-intl-locale.hbs @@ -0,0 +1 @@ +$1 System.import('intl/locale-data/jsonp/{{language}}.js'), diff --git a/packages/strapi-admin/files/public/internals/generators/language/translation-messages.hbs b/packages/strapi-admin/files/public/internals/generators/language/translation-messages.hbs new file mode 100755 index 0000000000..0682d22ed0 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/language/translation-messages.hbs @@ -0,0 +1 @@ +$1import {{language}}TranslationMessages from './translations/{{language}}.json'; diff --git a/packages/strapi-admin/files/public/internals/generators/language/translations-json.hbs b/packages/strapi-admin/files/public/internals/generators/language/translations-json.hbs new file mode 100755 index 0000000000..fe51488c70 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/language/translations-json.hbs @@ -0,0 +1 @@ +[] diff --git a/packages/strapi-admin/files/public/internals/generators/route/index.js b/packages/strapi-admin/files/public/internals/generators/route/index.js new file mode 100755 index 0000000000..d3d9ba7f6f --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/route/index.js @@ -0,0 +1,80 @@ +/** + * Route Generator + */ +const fs = require('fs'); +const componentExists = require('../utils/componentExists'); + +function reducerExists(comp) { + try { + fs.accessSync(`app/containers/${comp}/reducer.js`, fs.F_OK); + return true; + } catch (e) { + return false; + } +} + +function sagasExists(comp) { + try { + fs.accessSync(`app/containers/${comp}/sagas.js`, fs.F_OK); + return true; + } catch (e) { + return false; + } +} + +function trimTemplateFile(template) { + // Loads the template file and trims the whitespace and then returns the content as a string. + return fs.readFileSync(`internals/generators/route/${template}`, 'utf8').replace(/\s*$/, ''); +} + +module.exports = { + description: 'Add a route', + prompts: [{ + type: 'input', + name: 'component', + message: 'Which component should the route show?', + validate: value => { + if ((/.+/).test(value)) { + return componentExists(value) ? true : `"${value}" doesn't exist.`; + } + + return 'The path is required'; + }, + }, { + type: 'input', + name: 'path', + message: 'Enter the path of the route.', + default: '/about', + validate: value => { + if ((/.+/).test(value)) { + return true; + } + + return 'path is required'; + }, + }], + + // Add the route to the routes.js file above the error route + // TODO smarter route adding + actions: data => { + const actions = []; + if (reducerExists(data.component)) { + data.useSagas = sagasExists(data.component); // eslint-disable-line no-param-reassign + actions.push({ + type: 'modify', + path: '../../app/routes.js', + pattern: /(\s{\n\s{0,}path: '\*',)/g, + template: trimTemplateFile('routeWithReducer.hbs'), + }); + } else { + actions.push({ + type: 'modify', + path: '../../app/routes.js', + pattern: /(\s{\n\s{0,}path: '\*',)/g, + template: trimTemplateFile('route.hbs'), + }); + } + + return actions; + }, +}; diff --git a/packages/strapi-admin/files/public/internals/generators/route/route.hbs b/packages/strapi-admin/files/public/internals/generators/route/route.hbs new file mode 100755 index 0000000000..162d992f40 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/route/route.hbs @@ -0,0 +1,9 @@ + { + path: '{{ path }}', + name: '{{ camelCase component }}', + getComponent(location, cb) { + System.import('{{{directory (properCase component)}}}') + .then(loadModule(cb)) + .catch(errorLoading); + }, + },$1 diff --git a/packages/strapi-admin/files/public/internals/generators/route/routeWithReducer.hbs b/packages/strapi-admin/files/public/internals/generators/route/routeWithReducer.hbs new file mode 100755 index 0000000000..fedf109ac8 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/route/routeWithReducer.hbs @@ -0,0 +1,25 @@ + { + path: '{{ path }}', + name: '{{ camelCase component }}', + getComponent(nextState, cb) { + const importModules = Promise.all([ + System.import('containers/{{ properCase component }}/reducer'), + {{#if useSagas}} + System.import('containers/{{ properCase component }}/sagas'), + {{/if}} + System.import('containers/{{ properCase component }}'), + ]); + + const renderRoute = loadModule(cb); + + importModules.then(([reducer,{{#if useSagas}} sagas,{{/if}} component]) => { + injectReducer('{{ camelCase component }}', reducer.default); + {{#if useSagas}} + injectSagas(sagas.default); + {{/if}} + renderRoute(component); + }); + + importModules.catch(errorLoading); + }, + },$1 diff --git a/packages/strapi-admin/files/public/internals/generators/utils/componentExists.js b/packages/strapi-admin/files/public/internals/generators/utils/componentExists.js new file mode 100755 index 0000000000..a5beb09811 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/generators/utils/componentExists.js @@ -0,0 +1,16 @@ +/** + * componentExists + * + * Check whether the given component exist in either the components or containers directory + */ + +const fs = require('fs'); +const pageComponents = fs.readdirSync('app/components'); +const pageContainers = fs.readdirSync('app/containers'); +const components = pageComponents.concat(pageContainers); + +function componentExists(comp) { + return components.indexOf(comp) >= 0; +} + +module.exports = componentExists; diff --git a/packages/strapi-admin/files/public/internals/scripts/analyze.js b/packages/strapi-admin/files/public/internals/scripts/analyze.js new file mode 100755 index 0000000000..7708052d8a --- /dev/null +++ b/packages/strapi-admin/files/public/internals/scripts/analyze.js @@ -0,0 +1,23 @@ +#!/usr/bin/env node + +var shelljs = require('shelljs'); +var animateProgress = require('./helpers/progress'); +var chalk = require('chalk'); +var addCheckMark = require('./helpers/checkmark'); + +var progress = animateProgress('Generating stats'); + +// Generate stats.json file with webpack +shelljs.exec( + 'node node_modules/webpack/bin/webpack --config internals/webpack/webpack.prod.babel.js --profile --json > stats.json', + addCheckMark.bind(null, callback) // Output a checkmark on completion +); + +// Called after webpack has finished generating the stats.json file +function callback() { + clearInterval(progress); + process.stdout.write( + '\n\nOpen ' + chalk.magenta('http://webpack.github.io/analyse/') + ' in your browser and upload the stats.json file!' + + chalk.blue('\n(Tip: ' + chalk.italic('CMD + double-click') + ' the link!)\n\n') + ); +} diff --git a/packages/strapi-admin/files/public/internals/scripts/clean.js b/packages/strapi-admin/files/public/internals/scripts/clean.js new file mode 100755 index 0000000000..39d1eb1547 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/scripts/clean.js @@ -0,0 +1,96 @@ +require('shelljs/global'); + +/** + * Adds mark check symbol + */ +function addCheckMark(callback) { + process.stdout.write(' ✓'); + callback(); +} + +if (!which('git')) { + echo('Sorry, this script requires git'); + exit(1); +} + +if (!test('-e', 'internals/templates')) { + echo('The example is deleted already.'); + exit(1); +} + +process.stdout.write('Cleanup started...'); + +// Cleanup components folder +rm('-rf', 'app/components/*'); + +// Cleanup containers folder +rm('-rf', 'app/containers/*'); +mkdir('-p', 'app/containers/App'); +mkdir('-p', 'app/containers/NotFoundPage'); +mkdir('-p', 'app/containers/HomePage'); +cp('internals/templates/appContainer.js', 'app/containers/App/index.js'); +cp('internals/templates/notFoundPage/notFoundPage.js', 'app/containers/NotFoundPage/index.js'); +cp('internals/templates/notFoundPage/messages.js', 'app/containers/NotFoundPage/messages.js'); +cp('internals/templates/homePage/homePage.js', 'app/containers/HomePage/index.js'); +cp('internals/templates/homePage/messages.js', 'app/containers/HomePage/messages.js'); + +// Handle Translations +mkdir('-p', 'app/translations'); +cp('internals/templates/translations/en.json', + 'app/translations/en.json'); + +// move i18n file +cp('internals/templates/i18n.js', + 'app/i18n.js'); + +// Copy LanguageProvider +mkdir('-p', 'app/containers/LanguageProvider'); +mkdir('-p', 'app/containers/LanguageProvider/tests'); +cp('internals/templates/languageProvider/actions.js', + 'app/containers/LanguageProvider/actions.js'); +cp('internals/templates/languageProvider/constants.js', + 'app/containers/LanguageProvider/constants.js'); +cp('internals/templates/languageProvider/languageProvider.js', + 'app/containers/LanguageProvider/index.js'); +cp('internals/templates/languageProvider/reducer.js', + 'app/containers/LanguageProvider/reducer.js'); +cp('internals/templates/languageProvider/selectors.js', + 'app/containers/LanguageProvider/selectors.js'); +cp('internals/templates/styles.css', 'app/containers/App/styles.css'); + +// Copy selectors +mkdir('app/containers/App/tests'); +cp('internals/templates/selectors.js', + 'app/containers/App/selectors.js'); +cp('internals/templates/selectors.test.js', + 'app/containers/App/tests/selectors.test.js'); + +// Utils +rm('-rf', 'app/utils'); +mkdir('app/utils'); +mkdir('app/utils/tests'); +cp('internals/templates/asyncInjectors.js', + 'app/utils/asyncInjectors.js'); +cp('internals/templates/asyncInjectors.test.js', + 'app/utils/tests/asyncInjectors.test.js'); + +// Replace the files in the root app/ folder +cp('internals/templates/app.js', 'app/app.js'); +cp('internals/templates/index.html', 'app/index.html'); +cp('internals/templates/reducers.js', 'app/reducers.js'); +cp('internals/templates/routes.js', 'app/routes.js'); +cp('internals/templates/store.js', 'app/store.js'); +cp('internals/templates/store.test.js', 'app/tests/store.test.js'); + +// Remove the templates folder +rm('-rf', 'internals/templates'); + +process.stdout.write(' ✓'); + +// Commit the changes +if (exec('git add . --all && git commit -qm "Remove default example"').code !== 0) { + echo('\nError: Git commit failed'); + exit(1); +} + +echo('\nCleanup done. Happy Coding!!!'); diff --git a/packages/strapi-admin/files/public/internals/scripts/dependencies.js b/packages/strapi-admin/files/public/internals/scripts/dependencies.js new file mode 100755 index 0000000000..aa24c99a35 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/scripts/dependencies.js @@ -0,0 +1,49 @@ +/*eslint-disable*/ + +// No need to build the DLL in production +if (process.env.NODE_ENV === 'production') { + process.exit(0) +} + +require('shelljs/global') + +const path = require('path') +const fs = require('fs') +const exists = fs.existsSync +const writeFile = fs.writeFileSync + +const defaults = require('lodash/defaultsDeep') +const pkg = require(path.join(process.cwd(), 'package.json')) +const config = require('../config') +const dllConfig = defaults(pkg.dllPlugin, config.dllPlugin.defaults) +const outputPath = path.join(process.cwd(), dllConfig.path) +const dllManifestPath = path.join(outputPath, 'package.json') + +/** + * I use node_modules/react-boilerplate-dlls by default just because + * it isn't going to be version controlled and babel wont try to parse it. + */ +mkdir('-p', outputPath) + +echo('Building the Webpack DLL...') + +/** + * Create a manifest so npm install doesnt warn us + */ +if (!exists(dllManifestPath)) { + writeFile( + dllManifestPath, + JSON.stringify(defaults({ + name: 'react-boilerplate-dlls', + private: true, + author: pkg.author, + repository: pkg.repository, + version: pkg.version + }), null, 2), + + 'utf8' + ) +} + +// the BUILDING_DLL env var is set to avoid confusing the development environment +exec('node node_modules/cross-env/bin/cross-env BUILDING_DLL=true node node_modules/webpack/bin/webpack --display-chunks --color --config internals/webpack/webpack.dll.babel.js') diff --git a/packages/strapi-admin/files/public/internals/scripts/extract-intl.js b/packages/strapi-admin/files/public/internals/scripts/extract-intl.js new file mode 100755 index 0000000000..4468313eb6 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/scripts/extract-intl.js @@ -0,0 +1,153 @@ +/* eslint-disable */ +/** + * This script will extract the internationalization messages from all components + and package them in the transalation json files in the translations file. + */ +const fs = require('fs'); +const nodeGlob = require('glob'); +const transform = require('babel-core').transform; + +const animateProgress = require('./helpers/progress'); +const addCheckmark = require('./helpers/checkmark'); + +const pkg = require('../../package.json'); +const i18n = require('../../app/i18n'); + +require('shelljs/global'); + +// Glob to match all js files except test files +const FILES_TO_PARSE = 'app/**/!(*.test).js'; +const locales = i18n.appLocales; + +const newLine = () => process.stdout.write('\n'); + +// Progress Logger +let progress; +const task = (message) => { + progress = animateProgress(message); + process.stdout.write(message); + + return (error) => { + if (error) { + process.stderr.write(error); + } + clearTimeout(progress); + return addCheckmark(() => newLine()); + } +} + +// Wrap async functions below into a promise +const glob = (pattern) => new Promise((resolve, reject) => { + nodeGlob(pattern, (error, value) => (error ? reject(error) : resolve(value))); +}); + +const readFile = (fileName) => new Promise((resolve, reject) => { + fs.readFile(fileName, (error, value) => (error ? reject(error) : resolve(value))); +}); + +const writeFile = (fileName, data) => new Promise((resolve, reject) => { + fs.writeFile(fileName, data, (error, value) => (error ? reject(error) : resolve(value))); +}); + +// Store existing translations into memory +const oldLocaleMappings = []; +const localeMappings = []; +// Loop to run once per locale +for (const locale of locales) { + oldLocaleMappings[locale] = {}; + localeMappings[locale] = {}; + // File to store translation messages into + const translationFileName = `app/translations/${locale}.json`; + try { + // Parse the old translation message JSON files + const messages = JSON.parse(fs.readFileSync(translationFileName)); + for (const message of messages) { + oldLocaleMappings[locale][message.id] = message; + } + } catch (error) { + if (error.code !== 'ENOENT') { + process.stderr.write( + `There was an error loading this translation file: ${translationFileName} + \n${error}` + ); + } + } +} + +const extractFromFile = async (fileName) => { + try { + const code = await readFile(fileName); + // Use babel plugin to extract instances where react-intl is used + const { metadata: result } = await transform(code, { + presets: pkg.babel.presets, + plugins: [ + ['react-intl'], + ], + }); + for (const message of result['react-intl'].messages) { + for (const locale of locales) { + const oldLocaleMapping = oldLocaleMappings[locale][message.id]; + // Merge old translations into the babel extracted instances where react-intl is used + localeMappings[locale][message.id] = { + id: message.id, + description: message.description, + defaultMessage: message.defaultMessage, + message: (oldLocaleMapping && oldLocaleMapping.message) + ? oldLocaleMapping.message + : '', + }; + } + } + } catch (error) { + process.stderr.write(`Error transforming file: ${fileName}\n${error}`); + } +}; + +(async function main() { + const memoryTaskDone = task('Storing language files in memory'); + const files = await glob(FILES_TO_PARSE); + memoryTaskDone() + + const extractTaskDone = task('Run extraction on all files'); + // Run extraction on all files that match the glob on line 16 + await Promise.all(files.map((fileName) => extractFromFile(fileName))); + extractTaskDone() + + // Make the directory if it doesn't exist, especially for first run + mkdir('-p', 'app/translations'); + for (const locale of locales) { + const translationFileName = `app/translations/${locale}.json`; + + try { + const localeTaskDone = task( + `Writing translation messages for ${locale} to: ${translationFileName}` + ); + + // Sort the translation JSON file so that git diffing is easier + // Otherwise the translation messages will jump around every time we extract + let messages = Object.values(localeMappings[locale]).sort((a, b) => { + a = a.id.toUpperCase(); + b = b.id.toUpperCase(); + return do { + if (a < b) -1; + else if (a > b) 1; + else 0; + }; + }); + + // Write to file the JSON representation of the translation messages + const prettified = `${JSON.stringify(messages, null, 2)}\n`; + + await writeFile(translationFileName, prettified); + + localeTaskDone(); + } catch (error) { + localeTaskDone( + `There was an error saving this translation file: ${translationFileName} + \n${error}` + ); + } + } + + process.exit() +}()); diff --git a/packages/strapi-admin/files/public/internals/scripts/helpers/checkmark.js b/packages/strapi-admin/files/public/internals/scripts/helpers/checkmark.js new file mode 100755 index 0000000000..865fb906a0 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/scripts/helpers/checkmark.js @@ -0,0 +1,11 @@ +var chalk = require('chalk'); + +/** + * Adds mark check symbol + */ +function addCheckMark(callback) { + process.stdout.write(chalk.green(' ✓')); + callback(); +} + +module.exports = addCheckMark; diff --git a/packages/strapi-admin/files/public/internals/scripts/helpers/progress.js b/packages/strapi-admin/files/public/internals/scripts/helpers/progress.js new file mode 100755 index 0000000000..f647072490 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/scripts/helpers/progress.js @@ -0,0 +1,23 @@ +var readline = require('readline'); + +/** + * Adds an animated progress indicator + * + * @param {string} message The message to write next to the indicator + * @param {number} amountOfDots The amount of dots you want to animate + */ +function animateProgress(message, amountOfDots) { + if (typeof amountOfDots !== 'number') { + amountOfDots = 3; + } + + var i = 0; + return setInterval(function () { + readline.cursorTo(process.stdout, 0); + i = (i + 1) % (amountOfDots + 1); + var dots = new Array(i + 1).join('.'); + process.stdout.write(message + dots); + }, 500); +} + +module.exports = animateProgress; diff --git a/packages/strapi-admin/files/public/internals/scripts/npmcheckversion.js b/packages/strapi-admin/files/public/internals/scripts/npmcheckversion.js new file mode 100755 index 0000000000..24baa42613 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/scripts/npmcheckversion.js @@ -0,0 +1,9 @@ +/* eslint-disable */ +var exec = require('child_process').exec; +exec('npm -v', function (err, stdout, stderr) { + if (err) throw err; + if (parseFloat(stdout) < 3) { + throw new Error('[ERROR: React Boilerplate] You need npm version @>=3'); + process.exit(1); + } +}); diff --git a/packages/strapi-admin/files/public/internals/scripts/setup.js b/packages/strapi-admin/files/public/internals/scripts/setup.js new file mode 100755 index 0000000000..77f5239343 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/scripts/setup.js @@ -0,0 +1,73 @@ +#!/usr/bin/env node + +var shell = require('shelljs'); +var exec = require('child_process').exec; +var path = require('path'); +var fs = require('fs'); +var animateProgress = require('./helpers/progress'); +var addCheckMark = require('./helpers/checkmark'); +var readline = require('readline'); + +process.stdin.resume(); +process.stdin.setEncoding('utf8'); + +process.stdout.write('\n'); +var interval = animateProgress('Cleaning old repository'); +process.stdout.write('Cleaning old repository'); + +cleanRepo(function () { + clearInterval(interval); + process.stdout.write('\nInstalling dependencies... (This might take a while)'); + setTimeout(function () { + readline.cursorTo(process.stdout, 0); + interval = animateProgress('Installing dependencies'); + }, 500); + + process.stdout.write('Installing dependencies'); + installDeps(function (error) { + clearInterval(interval); + if (error) { + process.stdout.write(error); + } + + deleteFileInCurrentDir('setup.js', function () { + process.stdout.write('\n'); + interval = animateProgress('Initialising new repository'); + process.stdout.write('Initialising new repository'); + initGit(function () { + clearInterval(interval); + process.stdout.write('\nDone!'); + process.exit(0); + }); + }); + }); +}); + +/** + * Deletes the .git folder in dir + */ +function cleanRepo(callback) { + shell.rm('-rf', '.git/'); + addCheckMark(callback); +} + +/** + * Initializes git again + */ +function initGit(callback) { + exec('git init && git add . && git commit -m "Initial commit"', addCheckMark.bind(null, callback)); +} + +/** + * Deletes a file in the current directory + */ +function deleteFileInCurrentDir(file, callback) { + fs.unlink(path.join(__dirname, file), callback); +} + +/** + * Installs dependencies + */ +function installDeps(callback) { + exec('npm install', addCheckMark.bind(null, callback)); +} diff --git a/packages/strapi-admin/files/public/internals/testing/karma.conf.js b/packages/strapi-admin/files/public/internals/testing/karma.conf.js new file mode 100755 index 0000000000..ee27a4fcc4 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/testing/karma.conf.js @@ -0,0 +1,61 @@ +const webpackConfig = require('../webpack/webpack.test.babel'); +const argv = require('minimist')(process.argv.slice(2)); +const path = require('path'); + +module.exports = (config) => { + config.set({ + frameworks: ['mocha'], + reporters: ['coverage', 'mocha'], + browsers: process.env.TRAVIS // eslint-disable-line no-nested-ternary + ? ['Chrome_travis_ci'] + : process.env.APPVEYOR + ? ['IE'] : ['Chrome'], + + autoWatch: false, + singleRun: true, + + client: { + mocha: { + grep: argv.grep, + }, + }, + + files: [ + { + pattern: './test-bundler.js', + watched: false, + served: true, + included: true, + }, + ], + + preprocessors: { + ['./test-bundler.js']: ['webpack', 'sourcemap'], // eslint-disable-line no-useless-computed-key + }, + + webpack: webpackConfig, + + // make Webpack bundle generation quiet + webpackMiddleware: { + noInfo: true, + stats: 'errors-only', + }, + + customLaunchers: { + Chrome_travis_ci: { + base: 'Chrome', + flags: ['--no-sandbox'], + }, + }, + + coverageReporter: { + dir: path.join(process.cwd(), 'coverage'), + reporters: [ + { type: 'lcov', subdir: 'lcov' }, + { type: 'html', subdir: 'html' }, + { type: 'text-summary' }, + ], + }, + + }); +}; diff --git a/packages/strapi-admin/files/public/internals/testing/test-bundler.js b/packages/strapi-admin/files/public/internals/testing/test-bundler.js new file mode 100755 index 0000000000..5d932e9524 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/testing/test-bundler.js @@ -0,0 +1,13 @@ +// needed for regenerator-runtime +// (ES7 generator support is required by redux-saga) +import 'babel-polyfill'; + +// If we need to use Chai, we'll have already chaiEnzyme loaded +import chai from 'chai'; +import chaiEnzyme from 'chai-enzyme'; +chai.use(chaiEnzyme()); + +// Include all .js files under `app`, except app.js, reducers.js, and routes.js. +// This is for isparta code coverage +const context = require.context('../../app', true, /^^((?!(app|reducers|routes)).)*\.js$/); +context.keys().forEach(context); diff --git a/packages/strapi-admin/files/public/internals/webpack/webpack.base.babel.js b/packages/strapi-admin/files/public/internals/webpack/webpack.base.babel.js new file mode 100755 index 0000000000..c029fc392d --- /dev/null +++ b/packages/strapi-admin/files/public/internals/webpack/webpack.base.babel.js @@ -0,0 +1,87 @@ +/** + * COMMON WEBPACK CONFIGURATION + */ + +const path = require('path'); +const webpack = require('webpack'); + +module.exports = (options) => ({ + entry: options.entry, + output: Object.assign({ // Compile into js/build.js + path: path.resolve(process.cwd(), 'build'), + publicPath: '/', + }, options.output), // Merge with env dependent settings + module: { + loaders: [{ + test: /\.js$/, // Transform all .js files required somewhere with Babel + loader: 'babel', + exclude: /node_modules/, + query: options.babelQuery, + }, { + // Transform our own .css files with PostCSS and CSS-modules + test: /\.s?css$/, + exclude: /node_modules/, + loader: options.cssLoaders, + }, { + // Do not transform vendor's CSS with CSS-modules + // The point is that they remain in global scope. + // Since we require these CSS files in our JS or CSS files, + // they will be a part of our compilation either way. + // So, no need for ExtractTextPlugin here. + test: /\.css$/, + include: /node_modules/, + loaders: ['style-loader', 'css-loader'], + }, { + test: /\.(eot|svg|ttf|woff|woff2)$/, + loader: 'file-loader', + }, { + test: /\.(jpg|png|gif)$/, + loaders: [ + 'file-loader', + 'image-webpack?{progressive:true, optimizationLevel: 7, interlaced: false, pngquant:{quality: "65-90", speed: 4}}', + ], + }, { + test: /\.html$/, + loader: 'html-loader', + }, { + test: /\.json$/, + loader: 'json-loader', + }, { + test: /\.(mp4|webm)$/, + loader: 'url-loader?limit=10000', + }], + }, + plugins: options.plugins.concat([ + new webpack.ProvidePlugin({ + // make fetch available + fetch: 'exports?self.fetch!whatwg-fetch', + }), + + // Always expose NODE_ENV to webpack, in order to use `process.env.NODE_ENV` + // inside your code for any environment checks; UglifyJS will automatically + // drop any unreachable code. + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: JSON.stringify(process.env.NODE_ENV), + }, + }), + ]), + postcss: () => options.postcssPlugins, + resolve: { + modules: ['app', 'node_modules'], + extensions: [ + '', + '.js', + '.jsx', + '.react.js', + ], + mainFields: [ + 'jsnext:main', + 'main', + ], + }, + devtool: options.devtool, + target: 'web', // Make web variables accessible to webpack, e.g. window + stats: false, // Don't show stats in the console + progress: true, +}); diff --git a/packages/strapi-admin/files/public/internals/webpack/webpack.dev.babel.js b/packages/strapi-admin/files/public/internals/webpack/webpack.dev.babel.js new file mode 100755 index 0000000000..c6791abf7b --- /dev/null +++ b/packages/strapi-admin/files/public/internals/webpack/webpack.dev.babel.js @@ -0,0 +1,320 @@ +/** + * DEVELOPMENT WEBPACK CONFIGURATION + */ + +const path = require('path'); +const fs = require('fs'); +const webpack = require('webpack'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const logger = require('../../server/logger'); +const cheerio = require('cheerio'); +const pkg = require(path.resolve(process.cwd(), 'package.json')); +const dllPlugin = pkg.dllPlugin; +const argv = require('minimist')(process.argv.slice(2)); +const _ = require('lodash'); + +// PostCSS plugins +const cssnext = require('postcss-cssnext'); +const postcssFocus = require('postcss-focus'); +const postcssReporter = require('postcss-reporter'); + +const plugins = [ + new webpack.HotModuleReplacementPlugin(), // Tell webpack we want hot reloading + new webpack.NoErrorsPlugin(), + new HtmlWebpackPlugin({ + favicon: 'app/favicon.ico', + inject: true, // Inject all files that are generated by webpack, e.g. bundle.js + templateContent: templateContent(), // eslint-disable-line no-use-before-define + }), +]; + +module.exports = require('./webpack.base.babel')({ + // Add hot reloading in development + entry: [ + 'eventsource-polyfill', // Necessary for hot reloading with IE + 'webpack-hot-middleware/client', + path.join(process.cwd(), 'app/app.js'), // Start with js/app.js + ], + + // Don't use hashes in dev mode for better performance + output: { + filename: '[name].js', + chunkFilename: '[name].chunk.js', + publicPath: `http://127.0.0.1:${argv.port || process.env.PORT || 4000}/`, + }, + + // Add development plugins + plugins: dependencyHandlers().concat(plugins), // eslint-disable-line no-use-before-define + + // Load the SCSS in a style tag in development + cssLoaders: 'style-loader!css-loader?localIdentName=[local]__[path][name]__[hash:base64:5]&modules&importLoaders=1&sourceMap!postcss-loader!sass-loader', + + // Process the CSS with PostCSS + postcssPlugins: [ + postcssFocus(), // Add a :focus to every :hover + cssnext({ // Allow future CSS features to be used, also auto-prefixes the CSS... + browsers: ['last 2 versions', 'IE > 10'], // ...based on this browser list + }), + postcssReporter({ // Posts messages from plugins to the terminal + clearMessages: true, + }), + ], + + // Tell babel that we want to hot-reload + babelQuery: { + presets: ['react-hmre'], + }, + + // Emit a source map for easier debugging + devtool: 'cheap-module-eval-source-map', + + // Generate translations files + generateTranslationFiles: generateTranslationFiles(), +}); + +/** + * Select which plugins to use to optimize the bundle's handling of + * third party dependencies. + * + * If there is a dllPlugin key on the project's package.json, the + * Webpack DLL Plugin will be used. Otherwise the CommonsChunkPlugin + * will be used. + * + */ +function dependencyHandlers() { + // Don't do anything during the DLL Build step + if (process.env.BUILDING_DLL) { return []; } + + // If the package.json does not have a dllPlugin property, use the CommonsChunkPlugin + if (!dllPlugin) { + return [ + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + children: true, + minChunks: 2, + async: true, + }), + ]; + } + + const dllPath = path.resolve(process.cwd(), dllPlugin.path || 'node_modules/react-boilerplate-dlls'); + + /** + * If DLLs aren't explicitly defined, we assume all production dependencies listed in package.json + * Reminder: You need to exclude any server side dependencies by listing them in dllConfig.exclude + * + * @see https://github.com/mxstbr/react-boilerplate/tree/master/docs/general/webpack.md + */ + if (!dllPlugin.dlls) { + const manifestPath = path.resolve(dllPath, 'reactBoilerplateDeps.json'); + + if (!fs.existsSync(manifestPath)) { + logger.error('The DLL manifest is missing. Please run `npm run build:dll`'); + process.exit(0); + } + + return [ + new webpack.DllReferencePlugin({ + context: process.cwd(), + manifest: require(manifestPath), // eslint-disable-line global-require + }), + ]; + } + + // If DLLs are explicitly defined, we automatically create a DLLReferencePlugin for each of them. + const dllManifests = Object.keys(dllPlugin.dlls).map((name) => path.join(dllPath, `/${name}.json`)); + + return dllManifests.map((manifestPath) => { + if (!fs.existsSync(path)) { + if (!fs.existsSync(manifestPath)) { + logger.error(`The following Webpack DLL manifest is missing: ${path.basename(manifestPath)}`); + logger.error(`Expected to find it in ${dllPath}`); + logger.error('Please run: npm run build:dll'); + + process.exit(0); + } + } + + return new webpack.DllReferencePlugin({ + context: process.cwd(), + manifest: require(manifestPath), // eslint-disable-line global-require + }); + }); +} + +/** + * We dynamically generate the HTML content in development so that the different + * DLL Javascript files are loaded in script tags and available to our application. + */ +function templateContent() { + const html = fs.readFileSync( + path.resolve(process.cwd(), 'app/index.html') + ).toString(); + + if (!dllPlugin) { return html; } + + const doc = cheerio(html); + const body = doc.find('body'); + const dllNames = !dllPlugin.dlls ? ['reactBoilerplateDeps'] : Object.keys(dllPlugin.dlls); + + dllNames.forEach(dllName => body.append(``)); + + return doc.toString(); +} + +/** + * Generate translation files according + * to `messages.json` included in the app. + */ +function generateTranslationFiles() { + // App directory + const appDirectory = path.resolve(process.cwd(), 'app'); + + // Find `message.json` files in the app + findMessagesFiles(appDirectory, (err, messageFiles) => { + if (err) { + return; + } + + // Format messages found + const messagesFormatted = formatMessages(messageFiles); + + // Get the list of languages supported by this plugin + const pluginLanguages = getPluginLanguages(); + + // Get current translations values + const currentTranslationsValues = getCurrentTranslationsValues(pluginLanguages); + + // Update translations values + const updatedTranslationValues = getUpdatedTranslationValues(currentTranslationsValues, messagesFormatted); + + // Write files according to updated translations values + writeTranslationFiles(pluginLanguages, updatedTranslationValues); + }); +} + +/** + * Find `message.json` files in the app. + * + * @param cb {Function} Callback + */ +function findMessagesFiles(appDir, cb) { + // Name of the messages files + const messagesFileName = 'messages.json'; + + // App directory + // const dir = path.resolve(process.cwd(), 'app'); + + // Results + let results = {}; + + // Parallel search + fs.readdir(appDir, (err, list) => { + if (err) { + return cb(err); + } + + let pending = list.length; + if (!pending) { + return cb(null, results); + } + return list.forEach(fileName => { + const filePath = path.resolve(appDir, fileName); + fs.stat(filePath, (errStat, stat) => { + if (stat && stat.isDirectory()) { + findMessagesFiles(filePath, (errFind, res) => { + // Merge with the previous results + results = _.merge(results, res); + if (!--pending) { + cb(null, results); + } + }); + } else { + if (fileName === messagesFileName) { + results[filePath] = JSON.parse(fs.readFileSync(filePath, 'utf8')); + } + if (!--pending) { + cb(null, results); + } + } + }); + }); + }); +} + +/** + * Returns the list of languages supported by the plugin. + * + * @returns {Array} List of languages support by the plugin + */ +function getPluginLanguages() { + return fs.readdirSync(path.resolve(process.cwd(), 'app', 'translations')).map(fileName => (fileName.replace('.json', ''))); +} + +/** + * Returns the list of current translations values. + * + * @param languages {Array} List of languages support by the plugin + * @returns {Object} Current translation values + */ +function getCurrentTranslationsValues(languages) { + const currentTranslationsValues = {}; + + _.forEach(languages, language => { + currentTranslationsValues[language] = JSON.parse(fs.readFileSync((path.resolve(process.cwd(), 'app', 'translations', `${language}.json`)), 'utf8')); + }); + + return currentTranslationsValues; +} + +/** + * Format messages. + * + * @param messageFiles {Object} + * @returns {Object} Messages formatted + */ +function formatMessages(messageFiles) { + const messagesFormatted = {}; + + _.forEach(messageFiles, messageFile => { + _.forEach(messageFile, message => { + messagesFormatted[message.id] = message.defaultMessage; + }); + }); + + return messagesFormatted; +} + +/** + * Merge current translations with new ones. + * + * @param currentTranslationsValues {Object} Current translations value + * @param messagesFormatted {Object} Messages formatted from `messages.json` files + * @returns {Object} Translations values updated + */ +function getUpdatedTranslationValues(currentTranslationsValues, messagesFormatted) { + const updatedTranslationValues = {}; + + _.forEach(currentTranslationsValues, (value, language) => { + updatedTranslationValues[language] = {}; + + // Sort the messages and assigns the values + Object.keys(messagesFormatted).sort().forEach(id => { + updatedTranslationValues[language][id] = currentTranslationsValues[language][id] || ''; + }); + }); + + return updatedTranslationValues; +} + +/** + * Overwrite translations files according to updated values + * + * @param languages {Array} The list of languages supported by the plugin + * @param updatedTranslationValues {Object} Translations values updated + */ +function writeTranslationFiles(languages, updatedTranslationValues) { + _.forEach(languages, (language) => { + fs.writeFileSync(path.resolve(path.resolve(process.cwd(), 'app', 'translations', `${language}.json`)), JSON.stringify(updatedTranslationValues[language], null, 2)); + }); +} diff --git a/packages/strapi-admin/files/public/internals/webpack/webpack.dll.babel.js b/packages/strapi-admin/files/public/internals/webpack/webpack.dll.babel.js new file mode 100755 index 0000000000..c2bd0cd242 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/webpack/webpack.dll.babel.js @@ -0,0 +1,34 @@ +/** + * WEBPACK DLL GENERATOR + * + * This profile is used to cache webpack's module + * contexts for external library and framework type + * dependencies which will usually not change often enough + * to warrant building them from scratch every time we use + * the webpack process. + */ + +const { join } = require('path'); +const defaults = require('lodash/defaultsDeep'); +const webpack = require('webpack'); +const pkg = require(join(process.cwd(), 'package.json')); +const dllPlugin = require('../config').dllPlugin; + +if (!pkg.dllPlugin) { process.exit(0); } + +const dllConfig = defaults(pkg.dllPlugin, dllPlugin.defaults); +const outputPath = join(process.cwd(), dllConfig.path); + +module.exports = { + context: process.cwd(), + entry: dllConfig.dlls ? dllConfig.dlls : dllPlugin.entry(pkg), + devtool: 'eval', + output: { + filename: '[name].dll.js', + path: outputPath, + library: '[name]', + }, + plugins: [ + new webpack.DllPlugin({ name: '[name]', path: join(outputPath, '[name].json') }), // eslint-disable-line no-new + ], +}; diff --git a/packages/strapi-admin/files/public/internals/webpack/webpack.prod.babel.js b/packages/strapi-admin/files/public/internals/webpack/webpack.prod.babel.js new file mode 100755 index 0000000000..27167664c5 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/webpack/webpack.prod.babel.js @@ -0,0 +1,109 @@ +// Important modules this config uses +const path = require('path'); +const webpack = require('webpack'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const ExtractTextPlugin = require('extract-text-webpack-plugin'); +// const OfflinePlugin = require('offline-plugin'); + +// PostCSS plugins +const cssnext = require('postcss-cssnext'); +const postcssFocus = require('postcss-focus'); +const postcssReporter = require('postcss-reporter'); + +module.exports = require('./webpack.base.babel')({ + // In production, we skip all hot-reloading stuff + entry: [ + path.join(process.cwd(), 'app/app.js'), + ], + + // Utilize long-term caching by adding content hashes (not compilation hashes) to compiled assets + output: { + filename: '[name].[chunkhash].js', + chunkFilename: '[name].[chunkhash].chunk.js', + publicPath: 'http://localhost:1337/admin/', + assetsPublicPath: '/admin/', + }, + + // We use ExtractTextPlugin so we get a seperate SCSS file instead + // of the CSS being in the JS and injected as a style tag + cssLoaders: 'style-loader!css-loader?localIdentName=[local]__[path][name]__[hash:base64:5]&modules&importLoaders=1&sourceMap!postcss-loader!sass-loader', + + // In production, we minify our CSS with cssnano + postcssPlugins: [ + postcssFocus(), + cssnext({ + browsers: ['last 2 versions', 'IE > 10'], + }), + postcssReporter({ + clearMessages: true, + }), + ], + plugins: [ + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + children: true, + minChunks: 2, + async: true, + }), + + // OccurrenceOrderPlugin is needed for long-term caching to work properly. + // See http://mxs.is/googmv + new webpack.optimize.OccurrenceOrderPlugin(true), + + // Merge all duplicate modules + new webpack.optimize.DedupePlugin(), + + // Minify and optimize the JavaScript + new webpack.optimize.UglifyJsPlugin({ + compress: { + warnings: false, // ...but do not show warnings in the console (there is a lot of them) + }, + }), + + // Minify and optimize the index.html + new HtmlWebpackPlugin({ + template: 'app/index.html', + minify: { + removeComments: true, + collapseWhitespace: true, + removeRedundantAttributes: true, + useShortDoctype: true, + removeEmptyAttributes: true, + removeStyleLinkTypeAttributes: true, + keepClosingSlash: true, + minifyJS: true, + minifyCSS: true, + minifyURLs: true, + }, + inject: true, + }), + + // Extract the CSS into a seperate file + new ExtractTextPlugin('[name].[contenthash].css'), + + // Put it in the end to capture all the HtmlWebpackPlugin's + // assets manipulations and do leak its manipulations to HtmlWebpackPlugin + // new OfflinePlugin({ + // relativePaths: false, + // publicPath: '/', + // + // // No need to cache .htaccess. See http://mxs.is/googmp, + // // this is applied before any match in `caches` section + // excludes: ['.htaccess'], + // + // caches: { + // main: [':rest:'], + // + // // All chunks marked as `additional`, loaded after main section + // // and do not prevent SW to install. Change to `optional` if + // // do not want them to be preloaded at all (cached only when first loaded) + // additional: ['*.chunk.js'], + // }, + // + // // Removes warning for about `additional` section usage + // safeToUseOptionalCaches: true, + // + // AppCache: false, + // }), + ], +}); diff --git a/packages/strapi-admin/files/public/internals/webpack/webpack.test.babel.js b/packages/strapi-admin/files/public/internals/webpack/webpack.test.babel.js new file mode 100755 index 0000000000..84513af307 --- /dev/null +++ b/packages/strapi-admin/files/public/internals/webpack/webpack.test.babel.js @@ -0,0 +1,91 @@ +/** + * TEST WEBPACK CONFIGURATION + */ + +const path = require('path'); +const webpack = require('webpack'); +const modules = [ + 'app', + 'node_modules', +]; + +module.exports = { + devtool: 'inline-source-map', + isparta: { + babel: { + presets: ['es2015', 'react', 'stage-0'], + }, + }, + module: { + // Some libraries don't like being run through babel. + // If they gripe, put them here. + noParse: [ + /node_modules(\\|\/)sinon/, + /node_modules(\\|\/)acorn/, + ], + preLoaders: [ + { test: /\.js$/, + loader: 'isparta', + include: path.resolve('app/'), + }, + ], + loaders: [ + { test: /\.json$/, loader: 'json-loader' }, + { test: /\.css$/, loader: 'null-loader' }, + { test: /\.scss$/, loader: ['style-loader', 'css-loader', 'sass-loader'] }, + { test: /\.woff|\.eot|\.ttf/i, loader: 'null-loader' }, + // sinon.js--aliased for enzyme--expects/requires global vars. + // imports-loader allows for global vars to be injected into the module. + // See https://github.com/webpack/webpack/issues/304 + { test: /sinon(\\|\/)pkg(\\|\/)sinon\.js/, + loader: 'imports?define=>false,require=>false', + }, + { test: /\.js$/, + loader: 'babel', + exclude: [/node_modules/], + }, + { test: /\.jpe?g$|\.gif$|\.png$|\.svg$/i, + loader: 'null-loader', + }, + ], + }, + + plugins: [ + + // Always expose NODE_ENV to webpack, in order to use `process.env.NODE_ENV` + // inside your code for any environment checks; UglifyJS will automatically + // drop any unreachable code. + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: JSON.stringify(process.env.NODE_ENV), + }, + })], + + // Some node_modules pull in Node-specific dependencies. + // Since we're running in a browser we have to stub them out. See: + // https://webpack.github.io/docs/configuration.html#node + // https://github.com/webpack/node-libs-browser/tree/master/mock + // https://github.com/webpack/jade-loader/issues/8#issuecomment-55568520 + node: { + fs: 'empty', + child_process: 'empty', + net: 'empty', + tls: 'empty', + }, + + // required for enzyme to work properly + externals: { + jsdom: 'window', + 'react/addons': true, + 'react/lib/ExecutionEnvironment': true, + 'react/lib/ReactContext': 'window', + }, + resolve: { + modulesDirectories: modules, + modules, + alias: { + // required for enzyme to work properly + sinon: 'sinon/pkg/sinon', + }, + }, +}; diff --git a/packages/strapi-admin/files/public/package-lock.json b/packages/strapi-admin/files/public/package-lock.json deleted file mode 100644 index 872c8d04d4..0000000000 --- a/packages/strapi-admin/files/public/package-lock.json +++ /dev/null @@ -1,15274 +0,0 @@ -{ - "name": "react-boilerplate", - "version": "3.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "abab": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", - "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", - "dev": true, - "optional": true - }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, - "accepts": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "requires": { - "mime-types": "2.1.15", - "negotiator": "0.6.1" - } - }, - "acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "dev": true - }, - "acorn-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", - "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", - "dev": true, - "optional": true, - "requires": { - "acorn": "2.7.0" - } - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "after": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.tgz", - "integrity": "sha1-q11PuIP1loFtNRX495HAr0ht1ic=", - "dev": true - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-html": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.5.tgz", - "integrity": "sha1-DcqloIEgaGa8JAo7dzoYTqO4i2Q=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true, - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" - } - }, - "app-root-path": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-1.4.0.tgz", - "integrity": "sha1-YzXYZclkDQ+tmQBOWnkjIjjpLfo=", - "dev": true - }, - "aproba": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", - "integrity": "sha512-ZpYajIfO0j2cOFTO955KUMIKNmj6zhX8kVztMAxFsDaMwz+9Z9SV0uou2pC9HJqcfpffOsjnbrDMvkNy+9RXPw==", - "dev": true - }, - "archive-type": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-3.2.0.tgz", - "integrity": "sha1-nNnABpV+vpX62tW9YJiUKoE3N/Y=", - "dev": true, - "requires": { - "file-type": "3.9.0" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - } - } - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.3" - } - }, - "argparse": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz", - "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=", - "dev": true, - "requires": { - "underscore": "1.7.0", - "underscore.string": "2.4.0" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.1.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "dev": true - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, - "array-find": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz", - "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "assertion-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", - "dev": true - }, - "ast-types": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", - "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=", - "dev": true - }, - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true, - "requires": { - "lodash": "4.15.0" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-each-series": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-1.1.0.tgz", - "integrity": "sha1-9C/YFV048hpbjqB8KOBj7RcAsTg=", - "dev": true - }, - "async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000701", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true - }, - "babel-cli": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.11.4.tgz", - "integrity": "sha1-VDWiiuxLgKCpANSTW8LoLwQAeK0=", - "dev": true, - "requires": { - "babel-core": "6.13.2", - "babel-polyfill": "6.13.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "bin-version-check": "2.1.0", - "chalk": "1.1.1", - "chokidar": "1.7.0", - "commander": "2.11.0", - "convert-source-map": "1.5.0", - "fs-readdir-recursive": "0.1.2", - "glob": "5.0.15", - "lodash": "4.15.0", - "log-symbols": "1.0.2", - "output-file-sync": "1.1.2", - "path-exists": "1.0.0", - "path-is-absolute": "1.0.1", - "request": "2.81.0", - "slash": "1.0.0", - "source-map": "0.5.6", - "v8flags": "2.1.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", - "integrity": "sha1-UJr7ZwZudJn36zU1x3RFdyri0Bk=", - "dev": true, - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" - } - }, - "babel-core": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.13.2.tgz", - "integrity": "sha1-92HhGZNh1abtFvk86AGtUKytszg=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.2.0", - "json5": "0.4.0", - "lodash": "4.15.0", - "minimatch": "3.0.4", - "path-exists": "1.0.0", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "shebang-regex": "1.0.0", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, - "babel-eslint": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-6.1.2.tgz", - "integrity": "sha1-UpNBn+NnLWZZjTJ9qWlFZ7pqXy8=", - "dev": true, - "requires": { - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash.assign": "4.2.0", - "lodash.pickby": "4.6.0" - } - }, - "babel-generator": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", - "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.15.0", - "source-map": "0.5.6", - "trim-right": "1.0.1" - } - }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "dev": true, - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-builder-react-jsx": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.24.1.tgz", - "integrity": "sha1-CteRfjPI11HmRtrKTnfMGTd9LLw=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "esutils": "2.0.2" - } - }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-define-map": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", - "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "lodash": "4.15.0" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true, - "requires": { - "babel-helper-bindify-decorators": "6.24.1", - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "lodash": "4.15.0" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-loader": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.2.4.tgz", - "integrity": "sha1-qnCv+N3CI6WVLoOaQ6bDpMi/oek=", - "dev": true, - "requires": { - "loader-utils": "0.2.17", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-react-intl": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/babel-plugin-react-intl/-/babel-plugin-react-intl-2.1.3.tgz", - "integrity": "sha1-kbt5b59l17SUKUelv2sMZZ0tVmg=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "intl-messageformat-parser": "1.2.0", - "mkdirp": "0.5.1" - } - }, - "babel-plugin-react-transform": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/babel-plugin-react-transform/-/babel-plugin-react-transform-2.0.2.tgz", - "integrity": "sha1-UVu/qZaJOYEULZCx+bFjXeKZUQk=", - "dev": true, - "requires": { - "lodash": "4.15.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, - "babel-plugin-syntax-class-constructor-call": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", - "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", - "dev": true - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", - "dev": true - }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", - "dev": true - }, - "babel-plugin-syntax-do-expressions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", - "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=", - "dev": true - }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", - "dev": true - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "babel-plugin-syntax-export-extensions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", - "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", - "dev": true - }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", - "dev": true - }, - "babel-plugin-syntax-function-bind": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", - "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=", - "dev": true - }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", - "dev": true - }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", - "dev": true - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", - "dev": true - }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-class-constructor-call": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", - "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", - "dev": true, - "requires": { - "babel-plugin-syntax-class-constructor-call": "6.18.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", - "dev": true, - "requires": { - "babel-helper-explode-class": "6.24.1", - "babel-plugin-syntax-decorators": "6.13.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-do-expressions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", - "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", - "dev": true, - "requires": { - "babel-plugin-syntax-do-expressions": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", - "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "lodash": "4.15.0" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "dev": true, - "requires": { - "babel-helper-define-map": "6.24.1", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "dev": true, - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "dev": true, - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "dev": true, - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "dev": true, - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-export-extensions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", - "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", - "dev": true, - "requires": { - "babel-plugin-syntax-export-extensions": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "dev": true, - "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-function-bind": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", - "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", - "dev": true, - "requires": { - "babel-plugin-syntax-function-bind": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", - "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", - "dev": true, - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-react-constant-elements": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.9.1.tgz", - "integrity": "sha1-EluG2WyzIuITm2B/10mtX7sX8AU=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-react-display-name": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", - "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-react-inline-elements": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-inline-elements/-/babel-plugin-transform-react-inline-elements-6.8.0.tgz", - "integrity": "sha1-/C2P7B8vh+XElhrDZ2EAOfMlu+Y=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-react-jsx": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", - "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", - "dev": true, - "requires": { - "babel-helper-builder-react-jsx": "6.24.1", - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-react-jsx-self": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", - "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", - "dev": true, - "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-react-jsx-source": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", - "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", - "dev": true, - "requires": { - "babel-plugin-syntax-jsx": "6.18.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.2.9.tgz", - "integrity": "sha1-aSDyZ13NmkFDPR2dGeoolEuvKRY=", - "dev": true - }, - "babel-plugin-transform-regenerator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", - "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", - "dev": true, - "requires": { - "regenerator-transform": "0.9.11" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } - }, - "babel-polyfill": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.13.0.tgz", - "integrity": "sha1-WXghXCXUmml+t4r8VOY8nTpz1ew=", - "requires": { - "babel-runtime": "6.23.0", - "core-js": "2.4.1", - "regenerator-runtime": "0.9.6" - } - }, - "babel-preset-es2015": { - "version": "6.13.2", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.13.2.tgz", - "integrity": "sha1-AGxGmnUovQZvKRfItJVTCdzVPPs=", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.24.1", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.24.1" - } - }, - "babel-preset-react": { - "version": "6.11.1", - "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.11.1.tgz", - "integrity": "sha1-mKwr08G3bzBirgglgOreFUoZtZA=", - "dev": true, - "requires": { - "babel-plugin-syntax-flow": "6.18.0", - "babel-plugin-syntax-jsx": "6.18.0", - "babel-plugin-transform-flow-strip-types": "6.22.0", - "babel-plugin-transform-react-display-name": "6.25.0", - "babel-plugin-transform-react-jsx": "6.24.1", - "babel-plugin-transform-react-jsx-self": "6.22.0", - "babel-plugin-transform-react-jsx-source": "6.22.0" - } - }, - "babel-preset-react-hmre": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/babel-preset-react-hmre/-/babel-preset-react-hmre-1.1.1.tgz", - "integrity": "sha1-0hbmDLW41Mhz4Z7Q9U6v8UN7xJI=", - "dev": true, - "requires": { - "babel-plugin-react-transform": "2.0.2", - "react-transform-catch-errors": "1.0.2", - "react-transform-hmr": "1.0.4", - "redbox-react": "1.4.3" - } - }, - "babel-preset-stage-0": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.5.0.tgz", - "integrity": "sha1-i4R5sgd0grjz3I+PXwyceXiM3iI=", - "dev": true, - "requires": { - "babel-plugin-transform-do-expressions": "6.22.0", - "babel-plugin-transform-function-bind": "6.22.0", - "babel-preset-stage-1": "6.24.1" - } - }, - "babel-preset-stage-1": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", - "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", - "dev": true, - "requires": { - "babel-plugin-transform-class-constructor-call": "6.24.1", - "babel-plugin-transform-export-extensions": "6.22.0", - "babel-preset-stage-2": "6.24.1" - } - }, - "babel-preset-stage-2": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", - "dev": true, - "requires": { - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-decorators": "6.24.1", - "babel-preset-stage-3": "6.24.1" - } - }, - "babel-preset-stage-3": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.23.0" - } - }, - "babel-register": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", - "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true, - "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.23.0", - "core-js": "2.4.1", - "home-or-tmp": "2.0.0", - "lodash": "4.15.0", - "mkdirp": "0.5.1", - "source-map-support": "0.4.15" - }, - "dependencies": { - "babel-core": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", - "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.2.0", - "json5": "0.5.1", - "lodash": "4.15.0", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - } - } - }, - "babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", - "requires": { - "core-js": "2.4.1", - "regenerator-runtime": "0.10.5" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", - "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" - } - } - }, - "babel-template": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash": "4.15.0" - } - }, - "babel-traverse": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "debug": "2.2.0", - "globals": "9.18.0", - "invariant": "2.2.1", - "lodash": "4.15.0" - } - }, - "babel-types": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "esutils": "2.0.2", - "lodash": "4.15.0", - "to-fast-properties": "1.0.3" - } - }, - "babylon": { - "version": "6.17.4", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", - "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", - "dev": true - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-arraybuffer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz", - "integrity": "sha1-R030qfLaJOBd8xWMOx2zw81GoVQ=", - "dev": true - }, - "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", - "dev": true - }, - "base64id": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz", - "integrity": "sha1-As4P3u4M709ACA4ec+g08LG/zj8=", - "dev": true - }, - "base64url": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-1.0.6.tgz", - "integrity": "sha1-1k03XWinxkDZEuI1jRcNylu1RoE=", - "dev": true, - "requires": { - "concat-stream": "1.4.10", - "meow": "2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - }, - "camelcase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", - "integrity": "sha1-vRoRv5sxoc5JNJOpMN4aC69K1+w=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "map-obj": "1.0.1" - } - }, - "concat-stream": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.10.tgz", - "integrity": "sha1-rMO79WAsuMyYDGrIQPp9hgPj7zY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14", - "typedarray": "0.0.6" - } - }, - "indent-string": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.2.tgz", - "integrity": "sha1-25m8xYPrarux5I3LsZmamGBBy2s=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "minimist": "1.2.0", - "repeating": "1.1.3" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "meow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-2.0.0.tgz", - "integrity": "sha1-j1MKjs9dQNP0tN+Tw0cpAPuiqPE=", - "dev": true, - "requires": { - "camelcase-keys": "1.0.0", - "indent-string": "1.2.2", - "minimist": "1.2.0", - "object-assign": "1.0.0" - } - }, - "object-assign": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz", - "integrity": "sha1-5l3Idm07R7S4MHRlyDEdoDCwcKY=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "repeating": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "batchflow": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/batchflow/-/batchflow-0.4.0.tgz", - "integrity": "sha1-fUGd95trdYewb56jT5bM72905bU=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", - "dev": true - }, - "benchmark": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz", - "integrity": "sha1-Lx4vpMNZ8REiqhgwgiGOlX45DHM=", - "dev": true - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "dev": true, - "requires": { - "callsite": "1.0.0" - } - }, - "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", - "dev": true - }, - "bin-build": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bin-build/-/bin-build-2.2.0.tgz", - "integrity": "sha1-EfjdYfcP/Por3KpbRvXo/t1CIcw=", - "dev": true, - "requires": { - "archive-type": "3.2.0", - "decompress": "3.0.0", - "download": "4.4.3", - "exec-series": "1.0.3", - "rimraf": "2.5.4", - "tempfile": "1.1.1", - "url-regex": "3.2.0" - }, - "dependencies": { - "tempfile": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-1.1.1.tgz", - "integrity": "sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2", - "uuid": "2.0.3" - } - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "bin-check": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-2.0.0.tgz", - "integrity": "sha1-hvjm9CU4k99g3DFpV/WvAqywWTA=", - "dev": true, - "requires": { - "executable": "1.1.0" - } - }, - "bin-version": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz", - "integrity": "sha1-nrSY7m/Xb3q5p8FgQ2+JV5Q1144=", - "dev": true, - "requires": { - "find-versions": "1.2.1" - } - }, - "bin-version-check": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz", - "integrity": "sha1-5OXfKQuQaffRETJAMe/BP90RpbA=", - "dev": true, - "requires": { - "bin-version": "1.0.4", - "minimist": "1.2.0", - "semver": "4.3.6", - "semver-truncate": "1.1.2" - } - }, - "bin-wrapper": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-3.0.2.tgz", - "integrity": "sha1-Z9MwYmLksaXy+I7iNGT2plVneus=", - "dev": true, - "requires": { - "bin-check": "2.0.0", - "bin-version-check": "2.1.0", - "download": "4.4.3", - "each-async": "1.1.1", - "lazy-req": "1.1.0", - "os-filter-obj": "1.0.3" - } - }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "dev": true, - "requires": { - "buffers": "0.1.1", - "chainsaw": "0.1.0" - } - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", - "dev": true - }, - "bl": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", - "dev": true, - "requires": { - "readable-stream": "2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", - "dev": true - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", - "dev": true - }, - "bn.js": { - "version": "4.11.7", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", - "integrity": "sha512-LxFiV5mefv0ley0SzqkOPR1bC4EbpPx8LkOz5vMe/Yi15t5hzwgO/G+tc7wOtL4PZTYjwHu8JnEiSLumuSjSfA==", - "dev": true - }, - "body-parser": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", - "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", - "dev": true, - "requires": { - "bytes": "2.4.0", - "content-type": "1.0.2", - "debug": "2.6.7", - "depd": "1.1.0", - "http-errors": "1.6.1", - "iconv-lite": "0.4.15", - "on-finished": "2.3.0", - "qs": "6.4.0", - "raw-body": "2.2.0", - "type-is": "1.6.15" - }, - "dependencies": { - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", - "dev": true - }, - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", - "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "dev": true, - "requires": { - "depd": "1.1.0", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - } - }, - "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", - "dev": true - } - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "boxen": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.3.1.tgz", - "integrity": "sha1-p9iYJDrmIvertrtgTXQKdsalRhs=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "filled-array": "1.1.0", - "object-assign": "4.1.1", - "repeating": "2.0.1", - "string-width": "1.0.2", - "widest-line": "1.0.0" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "browserify-aes": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", - "dev": true, - "requires": { - "browserify-aes": "1.0.6", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.0" - } - }, - "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "randombytes": "2.0.5" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "0.2.9" - } - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000701", - "electron-to-chromium": "1.3.15" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "dev": true, - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", - "dev": true - }, - "buffer-to-vinyl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-to-vinyl/-/buffer-to-vinyl-1.1.0.tgz", - "integrity": "sha1-APFfruOreh3aLN5tkSG//dB7ImI=", - "dev": true, - "requires": { - "file-type": "3.9.0", - "readable-stream": "2.3.3", - "uuid": "2.0.3", - "vinyl": "1.2.0" - }, - "dependencies": { - "file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "dev": true - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "bytes": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.3.0.tgz", - "integrity": "sha1-1baAoWW2IBc5rLYRVCqrwtjOsHA=" - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "0.2.0" - } - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", - "dev": true - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, - "camel-case": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-1.2.2.tgz", - "integrity": "sha1-Gsp8TRlTWaLOmVV5NDPG5VQlEfI=", - "dev": true, - "requires": { - "sentence-case": "1.1.3", - "upper-case": "1.1.3" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } - }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000701", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" - } - }, - "caniuse-db": { - "version": "1.0.30000701", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000701.tgz", - "integrity": "sha1-LjKwaZO/Pb2QtD2T8E4m0Rr93Lo=", - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", - "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "caw": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/caw/-/caw-1.2.0.tgz", - "integrity": "sha1-/7Im/n78VHKI3GLuPpcHPCEtEDQ=", - "dev": true, - "requires": { - "get-proxy": "1.1.0", - "is-obj": "1.0.1", - "object-assign": "3.0.0", - "tunnel-agent": "0.4.3" - }, - "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - } - } - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true, - "requires": { - "assertion-error": "1.0.2", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" - } - }, - "chai-enzyme": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/chai-enzyme/-/chai-enzyme-0.5.0.tgz", - "integrity": "sha1-HvI2eWE0zuWoSDQgFph8j/dhXT8=", - "dev": true, - "requires": { - "html": "0.0.10", - "react-element-to-jsx-string": "3.2.0" - } - }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "dev": true, - "requires": { - "traverse": "0.3.9" - }, - "dependencies": { - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=", - "dev": true - } - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "change-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-2.3.1.tgz", - "integrity": "sha1-LE/ePwY7tB0AzWjg1aCdthy+iU8=", - "dev": true, - "requires": { - "camel-case": "1.2.2", - "constant-case": "1.1.2", - "dot-case": "1.1.2", - "is-lower-case": "1.1.3", - "is-upper-case": "1.1.2", - "lower-case": "1.1.4", - "lower-case-first": "1.0.2", - "param-case": "1.1.2", - "pascal-case": "1.1.2", - "path-case": "1.1.2", - "sentence-case": "1.1.3", - "snake-case": "1.1.2", - "swap-case": "1.1.2", - "title-case": "1.1.2", - "upper-case": "1.1.3", - "upper-case-first": "1.1.2" - } - }, - "cheerio": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", - "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-serializer": "0.1.0", - "entities": "1.1.1", - "htmlparser2": "3.8.3", - "jsdom": "7.2.2", - "lodash": "4.15.0" - } - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.1", - "fsevents": "1.1.2", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "safe-buffer": "5.1.1" - } - }, - "circular-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", - "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", - "dev": true - }, - "clap": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", - "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "clean-css": { - "version": "3.4.28", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz", - "integrity": "sha1-vxlF6C/ICPVWlebd6uwBQA79A/8=", - "dev": true, - "requires": { - "commander": "2.8.1", - "source-map": "0.4.4" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "1.0.1" - } - }, - "cli-spinners": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-0.1.2.tgz", - "integrity": "sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw=", - "dev": true - }, - "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", - "dev": true - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - } - } - }, - "clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", - "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", - "dev": true - }, - "clone-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", - "integrity": "sha1-6uCiQT9VwJQvgYwin+/OhF1/Oxw=", - "dev": true, - "requires": { - "is-regexp": "1.0.0", - "is-supported-regexp-flag": "1.0.0" - } - }, - "clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", - "dev": true, - "requires": { - "q": "1.5.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collapse-white-space": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.3.tgz", - "integrity": "sha1-S5BvZw5aljqHt2sOFolkM0G2Ajw=", - "dev": true - }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "1.0.2", - "color-convert": "1.9.0", - "color-string": "0.3.0" - } - }, - "color-convert": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", - "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-diff": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz", - "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI=", - "dev": true - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "colorguard": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.0.tgz", - "integrity": "sha1-8/rK9cquuk71RlPZ+yW7cxd8DYQ=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "color-diff": "0.1.7", - "log-symbols": "1.0.2", - "object-assign": "4.1.1", - "pipetteur": "2.0.3", - "plur": "2.1.2", - "postcss": "5.2.17", - "postcss-reporter": "1.4.1", - "text-table": "0.2.0", - "yargs": "1.3.3" - }, - "dependencies": { - "yargs": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", - "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo=", - "dev": true - } - } - }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "0.11.4", - "css-color-names": "0.0.4", - "has": "1.0.1" - } - }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", - "dev": true - }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "dev": true, - "requires": { - "lodash": "4.15.0" - } - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", - "dev": true - }, - "component-emitter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", - "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", - "dev": true - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", - "dev": true - }, - "compressible": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", - "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", - "requires": { - "mime-db": "1.27.0" - } - }, - "compression": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", - "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", - "requires": { - "accepts": "1.3.3", - "bytes": "2.3.0", - "compressible": "2.0.10", - "debug": "2.2.0", - "on-headers": "1.0.1", - "vary": "1.1.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "typedarray": "0.0.6" - } - }, - "configstore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", - "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", - "dev": true, - "requires": { - "dot-prop": "3.0.0", - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "os-tmpdir": "1.0.2", - "osenv": "0.1.4", - "uuid": "2.0.3", - "write-file-atomic": "1.3.4", - "xdg-basedir": "2.0.0" - }, - "dependencies": { - "dot-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", - "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true - } - } - }, - "connect": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", - "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=", - "dev": true, - "requires": { - "debug": "2.6.7", - "finalhandler": "1.0.3", - "parseurl": "1.3.1", - "utils-merge": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "finalhandler": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", - "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", - "dev": true, - "requires": { - "debug": "2.6.7", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "console-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz", - "integrity": "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=", - "dev": true - }, - "constant-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-1.1.2.tgz", - "integrity": "sha1-jsLKW6ND4Aqjjb9OIA/VrJB+/WM=", - "dev": true, - "requires": { - "snake-case": "1.1.2", - "upper-case": "1.1.3" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, - "content-disposition": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.1.tgz", - "integrity": "sha1-h0dsamfI2qh+Muh2Ft+IO6f7Bxs=" - }, - "content-type": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", - "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=" - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", - "dev": true - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-1.1.0.tgz", - "integrity": "sha1-DeoPmATv37kp+7GxiOJVU+oFPTc=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "js-yaml": "3.9.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "require-from-string": "1.2.1" - }, - "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "js-yaml": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", - "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - } - } - }, - "coveralls": { - "version": "2.11.12", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.11.12.tgz", - "integrity": "sha1-7DBpy3U8zQq9kltu2NeQhqnIALE=", - "dev": true, - "requires": { - "js-yaml": "3.0.1", - "lcov-parse": "0.0.6", - "log-driver": "1.2.4", - "minimist": "1.2.0", - "request": "2.74.0" - }, - "dependencies": { - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "dev": true, - "requires": { - "async": "2.5.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.0", - "pinkie-promise": "2.0.1" - } - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true - }, - "request": { - "version": "2.74.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "integrity": "sha1-dpPKdou7DqXIzgjAhKRe+gW4kqs=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "bl": "1.1.2", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "1.0.1", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "node-uuid": "1.4.8", - "oauth-sign": "0.8.2", - "qs": "6.2.0", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.4.3" - } - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - } - } - }, - "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "elliptic": "6.4.0" - } - }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "1.0.0" - } - }, - "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.8" - } - }, - "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true, - "requires": { - "cipher-base": "1.0.4", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.8" - } - }, - "cross-env": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-2.0.0.tgz", - "integrity": "sha1-ynADMbwyU3SFS6cdyK0WlPAlJu0=", - "dev": true, - "requires": { - "cross-spawn": "3.0.1", - "lodash.assign": "3.2.0" - }, - "dependencies": { - "lodash.assign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz", - "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._createassigner": "3.1.1", - "lodash.keys": "3.1.2" - } - } - } - }, - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "which": "1.2.14" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - } - } - }, - "cross-spawn-async": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz", - "integrity": "sha1-hF/wwINKPe2dFg2sptOQkGuyiMw=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "which": "1.2.14" - }, - "dependencies": { - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - } - } - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "crypto-browserify": { - "version": "3.11.1", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", - "integrity": "sha512-Na7ZlwCOqoaW5RwUK1WpXws2kv8mNhWdTlzob0UXulk6G9BDbyiJaGTYBIX61Ozn9l1EPPJpICZb4DaOpT9NlQ==", - "dev": true, - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.12", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" - } - }, - "css-color-function": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.0.tgz", - "integrity": "sha1-csdnuvl48BuKipT0Lxe6XSKndvw=", - "dev": true, - "requires": { - "balanced-match": "0.1.0", - "color": "0.11.4", - "debug": "0.7.4", - "rgb": "0.1.0" - }, - "dependencies": { - "balanced-match": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz", - "integrity": "sha1-tQS9BYabOSWd0MXvw12EMXbczEo=", - "dev": true - }, - "debug": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", - "dev": true - } - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.23.1.tgz", - "integrity": "sha1-n6I/K1wJZSNZEK1ezvO4o2OQ/lA=", - "dev": true, - "requires": { - "css-selector-tokenizer": "0.5.4", - "cssnano": "3.10.0", - "loader-utils": "0.2.17", - "lodash.camelcase": "3.0.1", - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0", - "source-list-map": "0.1.8" - } - }, - "css-rule-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz", - "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=", - "dev": true, - "requires": { - "css-tokenize": "1.0.1", - "duplexer2": "0.0.2", - "ldjson-stream": "1.2.1", - "through2": "0.6.5" - }, - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dev": true, - "requires": { - "boolbase": "1.0.0", - "css-what": "2.1.0", - "domutils": "1.5.1", - "nth-check": "1.0.1" - } - }, - "css-selector-tokenizer": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz", - "integrity": "sha1-E5uv00o1/QwUKEhwSeBpnm9qLCE=", - "dev": true, - "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.1" - } - }, - "css-tokenize": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz", - "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "1.1.14" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", - "dev": true - }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", - "dev": true - }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "decamelize": "1.2.0", - "defined": "1.0.0", - "has": "1.0.1", - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-calc": "5.3.1", - "postcss-colormin": "2.2.2", - "postcss-convert-values": "2.6.1", - "postcss-discard-comments": "2.0.4", - "postcss-discard-duplicates": "2.1.0", - "postcss-discard-empty": "2.1.0", - "postcss-discard-overridden": "0.1.1", - "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", - "postcss-merge-idents": "2.1.7", - "postcss-merge-longhand": "2.0.2", - "postcss-merge-rules": "2.1.2", - "postcss-minify-font-values": "1.0.5", - "postcss-minify-gradients": "1.0.5", - "postcss-minify-params": "1.2.2", - "postcss-minify-selectors": "2.1.1", - "postcss-normalize-charset": "1.1.1", - "postcss-normalize-url": "3.0.8", - "postcss-ordered-values": "2.2.3", - "postcss-reduce-idents": "2.4.0", - "postcss-reduce-initial": "1.0.1", - "postcss-reduce-transforms": "1.0.4", - "postcss-svgo": "2.1.6", - "postcss-unique-selectors": "2.0.2", - "postcss-value-parser": "3.3.0", - "postcss-zindex": "2.2.0" - } - }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "1.2.0", - "source-map": "0.5.6" - } - }, - "cssom": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", - "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", - "dev": true - }, - "cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "dev": true, - "optional": true, - "requires": { - "cssom": "0.3.2" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.24" - } - }, - "damerau-levenshtein": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", - "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true - }, - "dateformat": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.0.0.tgz", - "integrity": "sha1-J0Pjq7XD/CRi5SfcpEXgTp9N7hc=", - "dev": true - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "requires": { - "ms": "0.7.1" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decompress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-3.0.0.tgz", - "integrity": "sha1-rx3VDQbjv8QyRh033hGzjA2ZG+0=", - "dev": true, - "requires": { - "buffer-to-vinyl": "1.1.0", - "concat-stream": "1.6.0", - "decompress-tar": "3.1.0", - "decompress-tarbz2": "3.1.0", - "decompress-targz": "3.1.0", - "decompress-unzip": "3.4.0", - "stream-combiner2": "1.1.1", - "vinyl-assign": "1.2.1", - "vinyl-fs": "2.4.4" - } - }, - "decompress-tar": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz", - "integrity": "sha1-IXx4n5uURQ76rcXF5TeXj8MzxGY=", - "dev": true, - "requires": { - "is-tar": "1.0.0", - "object-assign": "2.1.1", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } - } - } - }, - "decompress-tarbz2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-3.1.0.tgz", - "integrity": "sha1-iyOTVoE1X58YnYclag+L3ZbZZm0=", - "dev": true, - "requires": { - "is-bzip2": "1.0.0", - "object-assign": "2.1.1", - "seek-bzip": "1.0.5", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } - } - } - }, - "decompress-targz": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-3.1.0.tgz", - "integrity": "sha1-ssE9+YFmJomRtxXWRH9kLpaW9aA=", - "dev": true, - "requires": { - "is-gzip": "1.0.0", - "object-assign": "2.1.1", - "strip-dirs": "1.1.1", - "tar-stream": "1.5.4", - "through2": "0.6.5", - "vinyl": "0.4.6" - }, - "dependencies": { - "clone": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", - "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", - "dev": true - }, - "object-assign": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz", - "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo=", - "dev": true - }, - "vinyl": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", - "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", - "dev": true, - "requires": { - "clone": "0.2.0", - "clone-stats": "0.0.1" - } - } - } - }, - "decompress-unzip": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-3.4.0.tgz", - "integrity": "sha1-YUdbQVIGa74/7hL51inRX+ZHjus=", - "dev": true, - "requires": { - "is-zip": "1.0.0", - "read-all-stream": "3.1.0", - "stat-mode": "0.2.2", - "strip-dirs": "1.1.1", - "through2": "2.0.3", - "vinyl": "1.2.0", - "yauzl": "2.8.0" - }, - "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - } - } - }, - "decompress-zip": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", - "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", - "dev": true, - "requires": { - "binary": "0.3.0", - "graceful-fs": "4.1.11", - "mkpath": "0.1.0", - "nopt": "3.0.6", - "q": "1.5.0", - "readable-stream": "1.1.14", - "touch": "0.0.3" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "dev": true, - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } - }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.5.4" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", - "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=" - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "detect-file": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", - "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", - "dev": true, - "requires": { - "fs-exists-sync": "0.1.0" - } - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diff": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz", - "integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "miller-rabin": "4.0.0", - "randombytes": "2.0.5" - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "doiuse": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz", - "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000701", - "css-rule-stream": "1.1.0", - "duplexer2": "0.0.2", - "jsonfilter": "1.1.2", - "ldjson-stream": "1.2.1", - "lodash": "4.15.0", - "multimatch": "2.1.0", - "postcss": "5.2.17", - "source-map": "0.4.4", - "through2": "0.6.5", - "yargs": "3.10.0" - }, - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "dom-converter": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", - "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", - "dev": true, - "requires": { - "utila": "0.3.3" - }, - "dependencies": { - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "dom-helpers": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz", - "integrity": "sha1-m7SyRfY3NnsfpnAnQnKqKP4Gw2c=" - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "requires": { - "custom-event": "1.0.1", - "ent": "2.2.0", - "extend": "3.0.1", - "void-elements": "2.0.1" - } - }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "dom-walk": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", - "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=", - "dev": true - }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", - "dev": true - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, - "dot-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-1.1.2.tgz", - "integrity": "sha1-HnOCaQDeKNbeVIC8HeMdCEKwa+w=", - "dev": true, - "requires": { - "sentence-case": "1.1.3" - } - }, - "dot-prop": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-2.4.0.tgz", - "integrity": "sha1-hI4o9/HVB0DGdHqzywdnBGK2+Jw=", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "download": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/download/-/download-4.4.3.tgz", - "integrity": "sha1-qlX9rTktldS2jowr4D4MKqIbqaw=", - "dev": true, - "requires": { - "caw": "1.2.0", - "concat-stream": "1.6.0", - "each-async": "1.1.1", - "filenamify": "1.2.1", - "got": "5.7.1", - "gulp-decompress": "1.2.0", - "gulp-rename": "1.2.2", - "is-url": "1.2.2", - "object-assign": "4.1.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "stream-combiner2": "1.1.1", - "vinyl": "1.2.0", - "vinyl-fs": "2.4.4", - "ware": "1.3.0" - } - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "duplexify": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.0.tgz", - "integrity": "sha1-GqdzAC4VeEV+nZ1KULDMquvL1gQ=", - "dev": true, - "requires": { - "end-of-stream": "1.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "stream-shift": "1.0.0" - }, - "dependencies": { - "end-of-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.0.0.tgz", - "integrity": "sha1-1FlucCc0qT5A6a+GQxnqvZn/Lw4=", - "dev": true, - "requires": { - "once": "1.3.3" - } - }, - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - } - } - }, - "each-async": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz", - "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=", - "dev": true, - "requires": { - "onetime": "1.1.0", - "set-immediate-shim": "1.0.1" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", - "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", - "dev": true, - "requires": { - "base64url": "2.0.0", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "base64url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=", - "dev": true - } - } - }, - "editions": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.3.tgz", - "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=", - "dev": true - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "ejs": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.6.tgz", - "integrity": "sha1-R5Y2v6P+Ox3r1SCH8KyyBLTxnIg=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.15", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz", - "integrity": "sha1-CDl5NIkcvPrrvRi4KpW1pIETg2k=", - "dev": true - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "brorand": "1.1.0", - "hash.js": "1.1.3", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.18" - } - }, - "end-of-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", - "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "engine.io": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.6.10.tgz", - "integrity": "sha1-+H2E4b0h0aLsf43u8MYgVKzfsno=", - "dev": true, - "requires": { - "accepts": "1.1.4", - "base64id": "0.1.0", - "debug": "2.2.0", - "engine.io-parser": "1.2.4", - "ws": "1.0.1" - }, - "dependencies": { - "accepts": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz", - "integrity": "sha1-1xyW99QdD+2iw4zRToonwEFY30o=", - "dev": true, - "requires": { - "mime-types": "2.0.14", - "negotiator": "0.4.9" - } - }, - "mime-db": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", - "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=", - "dev": true - }, - "mime-types": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", - "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", - "dev": true, - "requires": { - "mime-db": "1.12.0" - } - }, - "negotiator": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz", - "integrity": "sha1-kuRrbbU8fkIe1koryU8IvnYw3z8=", - "dev": true - } - } - }, - "engine.io-client": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.9.tgz", - "integrity": "sha1-HWrUgEilCDyVCWlDsp0279shJAE=", - "dev": true, - "requires": { - "component-emitter": "1.1.2", - "component-inherit": "0.0.3", - "debug": "2.2.0", - "engine.io-parser": "1.2.4", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.1", - "parseqs": "0.0.2", - "parseuri": "0.0.4", - "ws": "1.0.1", - "xmlhttprequest-ssl": "1.5.1", - "yeast": "0.1.2" - } - }, - "engine.io-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz", - "integrity": "sha1-4Il7C/FOeS1M0qWVBVORnFaUjEI=", - "dev": true, - "requires": { - "after": "0.8.1", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.2", - "blob": "0.0.4", - "has-binary": "0.1.6", - "utf8": "2.1.0" - }, - "dependencies": { - "has-binary": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz", - "integrity": "sha1-JTJvOc+k9hath4eJTjryz7x7bhA=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "enhanced-resolve": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", - "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.2.0", - "tapable": "0.1.10" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, - "enzyme": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-2.4.1.tgz", - "integrity": "sha1-kPqYYdmC0M65Kp/VfjhCai9007E=", - "dev": true, - "requires": { - "cheerio": "0.20.0", - "is-subset": "0.1.1", - "lodash": "4.15.0", - "object-is": "1.0.1", - "object.assign": "4.0.4", - "object.values": "1.0.4" - } - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, - "requires": { - "prr": "0.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } - }, - "error-stack-parser": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-1.3.6.tgz", - "integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=", - "dev": true, - "requires": { - "stackframe": "0.3.1" - } - }, - "es-abstract": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.7.0.tgz", - "integrity": "sha1-363ndOAb/Nl/lhgCmMRJyGI/uUw=", - "dev": true, - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.0", - "is-callable": "1.1.3", - "is-regex": "1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "dev": true, - "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" - } - }, - "es5-ext": { - "version": "0.10.24", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.24.tgz", - "integrity": "sha1-pVh3yZJLwMjZvTwsvhdJWsFwmxQ=", - "dev": true, - "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.24", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.24", - "es6-iterator": "2.0.1", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", - "dev": true - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.24", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.24" - } - }, - "es6-templates": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/es6-templates/-/es6-templates-0.2.3.tgz", - "integrity": "sha1-XLmsn7He1usSOTQrgdeSu7QHjuQ=", - "dev": true, - "requires": { - "recast": "0.11.23", - "through": "2.3.8" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.24", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "requires": { - "esprima": "2.7.3", - "estraverse": "1.9.3", - "esutils": "2.0.2", - "optionator": "0.8.2", - "source-map": "0.2.0" - }, - "dependencies": { - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - }, - "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - } - } - }, - "eslint": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.3.0.tgz", - "integrity": "sha1-lSRwDPlPkPBEfzQVLmjpnTkDT1c=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "debug": "2.2.0", - "doctrine": "1.5.0", - "escope": "3.6.0", - "espree": "3.4.3", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "1.3.1", - "glob": "7.1.2", - "globals": "9.18.0", - "ignore": "3.3.3", - "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.9.0", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.15.0", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", - "require-uncached": "1.0.3", - "shelljs": "0.6.1", - "strip-bom": "3.0.0", - "strip-json-comments": "1.0.4", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" - }, - "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "js-yaml": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", - "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "shelljs": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", - "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - } - } - }, - "eslint-config-airbnb": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-10.0.1.tgz", - "integrity": "sha1-pHAQhkbWxF4fY5oD8R1QShqkrtw=", - "dev": true, - "requires": { - "eslint-config-airbnb-base": "5.0.3" - } - }, - "eslint-config-airbnb-base": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-5.0.3.tgz", - "integrity": "sha1-lxSsNews1/qw1E0Uip+R2ylEB00=", - "dev": true - }, - "eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", - "dev": true, - "requires": { - "debug": "2.2.0", - "object-assign": "4.1.1", - "resolve": "1.3.3" - } - }, - "eslint-import-resolver-webpack": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.5.1.tgz", - "integrity": "sha1-wYbXtC+qnTNSRV6EGldI8ZCQldA=", - "dev": true, - "requires": { - "array-find": "1.0.0", - "debug": "2.2.0", - "enhanced-resolve": "0.9.1", - "find-root": "0.1.2", - "interpret": "1.0.3", - "is-absolute": "0.2.6", - "lodash.get": "3.7.0", - "node-libs-browser": "1.1.1", - "object-assign": "4.1.1", - "resolve": "1.3.3", - "semver": "5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-1.12.0.tgz", - "integrity": "sha1-ETB+sIF59DaS+oRbqFQugvozPiE=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.2.0", - "doctrine": "1.2.3", - "es6-map": "0.1.5", - "es6-set": "0.1.5", - "eslint-import-resolver-node": "0.2.3", - "lodash.cond": "4.5.2", - "lodash.endswith": "4.2.1", - "lodash.find": "4.6.0", - "lodash.findindex": "4.6.0", - "object-assign": "4.1.1", - "pkg-dir": "1.0.0", - "pkg-up": "1.0.0" - }, - "dependencies": { - "doctrine": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.2.3.tgz", - "integrity": "sha1-auxrvWLPid1JjK5wwO2fSdqHOmo=", - "dev": true, - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-2.1.0.tgz", - "integrity": "sha1-dZUkuNcWHYSad6kXNaOXTdHPwys=", - "dev": true, - "requires": { - "damerau-levenshtein": "1.0.4", - "jsx-ast-utils": "1.4.1", - "object-assign": "4.1.1" - } - }, - "eslint-plugin-react": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.0.0.tgz", - "integrity": "sha1-+9jD8iUhjSySFsILPyLOJoHdMdA=", - "dev": true, - "requires": { - "doctrine": "1.5.0", - "jsx-ast-utils": "1.4.1" - } - }, - "espree": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", - "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", - "dev": true, - "requires": { - "acorn": "5.1.1", - "acorn-jsx": "3.0.1" - }, - "dependencies": { - "acorn": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", - "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", - "dev": true - } - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "esrecurse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", - "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", - "dev": true, - "requires": { - "estraverse": "4.2.0", - "object-assign": "4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - } - } - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "etag": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", - "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=" - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.24" - } - }, - "eventemitter3": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", - "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", - "dev": true - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true - }, - "eventsource-polyfill": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz", - "integrity": "sha1-EODRh/ERsWfyj9q5GIQ859gY8Tw=", - "dev": true - }, - "evp_bytestokey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", - "dev": true, - "requires": { - "create-hash": "1.1.3" - } - }, - "exec-buffer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz", - "integrity": "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==", - "dev": true, - "requires": { - "execa": "0.7.0", - "p-finally": "1.0.0", - "pify": "3.0.0", - "rimraf": "2.5.4", - "tempfile": "2.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "exec-series": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/exec-series/-/exec-series-1.0.3.tgz", - "integrity": "sha1-bSV6m+rEgqhyx3g7yGFYOfx3FDo=", - "dev": true, - "requires": { - "async-each-series": "1.1.0", - "object-assign": "4.1.1" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.2.14" - } - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - } - } - }, - "execall": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz", - "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=", - "dev": true, - "requires": { - "clone-regexp": "1.0.0" - } - }, - "executable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/executable/-/executable-1.1.0.tgz", - "integrity": "sha1-h3mA6REvM5EGbaNyZd562ENKtNk=", - "dev": true, - "requires": { - "meow": "3.7.0" - } - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "dev": true, - "requires": { - "array-slice": "0.2.3", - "array-unique": "0.2.1", - "braces": "0.1.5" - }, - "dependencies": { - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "dev": true, - "requires": { - "expand-range": "0.1.1" - } - }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "dev": true, - "requires": { - "is-number": "0.1.1", - "repeat-string": "0.2.2" - } - }, - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", - "dev": true - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", - "dev": true - } - } - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.3" - } - }, - "expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "expect": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-1.20.2.tgz", - "integrity": "sha1-1Fj+TFYAQDa64yMkFqP2Nh8E+WU=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "has": "1.0.1", - "is-equal": "1.5.5", - "is-regex": "1.0.4", - "object-inspect": "1.2.2", - "object-keys": "1.0.11", - "tmatch": "2.0.1" - } - }, - "expect-jsx": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/expect-jsx/-/expect-jsx-2.6.0.tgz", - "integrity": "sha1-Q/SEgoB305QkZEISBbeMdbl5Hms=", - "dev": true, - "requires": { - "collapse-white-space": "1.0.3", - "react": "15.3.0", - "react-element-to-jsx-string": "3.2.0" - } - }, - "exports-loader": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.3.tgz", - "integrity": "sha1-V9x4kX9wm5byR/qR5ptVTIVQE8g=", - "dev": true, - "requires": { - "loader-utils": "0.2.17", - "source-map": "0.1.43" - }, - "dependencies": { - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "express": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.14.0.tgz", - "integrity": "sha1-we4/Qs3Ikfs9xlCoki1R7IR9DWY=", - "requires": { - "accepts": "1.3.3", - "array-flatten": "1.1.1", - "content-disposition": "0.5.1", - "content-type": "1.0.2", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.2.0", - "depd": "1.1.0", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.7.0", - "finalhandler": "0.5.0", - "fresh": "0.3.0", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.4", - "qs": "6.2.0", - "range-parser": "1.2.0", - "send": "0.14.1", - "serve-static": "1.11.2", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.1" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "0.1.1" - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "extract-text-webpack-plugin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-1.0.1.tgz", - "integrity": "sha1-yVvzy6rEnclvHcbgclSfu2VMzSw=", - "dev": true, - "requires": { - "async": "1.5.2", - "loader-utils": "0.2.17", - "webpack-sources": "0.1.5" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - } - } - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "fancy-log": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", - "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "time-stamp": "1.1.0" - } - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", - "dev": true - }, - "fbjs": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.12.tgz", - "integrity": "sha1-ELXZL3bUVXX9Y6IX1OoCvqL47QQ=", - "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.13" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - } - } - }, - "fd-slicer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", - "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", - "dev": true, - "requires": { - "pend": "1.2.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "file-entry-cache": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", - "integrity": "sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=", - "dev": true, - "requires": { - "flat-cache": "1.2.2", - "object-assign": "4.1.1" - } - }, - "file-loader": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.9.0.tgz", - "integrity": "sha1-HS2t3UJM5tGwfP4/eXMb7TYXq0I=", - "dev": true, - "requires": { - "loader-utils": "0.2.17" - } - }, - "file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU=", - "dev": true - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "filename-reserved-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-1.0.0.tgz", - "integrity": "sha1-5hz4BfDeHJhFZ9A4bcXfUO5a9+Q=", - "dev": true - }, - "filenamify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-1.2.1.tgz", - "integrity": "sha1-qfL/0RxQO+0wABUCknI3jx8TZaU=", - "dev": true, - "requires": { - "filename-reserved-regex": "1.0.0", - "strip-outer": "1.0.0", - "trim-repeated": "1.0.0" - } - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "filled-array": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", - "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=", - "dev": true - }, - "finalhandler": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz", - "integrity": "sha1-6VCKvs6bbbqHGmlCodeRG5GRGsc=", - "requires": { - "debug": "2.2.0", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "statuses": "1.3.1", - "unpipe": "1.0.0" - } - }, - "find-root": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", - "integrity": "sha1-mNImfP8ZFsyvJ0OzoO6oHXnX3NE=", - "dev": true - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - } - } - }, - "find-versions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz", - "integrity": "sha1-y96fEuOFdaCvG+G5osXV/Y8Ya2I=", - "dev": true, - "requires": { - "array-uniq": "1.0.3", - "get-stdin": "4.0.1", - "meow": "3.7.0", - "semver-regex": "1.0.0" - } - }, - "findup-sync": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", - "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", - "dev": true, - "requires": { - "detect-file": "0.1.0", - "is-glob": "2.0.1", - "micromatch": "2.3.11", - "resolve-dir": "0.1.1" - } - }, - "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "is-plain-object": "2.0.4", - "object.defaults": "1.1.0", - "object.pick": "1.2.0", - "parse-filepath": "1.0.1" - }, - "dependencies": { - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "1.0.1" - } - } - } - }, - "first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "dev": true - }, - "flagged-respawn": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", - "dev": true - }, - "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "dev": true, - "requires": { - "circular-json": "0.3.1", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", - "dev": true - }, - "fontfaceobserver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.0.1.tgz", - "integrity": "sha1-Fh87MGC1SxwDU1IeZxVZR+7YyRc=" - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "formatio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.1.1.tgz", - "integrity": "sha1-XtPM1jZVEJc4NGXZlhmRAOhhYek=", - "dev": true, - "requires": { - "samsam": "1.1.2" - } - }, - "forwarded": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", - "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" - }, - "fresh": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", - "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=" - }, - "fs-access": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", - "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", - "dev": true, - "requires": { - "null-check": "1.0.0" - } - }, - "fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", - "dev": true - }, - "fs-readdir-recursive": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", - "integrity": "sha1-MVtPuMHKW4xH3v7zGdBz2tNWgFk=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "aproba": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.7.tgz", - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", - "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=", - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", - "integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.0.tgz", - "integrity": "sha512-ocolIkZYZt8UveuiDS0yAkkIjid1o7lPG8cYm05yNYzBn8ykQtaiPMEGp8fY9tKdDgm8okpdKzkvu1y9hUYugA==", - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", - "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.0.tgz", - "integrity": "sha1-/yo+T9BEl1Vf7Zezmg/YL6+zozw=", - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "optional": true - } - } - }, - "string_decoder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", - "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.0.tgz", - "integrity": "sha1-I74tf2cagzk3bL2wuP4/3r8xeYQ=", - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=", - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - } - } - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.5.4" - } - }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", - "dev": true - }, - "gapitoken": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/gapitoken/-/gapitoken-0.1.5.tgz", - "integrity": "sha1-NXf8+1Qmvjp7jrrakmcSKdjMgc4=", - "dev": true, - "requires": { - "jws": "3.0.0", - "request": "2.81.0" - } - }, - "gather-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz", - "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs=", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "1.1.2", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", - "dev": true, - "requires": { - "globule": "1.2.0" - } - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", - "dev": true - }, - "get-proxy": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", - "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=", - "dev": true, - "requires": { - "rc": "1.2.1" - } - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "gifsicle": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/gifsicle/-/gifsicle-3.0.4.tgz", - "integrity": "sha1-9Fy17RAWW2ZdySng6TKLbIId+js=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", - "dev": true, - "requires": { - "extend": "3.0.1", - "glob": "5.0.15", - "glob-parent": "3.1.0", - "micromatch": "2.3.11", - "ordered-read-streams": "0.3.0", - "through2": "0.6.5", - "to-absolute-glob": "0.1.1", - "unique-stream": "2.2.1" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "2.1.1" - } - } - } - }, - "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", - "dev": true, - "requires": { - "min-document": "2.19.0", - "process": "0.5.2" - } - }, - "global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", - "dev": true, - "requires": { - "global-prefix": "0.1.5", - "is-windows": "0.2.0" - } - }, - "global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", - "dev": true, - "requires": { - "homedir-polyfill": "1.0.1", - "ini": "1.3.4", - "is-windows": "0.2.0", - "which": "1.2.14" - } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "globjoin": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", - "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", - "dev": true - }, - "globule": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", - "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", - "dev": true, - "requires": { - "glob": "7.1.2", - "lodash": "4.17.4", - "minimatch": "3.0.4" - }, - "dependencies": { - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - } - } - }, - "glogg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", - "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", - "dev": true, - "requires": { - "sparkles": "1.0.0" - } - }, - "google-auth-library": { - "version": "0.9.10", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-0.9.10.tgz", - "integrity": "sha1-SZPcB7tINLjKA1AhOmhzoyxgUbk=", - "dev": true, - "requires": { - "async": "1.4.2", - "gtoken": "1.2.2", - "jws": "3.0.0", - "lodash.noop": "3.0.1", - "request": "2.74.0", - "string-template": "0.2.1" - }, - "dependencies": { - "async": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz", - "integrity": "sha1-bJ7csRztTw3S8tQNsNSaEJwIiqs=", - "dev": true - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "dev": true, - "requires": { - "async": "2.5.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - }, - "dependencies": { - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true, - "requires": { - "lodash": "4.15.0" - } - } - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.0", - "pinkie-promise": "2.0.1" - } - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true - }, - "request": { - "version": "2.74.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "integrity": "sha1-dpPKdou7DqXIzgjAhKRe+gW4kqs=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "bl": "1.1.2", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "1.0.1", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "node-uuid": "1.4.8", - "oauth-sign": "0.8.2", - "qs": "6.2.0", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.4.3" - } - }, - "string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - } - } - }, - "google-p12-pem": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-0.1.2.tgz", - "integrity": "sha1-M8RqsCGqc0+gMys5YKmj/8svMXc=", - "dev": true, - "requires": { - "node-forge": "0.7.1" - } - }, - "googleapis": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-7.1.0.tgz", - "integrity": "sha1-HKDAxK6QpoxfOAdglBbEI6HxLEQ=", - "dev": true, - "requires": { - "async": "1.5.2", - "gapitoken": "0.1.5", - "google-auth-library": "0.9.10", - "request": "2.72.0", - "string-template": "1.0.0", - "url": "0.11.0" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "dev": true, - "requires": { - "async": "2.5.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - }, - "dependencies": { - "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", - "dev": true, - "requires": { - "lodash": "4.15.0" - } - } - } - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.11.0", - "is-my-json-valid": "2.16.0", - "pinkie-promise": "2.0.1" - } - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true - }, - "qs": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.1.2.tgz", - "integrity": "sha1-tZ2JJdDJme9tY6z0rFq7CtqiS1Q=", - "dev": true - }, - "request": { - "version": "2.72.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.72.0.tgz", - "integrity": "sha1-DOOheVEmILEEQfFMguIcEsDdtOE=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "bl": "1.1.2", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "1.0.1", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "node-uuid": "1.4.8", - "oauth-sign": "0.8.2", - "qs": "6.1.2", - "stringstream": "0.0.5", - "tough-cookie": "2.2.2", - "tunnel-agent": "0.4.3" - } - }, - "tough-cookie": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.2.tgz", - "integrity": "sha1-yDoYMPTl7wuT7yo0iOck+N4Basc=", - "dev": true - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", - "dev": true - } - } - }, - "got": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", - "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "dev": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer2": "0.1.4", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "node-status-codes": "1.0.0", - "object-assign": "4.1.1", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.3", - "timed-out": "3.1.3", - "unzip-response": "1.0.2", - "url-parse-lax": "1.0.0" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", - "dev": true - }, - "gtoken": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-1.2.2.tgz", - "integrity": "sha1-Fyd2oanZasCfwioA9b6DzubeiCA=", - "dev": true, - "requires": { - "google-p12-pem": "0.1.2", - "jws": "3.0.0", - "mime": "1.3.4", - "request": "2.81.0" - } - }, - "gulp-decompress": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gulp-decompress/-/gulp-decompress-1.2.0.tgz", - "integrity": "sha1-jutlpeAV+O2FMsr+KEVJYGJvDcc=", - "dev": true, - "requires": { - "archive-type": "3.2.0", - "decompress": "3.0.0", - "gulp-util": "3.0.8", - "readable-stream": "2.3.3" - } - }, - "gulp-rename": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", - "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", - "dev": true - }, - "gulp-sourcemaps": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", - "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", - "dev": true, - "requires": { - "convert-source-map": "1.5.0", - "graceful-fs": "4.1.11", - "strip-bom": "2.0.0", - "through2": "2.0.3", - "vinyl": "1.2.0" - }, - "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - } - } - }, - "gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", - "dev": true, - "requires": { - "array-differ": "1.0.0", - "array-uniq": "1.0.3", - "beeper": "1.1.1", - "chalk": "1.1.3", - "dateformat": "2.0.0", - "fancy-log": "1.3.0", - "gulplog": "1.0.0", - "has-gulplog": "0.1.0", - "lodash._reescape": "3.0.0", - "lodash._reevaluate": "3.0.0", - "lodash._reinterpolate": "3.0.0", - "lodash.template": "3.6.2", - "minimist": "1.2.0", - "multipipe": "0.1.2", - "object-assign": "3.0.0", - "replace-ext": "0.0.1", - "through2": "2.0.3", - "vinyl": "0.5.3" - }, - "dependencies": { - "object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", - "dev": true - }, - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - }, - "vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", - "dev": true, - "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - } - } - } - }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", - "dev": true, - "requires": { - "glogg": "1.0.0" - } - }, - "handlebars": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", - "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", - "dev": true, - "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.6.4" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "1.1.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-binary": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", - "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", - "dev": true, - "requires": { - "isarray": "0.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - } - } - }, - "has-color": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", - "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", - "dev": true - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", - "dev": true - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, - "has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", - "dev": true, - "requires": { - "sparkles": "1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "he": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.0.0.tgz", - "integrity": "sha1-baWyZdfyw7XkgHSRaODhWdBXKNo=", - "dev": true - }, - "header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=", - "dev": true, - "requires": { - "no-case": "2.3.1", - "upper-case": "1.1.3" - } - }, - "history": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/history/-/history-3.0.0.tgz", - "integrity": "sha1-As/05vadxi3YEWEQSmP1uF6tDIU=", - "requires": { - "invariant": "2.2.1", - "query-string": "4.3.4", - "warning": "2.1.0" - }, - "dependencies": { - "warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", - "requires": { - "loose-envify": "1.3.1" - } - } - } - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, - "hoist-non-react-statics": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", - "integrity": "sha1-qkSM8JhtVcxAdzsXF0t90GbLfPs=" - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", - "dev": true, - "requires": { - "parse-passwd": "1.0.0" - } - }, - "hosted-git-info": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", - "dev": true - }, - "html": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/html/-/html-0.0.10.tgz", - "integrity": "sha1-b9w++GaMCaOhmO46Wqnp8oeLld4=", - "dev": true, - "requires": { - "concat-stream": "1.6.0", - "glob": "3.2.11" - }, - "dependencies": { - "glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", - "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimatch": "0.3.0" - } - }, - "minimatch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", - "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", - "dev": true, - "requires": { - "lru-cache": "2.7.3", - "sigmund": "1.0.1" - } - } - } - }, - "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", - "dev": true - }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", - "dev": true - }, - "html-loader": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-0.4.3.tgz", - "integrity": "sha1-7hF4awSBiWfNbGecoFXjj52XIec=", - "dev": true, - "requires": { - "es6-templates": "0.2.3", - "fastparse": "1.1.1", - "html-minifier": "1.5.0", - "loader-utils": "0.2.17", - "object-assign": "4.1.1" - } - }, - "html-minifier": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-1.5.0.tgz", - "integrity": "sha1-vrBf2cw0CUWGXBD0Cu30aa9LFTQ=", - "dev": true, - "requires": { - "change-case": "2.3.1", - "clean-css": "3.4.28", - "commander": "2.9.0", - "concat-stream": "1.5.2", - "he": "1.0.0", - "ncname": "1.0.0", - "relateurl": "0.2.7", - "uglify-js": "2.6.4" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "concat-stream": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", - "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.0.6", - "typedarray": "0.0.6" - } - }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "html-tags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", - "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", - "dev": true - }, - "html-webpack-plugin": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.22.0.tgz", - "integrity": "sha1-frAv+QOdqE5bpxAE1Gk8BLktKQU=", - "dev": true, - "requires": { - "bluebird": "3.5.0", - "html-minifier": "2.1.7", - "loader-utils": "0.2.17", - "lodash": "4.15.0", - "pretty-error": "2.1.1", - "toposort": "1.0.3" - }, - "dependencies": { - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dev": true, - "requires": { - "no-case": "2.3.1", - "upper-case": "1.1.3" - } - }, - "change-case": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.1.tgz", - "integrity": "sha1-7l9a0EFa0a2egHLPSc1M+nZgpVQ=", - "dev": true, - "requires": { - "camel-case": "3.0.0", - "constant-case": "2.0.0", - "dot-case": "2.1.1", - "header-case": "1.0.1", - "is-lower-case": "1.1.3", - "is-upper-case": "1.1.2", - "lower-case": "1.1.4", - "lower-case-first": "1.0.2", - "no-case": "2.3.1", - "param-case": "2.1.1", - "pascal-case": "2.0.1", - "path-case": "2.1.1", - "sentence-case": "2.1.1", - "snake-case": "2.1.0", - "swap-case": "1.1.2", - "title-case": "2.1.1", - "upper-case": "1.1.3", - "upper-case-first": "1.1.2" - } - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "constant-case": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", - "integrity": "sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=", - "dev": true, - "requires": { - "snake-case": "2.1.0", - "upper-case": "1.1.3" - } - }, - "dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", - "integrity": "sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=", - "dev": true, - "requires": { - "no-case": "2.3.1" - } - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "dev": true - }, - "html-minifier": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-2.1.7.tgz", - "integrity": "sha1-kFHW/LvPIU7TB+GtdPQyu5rWVcw=", - "dev": true, - "requires": { - "change-case": "3.0.1", - "clean-css": "3.4.28", - "commander": "2.9.0", - "he": "1.1.1", - "ncname": "1.0.0", - "relateurl": "0.2.7", - "uglify-js": "2.6.4" - } - }, - "param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dev": true, - "requires": { - "no-case": "2.3.1" - } - }, - "pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=", - "dev": true, - "requires": { - "camel-case": "3.0.0", - "upper-case-first": "1.1.2" - } - }, - "path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=", - "dev": true, - "requires": { - "no-case": "2.3.1" - } - }, - "sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=", - "dev": true, - "requires": { - "no-case": "2.3.1", - "upper-case-first": "1.1.2" - } - }, - "snake-case": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=", - "dev": true, - "requires": { - "no-case": "2.3.1" - } - }, - "title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=", - "dev": true, - "requires": { - "no-case": "2.3.1", - "upper-case": "1.1.3" - } - } - } - }, - "htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.3.0", - "domutils": "1.5.1", - "entities": "1.0.0", - "readable-stream": "1.1.14" - }, - "dependencies": { - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "http-errors": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", - "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", - "requires": { - "inherits": "2.0.3", - "setprototypeof": "1.0.2", - "statuses": "1.3.1" - } - }, - "http-proxy": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", - "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", - "dev": true, - "requires": { - "eventemitter3": "1.2.0", - "requires-port": "1.0.0" - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.1" - } - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", - "dev": true - }, - "humanize-url": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/humanize-url/-/humanize-url-1.0.1.tgz", - "integrity": "sha1-9KuZ4NKIF0yk4eUEB8VfuuRk7/8=", - "dev": true, - "requires": { - "normalize-url": "1.9.1", - "strip-url-auth": "1.0.1" - } - }, - "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", - "dev": true - }, - "ignore": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", - "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", - "dev": true - }, - "image-webpack-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/image-webpack-loader/-/image-webpack-loader-2.0.0.tgz", - "integrity": "sha1-1r7Yqn2yyrzZDNE5Mt8ZGrGFteQ=", - "dev": true, - "requires": { - "file-loader": "0.9.0", - "imagemin": "5.3.1", - "imagemin-gifsicle": "5.2.0", - "imagemin-jpegtran": "5.0.2", - "imagemin-optipng": "5.2.1", - "imagemin-pngquant": "5.0.1", - "imagemin-svgo": "5.2.2", - "loader-utils": "0.2.17" - } - }, - "imagemin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-5.3.1.tgz", - "integrity": "sha1-8Zwu7h5xumxlWMUV+fyWaAGJptQ=", - "dev": true, - "requires": { - "file-type": "4.4.0", - "globby": "6.1.0", - "make-dir": "1.0.0", - "p-pipe": "1.1.0", - "pify": "2.3.0", - "replace-ext": "1.0.0" - }, - "dependencies": { - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - } - } - }, - "imagemin-gifsicle": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/imagemin-gifsicle/-/imagemin-gifsicle-5.2.0.tgz", - "integrity": "sha512-K01m5QuPK+0en8oVhiOOAicF7KjrHlCZxS++mfLI2mV/Ksfq/Y9nCXCWDz6jRv13wwlqe5T7hXT+ji2DnLc2yQ==", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "gifsicle": "3.0.4", - "is-gif": "1.0.0" - } - }, - "imagemin-jpegtran": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/imagemin-jpegtran/-/imagemin-jpegtran-5.0.2.tgz", - "integrity": "sha1-5ogiY7j3kW/duABkDPddLpcNKtY=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-jpg": "1.0.0", - "jpegtran-bin": "3.2.0" - } - }, - "imagemin-optipng": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", - "integrity": "sha1-0i2kEsCfX/AKQzmWC5ioix2+hpU=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-png": "1.1.0", - "optipng-bin": "3.1.4" - } - }, - "imagemin-pngquant": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/imagemin-pngquant/-/imagemin-pngquant-5.0.1.tgz", - "integrity": "sha1-2KMp2lU6+iJrEc5i3r4Lfje0OeY=", - "dev": true, - "requires": { - "exec-buffer": "3.2.0", - "is-png": "1.1.0", - "pngquant-bin": "3.1.1" - } - }, - "imagemin-svgo": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-5.2.2.tgz", - "integrity": "sha1-UBaZ9XiXMKV5IrhzbqFcU/e1WDg=", - "dev": true, - "requires": { - "is-svg": "2.1.0", - "svgo": "0.7.2" - } - }, - "immutable": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.1.tgz", - "integrity": "sha1-IAgH8Rqw9ycQ6khVQt4IgHX2jNI=" - }, - "imports-loader": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.5.tgz", - "integrity": "sha1-rnRlMDHVnjezwvslRKxhrq41MKY=", - "dev": true, - "requires": { - "loader-utils": "0.2.17", - "source-map": "0.1.43" - }, - "dependencies": { - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", - "dev": true - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", - "dev": true - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.1.0", - "figures": "1.7.0", - "lodash": "4.15.0", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, - "interpret": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", - "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", - "dev": true - }, - "intl": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/intl/-/intl-1.2.4.tgz", - "integrity": "sha1-tN6JO1AQTSBVlnfe7fQVoso0nR4=" - }, - "intl-format-cache": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/intl-format-cache/-/intl-format-cache-2.0.5.tgz", - "integrity": "sha1-tITO/Lk1PzdPJd44mjzuoa8Y18k=" - }, - "intl-messageformat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-1.3.0.tgz", - "integrity": "sha1-99kmre16OrGbLcYB79VOmaS9Tq4=", - "requires": { - "intl-messageformat-parser": "1.2.0" - } - }, - "intl-messageformat-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/intl-messageformat-parser/-/intl-messageformat-parser-1.2.0.tgz", - "integrity": "sha1-WQa3+VOrdHDg3IVJCXtki5kYkv8=" - }, - "intl-relativeformat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/intl-relativeformat/-/intl-relativeformat-1.3.0.tgz", - "integrity": "sha1-iT3HB2/M04DPCRojAMOA+les5Fs=", - "requires": { - "intl-messageformat": "1.3.0" - } - }, - "invariant": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.1.tgz", - "integrity": "sha1-sJcBBUdmjH4zcCjr6Bbr42yKjVQ=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, - "ip": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.3.tgz", - "integrity": "sha1-ErFilKOJJUhtYYoRA1BuTrT4spY=" - }, - "ip-regex": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz", - "integrity": "sha1-3FiQdvZZ9BnCIgOaMzFvHHOH7/0=", - "dev": true - }, - "ipaddr.js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", - "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=" - }, - "irregular-plurals": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.3.0.tgz", - "integrity": "sha512-njf5A+Mxb3kojuHd1DzISjjIl+XhyzovXEOyPPSzdQozq/Lf2tN27mOrAAsxEPZxpn6I4MGzs1oo9TxXxPFpaA==", - "dev": true - }, - "is-absolute": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", - "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", - "dev": true, - "requires": { - "is-relative": "0.2.1", - "is-windows": "0.2.0" - } - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-arrow-function": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-arrow-function/-/is-arrow-function-2.0.3.tgz", - "integrity": "sha1-Kb4sLY2UUIUri7r7Y1unuNjofsI=", - "dev": true, - "requires": { - "is-callable": "1.1.3" - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.8.0" - } - }, - "is-boolean-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.0.0.tgz", - "integrity": "sha1-mPiygDBoQhmpXzdc+9iM40Bd/5M=", - "dev": true - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", - "dev": true - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-bzip2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-bzip2/-/is-bzip2-1.0.0.tgz", - "integrity": "sha1-XuWOqlounIDiFAe+3yOuWsCRs/w=", - "dev": true - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", - "dev": true - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/is-equal/-/is-equal-1.5.5.tgz", - "integrity": "sha1-XoXxlX4FKIMkf+s4aWWju6Ffuz0=", - "dev": true, - "requires": { - "has": "1.0.1", - "is-arrow-function": "2.0.3", - "is-boolean-object": "1.0.0", - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-generator-function": "1.0.6", - "is-number-object": "1.0.3", - "is-regex": "1.0.4", - "is-string": "1.0.4", - "is-symbol": "1.0.1", - "object.entries": "1.0.4" - } - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "dev": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-generator-function": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.6.tgz", - "integrity": "sha1-nnFlPNFf/zQcecQVFGChMdMen8Q=", - "dev": true - }, - "is-gif": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-gif/-/is-gif-1.0.0.tgz", - "integrity": "sha1-ptKumIkwB7/6l6HYwB1jIFgyCX4=", - "dev": true - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-gzip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", - "integrity": "sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM=", - "dev": true - }, - "is-jpg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-jpg/-/is-jpg-1.0.0.tgz", - "integrity": "sha1-KVnBfnNDDbOCZNp1uQ3VTy2G2hw=", - "dev": true - }, - "is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "dev": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-natural-number": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-2.1.1.tgz", - "integrity": "sha1-fUxXKDd+84bD4ZSpkRv1fG3DNec=", - "dev": true - }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } - }, - "is-number-object": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.3.tgz", - "integrity": "sha1-8mWrian0RQNO9q/xWo8AsA9VF5k=", - "dev": true - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true, - "requires": { - "is-path-inside": "1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "is-png": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-png/-/is-png-1.1.0.tgz", - "integrity": "sha1-1XSxK/J1wDUEVVcLDltXqwYgd84=", - "dev": true - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "dev": true - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "1.0.1" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", - "dev": true - }, - "is-relative": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", - "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", - "dev": true, - "requires": { - "is-unc-path": "0.1.2" - } - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "dev": true, - "requires": { - "tryit": "1.0.3" - } - }, - "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.4.tgz", - "integrity": "sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ=", - "dev": true - }, - "is-subset": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz", - "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=", - "dev": true - }, - "is-supported-regexp-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz", - "integrity": "sha1-i1IMhfrnolM4LUsCZS4EVXbhO7g=", - "dev": true - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "1.1.1" - } - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", - "dev": true - }, - "is-tar": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-tar/-/is-tar-1.0.0.tgz", - "integrity": "sha1-L2suF5LB9bs2UZrKqdZcDSb+hT0=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unc-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", - "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", - "dev": true, - "requires": { - "unc-path-regex": "0.1.2" - } - }, - "is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", - "dev": true, - "requires": { - "upper-case": "1.1.3" - } - }, - "is-url": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.2.tgz", - "integrity": "sha1-SYkFpZO/R8wtnn9zg3K792lsfyY=", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "dev": true - }, - "is-valid-glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", - "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", - "dev": true - }, - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true - }, - "is-zip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-zip/-/is-zip-1.0.0.tgz", - "integrity": "sha1-R7Co/004p2QxzP2ZqOFaTIa6IyU=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", - "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "1.7.1", - "whatwg-fetch": "1.0.0" - } - }, - "isparta": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isparta/-/isparta-4.0.0.tgz", - "integrity": "sha1-HekZlvSAsi3LGsqFECVbrhV0RG4=", - "dev": true, - "requires": { - "babel-core": "6.13.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "istanbul": "0.4.5", - "mkdirp": "0.5.1", - "nomnomnomnom": "2.0.1", - "object-assign": "4.1.1", - "source-map": "0.5.6", - "which": "1.2.14" - } - }, - "isparta-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isparta-loader/-/isparta-loader-2.0.0.tgz", - "integrity": "sha1-RCX0lsk/dlu8603ZOFdtowdWbtE=", - "dev": true, - "requires": { - "isparta": "4.0.0" - } - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "dev": true, - "requires": { - "abbrev": "1.0.9", - "async": "1.5.2", - "escodegen": "1.8.1", - "esprima": "2.7.3", - "glob": "5.0.15", - "handlebars": "4.0.10", - "js-yaml": "3.0.1", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "once": "1.4.0", - "resolve": "1.1.7", - "supports-color": "3.2.3", - "which": "1.2.14", - "wordwrap": "1.0.0" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "jpegtran-bin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz", - "integrity": "sha1-9g7PSumZwL2tLp+83ytvCYHnops=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, - "js-base64": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", - "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", - "dev": true - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "js-yaml": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.0.1.tgz", - "integrity": "sha1-dkBf6lvOMPyPQF1Ixtyn8KMsav4=", - "dev": true, - "requires": { - "argparse": "0.1.16", - "esprima": "1.0.4" - }, - "dependencies": { - "esprima": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", - "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", - "dev": true - } - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "jsdom": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", - "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", - "dev": true, - "optional": true, - "requires": { - "abab": "1.0.3", - "acorn": "2.7.0", - "acorn-globals": "1.0.9", - "cssom": "0.3.2", - "cssstyle": "0.2.37", - "escodegen": "1.8.1", - "nwmatcher": "1.4.1", - "parse5": "1.5.1", - "request": "2.81.0", - "sax": "1.2.4", - "symbol-tree": "3.2.2", - "tough-cookie": "2.3.2", - "webidl-conversions": "2.0.1", - "whatwg-url-compat": "0.6.5", - "xml-name-validator": "2.0.1" - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "dev": true - }, - "json-loader": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", - "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz", - "integrity": "sha1-9u/JPAagTemuxTBT3yVZuxniA4s=", - "dev": true - }, - "json5": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", - "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0=", - "dev": true - }, - "jsonfilter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/jsonfilter/-/jsonfilter-1.1.2.tgz", - "integrity": "sha1-Ie987cdRk4E8dZMulqmL4gW6WhE=", - "dev": true, - "requires": { - "JSONStream": "0.8.4", - "minimist": "1.2.0", - "stream-combiner": "0.2.2", - "through2": "0.6.5" - } - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonparse": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", - "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, - "JSONStream": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", - "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", - "dev": true, - "requires": { - "jsonparse": "0.0.5", - "through": "2.3.8" - } - }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, - "jwa": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.0.2.tgz", - "integrity": "sha1-/Xlgnx53Limdzo3bdtAGWd2DUR8=", - "dev": true, - "requires": { - "base64url": "0.0.6", - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.9" - }, - "dependencies": { - "base64url": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/base64url/-/base64url-0.0.6.tgz", - "integrity": "sha1-lZezazMNscQkdzIuqH6oAnSZuCs=", - "dev": true - } - } - }, - "jws": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.0.0.tgz", - "integrity": "sha1-2l8meJfdTpz4E3l52zP8VKPAVBg=", - "dev": true, - "requires": { - "base64url": "1.0.6", - "jwa": "1.0.2" - } - }, - "karma": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-1.2.0.tgz", - "integrity": "sha1-bcqJ7CX0dT8SD4NMiTmAmAQP1j4=", - "dev": true, - "requires": { - "bluebird": "3.5.0", - "body-parser": "1.17.2", - "chokidar": "1.7.0", - "colors": "1.1.2", - "combine-lists": "1.0.1", - "connect": "3.6.2", - "core-js": "2.4.1", - "di": "0.0.1", - "dom-serialize": "2.2.1", - "expand-braces": "0.1.2", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "http-proxy": "1.16.2", - "isbinaryfile": "3.0.2", - "lodash": "3.10.1", - "log4js": "0.6.38", - "mime": "1.3.4", - "minimatch": "3.0.4", - "optimist": "0.6.1", - "qjobs": "1.1.5", - "rimraf": "2.5.4", - "socket.io": "1.4.7", - "source-map": "0.5.6", - "tmp": "0.0.28", - "useragent": "2.2.1" - }, - "dependencies": { - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-1.0.1.tgz", - "integrity": "sha1-vlrnxCZPmgouIuPZhL6zJa2SyMs=", - "dev": true, - "requires": { - "fs-access": "1.0.1", - "which": "1.2.14" - } - }, - "karma-coverage": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-1.1.1.tgz", - "integrity": "sha1-Wv+LOc9plNwi3kyENix2ABtjfPY=", - "dev": true, - "requires": { - "dateformat": "1.0.12", - "istanbul": "0.4.5", - "lodash": "3.10.1", - "minimatch": "3.0.4", - "source-map": "0.5.6" - }, - "dependencies": { - "dateformat": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", - "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - } - } - }, - "karma-firefox-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.0.0.tgz", - "integrity": "sha1-4IrzzkLjmGDClS6nt+qmTWNQi9w=", - "dev": true - }, - "karma-ie-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-1.0.0.tgz", - "integrity": "sha1-SXmGhCxJAZA0bNifVJTKmDDG1Zw=", - "dev": true, - "requires": { - "lodash": "4.15.0" - } - }, - "karma-mocha": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.1.1.tgz", - "integrity": "sha1-As5ZtO6AwzZfCHZYYfEUrdhZGEs=", - "dev": true - }, - "karma-mocha-reporter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.1.0.tgz", - "integrity": "sha1-ikvuSJTDqI7GaeZA/uBSJT4D4Bs=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "karma-safari-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-safari-launcher/-/karma-safari-launcher-1.0.0.tgz", - "integrity": "sha1-lpgqLMR9BmquccVTursoMZEVos4=", - "dev": true - }, - "karma-sourcemap-loader": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz", - "integrity": "sha1-kTIsd/jxPUb+0GKwQuEAnUxFBdg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "karma-webpack": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-1.8.0.tgz", - "integrity": "sha1-NAx5mes3RbR77KtH0NME2sLFUlc=", - "dev": true, - "requires": { - "async": "0.9.2", - "loader-utils": "0.2.17", - "lodash": "3.10.1", - "source-map": "0.1.43", - "webpack-dev-middleware": "1.6.1" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - }, - "known-css-properties": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.0.3.tgz", - "integrity": "sha1-nh9ZHaJcEvZbcKBFQix9hiuOzPM=", - "dev": true - }, - "latest-version": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", - "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", - "dev": true, - "requires": { - "package-json": "2.4.0" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true - }, - "lazy-req": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", - "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=", - "dev": true - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "1.0.0" - } - }, - "lcov-parse": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.6.tgz", - "integrity": "sha1-gZ5dqL8HkfnT857qXtGGgYfxEXU=", - "dev": true - }, - "ldjson-stream": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz", - "integrity": "sha1-kb7O2lrE7SsX5kn7d356v6AYnCs=", - "dev": true, - "requires": { - "split2": "0.2.1", - "through2": "0.6.5" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "liftoff": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", - "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", - "dev": true, - "requires": { - "extend": "3.0.1", - "findup-sync": "0.4.3", - "fined": "1.1.0", - "flagged-respawn": "0.3.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.mapvalues": "4.6.0", - "rechoir": "0.6.2", - "resolve": "1.3.3" - } - }, - "lint-staged": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-2.0.3.tgz", - "integrity": "sha1-hU5VpQVG/EQnutYZba2Fy8L91IY=", - "dev": true, - "requires": { - "app-root-path": "1.4.0", - "batchflow": "0.4.0", - "cross-spawn": "4.0.2", - "minimatch": "3.0.4", - "npm-which": "2.0.0", - "object-assign": "4.1.1", - "ora": "0.2.3", - "staged-git-files": "0.0.4" - }, - "dependencies": { - "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "which": "1.2.14" - } - }, - "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "dev": true, - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } - } - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", - "dev": true - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - }, - "dependencies": { - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - } - } - }, - "lock": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/lock/-/lock-0.1.4.tgz", - "integrity": "sha1-/sfervF+fDoKVeHaBCgD4l2RdF0=", - "dev": true - }, - "lodash": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", - "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=" - }, - "lodash-es": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.4.tgz", - "integrity": "sha1-3MHXVS4VCgZABzupyzHXDwMpUOc=" - }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" - } - }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", - "dev": true - }, - "lodash._baseget": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/lodash._baseget/-/lodash._baseget-3.7.2.tgz", - "integrity": "sha1-G2rh1frPPCVTI1ChPBGXy4u2dPQ=", - "dev": true - }, - "lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", - "dev": true - }, - "lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", - "dev": true - }, - "lodash._bindcallback": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", - "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=", - "dev": true - }, - "lodash._createassigner": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz", - "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=", - "dev": true, - "requires": { - "lodash._bindcallback": "3.0.1", - "lodash._isiterateecall": "3.0.9", - "lodash.restparam": "3.6.1" - } - }, - "lodash._createcompounder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz", - "integrity": "sha1-XdLLVTctbnDg4jkvsjBNZjEJEHU=", - "dev": true, - "requires": { - "lodash.deburr": "3.2.0", - "lodash.words": "3.2.0" - } - }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", - "dev": true - }, - "lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", - "dev": true - }, - "lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", - "dev": true - }, - "lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "dev": true - }, - "lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", - "dev": true - }, - "lodash._topath": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/lodash._topath/-/lodash._topath-3.8.1.tgz", - "integrity": "sha1-PsXiYGAU9MuX91X+aRTt2L/ADqw=", - "dev": true, - "requires": { - "lodash.isarray": "3.0.4" - } - }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, - "lodash.camelcase": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz", - "integrity": "sha1-kyyLh/ikN3iXxnGXUzKC+Xrqwpg=", - "dev": true, - "requires": { - "lodash._createcompounder": "3.0.0" - } - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", - "dev": true, - "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" - } - }, - "lodash.deburr": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-3.2.0.tgz", - "integrity": "sha1-baj1QzSjZqfPTEx2742Aqhs2XtU=", - "dev": true, - "requires": { - "lodash._root": "3.0.1" - } - }, - "lodash.endswith": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", - "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", - "dev": true - }, - "lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", - "dev": true, - "requires": { - "lodash._root": "3.0.1" - } - }, - "lodash.find": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", - "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=", - "dev": true - }, - "lodash.findindex": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.findindex/-/lodash.findindex-4.6.0.tgz", - "integrity": "sha1-oyRd7mH7m24GJLU1ElYku2nBEQY=", - "dev": true - }, - "lodash.get": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-3.7.0.tgz", - "integrity": "sha1-POaK4skWg7KBzFOUEoMDy/deaR8=", - "dev": true, - "requires": { - "lodash._baseget": "3.7.2", - "lodash._topath": "3.8.1" - } - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", - "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" - } - }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.mergewith": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", - "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", - "dev": true - }, - "lodash.noop": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-3.0.1.tgz", - "integrity": "sha1-OBiPTWUKOkdCWEObluxFsyYXEzw=", - "dev": true - }, - "lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha1-feoh2MGNdwOifHBMFdO4SmfjOv8=", - "dev": true - }, - "lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", - "dev": true - }, - "lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", - "dev": true, - "requires": { - "lodash._basecopy": "3.0.1", - "lodash._basetostring": "3.0.1", - "lodash._basevalues": "3.0.0", - "lodash._isiterateecall": "3.0.9", - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0", - "lodash.keys": "3.1.2", - "lodash.restparam": "3.6.1", - "lodash.templatesettings": "3.1.1" - } - }, - "lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.escape": "3.2.0" - } - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "lodash.words": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.words/-/lodash.words-3.2.0.tgz", - "integrity": "sha1-TiqGSbwIdFsXxpWxo86P7llmI7M=", - "dev": true, - "requires": { - "lodash._root": "3.0.1" - } - }, - "log-driver": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.4.tgz", - "integrity": "sha1-LWLX+u9F2KcTQZYaBLB2HsqZz6M=", - "dev": true - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "log4js": { - "version": "0.6.38", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", - "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "semver": "4.3.6" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "logalot": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz", - "integrity": "sha1-X46MkNME7fElMJUaVVSruMXj9VI=", - "dev": true, - "requires": { - "figures": "1.7.0", - "squeak": "1.3.0" - } - }, - "lolex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.3.2.tgz", - "integrity": "sha1-fD2mL/yzDw9agKJWbKJORdigHzE=", - "dev": true - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "3.0.2" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } - }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, - "lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", - "dev": true - }, - "lpad-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz", - "integrity": "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=", - "dev": true, - "requires": { - "get-stdin": "4.0.1", - "indent-string": "2.1.0", - "longest": "1.0.1", - "meow": "3.7.0" - } - }, - "lru-cache": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", - "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", - "dev": true - }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", - "dev": true - }, - "make-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.0.0.tgz", - "integrity": "sha1-l6ARdR6R3YfPre9Ygy67BJNt6Xg=", - "dev": true, - "requires": { - "pify": "2.3.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - }, - "math-expression-evaluator": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", - "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "memory-fs": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", - "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA=", - "dev": true - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } - }, - "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "brorand": "1.1.0" - } - }, - "mime": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", - "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=" - }, - "mime-db": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" - }, - "mime-types": { - "version": "2.1.15", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "requires": { - "mime-db": "1.27.0" - } - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dev": true, - "requires": { - "dom-walk": "0.1.1" - } - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } - } - }, - "mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=", - "dev": true - }, - "mocha": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.0.2.tgz", - "integrity": "sha1-Y6l/Phj00+ZZ1HphdnfQiYdFV/A=", - "dev": true, - "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.2.0", - "diff": "1.4.0", - "escape-string-regexp": "1.0.5", - "glob": "7.0.5", - "growl": "1.9.2", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "glob": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.5.tgz", - "integrity": "sha1-tCAqaQmbu00pKnwblbZoK2fr3JU=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - }, - "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "mout": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/mout/-/mout-0.11.1.tgz", - "integrity": "sha1-ujYR318OWx/7/QEWa48C0fX6K5k=", - "dev": true - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" - }, - "multimatch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz", - "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=", - "dev": true, - "requires": { - "array-differ": "1.0.0", - "array-union": "1.0.2", - "arrify": "1.0.1", - "minimatch": "3.0.4" - } - }, - "multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", - "dev": true, - "requires": { - "duplexer2": "0.0.2" - }, - "dependencies": { - "duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", - "dev": true, - "requires": { - "readable-stream": "1.1.14" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, - "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "ncname": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", - "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", - "dev": true, - "requires": { - "xml-char-classes": "1.0.0" - } - }, - "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" - }, - "ngrok": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ngrok/-/ngrok-2.2.2.tgz", - "integrity": "sha1-dGHp3dMxgTeoAbmFpY5zdcOEgjQ=", - "dev": true, - "requires": { - "async": "0.9.2", - "decompress-zip": "0.3.0", - "lock": "0.1.4", - "node-uuid": "1.4.8", - "request": "2.81.0", - "tar.gz": "1.0.5", - "xtend": "4.0.1" - }, - "dependencies": { - "async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "dev": true - }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", - "dev": true - } - } - }, - "no-case": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", - "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "node-fetch": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", - "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "node-forge": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", - "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=", - "dev": true - }, - "node-gyp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", - "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", - "dev": true, - "requires": { - "fstream": "1.0.11", - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.1.2", - "osenv": "0.1.4", - "request": "2.81.0", - "rimraf": "2.5.4", - "semver": "5.3.0", - "tar": "2.2.1", - "which": "1.2.14" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "node-libs-browser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-1.1.1.tgz", - "integrity": "sha1-KjgkOr7dff/NB6l8mspWaJdab+o=", - "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.1", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.3", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "1.4.2", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "node-sass": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", - "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=", - "dev": true, - "requires": { - "async-foreach": "0.1.3", - "chalk": "1.1.3", - "cross-spawn": "3.0.1", - "gaze": "1.1.2", - "get-stdin": "4.0.1", - "glob": "7.1.2", - "in-publish": "2.0.0", - "lodash.assign": "4.2.0", - "lodash.clonedeep": "4.5.0", - "lodash.mergewith": "4.6.0", - "meow": "3.7.0", - "mkdirp": "0.5.1", - "nan": "2.6.2", - "node-gyp": "3.6.2", - "npmlog": "4.1.2", - "request": "2.81.0", - "sass-graph": "2.2.4", - "stdout-stream": "1.4.0" - } - }, - "node-status-codes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", - "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=", - "dev": true - }, - "nomnomnomnom": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nomnomnomnom/-/nomnomnomnom-2.0.1.tgz", - "integrity": "sha1-siOfAxyNBNpn4yg24eMZnhL3qOI=", - "dev": true, - "requires": { - "chalk": "0.4.0", - "underscore": "1.6.0" - }, - "dependencies": { - "ansi-styles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz", - "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=", - "dev": true - }, - "chalk": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz", - "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", - "dev": true, - "requires": { - "ansi-styles": "1.0.0", - "has-color": "0.1.7", - "strip-ansi": "0.1.1" - } - }, - "strip-ansi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz", - "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=", - "dev": true - }, - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } - } - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1.0.9" - } - }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", - "dev": true, - "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "4.3.6", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.0.2" - } - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=", - "dev": true - }, - "normalize-url": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", - "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "prepend-http": "1.0.4", - "query-string": "4.3.4", - "sort-keys": "1.1.2" - } - }, - "npm-path": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/npm-path/-/npm-path-1.1.0.tgz", - "integrity": "sha1-BHSuAEGcMn1UcBt88s0F3Ii+EUA=", - "dev": true, - "requires": { - "which": "1.2.14" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, - "npm-which": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/npm-which/-/npm-which-2.0.0.tgz", - "integrity": "sha1-DEaYIWC3gwk2YdHQG9RJbS/qu6w=", - "dev": true, - "requires": { - "commander": "2.11.0", - "npm-path": "1.1.0", - "which": "1.2.14" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "dev": true, - "requires": { - "boolbase": "1.0.0" - } - }, - "null-check": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", - "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", - "dev": true - }, - "null-loader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/null-loader/-/null-loader-0.1.1.tgz", - "integrity": "sha1-F76av80/8OFRL2/Er8sfUDk3j64=", - "dev": true - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true - }, - "nwmatcher": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", - "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", - "dev": true, - "optional": true - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", - "dev": true - }, - "object-inspect": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.2.2.tgz", - "integrity": "sha1-yCEV5PzIiK6hTWTCLk8X9qcNXlo=", - "dev": true - }, - "object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", - "dev": true - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", - "dev": true - }, - "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.0", - "object-keys": "1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "1.0.1", - "array-slice": "1.0.0", - "for-own": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "array-slice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", - "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "object.entries": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", - "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.7.0", - "function-bind": "1.1.0", - "has": "1.0.1" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "object.pick": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", - "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", - "dev": true, - "requires": { - "isobject": "2.1.0" - } - }, - "object.values": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", - "integrity": "sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.7.0", - "function-bind": "1.1.0", - "has": "1.0.1" - } - }, - "offline-plugin": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/offline-plugin/-/offline-plugin-3.4.2.tgz", - "integrity": "sha1-3bue7D6P0FLsUeA8Vq/cM7CjMaI=", - "dev": true, - "requires": { - "deep-extend": "0.4.2", - "ejs": "2.5.6", - "es6-promise": "3.3.1", - "loader-utils": "0.2.17", - "minimatch": "3.0.4" - } - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", - "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "onecolor": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-2.4.2.tgz", - "integrity": "sha1-pT7D/xccNEYBbdUhDRobVEv32HQ=", - "dev": true - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" - }, - "dependencies": { - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - } - }, - "options": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", - "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", - "dev": true - }, - "optipng-bin": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/optipng-bin/-/optipng-bin-3.1.4.tgz", - "integrity": "sha1-ldNPLEiHBPb9cGBr/qDGWfHZXYQ=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, - "ora": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", - "integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-spinners": "0.1.2", - "object-assign": "4.1.1" - } - }, - "ordered-read-streams": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", - "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", - "dev": true, - "requires": { - "is-stream": "1.1.0", - "readable-stream": "2.3.3" - } - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", - "dev": true - }, - "os-filter-obj": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-1.0.3.tgz", - "integrity": "sha1-WRUzDZDs7VV9LZOKMcbdIU2cY60=", - "dev": true - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "1.0.0" - } - }, - "os-shim": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha1-a2LDeRz3kJ6jXtRuF2WLtBfLORc=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", - "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "output-file-sync": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", - "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - } - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-pipe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.1.0.tgz", - "integrity": "sha1-Lp3HzFfOZ9LOLbNIygPyhzGFQHU=", - "dev": true - }, - "package-json": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", - "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", - "dev": true, - "requires": { - "got": "5.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", - "dev": true - }, - "param-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-1.1.2.tgz", - "integrity": "sha1-3LCRpDwlm5Io8cNB57akTqC/l0M=", - "dev": true, - "requires": { - "sentence-case": "1.1.3" - } - }, - "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true, - "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.6", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "pbkdf2": "3.0.12" - } - }, - "parse-filepath": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", - "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", - "dev": true, - "requires": { - "is-absolute": "0.2.6", - "map-cache": "0.2.2", - "path-root": "0.1.1" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, - "parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "dev": true, - "optional": true - }, - "parsejson": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz", - "integrity": "sha1-mxDGwNglq1ieaFFTgm3go7oni8w=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseqs": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz", - "integrity": "sha1-nf5wss3aw4i95PNbHyQPpYrb5sc=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseuri": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz", - "integrity": "sha1-gGWCo5iH4eoY3V4v4OAZAiaOk1A=", - "dev": true, - "requires": { - "better-assert": "1.0.2" - } - }, - "parseurl": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", - "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" - }, - "pascal-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-1.1.2.tgz", - "integrity": "sha1-Pl1kogBDgwp8STRMLXS0G+DJyZs=", - "dev": true, - "requires": { - "camel-case": "1.2.2", - "upper-case-first": "1.1.2" - } - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", - "dev": true - }, - "path-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-1.1.2.tgz", - "integrity": "sha1-UM5roNO+090LXCqcRVNpdDRAlRQ=", - "dev": true, - "requires": { - "sentence-case": "1.1.3" - } - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", - "integrity": "sha1-1aiZjrce83p0w06w2eum6HjuoIE=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "0.1.2" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pbkdf2": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", - "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", - "dev": true, - "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.1.1", - "sha.js": "2.4.8" - } - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } - }, - "pipetteur": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pipetteur/-/pipetteur-2.0.3.tgz", - "integrity": "sha1-GVV2CVno0aEcsqUOyD7sRwYz5J8=", - "dev": true, - "requires": { - "onecolor": "3.0.4", - "synesthesia": "1.0.1" - }, - "dependencies": { - "onecolor": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.4.tgz", - "integrity": "sha1-daRvgNpseqpbTarhekcZi9llJJQ=", - "dev": true - } - } - }, - "pixrem": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pixrem/-/pixrem-3.0.2.tgz", - "integrity": "sha1-MNG6+0w73Ojpu0vVahOYVhkyDDQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "postcss": "5.2.17", - "reduce-css-calc": "1.3.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "1.1.2" - } - }, - "pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "dev": true, - "requires": { - "find-up": "1.1.2" - } - }, - "pleeease-filters": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pleeease-filters/-/pleeease-filters-3.0.1.tgz", - "integrity": "sha1-Tf4OjxBGYTUXxktyi8gGCKfr8i8=", - "dev": true, - "requires": { - "onecolor": "2.4.2", - "postcss": "5.2.17" - } - }, - "plop": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/plop/-/plop-1.5.0.tgz", - "integrity": "sha1-KhNhuacnsgnW0rBN/p7wXR3eJMM=", - "dev": true, - "requires": { - "change-case": "2.3.1", - "colors": "1.1.2", - "handlebars": "2.0.0", - "inquirer": "0.10.1", - "interpret": "1.0.3", - "liftoff": "2.3.0", - "minimist": "1.2.0", - "mkdirp": "0.5.1", - "q": "1.0.1", - "v8flags": "2.1.1" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true, - "optional": true - }, - "cli-width": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz", - "integrity": "sha1-pNKT72frt7iNSk1CwMzwDE0eNm0=", - "dev": true - }, - "handlebars": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-2.0.0.tgz", - "integrity": "sha1-bp1/hRSjRn+l6fgswVjs/B1ax28=", - "dev": true, - "requires": { - "optimist": "0.3.7", - "uglify-js": "2.3.6" - } - }, - "inquirer": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.10.1.tgz", - "integrity": "sha1-6iXkzmnKFF4FyZ5G3P7AXkASWUo=", - "dev": true, - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "1.1.1", - "figures": "1.7.0", - "lodash": "3.10.1", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "optimist": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", - "dev": true, - "requires": { - "wordwrap": "0.0.3" - } - }, - "q": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.0.1.tgz", - "integrity": "sha1-EYcq7t7okmgRCxCnGESP+xARKhQ=", - "dev": true - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "optional": true, - "requires": { - "amdefine": "1.0.1" - } - }, - "uglify-js": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", - "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=", - "dev": true, - "optional": true, - "requires": { - "async": "0.2.10", - "optimist": "0.3.7", - "source-map": "0.1.43" - } - }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } - } - }, - "plur": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", - "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", - "dev": true, - "requires": { - "irregular-plurals": "1.3.0" - } - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, - "pngquant-bin": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pngquant-bin/-/pngquant-bin-3.1.1.tgz", - "integrity": "sha1-0STZinWpSH9AwWQLTb/Lsr1aH9E=", - "dev": true, - "requires": { - "bin-build": "2.2.0", - "bin-wrapper": "3.0.2", - "logalot": "2.1.0" - } - }, - "postcss": { - "version": "5.2.17", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", - "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.1.9", - "source-map": "0.5.6", - "supports-color": "3.2.3" - }, - "dependencies": { - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - } - } - }, - "postcss-apply": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/postcss-apply/-/postcss-apply-0.3.0.tgz", - "integrity": "sha1-ovN8W9+ogeTBX08kXsDNlt0ucNU=", - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "postcss": "5.2.17" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "postcss-calc": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", - "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" - } - }, - "postcss-color-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-function/-/postcss-color-function-2.0.1.tgz", - "integrity": "sha1-mtIm9VDop8f4uKd4YFRbbdf1UkE=", - "dev": true, - "requires": { - "css-color-function": "1.3.0", - "postcss": "5.2.17", - "postcss-message-helpers": "2.0.0", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-color-gray": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-3.0.1.tgz", - "integrity": "sha1-dEMu3mbdg7HRNjVlxos3bhj/Z3A=", - "dev": true, - "requires": { - "color": "0.11.4", - "postcss": "5.2.17", - "postcss-message-helpers": "2.0.0", - "reduce-function-call": "1.0.2" - } - }, - "postcss-color-hex-alpha": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-2.0.0.tgz", - "integrity": "sha1-RP1uyt5mAoZIyIHLZQTNy/3GzQk=", - "dev": true, - "requires": { - "color": "0.10.1", - "postcss": "5.2.17", - "postcss-message-helpers": "2.0.0" - }, - "dependencies": { - "color": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/color/-/color-0.10.1.tgz", - "integrity": "sha1-wEGI34KiCd3rzOzazT7DIPGTc58=", - "dev": true, - "requires": { - "color-convert": "0.5.3", - "color-string": "0.3.0" - } - }, - "color-convert": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", - "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=", - "dev": true - } - } - }, - "postcss-color-hwb": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-hwb/-/postcss-color-hwb-2.0.1.tgz", - "integrity": "sha1-1jr6+bcMtZX5AKKcn+V78qMvq+w=", - "dev": true, - "requires": { - "color": "0.11.4", - "postcss": "5.2.17", - "postcss-message-helpers": "2.0.0", - "reduce-function-call": "1.0.2" - } - }, - "postcss-color-rebeccapurple": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-2.0.1.tgz", - "integrity": "sha1-dMZETny7fYVhO19yht96SRYIRRw=", - "dev": true, - "requires": { - "color": "0.11.4", - "postcss": "5.2.17" - } - }, - "postcss-color-rgba-fallback": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-color-rgba-fallback/-/postcss-color-rgba-fallback-2.2.0.tgz", - "integrity": "sha1-bSlJG+WZCpMXPUfnx29YELCUAro=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0", - "rgb-hex": "1.0.0" - } - }, - "postcss-colormin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", - "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "1.1.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-convert-values": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", - "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-cssnext": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/postcss-cssnext/-/postcss-cssnext-2.7.0.tgz", - "integrity": "sha1-Qu4mhc9j7E8ocJQt4wc2kAK3v0U=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "caniuse-api": "1.6.1", - "chalk": "1.1.3", - "pixrem": "3.0.2", - "pleeease-filters": "3.0.1", - "postcss": "5.2.17", - "postcss-apply": "0.3.0", - "postcss-calc": "5.3.1", - "postcss-color-function": "2.0.1", - "postcss-color-gray": "3.0.1", - "postcss-color-hex-alpha": "2.0.0", - "postcss-color-hwb": "2.0.1", - "postcss-color-rebeccapurple": "2.0.1", - "postcss-color-rgba-fallback": "2.2.0", - "postcss-custom-media": "5.0.1", - "postcss-custom-properties": "5.0.2", - "postcss-custom-selectors": "3.0.0", - "postcss-font-variant": "2.0.1", - "postcss-initial": "1.5.3", - "postcss-media-minmax": "2.1.2", - "postcss-nesting": "2.3.1", - "postcss-pseudo-class-any-link": "1.0.0", - "postcss-pseudoelements": "3.0.0", - "postcss-replace-overflow-wrap": "1.0.0", - "postcss-selector-matches": "2.0.5", - "postcss-selector-not": "2.0.0" - } - }, - "postcss-custom-media": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-5.0.1.tgz", - "integrity": "sha1-E40loYS/LrVN4S1VpsAcMKnYvYE=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-custom-properties": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-5.0.2.tgz", - "integrity": "sha1-lxnXjy2pz59TgQrrwj1GVhMKzrE=", - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "postcss": "5.2.17" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "postcss-custom-selectors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-3.0.0.tgz", - "integrity": "sha1-j4Ekn17Qeo0JF89qOf5bBWt/lqw=", - "dev": true, - "requires": { - "balanced-match": "0.2.1", - "postcss": "5.2.17", - "postcss-selector-matches": "2.0.5" - }, - "dependencies": { - "balanced-match": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz", - "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc=", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", - "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-discard-duplicates": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", - "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-discard-empty": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", - "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-discard-overridden": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", - "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-discard-unused": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", - "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "uniqs": "2.0.0" - } - }, - "postcss-filter-plugins": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", - "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "uniqid": "4.1.1" - } - }, - "postcss-focus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-focus/-/postcss-focus-1.0.0.tgz", - "integrity": "sha1-WHanrhjgR5xI3NJcjfIhb8ZSDf8=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-font-variant": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-2.0.1.tgz", - "integrity": "sha1-fKKRA/WfoCyjrOLKIrL3VoU9Tvg=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-initial": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-1.5.3.tgz", - "integrity": "sha1-IMPpHJaCLdsb7UlQjbltVrrDd9A=", - "dev": true, - "requires": { - "lodash.template": "4.4.0", - "postcss": "5.2.17" - }, - "dependencies": { - "lodash.template": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.templatesettings": "4.1.0" - } - }, - "lodash.templatesettings": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "dev": true, - "requires": { - "lodash._reinterpolate": "3.0.0" - } - } - } - }, - "postcss-less": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz", - "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-loader": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-0.9.1.tgz", - "integrity": "sha1-h6PnD1jkbWinW63Gcl2epHc/0dc=", - "dev": true, - "requires": { - "loader-utils": "0.2.17", - "postcss": "5.2.17" - } - }, - "postcss-media-minmax": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-2.1.2.tgz", - "integrity": "sha1-RExc+JJqteT9iiUJ6Sl+dRZJzfg=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=", - "dev": true - }, - "postcss-merge-idents": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", - "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-merge-longhand": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", - "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-merge-rules": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", - "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-api": "1.6.1", - "postcss": "5.2.17", - "postcss-selector-parser": "2.2.3", - "vendors": "1.0.1" - } - }, - "postcss-message-helpers": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", - "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", - "dev": true - }, - "postcss-minify-font-values": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", - "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-minify-gradients": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", - "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-minify-params": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", - "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0", - "uniqs": "2.0.0" - } - }, - "postcss-minify-selectors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", - "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-selector-parser": "2.2.3" - } - }, - "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", - "dev": true, - "requires": { - "postcss": "6.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true, - "requires": { - "ansi-styles": "3.1.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", - "dev": true, - "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.0" - } - }, - "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "postcss-modules-local-by-default": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", - "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", - "dev": true, - "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true, - "requires": { - "ansi-styles": "3.1.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" - } - }, - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true, - "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.1", - "regexpu-core": "1.0.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", - "dev": true, - "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.0" - } - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "postcss-modules-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", - "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", - "dev": true, - "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true, - "requires": { - "ansi-styles": "3.1.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" - } - }, - "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", - "dev": true, - "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.1", - "regexpu-core": "1.0.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", - "dev": true, - "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.0" - } - }, - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "postcss-modules-values": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", - "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", - "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.6" - }, - "dependencies": { - "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", - "dev": true, - "requires": { - "ansi-styles": "3.1.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", - "dev": true, - "requires": { - "chalk": "2.0.1", - "source-map": "0.5.6", - "supports-color": "4.2.0" - } - }, - "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } - } - }, - "postcss-nesting": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-2.3.1.tgz", - "integrity": "sha1-lKa2pO9wf77CCof+5clXdZtOAc8=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-normalize-charset": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", - "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-normalize-url": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", - "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "1.9.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-ordered-values": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", - "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-pseudo-class-any-link": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-1.0.0.tgz", - "integrity": "sha1-kDI5GWQB0zX+c6x1YYb6YuaTryY=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-selector-parser": "1.3.3" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-1.3.3.tgz", - "integrity": "sha1-0u4Z33pk+O8hwacchvfUg1yIwoE=", - "dev": true, - "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - } - } - }, - "postcss-pseudoelements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-pseudoelements/-/postcss-pseudoelements-3.0.0.tgz", - "integrity": "sha1-bGghd8eQC6BTtt8X+MWQKEx7i7w=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-reduce-idents": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", - "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-reduce-initial": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", - "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-reduce-transforms": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", - "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } - }, - "postcss-replace-overflow-wrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-1.0.0.tgz", - "integrity": "sha1-8KA7Meq5Y2ppNr/SEOKu8bQ0pkM=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-reporter": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz", - "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "lodash": "4.15.0", - "log-symbols": "1.0.2", - "postcss": "5.2.17" - } - }, - "postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=", - "dev": true - }, - "postcss-scss": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.1.9.tgz", - "integrity": "sha1-dgbK/2S7SzS3YFq3SVdM942Iawg=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "postcss-selector-matches": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-2.0.5.tgz", - "integrity": "sha1-+g9Dvle2jneqTNEYBwI0kqExAn8=", - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "postcss": "5.2.17" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "postcss-selector-not": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-2.0.0.tgz", - "integrity": "sha1-xzrSGj91I0vuf+4mnhVP1qhpeY0=", - "dev": true, - "requires": { - "balanced-match": "0.2.1", - "postcss": "5.2.17" - }, - "dependencies": { - "balanced-match": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz", - "integrity": "sha1-e8ZYtL7WHu5CStdPdfXD4sTfPMc=", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", - "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } - }, - "postcss-svgo": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", - "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "2.1.0", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0", - "svgo": "0.7.2" - } - }, - "postcss-unique-selectors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", - "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.17", - "uniqs": "2.0.0" - } - }, - "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", - "dev": true - }, - "postcss-zindex": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", - "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "uniqs": "2.0.0" - } - }, - "pre-commit": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.1.3.tgz", - "integrity": "sha1-bV7ZB0BHIHKVjHEaFfZ2qiwjE3c=", - "dev": true, - "requires": { - "cross-spawn": "2.0.1", - "which": "1.2.14" - }, - "dependencies": { - "cross-spawn": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-2.0.1.tgz", - "integrity": "sha1-q2/Yk6CZdZ2bhSIOOmQ5felGsPY=", - "dev": true, - "requires": { - "cross-spawn-async": "2.2.5", - "spawn-sync": "1.0.13" - } - } - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "pretty-bytes": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", - "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", - "dev": true, - "requires": { - "renderkid": "2.0.1", - "utila": "0.4.0" - } - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", - "dev": true - }, - "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", - "dev": true - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "requires": { - "asap": "2.0.6" - } - }, - "prop-types": { - "version": "15.5.10", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", - "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", - "dev": true, - "requires": { - "fbjs": "0.8.12", - "loose-envify": "1.3.1" - } - }, - "proxy-addr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", - "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", - "requires": { - "forwarded": "0.1.0", - "ipaddr.js": "1.3.0" - } - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psi": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/psi/-/psi-2.0.4.tgz", - "integrity": "sha1-eTEkefuE3zhrwvymon1ygvycd/c=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "download": "4.4.3", - "googleapis": "7.1.0", - "humanize-url": "1.0.1", - "lodash": "4.15.0", - "meow": "3.7.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "prepend-http": "1.0.4", - "pretty-bytes": "3.0.1", - "repeating": "2.0.1", - "sort-on": "1.3.0", - "update-notifier": "0.6.3" - } - }, - "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "q": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", - "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", - "dev": true - }, - "qjobs": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", - "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", - "dev": true - }, - "qs": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", - "integrity": "sha1-O3hIwDwt7OaalSKw+ujEEm10Xzs=" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "requires": { - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } - } - } - }, - "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", - "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", - "dev": true, - "requires": { - "bytes": "2.4.0", - "iconv-lite": "0.4.15", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", - "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", - "dev": true - }, - "iconv-lite": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", - "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", - "dev": true - } - } - }, - "rc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", - "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", - "dev": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - } - } - }, - "react": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/react/-/react-15.3.0.tgz", - "integrity": "sha1-sGom0m5WE4iKyxlqqT6cCCqcIfo=", - "requires": { - "fbjs": "0.8.12", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - }, - "react-addons-test-utils": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/react-addons-test-utils/-/react-addons-test-utils-15.3.0.tgz", - "integrity": "sha1-Btev/btymkjr4OJ5ZtDNDoK1cpg=", - "dev": true - }, - "react-deep-force-update": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-1.0.1.tgz", - "integrity": "sha1-+RG1vh0qb+OHUH3W6adnqikktMc=", - "dev": true - }, - "react-dom": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.3.0.tgz", - "integrity": "sha1-JKaj32eWlla4qCJf0Nf8uTnSi90=" - }, - "react-element-to-jsx-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-3.2.0.tgz", - "integrity": "sha1-J614aehPHTLz2Kc4XkS8aT3It7s=", - "dev": true, - "requires": { - "collapse-white-space": "1.0.3", - "is-plain-object": "2.0.4", - "lodash": "4.15.0", - "react-addons-test-utils": "15.3.0", - "sortobject": "1.1.1", - "stringify-object": "2.4.0", - "traverse": "0.6.6" - } - }, - "react-helmet": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-3.1.0.tgz", - "integrity": "sha1-Y0hhlGgvMwBIJvNofcSaE4tVcFA=", - "requires": { - "deep-equal": "1.0.1", - "object-assign": "4.1.1", - "react-side-effect": "1.0.2", - "shallowequal": "0.2.2", - "warning": "2.1.0" - }, - "dependencies": { - "warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", - "requires": { - "loose-envify": "1.3.1" - } - } - } - }, - "react-intl": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-2.1.3.tgz", - "integrity": "sha1-zsLYrF7a7bRJc1RwxtbrI2TVDRY=", - "requires": { - "intl-format-cache": "2.0.5", - "intl-messageformat": "1.3.0", - "intl-relativeformat": "1.3.0", - "invariant": "2.2.1" - } - }, - "react-proxy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", - "integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=", - "dev": true, - "requires": { - "lodash": "4.15.0", - "react-deep-force-update": "1.0.1" - } - }, - "react-redux": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.4.5.tgz", - "integrity": "sha1-9QmimBviJS0QxinvfFWTR6SuxFc=", - "requires": { - "hoist-non-react-statics": "1.2.0", - "invariant": "2.2.1", - "lodash": "4.15.0", - "loose-envify": "1.3.1" - } - }, - "react-router": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-2.6.1.tgz", - "integrity": "sha1-4EVNZr1hsSPZTbco+O0z2ZCL4iY=", - "requires": { - "history": "2.1.2", - "hoist-non-react-statics": "1.2.0", - "invariant": "2.2.1", - "loose-envify": "1.3.1", - "warning": "3.0.0" - }, - "dependencies": { - "history": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/history/-/history-2.1.2.tgz", - "integrity": "sha1-SqLeiXoOSGfkU5hDvm7Nsphr/ew=", - "requires": { - "deep-equal": "1.0.1", - "invariant": "2.2.1", - "query-string": "3.0.3", - "warning": "2.1.0" - }, - "dependencies": { - "warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", - "requires": { - "loose-envify": "1.3.1" - } - } - } - }, - "query-string": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.3.tgz", - "integrity": "sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=", - "requires": { - "strict-uri-encode": "1.1.0" - } - } - } - }, - "react-router-redux": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/react-router-redux/-/react-router-redux-4.0.5.tgz", - "integrity": "sha1-hQMv3UxrLx4p/Z14k8CO8x+OEM8=" - }, - "react-router-scroll": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/react-router-scroll/-/react-router-scroll-0.2.1.tgz", - "integrity": "sha1-jkgFzfSNt6Y33Xqj1gkNkrzjWAc=", - "requires": { - "history": "2.1.2", - "scroll-behavior": "0.7.0" - }, - "dependencies": { - "history": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/history/-/history-2.1.2.tgz", - "integrity": "sha1-SqLeiXoOSGfkU5hDvm7Nsphr/ew=", - "requires": { - "deep-equal": "1.0.1", - "invariant": "2.2.1", - "query-string": "3.0.3", - "warning": "2.1.0" - } - }, - "query-string": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.3.tgz", - "integrity": "sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=", - "requires": { - "strict-uri-encode": "1.1.0" - } - }, - "warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=", - "requires": { - "loose-envify": "1.3.1" - } - } - } - }, - "react-side-effect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-1.0.2.tgz", - "integrity": "sha1-mONU3s2/AoHkIj2HhS0z40XtpWE=", - "requires": { - "fbjs": "0.1.0-alpha.10" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=" - }, - "fbjs": { - "version": "0.1.0-alpha.10", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.1.0-alpha.10.tgz", - "integrity": "sha1-RuRXwJy++1H8dSo+Aw57Z/zDhMg=", - "requires": { - "core-js": "1.2.7", - "promise": "7.3.1", - "whatwg-fetch": "0.9.0" - } - }, - "whatwg-fetch": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", - "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=" - } - } - }, - "react-transform-catch-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/react-transform-catch-errors/-/react-transform-catch-errors-1.0.2.tgz", - "integrity": "sha1-G01KdulycYlvwW/jCGx5PsiKnus=", - "dev": true - }, - "react-transform-hmr": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz", - "integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=", - "dev": true, - "requires": { - "global": "4.3.2", - "react-proxy": "1.1.8" - } - }, - "read-all-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", - "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1", - "readable-stream": "2.3.3" - } - }, - "read-file-stdin": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/read-file-stdin/-/read-file-stdin-0.2.1.tgz", - "integrity": "sha1-JezP86FTtoCa+ssj7hU4fbng7mE=", - "dev": true, - "requires": { - "gather-stream": "1.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - } - }, - "recast": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", - "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", - "dev": true, - "requires": { - "ast-types": "0.9.6", - "esprima": "3.1.3", - "private": "0.1.7", - "source-map": "0.5.6" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.3.3" - } - }, - "redbox-react": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/redbox-react/-/redbox-react-1.4.3.tgz", - "integrity": "sha512-P/N+y57/FVUQWbgpfTf/2wjgxEhxQuA6FRLv0ipZKLFv5v8mp6qs5inFyBwJQYAgaMrntZRCvKdz1vGwkCNs7A==", - "dev": true, - "requires": { - "error-stack-parser": "1.3.6", - "object-assign": "4.1.1", - "prop-types": "15.5.10", - "sourcemapped-stacktrace": "1.1.6" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - } - }, - "reduce-css-calc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", - "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.17", - "reduce-function-call": "1.0.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "reduce-function-call": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", - "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", - "dev": true, - "requires": { - "balanced-match": "0.4.2" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - } - } - }, - "redux": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.5.2.tgz", - "integrity": "sha1-RTN0XpcLZH7CYGaoOqMOnib6+EM=", - "requires": { - "lodash": "4.15.0", - "lodash-es": "4.17.4", - "loose-envify": "1.3.1", - "symbol-observable": "0.2.4" - } - }, - "redux-immutable": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/redux-immutable/-/redux-immutable-3.0.7.tgz", - "integrity": "sha1-EVlFdloLidJg36fOqYiQhB6xd1M=", - "requires": { - "immutable": "3.8.1" - } - }, - "redux-saga": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-0.11.0.tgz", - "integrity": "sha1-0Jb2yOd+lvCBq6YzVcYeBNvLWU8=" - }, - "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", - "dev": true - }, - "regenerator-runtime": { - "version": "0.9.6", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", - "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" - }, - "regenerator-transform": { - "version": "0.9.11", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", - "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "private": "0.1.7" - } - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "dev": true, - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "registry-auth-token": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", - "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", - "dev": true, - "requires": { - "rc": "1.2.1", - "safe-buffer": "5.1.1" - } - }, - "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "1.2.1" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "dev": true, - "requires": { - "jsesc": "0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", - "dev": true - }, - "remove-trailing-separator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", - "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", - "dev": true - }, - "renderkid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", - "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", - "dev": true, - "requires": { - "css-select": "1.2.0", - "dom-converter": "0.1.4", - "htmlparser2": "3.3.0", - "strip-ansi": "3.0.1", - "utila": "0.3.3" - }, - "dependencies": { - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.1.0", - "domutils": "1.1.6", - "readable-stream": "1.0.34" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "utila": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", - "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", - "dev": true - } - } - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - }, - "dependencies": { - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "dev": true - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", - "dev": true - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - } - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "reselect": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-2.5.3.tgz", - "integrity": "sha1-I2WRE2rV/2PuUM3YT+/39q/YDuo=" - }, - "resolve": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", - "dev": true, - "requires": { - "expand-tilde": "1.2.2", - "global-modules": "0.2.3" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "rgb": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz", - "integrity": "sha1-vieykej+/+rBvZlylyG/pA/AN7U=", - "dev": true - }, - "rgb-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgb-hex/-/rgb-hex-1.0.0.tgz", - "integrity": "sha1-v6+M2c2RZLWibXHrTxWgllMks8E=", - "dev": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", - "dev": true, - "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" - } - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "1.4.0" - } - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - }, - "samsam": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.1.2.tgz", - "integrity": "sha1-vsEf3IOp/aBjQBIQ5AF2wwJNFWc=", - "dev": true - }, - "sanitize.css": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-4.1.0.tgz", - "integrity": "sha1-C6/DxRNpny/ox5gMbTft8h0/VEg=" - }, - "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", - "dev": true, - "requires": { - "glob": "7.1.2", - "lodash": "4.15.0", - "scss-tokenizer": "0.2.3", - "yargs": "7.1.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "5.0.0" - } - } - } - }, - "sass-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-4.1.1.tgz", - "integrity": "sha1-ee+UaM8L9kbClSnh8sumvW5Rx7w=", - "dev": true, - "requires": { - "async": "2.5.0", - "loader-utils": "0.2.17", - "object-assign": "4.1.1" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "scroll-behavior": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/scroll-behavior/-/scroll-behavior-0.7.0.tgz", - "integrity": "sha1-jmWsTqnBX5MxnkgjUIUrZO8eKW0=", - "requires": { - "dom-helpers": "2.4.0" - } - }, - "scss-tokenizer": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", - "dev": true, - "requires": { - "js-base64": "2.1.9", - "source-map": "0.4.4" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } - } - } - }, - "seek-bzip": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", - "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", - "dev": true, - "requires": { - "commander": "2.8.1" - }, - "dependencies": { - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - } - } - }, - "semver": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", - "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", - "dev": true - }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "semver-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz", - "integrity": "sha1-kqSWkGX5xwxpR1PVUkj8aPj2Usk=", - "dev": true - }, - "semver-truncate": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz", - "integrity": "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=", - "dev": true, - "requires": { - "semver": "5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "send": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.14.1.tgz", - "integrity": "sha1-qVSYQyU5L1FTKndgdg5FlZjIn3o=", - "requires": { - "debug": "2.2.0", - "depd": "1.1.0", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.7.0", - "fresh": "0.3.0", - "http-errors": "1.5.1", - "mime": "1.3.4", - "ms": "0.7.1", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - } - }, - "sentence-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.3.tgz", - "integrity": "sha1-gDSq/CFFdy06vhUJqkLJ4QQtwTk=", - "dev": true, - "requires": { - "lower-case": "1.1.4" - } - }, - "serve-static": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.11.2.tgz", - "integrity": "sha1-LPmIm9RDWjIMw2iVyapXvWYuasc=", - "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.1", - "send": "0.14.2" - }, - "dependencies": { - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" - }, - "send": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.14.2.tgz", - "integrity": "sha1-ObBDiz9RC+Xcb2Z6EfcWiTaM3u8=", - "requires": { - "debug": "2.2.0", - "depd": "1.1.0", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.7.0", - "fresh": "0.3.0", - "http-errors": "1.5.1", - "mime": "1.3.4", - "ms": "0.7.2", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "setprototypeof": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", - "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=" - }, - "sha.js": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", - "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "shallowequal": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-0.2.2.tgz", - "integrity": "sha1-HjL9W8q2rWiKSBLLDMBO/HXHAU4=", - "requires": { - "lodash.keys": "3.1.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shelljs": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.3.tgz", - "integrity": "sha1-ptXhHZZE9ZbMcCqkR/+bJDwj3oA=", - "dev": true, - "requires": { - "glob": "7.1.2", - "interpret": "1.0.3", - "rechoir": "0.6.2" - } - }, - "sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", - "dev": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true - }, - "sinon": { - "version": "2.0.0-pre", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-2.0.0-pre.tgz", - "integrity": "sha1-GCk7APsvFVyZ6OW0bjH36t4ygV0=", - "dev": true, - "requires": { - "formatio": "1.1.1", - "lolex": "1.3.2", - "samsam": "1.1.2", - "text-encoding": "0.5.2", - "util": "0.10.3" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", - "dev": true - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", - "dev": true - }, - "snake-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-1.1.2.tgz", - "integrity": "sha1-DC8l4wUVjZoY09l3BmGH/vilpmo=", - "dev": true, - "requires": { - "sentence-case": "1.1.3" - } - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "socket.io": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.4.7.tgz", - "integrity": "sha1-krf3y4jFeX1NruJ5/oB12+bT+hw=", - "dev": true, - "requires": { - "debug": "2.2.0", - "engine.io": "1.6.10", - "has-binary": "0.1.7", - "socket.io-adapter": "0.4.0", - "socket.io-client": "1.4.6", - "socket.io-parser": "2.2.6" - } - }, - "socket.io-adapter": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz", - "integrity": "sha1-+5+CqxqmUpC/csNleVW5MKmRok8=", - "dev": true, - "requires": { - "debug": "2.2.0", - "socket.io-parser": "2.2.2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "socket.io-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.2.tgz", - "integrity": "sha1-PXr2tkSX6Va32f53X5mXFgJ/lBc=", - "dev": true, - "requires": { - "benchmark": "1.0.0", - "component-emitter": "1.1.2", - "debug": "0.7.4", - "isarray": "0.0.1", - "json3": "3.2.6" - }, - "dependencies": { - "debug": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=", - "dev": true - } - } - } - } - }, - "socket.io-client": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.4.6.tgz", - "integrity": "sha1-SbC6U379FbgpfIQBbmQuHHx1LD0=", - "dev": true, - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "1.2.0", - "debug": "2.2.0", - "engine.io-client": "1.6.9", - "has-binary": "0.1.7", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseuri": "0.0.4", - "socket.io-parser": "2.2.6", - "to-array": "0.1.4" - }, - "dependencies": { - "component-emitter": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz", - "integrity": "sha1-zNETqGOI0GSC0D3j/H35hSa6jv4=", - "dev": true - } - } - }, - "socket.io-parser": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.6.tgz", - "integrity": "sha1-ON/WHfUNz4qx2eIJEyK/kCuii5k=", - "dev": true, - "requires": { - "benchmark": "1.0.0", - "component-emitter": "1.1.2", - "debug": "2.2.0", - "isarray": "0.0.1", - "json3": "3.3.2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", - "dev": true - } - } - }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } - }, - "sort-on": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sort-on/-/sort-on-1.3.0.tgz", - "integrity": "sha1-Df1bNksj338qzYaYXa64ieGnyEA=", - "dev": true, - "requires": { - "arrify": "1.0.1", - "dot-prop": "2.4.0" - } - }, - "sortobject": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sortobject/-/sortobject-1.1.1.tgz", - "integrity": "sha1-T2ldTUTtCkwGSCw0wlgqLc3CqzQ=", - "dev": true, - "requires": { - "editions": "1.3.3" - } - }, - "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", - "dev": true - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - }, - "source-map-support": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", - "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true, - "requires": { - "source-map": "0.5.6" - } - }, - "sourcemapped-stacktrace": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.6.tgz", - "integrity": "sha1-ES2HSclCw807Yw36yVFFd7hqOlE=", - "dev": true, - "requires": { - "source-map": "0.5.6" - } - }, - "sparkles": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", - "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", - "dev": true - }, - "spawn-sync": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.13.tgz", - "integrity": "sha1-kECRua1IoPOvsOhHUhVMAegv2Ng=", - "dev": true, - "requires": { - "concat-stream": "1.6.0", - "os-shim": "0.1.3" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", - "dev": true - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", - "dev": true - }, - "specificity": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.2.1.tgz", - "integrity": "sha1-OnBHwqF581Ni45kHRc6lOfFRYbg=", - "dev": true - }, - "split2": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", - "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=", - "dev": true, - "requires": { - "through2": "0.6.5" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "squeak": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz", - "integrity": "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "console-stream": "0.1.1", - "lpad-align": "1.1.2" - } - }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "dev": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "stackframe": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", - "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=", - "dev": true - }, - "staged-git-files": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/staged-git-files/-/staged-git-files-0.0.4.tgz", - "integrity": "sha1-15fhtVHKemOd7AI33G60u5vhfTU=", - "dev": true - }, - "stat-mode": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.2.2.tgz", - "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=", - "dev": true - }, - "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" - }, - "stdout-stream": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", - "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", - "dev": true, - "requires": { - "readable-stream": "2.3.3" - } - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, - "stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", - "dev": true, - "requires": { - "duplexer": "0.1.1", - "through": "2.3.8" - } - }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", - "dev": true, - "requires": { - "duplexer2": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.3", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "dev": true - }, - "strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "string-template": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz", - "integrity": "sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "stringify-object": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-2.4.0.tgz", - "integrity": "sha1-xi0RAj6yH+LZsIe+A5om3zsioJ0=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0", - "is-regexp": "1.0.0" - } - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - }, - "strip-bom-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", - "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", - "dev": true, - "requires": { - "first-chunk-stream": "1.0.0", - "strip-bom": "2.0.0" - } - }, - "strip-dirs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-1.1.1.tgz", - "integrity": "sha1-lgu9EoeETzl1pFWKoQOoJV4kVqA=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "get-stdin": "4.0.1", - "is-absolute": "0.1.7", - "is-natural-number": "2.1.1", - "minimist": "1.2.0", - "sum-up": "1.0.3" - }, - "dependencies": { - "is-absolute": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha1-hHSREZ/MtftDYhfMc39/qtUPYD8=", - "dev": true, - "requires": { - "is-relative": "0.1.3" - } - }, - "is-relative": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha1-kF/uiuhvRbPsYUvDwVyGnfCHboI=", - "dev": true - } - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "4.0.1" - } - }, - "strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", - "dev": true - }, - "strip-outer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.0.tgz", - "integrity": "sha1-qsC6YNLpDF1PJ1/Yhp/ZotMQ/7g=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "strip-url-auth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-url-auth/-/strip-url-auth-1.0.1.tgz", - "integrity": "sha1-IrD6OkE4WzO+PzMVUbu4N/oM164=", - "dev": true - }, - "style-loader": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.1.tgz", - "integrity": "sha1-RoKA77wEcwI806bNVuM7Wh1/w6k=", - "dev": true, - "requires": { - "loader-utils": "0.2.17" - } - }, - "style-search": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", - "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", - "dev": true - }, - "stylehacks": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-2.3.2.tgz", - "integrity": "sha1-ZMg+BDimjJ7fRJ6MVSp9mrYAmws=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "chalk": "1.1.3", - "log-symbols": "1.0.2", - "minimist": "1.2.0", - "plur": "2.1.2", - "postcss": "5.2.17", - "postcss-reporter": "1.4.1", - "postcss-selector-parser": "2.2.3", - "read-file-stdin": "0.2.1", - "text-table": "0.2.0", - "write-file-stdout": "0.0.2" - } - }, - "stylelint": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.1.0.tgz", - "integrity": "sha1-GGCG4WKBBaNTw4Ov3cXEeOD8dGk=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "balanced-match": "0.4.2", - "chalk": "1.1.3", - "colorguard": "1.2.0", - "cosmiconfig": "1.1.0", - "doiuse": "2.6.0", - "execall": "1.0.0", - "get-stdin": "5.0.1", - "globby": "6.1.0", - "globjoin": "0.1.4", - "html-tags": "1.2.0", - "ignore": "3.3.3", - "known-css-properties": "0.0.3", - "lodash": "4.15.0", - "log-symbols": "1.0.2", - "meow": "3.7.0", - "multimatch": "2.1.0", - "normalize-selector": "0.2.0", - "postcss": "5.2.17", - "postcss-less": "0.14.0", - "postcss-media-query-parser": "0.2.3", - "postcss-reporter": "1.4.1", - "postcss-resolve-nested-selector": "0.1.1", - "postcss-scss": "0.1.9", - "postcss-selector-parser": "2.2.3", - "postcss-value-parser": "3.3.0", - "resolve-from": "2.0.0", - "specificity": "0.2.1", - "string-width": "1.0.2", - "style-search": "0.1.0", - "stylehacks": "2.3.2", - "sugarss": "0.1.6", - "svg-tags": "1.0.0", - "table": "3.8.3" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - }, - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "resolve-from": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", - "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=", - "dev": true - } - } - }, - "stylelint-config-standard": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-12.0.0.tgz", - "integrity": "sha1-m5mrNCvFMB/ohEfiCPz1l2jEzFM=", - "dev": true - }, - "sugarss": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-0.1.6.tgz", - "integrity": "sha1-/jrA4eBygq7x3oSoC3I4b/Tn6jc=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } - }, - "sum-up": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sum-up/-/sum-up-1.0.3.tgz", - "integrity": "sha1-HGYfZnBX9jvLeHWqFDi8FiUlFW4=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "svg-tags": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", - "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=", - "dev": true - }, - "svgo": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", - "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "1.0.4", - "colors": "1.1.2", - "csso": "2.3.2", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "sax": "1.2.4", - "whet.extend": "0.9.9" - }, - "dependencies": { - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "js-yaml": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" - } - } - } - }, - "swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", - "dev": true, - "requires": { - "lower-case": "1.1.4", - "upper-case": "1.1.3" - } - }, - "symbol-observable": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-0.2.4.tgz", - "integrity": "sha1-lag9smGG1q9+ehjb2XYKL4bQj0A=" - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", - "dev": true, - "optional": true - }, - "synesthesia": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/synesthesia/-/synesthesia-1.0.1.tgz", - "integrity": "sha1-XvlepUjA1cbm+btLDQcx3/hkp3c=", - "dev": true, - "requires": { - "css-color-names": "0.0.3" - }, - "dependencies": { - "css-color-names": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.3.tgz", - "integrity": "sha1-3gzvFvTYqoIioyDVttfpu62nufY=", - "dev": true - } - } - }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.15.0", - "slice-ansi": "0.0.4", - "string-width": "2.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", - "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - } - } - }, - "tapable": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", - "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q=", - "dev": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-stream": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.4.tgz", - "integrity": "sha1-NlSc8E7RrumyowwBQyUiONr5QBY=", - "dev": true, - "requires": { - "bl": "1.1.2", - "end-of-stream": "1.4.0", - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - }, - "tar.gz": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tar.gz/-/tar.gz-1.0.5.tgz", - "integrity": "sha1-4a2n5F7yJBtLHuWBI8j0C108G8Q=", - "dev": true, - "requires": { - "bluebird": "2.11.0", - "commander": "2.11.0", - "fstream": "1.0.11", - "mout": "0.11.1", - "tar": "2.2.1" - }, - "dependencies": { - "bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", - "dev": true - } - } - }, - "temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", - "dev": true - }, - "tempfile": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", - "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", - "dev": true, - "requires": { - "temp-dir": "1.0.0", - "uuid": "3.1.0" - } - }, - "text-encoding": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.5.2.tgz", - "integrity": "sha1-hbRmCBnwiHd2CUZVUWkP6hN9gko=", - "dev": true - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "dev": true, - "requires": { - "readable-stream": "1.0.34", - "xtend": "4.0.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "through2-filter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", - "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", - "dev": true, - "requires": { - "through2": "2.0.3", - "xtend": "4.0.1" - }, - "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - } - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", - "dev": true - }, - "timed-out": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", - "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=", - "dev": true - }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", - "dev": true, - "requires": { - "process": "0.11.10" - }, - "dependencies": { - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - } - } - }, - "title-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-1.1.2.tgz", - "integrity": "sha1-+uSmrlRr+iLQg6DuqRCkDRLtT1o=", - "dev": true, - "requires": { - "sentence-case": "1.1.3", - "upper-case": "1.1.3" - } - }, - "tmatch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-2.0.1.tgz", - "integrity": "sha1-DFYkbzPzDaG409colauvFmYPOM8=", - "dev": true - }, - "tmp": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", - "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", - "dev": true, - "requires": { - "os-tmpdir": "1.0.2" - } - }, - "to-absolute-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", - "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", - "dev": true, - "requires": { - "extend-shallow": "2.0.1" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", - "dev": true - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true - }, - "toposort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", - "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=", - "dev": true - }, - "touch": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", - "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", - "dev": true, - "requires": { - "nopt": "1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "dev": true, - "requires": { - "abbrev": "1.0.9" - } - } - } - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true, - "optional": true - }, - "traverse": { - "version": "0.6.6", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz", - "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=", - "dev": true - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "dev": true - }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", - "dev": true, - "requires": { - "escape-string-regexp": "1.0.5" - } - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "dev": true - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", - "dev": true - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "1.1.2" - } - }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - }, - "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.15" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.13.tgz", - "integrity": "sha1-zZ3S+GSTs/RNvu7zeA/adMXuFL4=" - }, - "uglify-js": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.6.4.tgz", - "integrity": "sha1-ZeovswWck5RpLxX+2HwrNsFrmt8=", - "dev": true, - "requires": { - "async": "0.2.10", - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true - }, - "ultron": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", - "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", - "dev": true - }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, - "underscore": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", - "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=", - "dev": true - }, - "underscore.string": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz", - "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=", - "dev": true - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true, - "requires": { - "macaddress": "0.2.8" - } - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", - "dev": true, - "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "unzip-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", - "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=", - "dev": true - }, - "update-notifier": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-0.6.3.tgz", - "integrity": "sha1-d23sjaoT6WKjQeih2YNUMGtnrgg=", - "dev": true, - "requires": { - "boxen": "0.3.1", - "chalk": "1.1.3", - "configstore": "2.1.0", - "is-npm": "1.0.0", - "latest-version": "2.0.0", - "semver-diff": "2.1.0" - } - }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, - "upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", - "dev": true, - "requires": { - "upper-case": "1.1.3" - } - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.7.tgz", - "integrity": "sha1-Z+h3l1n4AA2nSZSQZoDJQ6mwkl0=", - "dev": true, - "requires": { - "loader-utils": "0.2.17", - "mime": "1.2.11" - }, - "dependencies": { - "mime": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=", - "dev": true - } - } - }, - "url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "1.0.4" - } - }, - "url-regex": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz", - "integrity": "sha1-260eDJ4p4QXdCx8J9oYvf9tIJyQ=", - "dev": true, - "requires": { - "ip-regex": "1.0.3" - } - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", - "dev": true - }, - "useragent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", - "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", - "dev": true, - "requires": { - "lru-cache": "2.2.4", - "tmp": "0.0.28" - }, - "dependencies": { - "lru-cache": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", - "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", - "dev": true - } - } - }, - "utf8": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz", - "integrity": "sha1-DP7FyAUtRKI+OqqQgQToB1+V39U=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", - "dev": true - }, - "utils-merge": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", - "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=" - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - }, - "v8flags": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", - "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", - "dev": true, - "requires": { - "user-home": "1.1.1" - } - }, - "vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vary": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", - "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=" - }, - "vendors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", - "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", - "dev": true - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", - "dev": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "dev": true, - "requires": { - "clone": "1.0.2", - "clone-stats": "0.0.1", - "replace-ext": "0.0.1" - }, - "dependencies": { - "replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "dev": true - } - } - }, - "vinyl-assign": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/vinyl-assign/-/vinyl-assign-1.2.1.tgz", - "integrity": "sha1-TRmIkbVRWRHXcajNnFSApGoHSkU=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "readable-stream": "2.3.3" - } - }, - "vinyl-fs": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", - "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", - "dev": true, - "requires": { - "duplexify": "3.5.0", - "glob-stream": "5.3.5", - "graceful-fs": "4.1.11", - "gulp-sourcemaps": "1.6.0", - "is-valid-glob": "0.3.0", - "lazystream": "1.0.0", - "lodash.isequal": "4.5.0", - "merge-stream": "1.0.1", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "readable-stream": "2.3.3", - "strip-bom": "2.0.0", - "strip-bom-stream": "1.0.0", - "through2": "2.0.3", - "through2-filter": "2.0.0", - "vali-date": "1.0.0", - "vinyl": "1.2.0" - }, - "dependencies": { - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", - "dev": true, - "requires": { - "readable-stream": "2.3.3", - "xtend": "4.0.1" - } - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "ware": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz", - "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=", - "dev": true, - "requires": { - "wrap-fn": "0.1.5" - } - }, - "warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", - "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "watchpack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", - "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", - "dev": true, - "requires": { - "async": "2.5.0", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - } - }, - "webidl-conversions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", - "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", - "dev": true, - "optional": true - }, - "webpack": { - "version": "2.1.0-beta.15", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.1.0-beta.15.tgz", - "integrity": "sha1-9szUHE4ba/KFi1qvoYyfa+CQMpA=", - "dev": true, - "requires": { - "acorn": "3.3.0", - "async": "1.5.2", - "clone": "1.0.2", - "enhanced-resolve": "2.3.0", - "interpret": "1.0.3", - "loader-runner": "2.3.0", - "loader-utils": "0.2.17", - "memory-fs": "0.3.0", - "mkdirp": "0.5.1", - "node-libs-browser": "1.1.1", - "object-assign": "4.1.1", - "source-map": "0.5.6", - "supports-color": "3.2.3", - "tapable": "0.2.6", - "uglify-js": "2.6.4", - "watchpack": "1.4.0", - "webpack-sources": "0.1.5", - "yargs": "4.8.1" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "enhanced-resolve": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-2.3.0.tgz", - "integrity": "sha1-oRXDJQS2MC6Fp2Jp16V8zdli41k=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.3.0", - "object-assign": "4.1.1", - "tapable": "0.2.6" - } - }, - "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } - }, - "tapable": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", - "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=", - "dev": true - }, - "window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "dev": true - }, - "yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dev": true, - "requires": { - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "lodash.assign": "4.2.0", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "window-size": "0.2.0", - "y18n": "3.2.1", - "yargs-parser": "2.4.1" - } - }, - "yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "lodash.assign": "4.2.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.6.1.tgz", - "integrity": "sha1-wl74MqvH02DDi7QOuRhpJyDO1hE=", - "dev": true, - "requires": { - "memory-fs": "0.3.0", - "mime": "1.3.4", - "range-parser": "1.2.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", - "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.3" - } - } - } - }, - "webpack-hot-middleware": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.12.2.tgz", - "integrity": "sha1-XcSlr/WzJE803j1xOMBkP+h8FyM=", - "dev": true, - "requires": { - "ansi-html": "0.0.5", - "html-entities": "1.2.1", - "querystring": "0.2.0", - "strip-ansi": "3.0.1" - } - }, - "webpack-sources": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", - "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=", - "dev": true, - "requires": { - "source-list-map": "0.1.8", - "source-map": "0.5.6" - } - }, - "whatwg-fetch": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.0.0.tgz", - "integrity": "sha1-AcKsTfQOI2qqGEgOO+dL1cjreY4=" - }, - "whatwg-url-compat": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", - "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", - "dev": true, - "optional": true, - "requires": { - "tr46": "0.0.3" - } - }, - "whet.extend": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", - "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", - "dev": true - }, - "which": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "dev": true, - "requires": { - "isexe": "2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", - "dev": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "widest-line": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", - "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - } - }, - "wrap-fn": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", - "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=", - "dev": true, - "requires": { - "co": "3.1.0" - }, - "dependencies": { - "co": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", - "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "0.5.1" - } - }, - "write-file-atomic": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", - "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } - }, - "write-file-stdout": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz", - "integrity": "sha1-wlLXx8WxtAKJdjDjRTx7/mkNnKE=", - "dev": true - }, - "ws": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-1.0.1.tgz", - "integrity": "sha1-fQsqLljN3YGQOcKcneZQReGzEOk=", - "dev": true, - "requires": { - "options": "0.0.6", - "ultron": "1.0.2" - } - }, - "xdg-basedir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", - "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "xml-char-classes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", - "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", - "dev": true - }, - "xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "dev": true, - "optional": true - }, - "xmlhttprequest-ssl": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz", - "integrity": "sha1-O3dB/qSoZnWXbpCNKW1ERZYfqmc=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", - "dev": true - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true - } - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "dev": true, - "requires": { - "camelcase": "3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "dev": true - } - } - }, - "yauzl": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz", - "integrity": "sha1-eUUK/yKyqcWkHvVOAtuQfM+/nuI=", - "dev": true, - "requires": { - "buffer-crc32": "0.2.13", - "fd-slicer": "1.0.1" - } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", - "dev": true - } - } -} diff --git a/packages/strapi-admin/files/public/package.json b/packages/strapi-admin/files/public/package.json new file mode 100755 index 0000000000..73dc695d29 --- /dev/null +++ b/packages/strapi-admin/files/public/package.json @@ -0,0 +1,284 @@ +{ + "name": "react-boilerplate", + "version": "3.1.0", + "description": "A highly scalable, offline-first foundation with the best DX and a focus on performance and best practices", + "private": true, + "engines": { + "npm": ">=3" + }, + "author": "Strapi", + "license": "MIT", + "scripts": { + "analyze:clean": "node node_modules/rimraf/rimraf.js stats.json", + "preanalyze": "npm run analyze:clean", + "analyze": "node ./internals/scripts/analyze.js", + "extract-intl": "babel-node --presets es2015,stage-0 -- ./internals/scripts/extract-intl.js", + "npmcheckversion": "node ./internals/scripts/npmcheckversion.js", + "preinstall": "npm run npmcheckversion", + "postinstall": "npm run build:dll", + "prebuild": "npm run build:clean", + "build": "NODE_ENV=production node node_modules/cross-env/bin/cross-env node node_modules/webpack/bin/webpack --config ./internals/webpack/webpack.prod.babel.js --color --progress", + "build:clean": "npm run test:clean && node node_modules/rimraf/rimraf.js ./build", + "build:dll": "node ./internals/scripts/dependencies.js", + "start": "node node_modules/cross-env/bin/cross-env NODE_ENV=development node server", + "start:tunnel": "node node_modules/cross-env/bin/cross-env NODE_ENV=development ENABLE_TUNNEL=true node server", + "start:production": "npm run build && npm run start:prod", + "start:prod": "node node_modules/cross-env/bin/cross-env NODE_ENV=production node server", + "pagespeed": "node ./internals/scripts/pagespeed.js", + "presetup": "npm i chalk shelljs", + "setup": "node ./internals/scripts/setup.js", + "postsetup": "npm run build:dll", + "clean": "shjs ./internals/scripts/clean.js", + "clean:all": "npm run analyze:clean && npm run test:clean && npm run build:clean", + "generate": "plop --plopfile internals/generators/index.js", + "lint": "npm run lint:js", + "lint:eslint": "node node_modules/eslint/bin/eslint --ignore-path .gitignore --ignore-pattern internals/scripts", + "lint:js": "npm run lint:eslint -- . ", + "lint:staged": "lint-staged", + "pretest": "npm run test:clean && npm run lint", + "test:clean": "node node_modules/rimraf/rimraf.js ./coverage", + "test": "echo Test has been disabled", + "test:watch": "npm run test -- --auto-watch --no-single-run", + "test:firefox": "npm run test -- --browsers Firefox", + "test:safari": "npm run test -- --browsers Safari", + "test:ie": "npm run test -- --browsers IE", + "coveralls": "cat ./coverage/lcov/lcov.info | coveralls" + }, + "lint-staged": { + "*.js": "lint:eslint", + "*.css": "stylelint" + }, + "pre-commit": "lint:staged", + "babel": { + "presets": [ + [ + "es2015", + { + "modules": false + } + ], + "react", + "stage-0" + ], + "env": { + "production": { + "only": [ + "app" + ], + "plugins": [ + "transform-react-remove-prop-types", + "transform-react-constant-elements", + "transform-react-inline-elements" + ] + } + } + }, + "eslintConfig": { + "parser": "babel-eslint", + "extends": "airbnb", + "env": { + "browser": true, + "node": true, + "mocha": true, + "es6": true + }, + "plugins": [ + "react", + "jsx-a11y" + ], + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + }, + "rules": { + "arrow-body-style": [ + 2, + "as-needed" + ], + "comma-dangle": [ + 2, + "always-multiline" + ], + "import/imports-first": 0, + "import/newline-after-import": 0, + "import/no-extraneous-dependencies": 0, + "import/no-named-as-default": 0, + "import/no-unresolved": 2, + "import/prefer-default-export": 0, + "indent": [ + 2, + 2, + { + "SwitchCase": 1 + } + ], + "jsx-a11y/aria-props": 2, + "jsx-a11y/heading-has-content": 0, + "jsx-a11y/href-no-hash": 2, + "jsx-a11y/label-has-for": 2, + "jsx-a11y/mouse-events-have-key-events": 2, + "jsx-a11y/role-has-required-aria-props": 2, + "jsx-a11y/role-supports-aria-props": 2, + "max-len": 0, + "newline-per-chained-call": 0, + "no-console": 1, + "no-use-before-define": 0, + "prefer-template": 2, + "react/jsx-filename-extension": 0, + "react/jsx-no-target-blank": 0, + "react/require-extension": 0, + "react/self-closing-comp": 0, + "require-yield": 0 + }, + "settings": { + "import/resolver": { + "webpack": { + "config": "./internals/webpack/webpack.test.babel.js" + } + } + } + }, + "stylelint": { + "extends": "stylelint-config-standard", + "rules": { + "color-hex-case": "upper", + "string-quotes": "single", + "font-family-name-quotes": "always-where-recommended", + "selector-pseudo-class-no-unknown": [ + true, + { + "ignorePseudoClasses": [ + "global" + ] + } + ], + "indentation": 2 + } + }, + "dllPlugin": { + "path": "node_modules/react-boilerplate-dlls", + "exclude": [ + "chalk", + "compression", + "cross-env", + "express", + "ip", + "minimist", + "sanitize.css" + ], + "include": [ + "core-js", + "lodash", + "eventsource-polyfill" + ] + }, + "dependencies": { + "babel-polyfill": "6.13.0", + "chalk": "1.1.3", + "compression": "1.6.2", + "express": "4.14.0", + "fontfaceobserver": "2.0.1", + "history": "3.0.0", + "immutable": "3.8.1", + "intl": "1.2.4", + "invariant": "2.2.1", + "ip": "1.1.3", + "lodash": "4.15.0", + "react": "15.3.0", + "react-dom": "15.3.0", + "react-helmet": "3.1.0", + "react-intl": "2.1.3", + "react-redux": "4.4.5", + "react-router": "2.6.1", + "react-router-redux": "4.0.5", + "react-router-scroll": "0.2.1", + "redux": "3.5.2", + "redux-immutable": "3.0.7", + "redux-saga": "0.11.0", + "reselect": "2.5.3", + "sanitize.css": "4.1.0", + "warning": "3.0.0", + "whatwg-fetch": "1.0.0" + }, + "devDependencies": { + "babel-cli": "6.11.4", + "babel-core": "6.13.2", + "babel-eslint": "6.1.2", + "babel-loader": "6.2.4", + "babel-plugin-react-intl": "2.1.3", + "babel-plugin-react-transform": "2.0.2", + "babel-plugin-transform-react-constant-elements": "6.9.1", + "babel-plugin-transform-react-inline-elements": "6.8.0", + "babel-plugin-transform-react-remove-prop-types": "0.2.9", + "babel-preset-es2015": "6.13.2", + "babel-preset-react": "6.11.1", + "babel-preset-react-hmre": "1.1.1", + "babel-preset-stage-0": "6.5.0", + "chai": "3.5.0", + "chai-enzyme": "0.5.0", + "cheerio": "0.20.0", + "coveralls": "2.11.12", + "cross-env": "2.0.0", + "css-loader": "0.23.1", + "enzyme": "2.4.1", + "eslint": "3.3.0", + "eslint-config-airbnb": "10.0.1", + "eslint-import-resolver-webpack": "0.5.1", + "eslint-plugin-import": "1.12.0", + "eslint-plugin-jsx-a11y": "2.1.0", + "eslint-plugin-react": "6.0.0", + "eventsource-polyfill": "0.9.6", + "expect": "1.20.2", + "expect-jsx": "2.6.0", + "exports-loader": "0.6.3", + "extract-text-webpack-plugin": "1.0.1", + "file-loader": "0.9.0", + "glob": "^7.1.2", + "html-loader": "0.4.3", + "html-webpack-plugin": "2.22.0", + "image-webpack-loader": "2.0.0", + "imports-loader": "0.6.5", + "isparta": "4.0.0", + "isparta-loader": "2.0.0", + "json-loader": "0.5.4", + "karma": "1.2.0", + "karma-chrome-launcher": "1.0.1", + "karma-coverage": "1.1.1", + "karma-firefox-launcher": "1.0.0", + "karma-ie-launcher": "1.0.0", + "karma-mocha": "1.1.1", + "karma-mocha-reporter": "2.1.0", + "karma-safari-launcher": "1.0.0", + "karma-sourcemap-loader": "0.3.7", + "karma-webpack": "1.8.0", + "lint-staged": "2.0.3", + "minimist": "1.2.0", + "mocha": "3.0.2", + "ngrok": "2.2.2", + "node-sass": "^4.5.3", + "null-loader": "0.1.1", + "offline-plugin": "3.4.2", + "plop": "1.5.0", + "postcss-cssnext": "2.7.0", + "postcss-focus": "1.0.0", + "postcss-loader": "0.9.1", + "postcss-reporter": "1.4.1", + "pre-commit": "1.1.3", + "psi": "2.0.4", + "react-addons-test-utils": "15.3.0", + "rimraf": "2.5.4", + "sass-loader": "^4.0.0", + "shelljs": "0.7.3", + "sinon": "2.0.0-pre", + "style-loader": "0.13.1", + "stylelint": "7.1.0", + "stylelint-config-standard": "12.0.0", + "url-loader": "0.5.7", + "webpack": "2.1.0-beta.15", + "webpack-dev-middleware": "1.6.1", + "webpack-hot-middleware": "2.12.2" + } +} diff --git a/packages/strapi-admin/files/public/server/index.js b/packages/strapi-admin/files/public/server/index.js new file mode 100755 index 0000000000..95f7fcff6a --- /dev/null +++ b/packages/strapi-admin/files/public/server/index.js @@ -0,0 +1,43 @@ +/* eslint consistent-return:0 */ + +const express = require('express'); +const logger = require('./logger'); + +const argv = require('minimist')(process.argv.slice(2)); +const setup = require('./middlewares/frontendMiddleware'); +const isDev = process.env.NODE_ENV !== 'production'; +const ngrok = (isDev && process.env.ENABLE_TUNNEL) || argv.tunnel ? require('ngrok') : false; +const resolve = require('path').resolve; +const app = express(); + +// If you need a backend, e.g. an API, add your custom backend-specific middleware here +// app.use('/api', myApi); + +// In production we need to pass these values in instead of relying on webpack +setup(app, { + outputPath: resolve(process.cwd(), 'build'), + publicPath: '/', +}); + +// get the intended port number, use port 4000 if not provided +const port = argv.port || process.env.PORT || 4000; + +// Start your app. +app.listen(port, (err) => { + if (err) { + return logger.error(err.message); + } + + // Connect to ngrok in dev mode + if (ngrok) { + ngrok.connect(port, (innerErr, url) => { + if (innerErr) { + return logger.error(innerErr); + } + + logger.appStarted(port, url); + }); + } else { + logger.appStarted(port); + } +}); diff --git a/packages/strapi-admin/files/public/server/logger.js b/packages/strapi-admin/files/public/server/logger.js new file mode 100755 index 0000000000..d2a5bdbf8a --- /dev/null +++ b/packages/strapi-admin/files/public/server/logger.js @@ -0,0 +1,37 @@ +/* eslint-disable no-console */ + +const chalk = require('chalk'); +const ip = require('ip'); + +const divider = chalk.gray('\n-----------------------------------'); + +/** + * Logger middleware, you can customize it to make messages more personal + */ +const logger = { + + // Called whenever there's an error on the server we want to print + error: err => { + console.error(chalk.red(err)); + }, + + // Called when express.js app starts on given port w/o errors + appStarted: (port, tunnelStarted) => { + console.log(`Server started ${chalk.green('✓')}`); + + // If the tunnel started, log that and the URL it's available at + if (tunnelStarted) { + console.log(`Tunnel initialised ${chalk.green('✓')}`); + } + + console.log(` +${chalk.bold('Access URLs:')}${divider} +Localhost: ${chalk.magenta(`http://localhost:${port}`)} + LAN: ${chalk.magenta(`http://${ip.address()}:${port}`) + +(tunnelStarted ? `\n Proxy: ${chalk.magenta(tunnelStarted)}` : '')}${divider} +${chalk.blue(`Press ${chalk.italic('CTRL-C')} to stop`)} + `); + }, +}; + +module.exports = logger; diff --git a/packages/strapi-admin/files/public/server/middlewares/frontendMiddleware.js b/packages/strapi-admin/files/public/server/middlewares/frontendMiddleware.js new file mode 100755 index 0000000000..9331e12508 --- /dev/null +++ b/packages/strapi-admin/files/public/server/middlewares/frontendMiddleware.js @@ -0,0 +1,73 @@ +/* eslint-disable global-require */ +const express = require('express'); +const path = require('path'); +const compression = require('compression'); +const pkg = require(path.resolve(process.cwd(), 'package.json')); + +// Dev middleware +const addDevMiddlewares = (app, webpackConfig) => { + const webpack = require('webpack'); + const webpackDevMiddleware = require('webpack-dev-middleware'); + const webpackHotMiddleware = require('webpack-hot-middleware'); + const compiler = webpack(webpackConfig); + const middleware = webpackDevMiddleware(compiler, { + noInfo: true, + publicPath: webpackConfig.output.publicPath, + silent: true, + stats: 'errors-only', + }); + + app.use(middleware); + app.use(webpackHotMiddleware(compiler)); + + // Since webpackDevMiddleware uses memory-fs internally to store build + // artifacts, we use it instead + const fs = middleware.fileSystem; + + if (pkg.dllPlugin) { + app.get(/\.dll\.js$/, (req, res) => { + const filename = req.path.replace(/^\//, ''); + res.sendFile(path.join(process.cwd(), pkg.dllPlugin.path, filename)); + }); + } + + app.get('*', (req, res) => { + fs.readFile(path.join(compiler.outputPath, 'index.html'), (err, file) => { + if (err) { + res.sendStatus(404); + } else { + res.send(file.toString()); + } + }); + }); +}; + +// Production middlewares +const addProdMiddlewares = (app, options) => { + const publicPath = options.publicPath || '/'; + const outputPath = options.outputPath || path.resolve(process.cwd(), 'build'); + + // compression middleware compresses your server responses which makes them + // smaller (applies also to assets). You can read more about that technique + // and other good practices on official Express.js docs http://mxs.is/googmy + app.use(compression()); + app.use(publicPath, express.static(outputPath)); + + app.get('*', (req, res) => res.sendFile(path.resolve(outputPath, 'index.html'))); +}; + +/** + * Front-end middleware + */ +module.exports = (app, options) => { + const isProd = process.env.NODE_ENV === 'production'; + + if (isProd) { + addProdMiddlewares(app, options); + } else { + const webpackConfig = require('../../internals/webpack/webpack.dev.babel'); + addDevMiddlewares(app, webpackConfig); + } + + return app; +}; diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-admin/services/Admin.js b/packages/strapi-admin/services/Admin.js old mode 100644 new mode 100755 diff --git a/packages/strapi-bookshelf/lib/index.js b/packages/strapi-bookshelf/lib/index.js index 2ab4c023ff..4eda6e5bf0 100755 --- a/packages/strapi-bookshelf/lib/index.js +++ b/packages/strapi-bookshelf/lib/index.js @@ -104,6 +104,10 @@ module.exports = function(strapi) { _.forEach(models, (definition, model) => { globalName = _.upperFirst(_.camelCase(definition.globalId)); + _.defaults(definition, { + primaryKey: 'id' + }); + // Make sure the model has a table name. // If not, use the model name. if (_.isEmpty(definition.collectionName)) { @@ -229,15 +233,8 @@ module.exports = function(strapi) { // Expose ORM functions through the `strapi.models` object. strapi.models[model] = _.assign(global[globalName], strapi.models[model]); - // Push model to strapi global variables. - strapi.bookshelf.collections[globalName.toLowerCase()] = global[ - globalName - ]; - // Push attributes to be aware of model schema. - strapi.bookshelf.collections[ - globalName.toLowerCase() - ]._attributes = definition.attributes; + strapi.models[model]._attributes = definition.attributes; loadedHook(); } catch (err) { @@ -257,19 +254,17 @@ module.exports = function(strapi) { // Basic attributes don't need this-- only relations. _.forEach(definition.attributes, (details, name) => { const verbose = _.get( - utilsModels.getNature(details, name), + utilsModels.getNature(details, name, undefined, model.toLowerCase()), 'verbose' ) || ''; // Build associations key - if (!_.isEmpty(verbose)) { - utilsModels.defineAssociations( - globalName, - definition, - details, - name - ); - } + utilsModels.defineAssociations( + globalName, + definition, + details, + name + ); switch (verbose) { case 'hasOne': { @@ -313,6 +308,9 @@ module.exports = function(strapi) { `${details.via}.columnName` ) || details.via; + // Set this info to be able to see if this field is a real database's field. + details.isVirtual = true; + loadedModel[name] = function() { return this.hasMany(global[globalId], FKTarget); }; @@ -384,6 +382,9 @@ module.exports = function(strapi) { `${details.collection.toLowerCase()}.globalId` ); + // Set this info to be able to see if this field is a real database's field. + details.isVirtual = true; + loadedModel[name] = function() { if ( _.isArray(_.get(details, 'withPivot')) && diff --git a/packages/strapi-bookshelf/package.json b/packages/strapi-bookshelf/package.json old mode 100644 new mode 100755 index e783ad9388..699283f3ea --- a/packages/strapi-bookshelf/package.json +++ b/packages/strapi-bookshelf/package.json @@ -55,4 +55,4 @@ "npm": ">= 5.3.0" }, "license": "MIT" -} \ No newline at end of file +} diff --git a/packages/strapi-ejs/.editorconfig b/packages/strapi-ejs/.editorconfig old mode 100644 new mode 100755 diff --git a/packages/strapi-ejs/.gitignore b/packages/strapi-ejs/.gitignore old mode 100644 new mode 100755 diff --git a/packages/strapi-ejs/.npmignore b/packages/strapi-ejs/.npmignore old mode 100644 new mode 100755 diff --git a/packages/strapi-ejs/LICENSE.md b/packages/strapi-ejs/LICENSE.md old mode 100644 new mode 100755 diff --git a/packages/strapi-ejs/README.md b/packages/strapi-ejs/README.md old mode 100644 new mode 100755 diff --git a/packages/strapi-ejs/lib/index.js b/packages/strapi-ejs/lib/index.js old mode 100644 new mode 100755 diff --git a/packages/strapi-ejs/package.json b/packages/strapi-ejs/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-admin/.editorconfig b/packages/strapi-generate-admin/.editorconfig old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-admin/LICENSE.md b/packages/strapi-generate-admin/LICENSE.md old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-admin/README.md b/packages/strapi-generate-admin/README.md old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-admin/lib/after.js b/packages/strapi-generate-admin/lib/after.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-admin/package.json b/packages/strapi-generate-admin/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-api/lib/before.js b/packages/strapi-generate-api/lib/before.js index 3d0ec8ffbc..4714b92167 100755 --- a/packages/strapi-generate-api/lib/before.js +++ b/packages/strapi-generate-api/lib/before.js @@ -69,23 +69,30 @@ module.exports = (scope, cb) => { // Validate optional attribute arguments. const invalidAttributes = []; - // Map attributes and split them. + // Map attributes and split them for CLI. scope.attributes = scope.args.attributes.map((attribute) => { - const parts = attribute.split(':'); + if (_.isString(attribute)) { + const parts = attribute.split(':'); - parts[1] = parts[1] || 'string'; + parts[1] = parts[1] || 'string'; - // Handle invalid attributes. - if (!parts[1] || !parts[0]) { - invalidAttributes.push('Error: Invalid attribute notation `' + attribute + '`.'); - return; + // Handle invalid attributes. + if (!parts[1] || !parts[0]) { + invalidAttributes.push('Error: Invalid attribute notation `' + attribute + '`.'); + return; + } + + return { + name: _.trim(_.deburr(_.camelCase(parts[0]).toLowerCase())), + params: { + type: _.trim(_.deburr(_.camelCase(parts[1]).toLowerCase())) + } + }; + } else { + return _.has(attribute, 'params.type') ? attribute : undefined; } - - return { - name: _.trim(_.deburr(_.camelCase(parts[0]).toLowerCase())), - type: _.trim(_.deburr(_.camelCase(parts[1]).toLowerCase())) - }; }); + scope.attributes = _.compact(scope.attributes); // Handle invalid action arguments. // Send back invalidActions. @@ -104,13 +111,19 @@ module.exports = (scope, cb) => { const compiled = _.template(attributeTemplate); return _.trimEnd(_.unescape(compiled({ name: attribute.name, - type: attribute.type + params: attribute.params }))); }).join(',\n'); + // Set collectionName + scope.collectionName = _.get(scope.args, 'collectionName', undefined); + + // Set description + scope.description = _.get(scope.args, 'description', undefined); + // Get default connection try { - scope.connection = JSON.parse(fs.readFileSync(path.resolve(scope.rootPath, 'config', 'environments', scope.environment, 'database.json'))).defaultConnection || ''; + scope.connection = _.get(scope.args, 'connection') || JSON.parse(fs.readFileSync(path.resolve(scope.rootPath, 'config', 'environments', scope.environment, 'database.json'))).defaultConnection || ''; } catch (err) { return cb.invalid(err); } diff --git a/packages/strapi-generate-api/package.json b/packages/strapi-generate-api/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-api/templates/attribute.template b/packages/strapi-generate-api/templates/attribute.template old mode 100644 new mode 100755 index 1f37bfaf73..476f0a7301 --- a/packages/strapi-generate-api/templates/attribute.template +++ b/packages/strapi-generate-api/templates/attribute.template @@ -1,3 +1 @@ - "<%= name %>": { - "type": "<%= type %>" - } +"<%= name %>": <%= JSON.stringify(params, null, 2) %> diff --git a/packages/strapi-generate-api/templates/bookshelf/model.settings.template b/packages/strapi-generate-api/templates/bookshelf/model.settings.template index 12112c36cc..4f4c18b68f 100755 --- a/packages/strapi-generate-api/templates/bookshelf/model.settings.template +++ b/packages/strapi-generate-api/templates/bookshelf/model.settings.template @@ -1,6 +1,7 @@ { "connection": "<%= connection %>", - "collectionName": "<%= idPluralized %>", + "description": "<%= description %>", + "collectionName": "<%= collectionName || idPluralized %>", "options": { "increments": true, "timestamps": true, diff --git a/packages/strapi-generate-api/templates/mongoose/model.settings.template b/packages/strapi-generate-api/templates/mongoose/model.settings.template index 10ab60df58..3e8cdb3a1d 100755 --- a/packages/strapi-generate-api/templates/mongoose/model.settings.template +++ b/packages/strapi-generate-api/templates/mongoose/model.settings.template @@ -1,7 +1,11 @@ { "connection": "<%= connection %>", - "collectionName": "<%= idPluralized %>", + "collectionName": "<%= collectionName || idPluralized %>", + "info": { + "name": "<%= id %>", + "description": "<%= description %>" + }, "attributes": { -<%= attributes %> + <%= attributes %> } } diff --git a/packages/strapi-generate-controller/package.json b/packages/strapi-generate-controller/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-model/package.json b/packages/strapi-generate-model/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-model/templates/attribute.template b/packages/strapi-generate-model/templates/attribute.template old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/.eslintignore b/packages/strapi-generate-new/files/.eslintignore old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/.eslintrc b/packages/strapi-generate-new/files/.eslintrc old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/custom.json b/packages/strapi-generate-new/files/config/custom.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/development/custom.json b/packages/strapi-generate-new/files/config/environments/development/custom.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/development/request.json b/packages/strapi-generate-new/files/config/environments/development/request.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/development/response.json b/packages/strapi-generate-new/files/config/environments/development/response.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/production/custom.json b/packages/strapi-generate-new/files/config/environments/production/custom.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/production/request.json b/packages/strapi-generate-new/files/config/environments/production/request.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/production/response.json b/packages/strapi-generate-new/files/config/environments/production/response.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/test/custom.json b/packages/strapi-generate-new/files/config/environments/test/custom.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/test/request.json b/packages/strapi-generate-new/files/config/environments/test/request.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/environments/test/response.json b/packages/strapi-generate-new/files/config/environments/test/response.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/functions/responses/404.js b/packages/strapi-generate-new/files/config/functions/responses/404.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/hook.json b/packages/strapi-generate-new/files/config/hook.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/config/middleware.json b/packages/strapi-generate-new/files/config/middleware.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/files/favicon.ico b/packages/strapi-generate-new/files/favicon.ico old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-new/package.json b/packages/strapi-generate-new/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/.editorconfig b/packages/strapi-generate-plugin/files/.editorconfig old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/.gitattributes b/packages/strapi-generate-plugin/files/.gitattributes old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/.gitignore b/packages/strapi-generate-plugin/files/.gitignore old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/README.md b/packages/strapi-generate-plugin/files/README.md old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/components/Button/index.js b/packages/strapi-generate-plugin/files/admin/src/components/Button/index.js old mode 100644 new mode 100755 index 84ba44e730..7388afdae2 --- a/packages/strapi-generate-plugin/files/admin/src/components/Button/index.js +++ b/packages/strapi-generate-plugin/files/admin/src/components/Button/index.js @@ -5,6 +5,7 @@ */ import React from 'react'; +import PropTypes from 'prop-types'; import styles from './styles.scss'; @@ -20,7 +21,7 @@ class Button extends React.Component { } Button.propTypes = { - label: React.PropTypes.string.isRequired, + label: PropTypes.string.isRequired, }; export default Button; diff --git a/packages/strapi-generate-plugin/files/admin/src/components/Button/styles.scss b/packages/strapi-generate-plugin/files/admin/src/components/Button/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/App/actions.js b/packages/strapi-generate-plugin/files/admin/src/containers/App/actions.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/App/constants.js b/packages/strapi-generate-plugin/files/admin/src/containers/App/constants.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/App/index.js b/packages/strapi-generate-plugin/files/admin/src/containers/App/index.js old mode 100644 new mode 100755 index b33ae52ad8..bfc2ee0790 --- a/packages/strapi-generate-plugin/files/admin/src/containers/App/index.js +++ b/packages/strapi-generate-plugin/files/admin/src/containers/App/index.js @@ -6,6 +6,7 @@ */ import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { createStructuredSelector } from 'reselect'; import { Switch, Route } from 'react-router-dom'; @@ -28,7 +29,7 @@ class App extends React.Component { } App.propTypes = { - match: React.PropTypes.object, + match: PropTypes.object, }; export function mapDispatchToProps(dispatch) { @@ -44,4 +45,4 @@ const withConnect = connect(mapStateToProps, mapDispatchToProps); export default compose( withConnect, -)(App); \ No newline at end of file +)(App); diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/App/reducer.js b/packages/strapi-generate-plugin/files/admin/src/containers/App/reducer.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/App/selectors.js b/packages/strapi-generate-plugin/files/admin/src/containers/App/selectors.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/actions.js b/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/actions.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/constants.js b/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/constants.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/index.js b/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/index.js old mode 100644 new mode 100755 index 8d5616ee59..8f78d2f939 --- a/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/index.js +++ b/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/index.js @@ -5,6 +5,7 @@ */ import React from 'react'; +import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { createStructuredSelector } from 'reselect'; import { injectIntl } from 'react-intl'; @@ -60,17 +61,17 @@ export class HomePage extends React.Component { } HomePage.contextTypes = { - router: React.PropTypes.object, + router: PropTypes.object, }; HomePage.propTypes = { - data: React.PropTypes.oneOfType([ - React.PropTypes.bool, - React.PropTypes.object, + data: PropTypes.oneOfType([ + PropTypes.bool, + PropTypes.object, ]), - exposedComponents: React.PropTypes.object, - loadData: React.PropTypes.func, - loading: React.PropTypes.bool, + exposedComponents: PropTypes.object, + loadData: PropTypes.func, + loading: PropTypes.bool, }; function mapDispatchToProps(dispatch) { @@ -94,4 +95,4 @@ export default compose( withReducer, withSaga, withConnect, -)(injectIntl(HomePage)); \ No newline at end of file +)(injectIntl(HomePage)); diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/reducer.js b/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/reducer.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/saga.js b/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/saga.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/selectors.js b/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/selectors.js old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/styles.scss b/packages/strapi-generate-plugin/files/admin/src/containers/HomePage/styles.scss old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js b/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js new file mode 100755 index 0000000000..81a6f57e9a --- /dev/null +++ b/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js @@ -0,0 +1,29 @@ +/** + * NotFoundPage + * + * This is the page we show when the user visits a url that doesn't have a route + * + * NOTE: while this component should technically be a stateless functional + * component (SFC), hot reloading does not currently support SFCs. If hot + * reloading is not a neccessity for you then you can refactor it and remove + * the linting exception. + */ + +import React from 'react'; +import { FormattedMessage } from 'react-intl'; + +import messages from './messages'; + +export default class NotFound extends React.Component { + render() { + return ( +
    +
    +

    + +

    +
    +
    + ); + } +} diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js b/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js new file mode 100755 index 0000000000..95ee68f9d2 --- /dev/null +++ b/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js @@ -0,0 +1,13 @@ +/* + * NotFoundPage Messages + * + * This contains all the text for the NotFoundPage component. + */ +import { defineMessages } from 'react-intl'; + +export default defineMessages({ + pageNotFound: { + id: 'app.components.NotFoundPage.pageNotFound', + defaultMessage: 'Page not found.', + }, +}); diff --git a/packages/strapi-generate-plugin/files/admin/src/routes.json b/packages/strapi-generate-plugin/files/admin/src/routes.json new file mode 100755 index 0000000000..eed6bca7f4 --- /dev/null +++ b/packages/strapi-generate-plugin/files/admin/src/routes.json @@ -0,0 +1,6 @@ +{ + "/": { + "name": "homePage", + "container": "HomePage" + } +} diff --git a/packages/strapi-generate-plugin/files/admin/src/translations/en.json b/packages/strapi-generate-plugin/files/admin/src/translations/en.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/files/admin/src/translations/fr.json b/packages/strapi-generate-plugin/files/admin/src/translations/fr.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-plugin/package.json b/packages/strapi-generate-plugin/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-policy/package.json b/packages/strapi-generate-policy/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate-service/package.json b/packages/strapi-generate-service/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-generate/package.json b/packages/strapi-generate/package.json old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/.gitignore b/packages/strapi-helper-plugin/.gitignore old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/README.md b/packages/strapi-helper-plugin/README.md old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/config.js b/packages/strapi-helper-plugin/lib/internals/config.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/eslint/.eslintrc.json b/packages/strapi-helper-plugin/lib/internals/eslint/.eslintrc.json old mode 100644 new mode 100755 index ce19848793..785ff3844b --- a/packages/strapi-helper-plugin/lib/internals/eslint/.eslintrc.json +++ b/packages/strapi-helper-plugin/lib/internals/eslint/.eslintrc.json @@ -58,6 +58,7 @@ ], "jsx-a11y/aria-props": 2, "jsx-a11y/heading-has-content": 0, + "jsx-a11y/interactive-supports-focus": 0, "jsx-a11y/label-has-for": 2, "jsx-a11y/mouse-events-have-key-events": 2, "jsx-a11y/role-has-required-aria-props": 2, @@ -71,6 +72,7 @@ "no-use-before-define": 0, "prefer-template": 2, "class-methods-use-this": 0, + "react/react-in-jsx-scope": 0, "react/forbid-prop-types": 0, "react/jsx-first-prop-new-line": [ 2, @@ -87,6 +89,7 @@ "react/no-unescaped-entities": 0, "react/prefer-stateless-function": 0, "react/sort-prop-types": 2, + "react/require-default-props": 0, "no-undef": 0, "react/no-array-index-key": 0 }, diff --git a/packages/strapi-helper-plugin/lib/internals/eslint/eslint-config.js b/packages/strapi-helper-plugin/lib/internals/eslint/eslint-config.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/es6.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/component/es6.js.hbs old mode 100644 new mode 100755 index f94b3cd6bc..61b336c476 --- a/packages/strapi-helper-plugin/lib/internals/generators/component/es6.js.hbs +++ b/packages/strapi-helper-plugin/lib/internals/generators/component/es6.js.hbs @@ -6,6 +6,9 @@ import React from 'react'; +// Uncomment to use PropTypes +// import PropTypes from 'prop-types'; + {{#if wantMessages}} import { FormattedMessage } from 'react-intl'; import messages from './messages'; @@ -30,4 +33,9 @@ class {{ properCase name }} extends React.Component { // eslint-disable-line rea } } +// Uncomment to use PropTypes +// {{ properCase name }}.proptypes = { + // foo: PropTypes.string, +}; + export default {{ properCase name }}; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/index.js b/packages/strapi-helper-plugin/lib/internals/generators/component/index.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/messages.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/component/messages.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/stateless.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/component/stateless.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs b/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/test.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/component/test.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/actions.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/actions.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/actions.test.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/actions.test.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/class.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/class.js.hbs index 367d21883d..1a781e1f39 100644 --- a/packages/strapi-helper-plugin/lib/internals/generators/container/class.js.hbs +++ b/packages/strapi-helper-plugin/lib/internals/generators/container/class.js.hbs @@ -16,7 +16,7 @@ import { FormattedMessage } from 'react-intl'; {{#if wantActionsAndReducer}} import { createStructuredSelector } from 'reselect'; {{/if}} -import { compose } from 'redux'; +import { bindActionCreators, compose } from 'redux'; {{#if wantSaga}} import injectSaga from 'utils/injectSaga'; @@ -62,19 +62,27 @@ const mapStateToProps = createStructuredSelector({ {{/if}} function mapDispatchToProps(dispatch) { - return { - dispatch, - }; + return bindActionCreators( + {}, + dispatch + ); } {{#if wantActionsAndReducer}} const withConnect = connect(mapStateToProps, mapDispatchToProps); +/* Remove this line if the container doesn't have a route and +* check the documentation to see how to create the container's store +*/ const withReducer = injectReducer({ key: '{{ camelCase name }}', reducer }); {{else}} const withConnect = connect(null, mapDispatchToProps); {{/if}} {{#if wantSaga}} + +/* Remove the line below the container doesn't have a route and +* check the documentation to see how to create the container's store +*/ const withSaga = injectSaga({ key: '{{ camelCase name }}', saga }); {{/if}} diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/index.js b/packages/strapi-helper-plugin/lib/internals/generators/container/index.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/index.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/index.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/messages.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/messages.js.hbs new file mode 100755 index 0000000000..32dc1aa3da --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/container/messages.js.hbs @@ -0,0 +1,13 @@ +/* + * {{properCase name }} Messages + * + * This contains all the text for the {{properCase name }} component. + */ +import { defineMessages } from 'react-intl'; + +export default defineMessages({ + header: { + id: 'app.containers.{{properCase name }}.header', + defaultMessage: 'This is {{properCase name}} container !', + }, +}); diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/reducer.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/reducer.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/reducer.test.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/reducer.test.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/saga.test.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/saga.test.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/sagas.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/sagas.js.hbs new file mode 100755 index 0000000000..4401e77cdf --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/container/sagas.js.hbs @@ -0,0 +1,11 @@ +// import { take, call, put, select } from 'redux-saga/effects'; + +// Individual exports for testing +export function* defaultSaga() { + return; +} + +// All sagas to be loaded +export default [ + defaultSaga, +]; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/selectors.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/selectors.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/selectors.test.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/selectors.test.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs new file mode 100755 index 0000000000..e8121ed4f3 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs @@ -0,0 +1,3 @@ +.{{ camelCase name }} { + +} diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/test.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/test.js.hbs old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/index.js b/packages/strapi-helper-plugin/lib/internals/generators/index.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs new file mode 100755 index 0000000000..80727c73cd --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs @@ -0,0 +1 @@ +$1addLocaleData({{language}}LocaleData); diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs new file mode 100755 index 0000000000..9e99e845f8 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs @@ -0,0 +1,2 @@ +$1 + '{{language}}', diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs new file mode 100755 index 0000000000..74c78b4632 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs @@ -0,0 +1 @@ +$1 {{language}}: formatTranslationMessages({{language}}TranslationMessages), diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/index.js b/packages/strapi-helper-plugin/lib/internals/generators/language/index.js new file mode 100755 index 0000000000..dd9561dad8 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/language/index.js @@ -0,0 +1,80 @@ +/** + * Language Generator + */ +const exec = require('child_process').exec; + +module.exports = { + description: 'Add a langauge', + prompts: [{ + type: 'input', + name: 'language', + message: 'What is the language you want to add i18n support for (e.g. "fr", "de")?', + default: 'fr', + validate: (value) => { + if ((/.+/).test(value) && value.length === 2) { + return true; + } + + return '2 character language specifier is required'; + }, + }], + + actions: () => { + const actions = []; + actions.push({ + type: 'modify', + path: '../../../../../admin/src/i18n.js', + pattern: /('react-intl\/locale-data\/[a-z]+';\n)(?!.*'react-intl\/locale-data\/[a-z]+';)/g, + templateFile: './language/intl-locale-data.hbs', + }); + actions.push({ + type: 'modify', + path: '../../../../../admin/src/i18n.js', + pattern: /([\n\s'[a-z]+',)(?!.*[\n\s'[a-z]+',)/g, + templateFile: './language/src-locale.hbs', + }); + actions.push({ + type: 'modify', + path: '../../../../../admin/src/i18n.js', + pattern: /(from\s'.\/translations\/[a-z]+.json';\n)(?!.*from\s'.\/translations\/[a-z]+.json';)/g, + templateFile: './language/translation-messages.hbs', + }); + actions.push({ + type: 'modify', + path: '../../../../../admin/src/i18n.js', + pattern: /(addLocaleData\([a-z]+LocaleData\);\n)(?!.*addLocaleData\([a-z]+LocaleData\);)/g, + templateFile: './language/add-locale-data.hbs', + }); + actions.push({ + type: 'modify', + path: '../../../../../admin/src/i18n.js', + pattern: /([a-z]+:\sformatTranslationMessages\([a-z]+TranslationMessages\),\n)(?!.*[a-z]+:\sformatTranslationMessages\([a-z]+TranslationMessages\),)/g, + templateFile: './language/format-translation-messages.hbs', + }); + actions.push({ + type: 'add', + path: '../../../../../admin/src/translations/{{language}}.json', + templateFile: './language/translations-json.hbs', + abortOnFail: true, + }); + actions.push({ + type: 'modify', + path: '../../../../../admin/src/app.js', + pattern: /(System\.import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),\n)(?!.*System\.import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),)/g, + templateFile: './language/polyfill-intl-locale.hbs', + }); + actions.push( + () => { + const cmd = 'npm run extract-intl'; + exec(cmd, (err, result, stderr) => { + if (err || stderr) { + throw err || stderr; + } + process.stdout.write(result); + }); + } + ); + + return actions; + }, +}; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs new file mode 100755 index 0000000000..b790a1333f --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs @@ -0,0 +1 @@ +$1import {{language}}LocaleData from 'react-intl/locale-data/{{language}}'; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs new file mode 100755 index 0000000000..ea1586e7ed --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs @@ -0,0 +1 @@ +$1 System.import('intl/locale-data/jsonp/{{language}}.js'), diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs new file mode 100755 index 0000000000..0682d22ed0 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs @@ -0,0 +1 @@ +$1import {{language}}TranslationMessages from './translations/{{language}}.json'; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs new file mode 100755 index 0000000000..fe51488c70 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs @@ -0,0 +1 @@ +[] diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/index.js b/packages/strapi-helper-plugin/lib/internals/generators/route/index.js new file mode 100755 index 0000000000..adc26328bc --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/route/index.js @@ -0,0 +1,105 @@ +/** + * Route Generator + */ +const fs = require('fs'); +const path = require('path'); + +const routesFilePath = path.resolve(process.cwd(), 'admin', 'src', 'routes.json'); + +const componentExists = require('../utils/componentExists'); + +// Generate the update file content +const generateUpdatedFileContent = (data, existingContent) => { + const fileContent = existingContent || {}; + + // Add new route + const updatedFileContent = fileContent; + updatedFileContent[data.path] = { + container: data.container, + }; + + return updatedFileContent; +}; + +module.exports = { + description: 'Add a route', + prompts: [{ + type: 'input', + name: 'container', + message: 'Which container should the route show?', + validate: (value) => { + if ((/.+/).test(value)) { + return componentExists(value) ? true : `"${value}" doesn't exist.`; + } + + return 'The path is required'; + }, + }, { + type: 'input', + name: 'path', + message: 'Enter the path of the route.', + default: '/about', + validate: (value) => { + if ((/.+/).test(value)) { + return true; + } + + return 'path is required'; + }, + }], + + actions: (data) => { + const replaceFile = () => { + // Check if the file is existing or not + let routesFilesStats; + try { + routesFilesStats = fs.statSync(routesFilePath); + } catch (error) { + routesFilesStats = false; + } + const routesFilesExists = routesFilesStats && routesFilesStats.isFile(); + + // Read the file content + let existingContent = {}; + if (routesFilesExists) { + try { + existingContent = fs.readFileSync(routesFilePath, 'utf8'); + } catch (error) { + existingContent = false; + console.log('Unable to read existing `admin/src/routes.json` file content.'); + } + + try { + existingContent = JSON.parse(existingContent); + } catch (error) { + existingContent = false; + console.log('Unable to parse existing `admin/src/routes.json` file content.'); + } + } + + // Generate updated content + const updatedContent = generateUpdatedFileContent(data, existingContent || {}); + + // Delete the file if existing + if (routesFilesExists) { + try { + fs.unlinkSync(routesFilePath); + } catch (error) { + console.log('Unable to remove `admin/src/routes.json` file.'); + throw error; + } + } + + // Write the new file + try { + fs.writeFileSync(routesFilePath, JSON.stringify(updatedContent, null, 2), 'utf8'); + console.log('File `admin/src/routes.json` successfully written.'); + } catch (error) { + console.log('Unable to write `admin/src/routes.json` file.'); + throw error; + } + }; + + return [replaceFile]; + }, +}; diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs b/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs new file mode 100755 index 0000000000..162d992f40 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs @@ -0,0 +1,9 @@ + { + path: '{{ path }}', + name: '{{ camelCase component }}', + getComponent(location, cb) { + System.import('{{{directory (properCase component)}}}') + .then(loadModule(cb)) + .catch(errorLoading); + }, + },$1 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs b/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs new file mode 100755 index 0000000000..fedf109ac8 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs @@ -0,0 +1,25 @@ + { + path: '{{ path }}', + name: '{{ camelCase component }}', + getComponent(nextState, cb) { + const importModules = Promise.all([ + System.import('containers/{{ properCase component }}/reducer'), + {{#if useSagas}} + System.import('containers/{{ properCase component }}/sagas'), + {{/if}} + System.import('containers/{{ properCase component }}'), + ]); + + const renderRoute = loadModule(cb); + + importModules.then(([reducer,{{#if useSagas}} sagas,{{/if}} component]) => { + injectReducer('{{ camelCase component }}', reducer.default); + {{#if useSagas}} + injectSagas(sagas.default); + {{/if}} + renderRoute(component); + }); + + importModules.catch(errorLoading); + }, + },$1 diff --git a/packages/strapi-helper-plugin/lib/internals/generators/utils/componentExists.js b/packages/strapi-helper-plugin/lib/internals/generators/utils/componentExists.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/postcss/postcss.config.js b/packages/strapi-helper-plugin/lib/internals/postcss/postcss.config.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/scripts/analyze.js b/packages/strapi-helper-plugin/lib/internals/scripts/analyze.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/scripts/dependencies.js b/packages/strapi-helper-plugin/lib/internals/scripts/dependencies.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/scripts/helpers/checkmark.js b/packages/strapi-helper-plugin/lib/internals/scripts/helpers/checkmark.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/scripts/helpers/progress.js b/packages/strapi-helper-plugin/lib/internals/scripts/helpers/progress.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/scripts/npmcheckversion.js b/packages/strapi-helper-plugin/lib/internals/scripts/npmcheckversion.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/scripts/postinstall.js b/packages/strapi-helper-plugin/lib/internals/scripts/postinstall.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.base.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.base.babel.js old mode 100644 new mode 100755 index 85fe66d967..0d65de2d0c --- a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.base.babel.js +++ b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.base.babel.js @@ -16,8 +16,13 @@ module.exports = (options) => ({ publicPath: '/', }, options.output), // Merge with env dependent settings module: { + // Comment + noParse: [ + /\/react\//g, + /\/react-dom\//g, + ], loaders: [{ - test: /\.js$/, // Transform all .js files required somewhere with Babel + test: /\.js$/, // Transform all .js files required somewhere with Babel, use: { loader: 'babel-loader', options: { @@ -138,6 +143,12 @@ module.exports = (options) => ({ 'node_modules/strapi-helper-plugin/node_modules', 'node_modules', ], + alias: { + moment: 'moment/moment.js', + 'react': 'react', + 'react-dom': 'react-dom', + 'react-transition-group': 'react-transition-group', + }, symlinks: false, extensions: [ '.js', @@ -150,7 +161,7 @@ module.exports = (options) => ({ 'main', ], }, - + externals: generateExternals(), resolveLoader: { modules: [ path.join(__dirname, '..', '..', '..', 'node_modules'), @@ -160,3 +171,11 @@ module.exports = (options) => ({ devtool: options.devtool, target: 'web', // Make web variables accessible to webpack, e.g. window }); + +function generateExternals() { + return { + 'react': 'React', + 'react-dom': 'ReactDOM', + 'react-transition-group': 'ReactTransitionGroup', + }; +} diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dev.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dev.babel.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dll.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.dll.babel.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.prod.babel.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/internals/webpack/webpack.test.babel.js b/packages/strapi-helper-plugin/lib/internals/webpack/webpack.test.babel.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/server/index.js b/packages/strapi-helper-plugin/lib/server/index.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/server/logger.js b/packages/strapi-helper-plugin/lib/server/logger.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/server/middlewares/frontendMiddleware.js b/packages/strapi-helper-plugin/lib/server/middlewares/frontendMiddleware.js old mode 100644 new mode 100755 diff --git a/packages/strapi-helper-plugin/lib/src/app.js b/packages/strapi-helper-plugin/lib/src/app.js old mode 100644 new mode 100755 index cdcc7f1d52..b6bd2605ee --- a/packages/strapi-helper-plugin/lib/src/app.js +++ b/packages/strapi-helper-plugin/lib/src/app.js @@ -5,10 +5,9 @@ * only setup and plugin code. */ -import React from 'react'; import { Provider } from 'react-redux'; -import App from 'containers/App'; // eslint-disable-line +import App, { bootstrap } from 'containers/App'; // eslint-disable-line import configureStore from './store'; import { translationMessages } from './i18n'; @@ -27,7 +26,6 @@ const router = window.Strapi.router; // Create redux store with Strapi admin history const store = configureStore({}, window.Strapi.router); - // Define the plugin root component function Comp(props) { return ( @@ -37,11 +35,6 @@ function Comp(props) { ); } -// Add contextTypes to get access to the admin router -Comp.contextTypes = { - router: React.PropTypes.object.isRequired.isRequired, -}; - // Hot reloadable translation json files if (module.hot) { // modules.hot.accept does not accept dynamic dependencies, @@ -58,7 +51,7 @@ if (module.hot) { }); } -// Register the plugin +// Register the plugin. window.Strapi.registerPlugin({ name: pluginPkg.strapi.name, icon: pluginPkg.strapi.icon, @@ -66,8 +59,8 @@ window.Strapi.registerPlugin({ leftMenuLinks: [], mainComponent: Comp, translationMessages, + bootstrap, }); - // Export store export { store, apiUrl, pluginId, pluginName, pluginDescription, router }; diff --git a/packages/strapi-helper-plugin/lib/src/assets/icons/icon_danger.svg b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_danger.svg new file mode 100755 index 0000000000..298f3b53d3 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_danger.svg @@ -0,0 +1,19 @@ + + + + Danger + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/icons/icon_flag_not_found.svg b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_flag_not_found.svg new file mode 100755 index 0000000000..ff4aae7d6f --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_flag_not_found.svg @@ -0,0 +1,27 @@ + + + + Icon Flag Not Found + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/icons/icon_info.svg b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_info.svg new file mode 100755 index 0000000000..ad7351feda --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_info.svg @@ -0,0 +1,19 @@ + + + + Info + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/icons/icon_success.svg b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_success.svg new file mode 100755 index 0000000000..6c2c58707a --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_success.svg @@ -0,0 +1,19 @@ + + + + Check + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/icons/icon_warning.svg b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_warning.svg new file mode 100755 index 0000000000..9984c70ce1 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/icons/icon_warning.svg @@ -0,0 +1,21 @@ + + + + Warning + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/background-empty-attributes.svg b/packages/strapi-helper-plugin/lib/src/assets/images/background-empty-attributes.svg new file mode 100644 index 0000000000..a1a577d605 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/background-empty-attributes.svg @@ -0,0 +1,54 @@ + + + + Group + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/background_input.svg b/packages/strapi-helper-plugin/lib/src/assets/images/background_input.svg new file mode 100644 index 0000000000..761aafc4e3 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/background_input.svg @@ -0,0 +1,26 @@ + + + + Group + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/background_paint.svg b/packages/strapi-helper-plugin/lib/src/assets/images/background_paint.svg new file mode 100644 index 0000000000..b9c8ec6ddb --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/background_paint.svg @@ -0,0 +1,58 @@ + + + + Background image + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/icon_boolean.svg b/packages/strapi-helper-plugin/lib/src/assets/images/icon_boolean.svg new file mode 100755 index 0000000000..cf67ed2740 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/icon_boolean.svg @@ -0,0 +1,24 @@ + + + + Type icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/icon_date.svg b/packages/strapi-helper-plugin/lib/src/assets/images/icon_date.svg new file mode 100755 index 0000000000..d0698d465a --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/icon_date.svg @@ -0,0 +1,25 @@ + + + + Type icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/icon_image.svg b/packages/strapi-helper-plugin/lib/src/assets/images/icon_image.svg new file mode 100755 index 0000000000..b2b54b04a6 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/icon_image.svg @@ -0,0 +1,25 @@ + + + + Type icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/icon_json.svg b/packages/strapi-helper-plugin/lib/src/assets/images/icon_json.svg new file mode 100755 index 0000000000..660e31d13a --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/icon_json.svg @@ -0,0 +1,33 @@ + + + + Type icon + Created with Sketch. + + + + + + + + + + + + { + + + } + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/icon_relation.svg b/packages/strapi-helper-plugin/lib/src/assets/images/icon_relation.svg new file mode 100755 index 0000000000..dca9156fec --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/icon_relation.svg @@ -0,0 +1,23 @@ + + + + Type icon + Created with Sketch. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/icon_string.svg b/packages/strapi-helper-plugin/lib/src/assets/images/icon_string.svg new file mode 100755 index 0000000000..69cc2293b0 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/icon_string.svg @@ -0,0 +1,25 @@ + + + + Type icon + Created with Sketch. + + + + + + + + + + + Ab + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/assets/images/icon_text.svg b/packages/strapi-helper-plugin/lib/src/assets/images/icon_text.svg new file mode 100755 index 0000000000..42ae39f4df --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/assets/images/icon_text.svg @@ -0,0 +1,25 @@ + + + + Type icon + Created with Sketch. + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/strapi-helper-plugin/lib/src/components/Button/index.js b/packages/strapi-helper-plugin/lib/src/components/Button/index.js new file mode 100755 index 0000000000..2795e155a2 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/components/Button/index.js @@ -0,0 +1,36 @@ +/** + * + * Button + * + */ + +import PropTypes from 'prop-types'; +import { FormattedMessage } from 'react-intl'; +import styles from './styles.scss'; + +class Button extends React.Component { + // eslint-disable-line react/prefer-stateless-function + render() { + const label = this.props.handlei18n ? : this.props.label; + const addShape = this.props.addShape ? : ''; + + return ( + + ); + } +} + +Button.propTypes = { + addShape: PropTypes.bool, + buttonBackground: PropTypes.string, + buttonSize: PropTypes.string, + handlei18n: PropTypes.bool, + label: PropTypes.string.isRequired, +}; + +export default Button; diff --git a/packages/strapi-helper-plugin/lib/src/components/Button/styles.scss b/packages/strapi-helper-plugin/lib/src/components/Button/styles.scss new file mode 100755 index 0000000000..a8b8420cec --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/components/Button/styles.scss @@ -0,0 +1,95 @@ +.button { + -webkit-font-smoothing: antialiased; + height: 3rem; + position: relative; + border-radius: 0.3rem; + margin-right: 1.8rem; + line-height: 30px; + cursor: pointer; + font-family: Lato; + &:focus { + outline: 0; + } + > i { + margin-right: 1.3rem; + } + &:hover { + &::after { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + border-radius: 0.3rem; + content: ''; + opacity: 0.1; + background: #FFFFFF; + } + } +} + +.buttonLg { + min-width: 15rem; + padding: 0 15px; +} + +.buttonMd { + min-width: 10rem; + padding: 0 15px; +} + +.primary { + font-weight: 500; + background: linear-gradient(315deg, #0097F6 0%, #005EEA 100%); + color: white; + &:active { + box-shadow: inset 1px 1px 3px rgba(0,0,0,.15); + } +} + +.secondary { + // height: 32px !important; + color: #F64D0A; + border: 0.1rem solid #F64D0A; + position: relative; + border-radius: 3px; + overflow: hidden; + &:active { + border: 0.15rem solid #F64D0A; + } +} + +.secondaryAddType { + height: 2.6rem; + color: #1C5DE7; + line-height: 1.6rem; + border: 0.1rem solid #1C5DE7; + font-weight: 500; + font-size: 1.3rem; + padding-left: 1.6rem; + padding-right: 1.6rem; +} + +.back { + background: #F3F3F3; + color: #323740; + font-weight: 500; + padding: 0 15px; + transition: all .2s ease; + + &:before{ + content: '\f053'; + font-family: 'FontAwesome'; + font-size: 1.2rem; + color: #323740; + margin-right: 10px; + } + + &:hover{ + background: darken(#F6F6F6, 5%); + } + + &:active{ + box-shadow: inset 1px 1px 5px rgba(0,0,0,.1); + } +} diff --git a/packages/strapi-helper-plugin/lib/src/components/Input/index.js b/packages/strapi-helper-plugin/lib/src/components/Input/index.js new file mode 100644 index 0000000000..9612252e41 --- /dev/null +++ b/packages/strapi-helper-plugin/lib/src/components/Input/index.js @@ -0,0 +1,403 @@ +/** +* +* Input +* +*/ + +import moment from 'moment'; +import PropTypes from 'prop-types'; +import { get, isEmpty, map, mapKeys, isObject, reject, includes } from 'lodash'; +import { FormattedMessage } from 'react-intl'; +import DateTime from 'react-datetime'; +import DateTimeStyle from 'react-datetime/css/react-datetime.css'; +import styles from './styles.scss'; + +class Input extends React.Component { // eslint-disable-line react/prefer-stateless-function + constructor(props) { + super(props); + this.state = { + errors: [], + hasInitialValue: false, + }; + } + + + componentDidMount() { + // Init the select value if type === "select" + if (this.props.type === 'select' && !isEmpty(this.props.selectOptions) && this.props.selectOptions[0].value !== '') { + const target = { name: this.props.name, value: this.props.selectOptions[0].value }; + this.props.handleChange({ target }); + } + + if (this.props.value && !isEmpty(this.props.value)) { + this.setState({ hasInitialValue: true }); + } + + if (!isEmpty(this.props.errors)) { + this.setState({ errors: this.props.errors }); + } + } + + componentWillReceiveProps(nextProps) { + if (this.props.type === 'select' && this.props.selectOptionsFetchSucceeded !== nextProps.selectOptionsFetchSucceeded && nextProps.selectOptions[0].value !== '') { + const target = { name: nextProps.name, value: nextProps.selectOptions[0].value }; + this.props.handleChange({ target }); + } + + // Check if errors have been updated during validations + if (this.props.didCheckErrors !== nextProps.didCheckErrors) { + + // Remove from the state errors that are already set + const errors = isEmpty(nextProps.errors) ? [] : nextProps.errors; + this.setState({ errors }); + } + } + + handleBlur = ({ target }) => { + // prevent error display if input is initially empty + if (!isEmpty(target.value) || this.state.hasInitialValue) { + // validates basic string validations + // add custom logic here such as alerts... + const errors = this.validate(target.value); + + this.setState({ errors, hasInitialValue: true }); + } + } + + validate = (value) => { + let errors = []; + // handle i18n + const requiredError = { id: `${this.props.pluginID}.error.validation.required` }; + mapKeys(this.props.validations, (validationValue, validationKey) => { + switch (validationKey) { + case 'max': + if (parseInt(value, 10) > validationValue) { + errors.push({ id: `${this.props.pluginID}.error.validation.max` }); + } + break; + case 'maxLength': + if (value.length > validationValue) { + errors.push({ id: `${this.props.pluginID}.error.validation.maxLength` }); + } + break; + case 'min': + if (parseInt(value, 10) < validationValue) { + errors.push({ id: `${this.props.pluginID}.error.validation.min` }); + } + break; + case 'minLength': + if (value.length < validationValue) { + errors.push({ id: `${this.props.pluginID}.error.validation.minLength` }); + } + break; + case 'required': + if (value.length === 0) { + errors.push({ id: `${this.props.pluginID}.error.validation.required` }); + } + break; + case 'regex': + if (!new RegExp(validationValue).test(value)) { + errors.push({ id: `${this.props.pluginID}.error.validation.regex` }); + } + break; + default: + errors = []; + } + }); + + if (includes(errors, requiredError)) { + errors = reject(errors, (error) => error !== requiredError); + } + return errors; + } + + + handleChangeCheckbox = (e) => { + const target = { + type: e.target.type, + value: !this.props.value, + name: e.target.name, + }; + + this.props.handleChange({ target }); + } + + renderErrors = (errorStyles) => { // eslint-disable-line consistent-return + if (!this.props.noErrorsDescription) { + const divStyle = errorStyles || styles.errorContainer; + return ( + map(this.state.errors, (error, key) => { + const displayError = isObject(error) && error.id + ? + : error; + return ( +
    {displayError}
    + ); + }) + ); + } + } + + renderInputCheckbox = (requiredClass, inputDescription) => { + const title = !isEmpty(this.props.title) ?
    : ''; + const spacer = !inputDescription ?
    :
    ; + + return ( +
    +
    + {title} + + {(message) => ( + + )} + +
    + {inputDescription} +
    +
    + {spacer} +
    + ) + } + + renderInputSelect = (requiredClass, inputDescription) => { + const spacer = !isEmpty(this.props.inputDescription) ?
    :
    ; + return ( +
    + + +
    + {inputDescription} +
    + {spacer} +
    + ); + + } + + renderInputTextArea = (requiredClass, bootStrapClassDanger, inputDescription, handleBlur) => { + let spacer = !isEmpty(this.props.inputDescription) ?
    :
    ; + + if (!this.props.noErrorsDescription && !isEmpty(this.state.errors)) { + spacer =
    ; + } + + return ( +
    + + + {(placeholder) => ( +