diff --git a/.gitignore b/.gitignore index 86a34a7b..0293f91f 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ vendor/ruby .ruby-gemset # Generated js bundles -/app/assets/javascripts/generated/* +/app/assets/webpack/ # Rubymine/IntelliJ .idea diff --git a/.scss-lint.yml b/.scss-lint.yml index 52b2a854..7371ca3e 100644 --- a/.scss-lint.yml +++ b/.scss-lint.yml @@ -2,7 +2,9 @@ scss_files: - 'app/assets/stylesheets/**/*.scss' - - 'client/assets/stylesheets/**/*.scss' + - 'client/app/**/*.scss' + +exclude: 'client/node_modules/**' linters: # BangFormat: @@ -132,8 +134,8 @@ linters: # enabled: true # max_depth: 3 # -# SelectorFormat: -# enabled: true + SelectorFormat: + enabled: false # convention: hyphenated_lowercase # or 'strict_BEM', or 'hyphenated_BEM', or 'snake_case', or 'camel_case', or a regex pattern # # Shorthand: diff --git a/.travis.yml b/.travis.yml index f38d2cd2..c8ab4a53 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,8 +18,6 @@ install: - nvm install 5.0 - nvm use 5.0 - npm install - - cd client && npm run build:client - - npm run build:server before_script: - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start diff --git a/Gemfile b/Gemfile index 9a4d81a9..ad9797db 100644 --- a/Gemfile +++ b/Gemfile @@ -87,6 +87,7 @@ end group :test do gem "coveralls", require: false gem "rspec-rails" + gem "rspec-retry" gem "capybara" gem "capybara-screenshot" gem "selenium-webdriver" diff --git a/Gemfile.lock b/Gemfile.lock index 99870124..8c16e6f0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -229,6 +229,8 @@ GEM rspec-expectations (~> 3.4.0) rspec-mocks (~> 3.4.0) rspec-support (~> 3.4.0) + rspec-retry (0.4.5) + rspec-core rspec-support (3.4.1) rubocop (0.35.1) astrolabe (~> 1.3) @@ -350,6 +352,7 @@ DEPENDENCIES rails_12factor react_on_rails rspec-rails + rspec-retry rubocop ruby-lint sass-rails diff --git a/Procfile.dev b/Procfile.dev index 6fb953b3..7912102b 100644 --- a/Procfile.dev +++ b/Procfile.dev @@ -1,4 +1,11 @@ web: rails s -client: sh -c 'rm app/assets/javascripts/generated/* || true && cd client && npm run build:dev:client' + +# Run the hot reload server for client development +client: sh -c 'rm app/assets/webpack/* || true && cd client && HOT_RAILS_PORT=3500 npm run build:dev:client' + +# Keep the JS fresh for specs +client-spec: sh -c 'cd client && npm run build:test:client' + +# Keep the JS fresh for server rendering server: sh -c 'cd client && npm run build:dev:server' -hot: sh -c 'cd client && npm start' +hot: sh -c 'cd client && HOT_PORT=4000 npm start' diff --git a/README.md b/README.md index 6fb8b75c..3b8a0a6d 100644 --- a/README.md +++ b/README.md @@ -127,11 +127,14 @@ Note that it's important to run the Rails server on a different port than the no # Webpack configuration ## Config Files + - `webpack.client.base.config.js`: Common configuration file to minimize code duplication for client.rails and client.hot. -- `webpack.client.rails.config.js`: Used to generate the Rails bundles for Rails use. -- `webpack.client.hot.config.js`: Used by server.js to run the Webpack Dev server. -- `webpack.server.rails.config.js`: Common configuration file to minimize code duplication -between the HMR and Rails configurations. +- `webpack.client.rails.build.config.js`: Client side js bundle. +- `webpack.server.rails.build.config.js`: Server side js bundle + +These are used for hot reloading (Webpack Dev Server): +- `webpack.client.rails.hot.config.js`: Used to generate the Rails bundles for Rails use so you get hot reloading within your Rails app. +- `webpack.client.hot.config.js`: Used by server.js to run the Webpack Dev server for stubbing the api end points ## Webpack Resources - Good overview: [Pete Hunt's Webpack Howto](https://github.com/petehunt/webpack-howto) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application_dev.js similarity index 66% rename from app/assets/javascripts/application.js rename to app/assets/javascripts/application_dev.js index 8bba0bba..45981e68 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application_dev.js @@ -10,15 +10,14 @@ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details // about supported directives. -// CRITICAL that generated/vendor-bundle must be BEFORE bootstrap-sprockets and turbolinks since it is -// exposing jQuery and jQuery-ujs -//= require generated/vendor-bundle -//= require generated/app-bundle +// All webpack assets in development will be loaded via webpack dev server +// It's important to include them in layout view above this asset +// b/c it exposes jQuery for turbolinks and another non-webpack JS (if any) -// Next two depend on jQuery +// This one depends on jQuery //= require turbolinks -//= require bootstrap-sprockets +// This will soon be removed as it will be in vendor-bundle with react_on_rails 2.0 //= require react_on_rails //= require rails_startup diff --git a/app/assets/javascripts/application_prod.js b/app/assets/javascripts/application_prod.js new file mode 100644 index 00000000..9ca7530a --- /dev/null +++ b/app/assets/javascripts/application_prod.js @@ -0,0 +1,13 @@ +// This file is used in production to server generated JS assets. In development mode, we use the Webpack Dev Server +// to provide assets. This allows for hot reloading of the JS and CSS. +// See app/helpers/application_helper.rb for how the correct assets file is picked based on the Rails environment. +// Those helpers are used here: app/views/layouts/application.html.erb + +// These assets are located in app/assets/webpack directory +// CRITICAL that webpack/vendor-bundle must be BEFORE turbolinks +// since it is exposing jQuery and jQuery-ujs +//= require vendor-bundle +//= require app-bundle + +// Non-webpack assets incl turbolinks +//= require application_dev diff --git a/app/assets/stylesheets/_bootstrap-custom.scss b/app/assets/stylesheets/_bootstrap-custom.scss deleted file mode 100644 index f2708cb7..00000000 --- a/app/assets/stylesheets/_bootstrap-custom.scss +++ /dev/null @@ -1,59 +0,0 @@ -// Customizations - needs to be imported first! -// The _bootstrap-variables-customization.scss file is located under -// client/assets/stylesheets, which has been added to the Rails asset -// pipeline search path. See config/application.rb. -@import 'bootstrap-variables-customization'; - -// Core variables and mixins -@import 'bootstrap/variables'; -@import 'bootstrap/mixins'; - -// Reset and dependencies -@import 'bootstrap/normalize'; -@import 'bootstrap/print'; -@import 'bootstrap/glyphicons'; - -// Core CSS -@import 'bootstrap/scaffolding'; -@import 'bootstrap/type'; -@import 'bootstrap/code'; -@import 'bootstrap/grid'; -@import 'bootstrap/tables'; -@import 'bootstrap/forms'; -@import 'bootstrap/buttons'; - -// Components -@import 'bootstrap/component-animations'; -@import 'bootstrap/dropdowns'; -@import 'bootstrap/button-groups'; -@import 'bootstrap/input-groups'; -@import 'bootstrap/navs'; -@import 'bootstrap/navbar'; -@import 'bootstrap/breadcrumbs'; -@import 'bootstrap/pagination'; -@import 'bootstrap/pager'; -@import 'bootstrap/labels'; -@import 'bootstrap/badges'; -//@import 'bootstrap/jumbotron'; // excluding as an example -@import 'bootstrap/thumbnails'; -@import 'bootstrap/alerts'; -//@import 'bootstrap/progress-bars'; // excluding as an example -@import 'bootstrap/media'; -@import 'bootstrap/list-group'; -@import 'bootstrap/panels'; -@import 'bootstrap/responsive-embed'; -@import 'bootstrap/wells'; -@import 'bootstrap/close'; - -// Components w/ JavaScript -@import 'bootstrap/modals'; // excluding as an example -@import 'bootstrap/tooltip'; -@import 'bootstrap/popovers'; -@import 'bootstrap/carousel'; // excluding as an example - -// Utility classes -@import 'bootstrap/utilities'; -@import 'bootstrap/responsive-utilities'; - -// This must come after all the boostrap styles are loaded so that these styles can override those. -@import 'app-styling-post-bootstrap-loading'; diff --git a/app/assets/stylesheets/application.css.scss b/app/assets/stylesheets/application.css.scss deleted file mode 100644 index e2670123..00000000 --- a/app/assets/stylesheets/application.css.scss +++ /dev/null @@ -1,12 +0,0 @@ -// This variable $rails is used by bootstrap-custom so that fonts are loaded slightly differently -// with Rails vs. the Webpack Dev Server -$rails: true; - -// Those scss files are located under client/assets/stylesheets, -// which has been added to the Rails asset pipeline search path. -// See config/application.rb. -@import 'bootstrap-custom'; -@import 'test-stylesheet'; -@import 'test-sass-stylesheet'; - -@import 'bootstrap-sprockets'; diff --git a/app/assets/stylesheets/application_dev.css.scss b/app/assets/stylesheets/application_dev.css.scss new file mode 100644 index 00000000..d880a065 --- /dev/null +++ b/app/assets/stylesheets/application_dev.css.scss @@ -0,0 +1,2 @@ +// Any non webpack assets can be imported here +// Others will be served via webpack-dev-server diff --git a/app/assets/stylesheets/application_prod.css.scss b/app/assets/stylesheets/application_prod.css.scss new file mode 100644 index 00000000..8de4dcc0 --- /dev/null +++ b/app/assets/stylesheets/application_prod.css.scss @@ -0,0 +1,6 @@ +// These assets are located in app/assets/webpack directory +@import 'vendor-bundle'; +@import 'app-bundle'; + +// Non-webpack assets +@import 'application_dev'; diff --git a/app/assets/stylesheets/scaffolds.css.scss b/app/assets/stylesheets/scaffolds.css.scss deleted file mode 100644 index 5bb34c9a..00000000 --- a/app/assets/stylesheets/scaffolds.css.scss +++ /dev/null @@ -1,77 +0,0 @@ -// scss-lint:disable SelectorFormat, IdSelector -body { - background-color: #FFFFFF; - color: #333333; - font-family: verdana, arial, helvetica, sans-serif; - font-size: 13px; - line-height: 18px; -} - -p, -ol, -ul, -td { - font-family: verdana, arial, helvetica, sans-serif; - font-size: 13px; - line-height: 18px; -} - -pre { - background-color: #EEEEEE; - font-size: 11px; - padding: 10px; -} - -a { - color: #000000; - - &:visited { - color: #666666; - } - - &:hover { - background-color: #000000; - color: #FFFFFF; - } -} - -div { - &.field, - &.actions { - margin-bottom: 10px; - } -} - -#notice { - color: green; -} - -.field_with_errors { - background-color: red; - display: table; - padding: 2px; -} - -#error_explanation { - background-color: #F0F0F0; - border: 2px solid red; - margin-bottom: 20px; - padding: 7px 7px 0; - width: 450px; - - h2 { - background-color: #CC0000; - color: #FFFFFF; - font-size: 12px; - font-weight: bold; - margin: -7px; - margin-bottom: 0; - padding: 5px 5px 5px 15px; - text-align: left; - } - - ul li { - font-size: 12px; - list-style: square; - } -} diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index de6be794..5c79a21d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1,2 +1,14 @@ module ApplicationHelper + # TODO: MOVE TO helper in react_on_rails + # See application.html.erb for usage example + def env_javascript_include_tag(prod_asset, dev_asset, params = {}) + asset_file = !Rails.env.development? ? prod_asset : dev_asset + return javascript_include_tag(asset_file, params) if asset_file + end + + # TODO: MOVE TO helper in react_on_rails + def env_stylesheet_link_tag(prod_asset, dev_asset, params = {}) + asset_file = !Rails.env.development? ? prod_asset : dev_asset + return stylesheet_link_tag(asset_file, params) if asset_file + end end diff --git a/app/views/comments/show.html.erb b/app/views/comments/show.html.erb index 64ddc735..2e77ff5e 100644 --- a/app/views/comments/show.html.erb +++ b/app/views/comments/show.html.erb @@ -1,12 +1,12 @@
<%= notice %>
-+
Author: <%= @comment.author %>
-+
Text: <%= @comment.text %>
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 07b15239..92c9568b 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -2,8 +2,10 @@- - Example of styling using image-url and Open Sans Light custom font -
- - - - Rails On Maui on Twitter - -+
+
);
}
}
-
-export default Comment;
diff --git a/client/app/bundles/comments/components/CommentBox/CommentList/Comment/Comment.scss b/client/app/bundles/comments/components/CommentBox/CommentList/Comment/Comment.scss
new file mode 100644
index 00000000..9d156501
--- /dev/null
+++ b/client/app/bundles/comments/components/CommentBox/CommentList/Comment/Comment.scss
@@ -0,0 +1,11 @@
+.comment {
+
+ .commentAuthor {
+ color: $comment-author-color; // <--- Loaded via sass-resources-loader
+ }
+
+ p {
+ color: $comment-text-color; // <-- This one also
+ }
+
+}
diff --git a/client/test/components/Comment_spec.jsx b/client/app/bundles/comments/components/CommentBox/CommentList/Comment/Comment.spec.jsx
similarity index 64%
rename from client/test/components/Comment_spec.jsx
rename to client/app/bundles/comments/components/CommentBox/CommentList/Comment/Comment.spec.jsx
index 5efb21e4..2f91f68b 100644
--- a/client/test/components/Comment_spec.jsx
+++ b/client/app/bundles/comments/components/CommentBox/CommentList/Comment/Comment.spec.jsx
@@ -1,5 +1,6 @@
-import { React, expect, TestUtils } from '../test_helper';
-import Comment from '../../app/bundles/Comments/components/Comment';
+import { React, expect, TestUtils } from 'libs/testHelper';
+
+import Comment from './Comment';
const {
renderIntoDocument,
@@ -13,12 +14,13 @@ describe('Comment', () => {
);
- const comment = findRenderedDOMComponentWithTag(component, 'div');
- expect(comment.className).to.equal('comment');
- const author = findRenderedDOMComponentWithTag(component, 'h2');
- expect(author.className).to.equal('comment-author');
+ // TODO: Setup testing of CSS Modules classNames
+ // const comment = findRenderedDOMComponentWithTag(component, 'div');
+ // expect(comment.className).to.equal('comment');
+ // const author = findRenderedDOMComponentWithTag(component, 'h2');
+ // expect(author.className).to.equal('comment-author');
const text = findRenderedDOMComponentWithTag(component, 'span');
- expect(text.className).to.equal('comment-text');
+ expect(text.className).to.equal('js-comment-text');
});
it('shows the author', () => {
@@ -26,7 +28,7 @@ describe('Comment', () => {
);
- const author = findRenderedDOMComponentWithClass(component, 'comment-author');
+ const author = findRenderedDOMComponentWithClass(component, 'js-comment-author');
expect(author.textContent).to.equal('Frank');
});
@@ -35,7 +37,7 @@ describe('Comment', () => {
);
- const comment = findRenderedDOMComponentWithClass(component, 'comment-text');
+ const comment = findRenderedDOMComponentWithClass(component, 'js-comment-text');
expect(comment.textContent).to.equal('Hi!\n');
});
});
diff --git a/client/app/bundles/Comments/components/CommentList.jsx b/client/app/bundles/comments/components/CommentBox/CommentList/CommentList.jsx
similarity index 72%
rename from client/app/bundles/Comments/components/CommentList.jsx
rename to client/app/bundles/comments/components/CommentBox/CommentList/CommentList.jsx
index d1e6157b..a889525a 100644
--- a/client/app/bundles/Comments/components/CommentList.jsx
+++ b/client/app/bundles/comments/components/CommentBox/CommentList/CommentList.jsx
@@ -2,27 +2,27 @@ import React, { PropTypes } from 'react';
import Immutable from 'immutable';
import Alert from 'react-bootstrap/lib/Alert';
import ReactCSSTransitionGroup from 'react/lib/ReactCSSTransitionGroup';
+import _ from 'lodash';
-import Comment from './Comment';
+import Comment from './Comment/Comment';
-class CommentList extends React.Component {
- constructor(props, context) {
- super(props, context);
- this.state = {};
-
- this._errorWarning = this._errorWarning.bind(this);
- }
-
- static displayName = 'CommentList';
+export default class CommentList extends React.Component {
static propTypes = {
$$comments: PropTypes.instanceOf(Immutable.List).isRequired,
error: PropTypes.any,
+ cssTransitionGroupClassNames: PropTypes.object.isRequired,
};
+ constructor(props, context) {
+ super(props, context);
+ this.state = {};
+ _.bindAll(this, '_errorWarning');
+ }
+
_errorWarning() {
// If there is no error, there is nothing to add to the DOM
- if (!this.props.error) return undefined;
+ if (!this.props.error) return null;
return (
Comments could not be retrieved.
@@ -32,7 +32,7 @@ class CommentList extends React.Component {
}
render() {
- const { $$comments } = this.props;
+ const { $$comments, cssTransitionGroupClassNames } = this.props;
const commentNodes = $$comments.reverse().map($$comment => {
// `key` is a React-specific concept and is not mandatory for the
// purpose of this tutorial. if you're curious, see more here:
@@ -49,7 +49,7 @@ class CommentList extends React.Component {
return (
@@ -57,11 +57,11 @@ class CommentList extends React.Component {
{commentNodes}
@@ -69,5 +69,3 @@ class CommentList extends React.Component {
);
}
}
-
-export default CommentList;
diff --git a/client/test/components/CommentList_spec.jsx b/client/app/bundles/comments/components/CommentBox/CommentList/CommentList.spec.jsx
similarity index 83%
rename from client/test/components/CommentList_spec.jsx
rename to client/app/bundles/comments/components/CommentBox/CommentList/CommentList.spec.jsx
index 82c0bd7c..35e45f91 100644
--- a/client/test/components/CommentList_spec.jsx
+++ b/client/app/bundles/comments/components/CommentBox/CommentList/CommentList.spec.jsx
@@ -1,7 +1,8 @@
-import { React, expect, TestUtils } from '../test_helper';
+import { React, expect, TestUtils } from 'libs/testHelper';
import { List, Map } from 'immutable';
-import CommentList from '../../app/bundles/Comments/components/CommentList';
-import Comment from '../../app/bundles/Comments/components/Comment';
+
+import CommentList from './CommentList';
+import Comment from './Comment/Comment';
const {
renderIntoDocument,
diff --git a/client/app/bundles/comments/components/CommentScreen/CommentScreen.jsx b/client/app/bundles/comments/components/CommentScreen/CommentScreen.jsx
new file mode 100644
index 00000000..b83bd07f
--- /dev/null
+++ b/client/app/bundles/comments/components/CommentScreen/CommentScreen.jsx
@@ -0,0 +1,56 @@
+import React, { PropTypes } from 'react';
+
+import CommentBox from '../CommentBox/CommentBox';
+
+import css from './CommentScreen.scss';
+
+export default class CommentScreen extends React.Component {
+
+ static propTypes = {
+ actions: PropTypes.object.isRequired,
+ data: PropTypes.object.isRequired,
+ locationState: PropTypes.object,
+ };
+
+ _renderNotification() {
+ const { locationState } = this.props;
+
+ if (!locationState || !locationState.redirectFrom) return null;
+
+ return (
+
+ You've been redirected from {locationState.redirectFrom}
+
+ );
+ }
+
+ render() {
+ const { data, actions } = this.props;
+
+ return (
+
+ {this._renderNotification()}
+
+
+
+
+
+
+
+ );
+ }
+}
diff --git a/client/app/bundles/comments/components/CommentScreen/CommentScreen.scss b/client/app/bundles/comments/components/CommentScreen/CommentScreen.scss
new file mode 100644
index 00000000..1dc5a1eb
--- /dev/null
+++ b/client/app/bundles/comments/components/CommentScreen/CommentScreen.scss
@@ -0,0 +1,17 @@
+.notification {
+ padding: 1em 1.5em;
+}
+
+.logo {
+ background: url('./images/railsonmaui.png') no-repeat left bottom;
+ display: inline-block;
+ height: 40px;
+ margin-right: 10px;
+ width: 146px;
+}
+
+.twitterImage {
+ background: url('./images/twitter_64.png') no-repeat;
+ height: 64px;
+ width: 64px;
+}
diff --git a/app/assets/images/railsonmaui.png b/client/app/bundles/comments/components/CommentScreen/images/railsonmaui.png
similarity index 100%
rename from app/assets/images/railsonmaui.png
rename to client/app/bundles/comments/components/CommentScreen/images/railsonmaui.png
diff --git a/app/assets/images/twitter_64.png b/client/app/bundles/comments/components/CommentScreen/images/twitter_64.png
similarity index 100%
rename from app/assets/images/twitter_64.png
rename to client/app/bundles/comments/components/CommentScreen/images/twitter_64.png
diff --git a/client/app/bundles/Comments/components/SimpleCommentScreen.jsx b/client/app/bundles/comments/components/SimpleCommentScreen/SimpleCommentScreen.jsx
similarity index 54%
rename from client/app/bundles/Comments/components/SimpleCommentScreen.jsx
rename to client/app/bundles/comments/components/SimpleCommentScreen/SimpleCommentScreen.jsx
index f8e00576..bda4baa5 100644
--- a/client/app/bundles/Comments/components/SimpleCommentScreen.jsx
+++ b/client/app/bundles/comments/components/SimpleCommentScreen/SimpleCommentScreen.jsx
@@ -1,12 +1,14 @@
import React from 'react';
import Immutable from 'immutable';
import request from 'axios';
-import CommentForm from './CommentForm';
-import CommentList from './CommentList';
-import metaTagsManager from '../utils/metaTagsManager';
import _ from 'lodash';
-class SimpleCommentScreen extends React.Component {
+import metaTagsManager from 'libs/metaTagsManager';
+import CommentForm from '../CommentBox/CommentForm/CommentForm';
+import CommentList from '../CommentBox/CommentList/CommentList';
+
+export default class SimpleCommentScreen extends React.Component {
+
constructor(props, context) {
super(props, context);
this.state = {
@@ -19,16 +21,17 @@ class SimpleCommentScreen extends React.Component {
_.bindAll(this, '_fetchComments', '_handleCommentSubmit');
}
- static displayName = 'SimpleCommentScreen';
-
componentDidMount() {
this._fetchComments();
}
_fetchComments() {
- return request.get('comments.json', { responseType: 'json' })
- .then(res => this.setState({ $$comments: Immutable.fromJS(res.data) }))
- .catch(error => this.setState({ fetchCommentsError: error }));
+ return (
+ request
+ .get('comments.json', { responseType: 'json' })
+ .then(res => this.setState({ $$comments: Immutable.fromJS(res.data) }))
+ .catch(error => this.setState({ fetchCommentsError: error }))
+ );
}
_handleCommentSubmit(comment) {
@@ -41,22 +44,25 @@ class SimpleCommentScreen extends React.Component {
},
};
- return request.post('comments.json', { comment }, requestConfig)
- .then(() => {
- const { $$comments } = this.state;
- const $$comment = Immutable.fromJS(comment);
+ return (
+ request
+ .post('comments.json', { comment }, requestConfig)
+ .then(() => {
+ const { $$comments } = this.state;
+ const $$comment = Immutable.fromJS(comment);
- this.setState({
- $$comments: $$comments.push($$comment),
- ajaxSending: false,
- });
- })
- .catch(error => {
- this.setState({
- submitCommentError: error,
- ajaxSending: false,
- });
- });
+ this.setState({
+ $$comments: $$comments.push($$comment),
+ ajaxSending: false,
+ });
+ })
+ .catch(error => {
+ this.setState({
+ submitCommentError: error,
+ ajaxSending: false,
+ });
+ })
+ );
}
render() {
@@ -69,7 +75,7 @@ class SimpleCommentScreen extends React.Component {
+
);
}
}
// Don't forget to actually use connect!
-export default connect(select)(NonRouterCommentScreen);
+export default connect(select)(NonRouterCommentsContainer);
diff --git a/client/app/bundles/Comments/components/RouterCommentScreen.jsx b/client/app/bundles/comments/containers/RouterCommentsContainer.jsx
similarity index 60%
rename from client/app/bundles/Comments/components/RouterCommentScreen.jsx
rename to client/app/bundles/comments/containers/RouterCommentsContainer.jsx
index bc50004a..fead43dc 100644
--- a/client/app/bundles/Comments/components/RouterCommentScreen.jsx
+++ b/client/app/bundles/comments/containers/RouterCommentsContainer.jsx
@@ -1,5 +1,5 @@
import React, { PropTypes } from 'react';
-import CommentScreen from './CommentScreen';
+import CommentScreen from '../components/CommentScreen/CommentScreen';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import * as commentsActionCreators from '../actions/commentsActionCreators';
@@ -9,7 +9,8 @@ function select(state) {
return { data: state.$$commentsStore };
}
-class RouterCommentScreen extends React.Component {
+class RouterCommentsContainer extends React.Component {
+
static propTypes = {
dispatch: PropTypes.func.isRequired,
data: PropTypes.object.isRequired,
@@ -18,29 +19,16 @@ class RouterCommentScreen extends React.Component {
}).isRequired,
};
- _renderNotification() {
- const locationState = this.props.location.state;
- if (!locationState || !locationState.redirectFrom) return null;
-
- return (
-
- You've been redirected from {locationState.redirectFrom}
-
- );
- }
-
render() {
const { dispatch, data } = this.props;
const actions = bindActionCreators(commentsActionCreators, dispatch);
+ const locationState = this.props.location.state;
return (
-
- {this._renderNotification()}
-
-
+
);
}
}
// Don't forget to actually use connect!
-export default connect(select)(RouterCommentScreen);
+export default connect(select)(RouterCommentsContainer);
diff --git a/client/app/bundles/Comments/layout/Layout.jsx b/client/app/bundles/comments/layout/Layout.jsx
similarity index 63%
rename from client/app/bundles/Comments/layout/Layout.jsx
rename to client/app/bundles/comments/layout/Layout.jsx
index db4a0769..cb24ceaf 100644
--- a/client/app/bundles/Comments/layout/Layout.jsx
+++ b/client/app/bundles/comments/layout/Layout.jsx
@@ -1,6 +1,8 @@
import React, { PropTypes } from 'react';
import { IndexLink, Link } from 'react-router';
+import './Layout.scss';
+
export default class Layout extends React.Component {
static propTypes = {
@@ -13,13 +15,20 @@ export default class Layout extends React.Component {
-
-
Comments (Root URL)
+
+ Comments (Root URL)
+
-
- Test React Router ('/react-router')
+
+ Test React Router ('/react-router')
+
-
- Test Redirect (url to '/react-router/redirect' which goes to root '/')
+
+ Test Redirect
+ (url to '/react-router/redirect' which goes to root '/')
+
diff --git a/client/app/bundles/comments/layout/Layout.scss b/client/app/bundles/comments/layout/Layout.scss
new file mode 100644
index 00000000..fa3ff596
--- /dev/null
+++ b/client/app/bundles/comments/layout/Layout.scss
@@ -0,0 +1,23 @@
+// This way we turn CSS Modules off and apply these css rules globaly
+:global {
+
+ body {
+ padding-top: 20px;
+ }
+
+ .active:visited,
+ .active {
+ color: purple;
+ font-weight: bold;
+ text-decoration: underline;
+ }
+
+ // scss-lint:disable IdSelector
+ #nav.affix {
+ position: fixed;
+ top: 3px;
+ width: 80%;
+ z-index: 10;
+ }
+
+}
diff --git a/client/app/bundles/Comments/reducers/commentsReducer.js b/client/app/bundles/comments/reducers/commentsReducer.js
similarity index 100%
rename from client/app/bundles/Comments/reducers/commentsReducer.js
rename to client/app/bundles/comments/reducers/commentsReducer.js
diff --git a/client/app/bundles/Comments/reducers/index.js b/client/app/bundles/comments/reducers/index.js
similarity index 100%
rename from client/app/bundles/Comments/reducers/index.js
rename to client/app/bundles/comments/reducers/index.js
diff --git a/client/app/bundles/Comments/routes/routes.jsx b/client/app/bundles/comments/routes/routes.jsx
similarity index 68%
rename from client/app/bundles/Comments/routes/routes.jsx
rename to client/app/bundles/comments/routes/routes.jsx
index eea009ea..8ae88e9e 100644
--- a/client/app/bundles/Comments/routes/routes.jsx
+++ b/client/app/bundles/comments/routes/routes.jsx
@@ -1,14 +1,14 @@
import React from 'react';
import { Route, IndexRoute } from 'react-router';
import Layout from '../layout/Layout';
-import TestReactRouter from '../components/TestReactRouter';
-import TestReactRouterRedirect from '../components/TestReactRouterRedirect';
-import RouterCommentScreen from '../components/RouterCommentScreen';
+import TestReactRouter from '../components/TestReactRouter/TestReactRouter';
+import TestReactRouterRedirect from '../components/TestReactRouterRedirect/TestReactRouterRedirect';
+import RouterCommentsContainer from '../containers/RouterCommentsContainer';
export default (
{
+export default props => {
const store = createStore(props);
return (
-
+
);
};
-
-// Export is needed for the hot reload server
-export default App;
diff --git a/client/app/bundles/Comments/startup/ClientRouterApp.jsx b/client/app/bundles/comments/startup/ClientRouterApp.jsx
similarity index 79%
rename from client/app/bundles/Comments/startup/ClientRouterApp.jsx
rename to client/app/bundles/comments/startup/ClientRouterApp.jsx
index f31baf22..8faf1a28 100644
--- a/client/app/bundles/Comments/startup/ClientRouterApp.jsx
+++ b/client/app/bundles/comments/startup/ClientRouterApp.jsx
@@ -6,7 +6,7 @@ import createHistory from 'history/lib/createBrowserHistory';
import createStore from '../store/commentsStore';
import routes from '../routes/routes';
-const RouterApp = (props, location) => {
+export default (props, location) => {
const store = createStore(props);
const history = createHistory();
@@ -16,6 +16,3 @@ const RouterApp = (props, location) => {
);
};
-
-// Export is needed for the hot reload server
-export default RouterApp;
diff --git a/client/app/bundles/Comments/startup/ServerApp.jsx b/client/app/bundles/comments/startup/ServerApp.jsx
similarity index 59%
rename from client/app/bundles/Comments/startup/ServerApp.jsx
rename to client/app/bundles/comments/startup/ServerApp.jsx
index 38664e8b..22b32b2f 100644
--- a/client/app/bundles/Comments/startup/ServerApp.jsx
+++ b/client/app/bundles/comments/startup/ServerApp.jsx
@@ -2,15 +2,13 @@ import React from 'react';
import { Provider } from 'react-redux';
import createStore from '../store/commentsStore';
-import NonRouterCommentScreen from '../components/NonRouterCommentScreen';
+import NonRouterCommentsContainer from '../containers/NonRouterCommentsContainer';
-const App = props => {
+export default props => {
const store = createStore(props);
return (
-
+
);
};
-
-export default App;
diff --git a/client/app/bundles/Comments/startup/ServerRouterApp.jsx b/client/app/bundles/comments/startup/ServerRouterApp.jsx
similarity index 94%
rename from client/app/bundles/Comments/startup/ServerRouterApp.jsx
rename to client/app/bundles/comments/startup/ServerRouterApp.jsx
index f89e4dcc..8cf27bfa 100644
--- a/client/app/bundles/Comments/startup/ServerRouterApp.jsx
+++ b/client/app/bundles/comments/startup/ServerRouterApp.jsx
@@ -5,7 +5,7 @@ import { match, RoutingContext } from 'react-router';
import createStore from '../store/commentsStore';
import routes from '../routes/routes';
-const RouterApp = (props, location) => {
+export default (props, location) => {
const store = createStore(props);
let error;
@@ -33,5 +33,3 @@ const RouterApp = (props, location) => {
);
};
-
-export default RouterApp;
diff --git a/client/app/bundles/Comments/startup/clientGlobals.jsx b/client/app/bundles/comments/startup/clientGlobals.jsx
similarity index 90%
rename from client/app/bundles/Comments/startup/clientGlobals.jsx
rename to client/app/bundles/comments/startup/clientGlobals.jsx
index 8ef55c54..ce05dbd5 100644
--- a/client/app/bundles/Comments/startup/clientGlobals.jsx
+++ b/client/app/bundles/comments/startup/clientGlobals.jsx
@@ -1,6 +1,6 @@
import App from './ClientApp';
import RouterApp from './ClientRouterApp';
-import SimpleCommentScreen from '../components/SimpleCommentScreen';
+import SimpleCommentScreen from '../components/SimpleCommentScreen/SimpleCommentScreen';
window.App = App;
window.RouterApp = RouterApp;
diff --git a/client/app/bundles/Comments/startup/serverGlobals.jsx b/client/app/bundles/comments/startup/serverGlobals.jsx
similarity index 100%
rename from client/app/bundles/Comments/startup/serverGlobals.jsx
rename to client/app/bundles/comments/startup/serverGlobals.jsx
diff --git a/client/app/bundles/Comments/store/commentsStore.js b/client/app/bundles/comments/store/commentsStore.js
similarity index 90%
rename from client/app/bundles/Comments/store/commentsStore.js
rename to client/app/bundles/comments/store/commentsStore.js
index 7a71ad8e..c7e7516a 100644
--- a/client/app/bundles/Comments/store/commentsStore.js
+++ b/client/app/bundles/comments/store/commentsStore.js
@@ -1,6 +1,6 @@
import { compose, createStore, applyMiddleware, combineReducers } from 'redux';
import thunkMiddleware from 'redux-thunk';
-import loggerMiddleware from 'lib/middlewares/loggerMiddleware';
+import loggerMiddleware from 'libs/middlewares/loggerMiddleware';
import reducers from '../reducers';
import { initalStates } from '../reducers';
diff --git a/client/app/libs/metaTagsManager.js b/client/app/libs/metaTagsManager.js
new file mode 100644
index 00000000..9a64e58d
--- /dev/null
+++ b/client/app/libs/metaTagsManager.js
@@ -0,0 +1,15 @@
+import _ from 'lodash';
+
+export default {
+
+ /**
+ * Get CSRF Token from the DOM.
+ *
+ * @returns {String} - CSRF Token.
+ */
+ getCSRFToken() {
+ const token = _.find(document.querySelectorAll('meta'), 'name', 'csrf-token');
+ return token ? token.content : null;
+ },
+
+};
diff --git a/client/app/lib/middlewares/loggerMiddleware.js b/client/app/libs/middlewares/loggerMiddleware.js
similarity index 100%
rename from client/app/lib/middlewares/loggerMiddleware.js
rename to client/app/libs/middlewares/loggerMiddleware.js
diff --git a/client/app/bundles/Comments/utils/commentsManager.js b/client/app/libs/requestsManager.js
similarity index 53%
rename from client/app/bundles/Comments/utils/commentsManager.js
rename to client/app/libs/requestsManager.js
index 41f7c8a1..2b865103 100644
--- a/client/app/bundles/Comments/utils/commentsManager.js
+++ b/client/app/libs/requestsManager.js
@@ -3,14 +3,14 @@ import metaTagsManager from './metaTagsManager';
const API_URL = 'comments.json';
-const CommentsManager = {
+export default {
/**
- * Retrieve comments from server using AJAX call.
+ * Retrieve list of entities from server using AJAX call.
*
- * @returns {Promise} - result of ajax call.
+ * @returns {Promise} - Result of ajax call.
*/
- fetchComments() {
+ fetchEntities() {
return request({
method: 'GET',
url: API_URL,
@@ -19,12 +19,12 @@ const CommentsManager = {
},
/**
- * Submit new comment to server using AJAX call.
+ * Submit new entity to server using AJAX call.
*
- * @param {Object} comment - Comment body to post.
- * @returns {Promise} - result of ajax call.
+ * @param {Object} entity - Request body to post.
+ * @returns {Promise} - Result of ajax call.
*/
- submitComment(comment) {
+ submitEntity(entity) {
return request({
method: 'POST',
url: API_URL,
@@ -32,10 +32,8 @@ const CommentsManager = {
headers: {
'X-CSRF-Token': metaTagsManager.getCSRFToken(),
},
- data: { comment },
+ data: entity,
});
},
};
-
-export default CommentsManager;
diff --git a/client/test/test_helper.js b/client/app/libs/testHelper.js
similarity index 100%
rename from client/test/test_helper.js
rename to client/app/libs/testHelper.js
diff --git a/client/app/libs/testNullCompiler.js b/client/app/libs/testNullCompiler.js
new file mode 100644
index 00000000..c2826127
--- /dev/null
+++ b/client/app/libs/testNullCompiler.js
@@ -0,0 +1,8 @@
+const noop = () => null;
+
+require.extensions['.css'] = noop;
+require.extensions['.scss'] = noop;
+require.extensions['.png'] = noop;
+require.extensions['.jpg'] = noop;
+require.extensions['.jpeg'] = noop;
+require.extensions['.gif'] = noop;
diff --git a/client/assets/fonts b/client/assets/fonts
deleted file mode 120000
index 7a488174..00000000
--- a/client/assets/fonts
+++ /dev/null
@@ -1 +0,0 @@
-../../app/assets/fonts
\ No newline at end of file
diff --git a/client/assets/images b/client/assets/images
deleted file mode 120000
index 67b6dd19..00000000
--- a/client/assets/images
+++ /dev/null
@@ -1 +0,0 @@
-../../app/assets/images
\ No newline at end of file
diff --git a/client/assets/stylesheets/_app-styling-post-bootstrap-loading.scss b/client/assets/stylesheets/_app-styling-post-bootstrap-loading.scss
deleted file mode 100644
index f27addf0..00000000
--- a/client/assets/stylesheets/_app-styling-post-bootstrap-loading.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-// This file is used as part of the bootstrap-sass-loader customization
-// ## Baseline
-
-// Included from bootstrap-sass.config.js
-body {
- padding-top: 20px;
-}
-
-.doc-content {
- padding-top: 10px;
-}
-
-.logo {
- background: img-url('railsonmaui.png') no-repeat left bottom;
- display: inline-block;
- height: 40px;
- margin-right: 10px;
- width: 146px;
-}
-
-.twitter-image {
- background: img-url('twitter_64.png') no-repeat;
- height: 64px;
- width: 64px;
-}
-
-.open-sans-light {
- font-family: 'OpenSans-Light', sans-serif; // making use of custom fonts
-}
-
-// ## Nav
-// When nav is affixed, set it's position and size.
-
-// scss-lint:disable IdSelector
-#nav.affix {
- position: fixed;
- top: 3px;
- width: 80%;
- z-index: 10;
-}
-
-.element-enter {
- opacity: 0.01;
-
- &.element-enter-active {
- opacity: 1;
- transition: opacity 0.5s ease-in;
- }
-}
-
-.element-leave {
- opacity: 1;
-
- &.element-leave-active {
- opacity: 0.01;
- transition: opacity 0.5s ease-in;
- }
-}
-
-.active:visited,
-.active {
- color: purple;
- font-weight: bold;
- text-decoration: underline;
-}
diff --git a/client/assets/stylesheets/_bootstrap-variables-customization.scss b/client/assets/stylesheets/_bootstrap-variables-customization.scss
deleted file mode 100644
index 003f0b6d..00000000
--- a/client/assets/stylesheets/_bootstrap-variables-customization.scss
+++ /dev/null
@@ -1,34 +0,0 @@
-$rails: false !default;
-// defaults to false (e.g. webpack environment)
-
-// These variables get loaded BEFORE Bootstrap thus overriding them in Bootstrap.
-$body-bg: #EFF8FB;
-// background w/ character
-$navbar-default-bg: #FFFFE0;
-// fancy yellow navbar
-$font-size-base: 15px;
-// make it bigger!
-
-// Define a custom font.
-// Libsass, which is used by the webpack sass loader, does not support font-url()
-// so we use url() instead. This is a known issue.
-@font-face {
- font-family: 'OpenSans-Light';
- @if $rails {
- src: font-url('OpenSans-Light.ttf') format('truetype');
- } @else {
- src: url('assets/fonts/OpenSans-Light.ttf') format('truetype');
- }
-}
-
-// Sass 3 removes image-url helper
-// https://github.com/sass/libsass/issues/489
-$image-url-path: '/assets/images/' !default;
-
-@function img-url($image) {
- @if $rails {
- @return image-url($image);
- } @else {
- @return url('#{$image-url-path}#{$image}');
- }
-}
diff --git a/client/assets/stylesheets/_test-sass-stylesheet-partial.scss b/client/assets/stylesheets/_test-sass-stylesheet-partial.scss
deleted file mode 100644
index c85f5f2f..00000000
--- a/client/assets/stylesheets/_test-sass-stylesheet-partial.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-// Example of a partial setting a variable
-
-$comment-text-color: purple;
-
-
diff --git a/client/assets/stylesheets/test-sass-stylesheet.scss b/client/assets/stylesheets/test-sass-stylesheet.scss
deleted file mode 100644
index 97929ac6..00000000
--- a/client/assets/stylesheets/test-sass-stylesheet.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// Proof of concept of loading css from webpack
-// partial defines the $comment-text-color
-@import 'test-sass-stylesheet-partial';
-
-.comment {
- p {
- color: $comment-text-color;
- }
-}
-
-.notification {
- padding: 1em 1.5em;
-}
diff --git a/client/assets/stylesheets/test-stylesheet.css b/client/assets/stylesheets/test-stylesheet.css
deleted file mode 100644
index b5f69e62..00000000
--- a/client/assets/stylesheets/test-stylesheet.css
+++ /dev/null
@@ -1,5 +0,0 @@
-// Proof of concept of loading css from webpack
-
-.comment-author {
- color: blue;
-}
diff --git a/client/bootstrap-sass.config.js b/client/bootstrap-sass.config.js
deleted file mode 100644
index f7718848..00000000
--- a/client/bootstrap-sass.config.js
+++ /dev/null
@@ -1,88 +0,0 @@
-// IMPORTANT: Make sure to keep the customizations defined in this file
-// in-sync with the ones defined in app/assets/stylesheets/_bootstrap-custom.scss.
-
-module.exports = {
- bootstrapCustomizations: './assets/stylesheets/_bootstrap-variables-customization.scss',
- mainSass: './assets/stylesheets/_app-styling-post-bootstrap-loading.scss',
-
- // Default for the style loading is to put in your js files
- // styleLoader: 'style-loader!css-loader!sass-loader',
-
- // See: https://github.com/sass/node-sass#outputstyle
- // https://github.com/sass/node-sass#imagepath
- styleLoader: 'style-loader!css-loader!sass-loader?imagePath=/assets/images',
-
- // ### Scripts
- // Any scripts here set to false will never make it to the client,
- // i.e. it's not packaged by webpack.
- scripts: {
- transition: true,
- alert: true,
- button: true,
-
- // excluding as an example
- carousel: false,
- collapse: true,
- dropdown: true,
-
- // excluding as an example
- modal: false,
- tooltip: true,
- popover: true,
- scrollspy: true,
- tab: true,
- affix: true,
- },
-
- // ### Styles
- // Enable or disable certain less components and thus remove
- // the css for them from the build.
- styles: {
- mixins: true,
-
- normalize: true,
- print: true,
-
- scaffolding: true,
- type: true,
- code: true,
- grid: true,
- tables: true,
- forms: true,
- buttons: true,
-
- 'component-animations': true,
- glyphicons: true,
- dropdowns: true,
- 'button-groups': true,
- 'input-groups': true,
- navs: true,
- navbar: true,
- breadcrumbs: true,
- pagination: true,
- pager: true,
- labels: true,
- badges: true,
-
- // excluding as an example
- jumbotron: false,
- thumbnails: true,
- alerts: true,
-
- // excluding as an example
- 'progress-bars': false,
- media: true,
- 'list-group': true,
- panels: true,
- wells: true,
- close: true,
-
- modals: true,
- tooltip: true,
- popovers: true,
- carousel: true,
-
- utilities: true,
- 'responsive-utilities': true,
- },
-};
diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json
index a87699dc..5b61c525 100644
--- a/client/npm-shrinkwrap.json
+++ b/client/npm-shrinkwrap.json
@@ -18,26 +18,31 @@
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz"
},
"acorn": {
- "version": "1.2.2",
- "from": "acorn@>=1.0.3 <2.0.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz"
+ "version": "2.6.4",
+ "from": "acorn@>=2.1.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.6.4.tgz"
},
"acorn-globals": {
"version": "1.0.9",
"from": "acorn-globals@>=1.0.3 <2.0.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
- "dependencies": {
- "acorn": {
- "version": "2.6.4",
- "from": "acorn@>=2.1.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.6.4.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz"
+ },
+ "acorn-to-esprima": {
+ "version": "2.0.4",
+ "from": "acorn-to-esprima@>=2.0.4 <3.0.0",
+ "resolved": "https://registry.npmjs.org/acorn-to-esprima/-/acorn-to-esprima-2.0.4.tgz"
},
"align-text": {
"version": "0.1.3",
"from": "align-text@>=0.1.0 <0.2.0",
- "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.3.tgz"
+ "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.3.tgz",
+ "dependencies": {
+ "kind-of": {
+ "version": "2.0.1",
+ "from": "kind-of@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz"
+ }
+ }
},
"alphanum-sort": {
"version": "1.0.2",
@@ -90,32 +95,37 @@
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz"
},
"are-we-there-yet": {
- "version": "1.0.4",
+ "version": "1.0.5",
"from": "are-we-there-yet@>=1.0.0 <1.1.0",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.4.tgz",
- "dependencies": {
- "readable-stream": {
- "version": "1.1.13",
- "from": "readable-stream@>=1.1.13 <2.0.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.5.tgz"
},
"argparse": {
"version": "1.0.3",
"from": "argparse@>=1.0.2 <1.1.0",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.3.tgz"
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.3.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.2.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"
+ }
+ }
},
"arr-diff": {
- "version": "1.1.0",
- "from": "arr-diff@>=1.1.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz"
+ "version": "2.0.0",
+ "from": "arr-diff@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz"
},
"arr-flatten": {
"version": "1.0.1",
"from": "arr-flatten@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz"
},
+ "array-find": {
+ "version": "1.0.0",
+ "from": "array-find@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz"
+ },
"array-flatten": {
"version": "1.1.1",
"from": "array-flatten@1.1.1",
@@ -126,11 +136,6 @@
"from": "array-index@>=0.1.0 <0.2.0",
"resolved": "https://registry.npmjs.org/array-index/-/array-index-0.1.1.tgz"
},
- "array-slice": {
- "version": "0.2.3",
- "from": "array-slice@>=0.2.3 <0.3.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz"
- },
"array-union": {
"version": "1.0.1",
"from": "array-union@>=1.0.1 <2.0.0",
@@ -138,7 +143,7 @@
},
"array-uniq": {
"version": "1.0.2",
- "from": "array-uniq@>=1.0.1 <2.0.0",
+ "from": "array-uniq@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz"
},
"array-unique": {
@@ -147,9 +152,9 @@
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz"
},
"arrify": {
- "version": "1.0.0",
+ "version": "1.0.1",
"from": "arrify@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz"
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz"
},
"asap": {
"version": "2.0.3",
@@ -188,7 +193,7 @@
},
"async": {
"version": "1.5.0",
- "from": "async@>=1.3.0 <2.0.0",
+ "from": "async@>=1.4.0 <2.0.0",
"resolved": "https://registry.npmjs.org/async/-/async-1.5.0.tgz"
},
"async-each": {
@@ -201,9 +206,14 @@
"from": "async-foreach@>=0.1.3 <0.2.0",
"resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz"
},
+ "atob": {
+ "version": "1.1.3",
+ "from": "atob@>=1.1.0 <1.2.0",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-1.1.3.tgz"
+ },
"autoprefixer": {
"version": "6.1.2",
- "from": "autoprefixer@>=6.0.3 <7.0.0",
+ "from": "autoprefixer@*",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.1.2.tgz"
},
"aws-sign2": {
@@ -216,31 +226,194 @@
"from": "axios@>=0.7.0 <0.8.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.7.0.tgz"
},
+ "babel": {
+ "version": "6.3.13",
+ "from": "babel@latest",
+ "resolved": "https://registry.npmjs.org/babel/-/babel-6.3.13.tgz"
+ },
+ "babel-cli": {
+ "version": "6.3.17",
+ "from": "babel-cli@latest",
+ "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.3.17.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.2.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"
+ }
+ }
+ },
"babel-code-frame": {
"version": "6.3.13",
"from": "babel-code-frame@>=6.3.13 <7.0.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.3.13.tgz"
},
"babel-core": {
- "version": "5.8.34",
- "from": "babel-core@>=5.8.25 <6.0.0",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.34.tgz"
+ "version": "6.3.17",
+ "from": "babel-core@latest",
+ "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.3.17.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.0 <4.0.0"
+ }
+ }
+ },
+ "babel-generator": {
+ "version": "6.3.17",
+ "from": "babel-generator@>=6.3.17 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.3.17.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.1 <4.0.0"
+ }
+ }
+ },
+ "babel-helper-bindify-decorators": {
+ "version": "6.3.13",
+ "from": "babel-helper-bindify-decorators@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.3.13.tgz"
+ },
+ "babel-helper-builder-binary-assignment-operator-visitor": {
+ "version": "6.3.13",
+ "from": "babel-helper-builder-binary-assignment-operator-visitor@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.3.13.tgz"
+ },
+ "babel-helper-builder-react-jsx": {
+ "version": "6.3.13",
+ "from": "babel-helper-builder-react-jsx@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.3.13.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.0 <4.0.0"
+ }
+ }
+ },
+ "babel-helper-call-delegate": {
+ "version": "6.3.13",
+ "from": "babel-helper-call-delegate@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.3.13.tgz"
+ },
+ "babel-helper-define-map": {
+ "version": "6.3.13",
+ "from": "babel-helper-define-map@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.3.13.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.0 <4.0.0"
+ }
+ }
+ },
+ "babel-helper-explode-assignable-expression": {
+ "version": "6.3.13",
+ "from": "babel-helper-explode-assignable-expression@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.3.13.tgz"
+ },
+ "babel-helper-explode-class": {
+ "version": "6.3.13",
+ "from": "babel-helper-explode-class@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.3.13.tgz"
+ },
+ "babel-helper-function-name": {
+ "version": "6.3.15",
+ "from": "babel-helper-function-name@>=6.3.15 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.3.15.tgz"
+ },
+ "babel-helper-get-function-arity": {
+ "version": "6.3.13",
+ "from": "babel-helper-get-function-arity@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.3.13.tgz"
+ },
+ "babel-helper-hoist-variables": {
+ "version": "6.3.13",
+ "from": "babel-helper-hoist-variables@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.3.13.tgz"
+ },
+ "babel-helper-optimise-call-expression": {
+ "version": "6.3.13",
+ "from": "babel-helper-optimise-call-expression@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.3.13.tgz"
+ },
+ "babel-helper-regex": {
+ "version": "6.3.13",
+ "from": "babel-helper-regex@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.3.13.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.0 <4.0.0"
+ }
+ }
+ },
+ "babel-helper-remap-async-to-generator": {
+ "version": "6.3.13",
+ "from": "babel-helper-remap-async-to-generator@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.3.13.tgz"
+ },
+ "babel-helper-replace-supers": {
+ "version": "6.3.13",
+ "from": "babel-helper-replace-supers@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.3.13.tgz"
+ },
+ "babel-helpers": {
+ "version": "6.3.13",
+ "from": "babel-helpers@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.3.13.tgz"
},
"babel-jscs": {
"version": "2.0.5",
"from": "babel-jscs@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/babel-jscs/-/babel-jscs-2.0.5.tgz"
+ "resolved": "https://registry.npmjs.org/babel-jscs/-/babel-jscs-2.0.5.tgz",
+ "dependencies": {
+ "babel-core": {
+ "version": "5.8.34",
+ "from": "babel-core@>=5.8.3 <5.9.0",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.0 <4.0.0"
+ }
+ }
+ },
+ "babylon": {
+ "version": "5.8.34",
+ "from": "babylon@>=5.8.34 <6.0.0"
+ },
+ "globals": {
+ "version": "6.4.1",
+ "from": "globals@>=6.4.0 <7.0.0"
+ },
+ "js-tokens": {
+ "version": "1.0.1",
+ "from": "js-tokens@1.0.1"
+ }
+ }
},
"babel-loader": {
- "version": "5.4.0",
- "from": "babel-loader@>=5.3.2 <6.0.0",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.4.0.tgz"
+ "version": "6.2.0",
+ "from": "babel-loader@latest",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.2.0.tgz",
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.12",
+ "from": "loader-utils@>=0.2.11 <0.3.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.12.tgz"
+ }
+ }
},
"babel-messages": {
"version": "6.3.13",
"from": "babel-messages@>=6.3.13 <7.0.0",
"resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.3.13.tgz"
},
+ "babel-plugin-check-es2015-constants": {
+ "version": "6.3.13",
+ "from": "babel-plugin-check-es2015-constants@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.3.13.tgz"
+ },
"babel-plugin-constant-folding": {
"version": "1.0.1",
"from": "babel-plugin-constant-folding@>=1.0.1 <2.0.0",
@@ -279,7 +452,13 @@
"babel-plugin-proto-to-assign": {
"version": "1.0.4",
"from": "babel-plugin-proto-to-assign@>=1.0.3 <2.0.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz"
+ "resolved": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.9.3 <4.0.0"
+ }
+ }
},
"babel-plugin-react-constant-elements": {
"version": "1.0.3",
@@ -306,6 +485,237 @@
"from": "babel-plugin-runtime@>=1.0.7 <2.0.0",
"resolved": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz"
},
+ "babel-plugin-syntax-async-functions": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-async-functions@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-class-constructor-call": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-class-constructor-call@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-class-properties": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-class-properties@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-decorators": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-decorators@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-do-expressions": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-do-expressions@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-exponentiation-operator": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-exponentiation-operator@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-export-extensions": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-export-extensions@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-flow": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-flow@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-function-bind": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-function-bind@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-jsx": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-jsx@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-object-rest-spread": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-object-rest-spread@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.3.13.tgz"
+ },
+ "babel-plugin-syntax-trailing-function-commas": {
+ "version": "6.3.13",
+ "from": "babel-plugin-syntax-trailing-function-commas@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.3.13.tgz"
+ },
+ "babel-plugin-transform-async-to-generator": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-async-to-generator@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.3.13.tgz"
+ },
+ "babel-plugin-transform-class-constructor-call": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-class-constructor-call@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.3.13.tgz"
+ },
+ "babel-plugin-transform-class-properties": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-class-properties@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.3.13.tgz"
+ },
+ "babel-plugin-transform-decorators": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-decorators@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.3.13.tgz"
+ },
+ "babel-plugin-transform-do-expressions": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-do-expressions@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-arrow-functions": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-arrow-functions@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-block-scoped-functions": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-block-scoped-functions@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-block-scoping": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-block-scoping@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.3.13.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.0 <4.0.0"
+ }
+ }
+ },
+ "babel-plugin-transform-es2015-classes": {
+ "version": "6.3.15",
+ "from": "babel-plugin-transform-es2015-classes@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.3.15.tgz"
+ },
+ "babel-plugin-transform-es2015-computed-properties": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-computed-properties@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-destructuring": {
+ "version": "6.3.15",
+ "from": "babel-plugin-transform-es2015-destructuring@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.3.15.tgz"
+ },
+ "babel-plugin-transform-es2015-for-of": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-for-of@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-function-name": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-function-name@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-literals": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-literals@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-modules-commonjs": {
+ "version": "6.3.16",
+ "from": "babel-plugin-transform-es2015-modules-commonjs@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.3.16.tgz"
+ },
+ "babel-plugin-transform-es2015-object-super": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-object-super@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-parameters": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-parameters@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-shorthand-properties": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-shorthand-properties@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-spread": {
+ "version": "6.3.14",
+ "from": "babel-plugin-transform-es2015-spread@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.3.14.tgz"
+ },
+ "babel-plugin-transform-es2015-sticky-regex": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-sticky-regex@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-template-literals": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-template-literals@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-typeof-symbol": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-typeof-symbol@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.3.13.tgz"
+ },
+ "babel-plugin-transform-es2015-unicode-regex": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-es2015-unicode-regex@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.3.13.tgz"
+ },
+ "babel-plugin-transform-exponentiation-operator": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-exponentiation-operator@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.3.13.tgz"
+ },
+ "babel-plugin-transform-export-extensions": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-export-extensions@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.3.13.tgz"
+ },
+ "babel-plugin-transform-flow-strip-types": {
+ "version": "6.3.15",
+ "from": "babel-plugin-transform-flow-strip-types@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.3.15.tgz"
+ },
+ "babel-plugin-transform-function-bind": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-function-bind@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.3.13.tgz"
+ },
+ "babel-plugin-transform-object-rest-spread": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-object-rest-spread@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.3.13.tgz"
+ },
+ "babel-plugin-transform-react-display-name": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-react-display-name@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.3.13.tgz"
+ },
+ "babel-plugin-transform-react-jsx": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-react-jsx@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.3.13.tgz"
+ },
+ "babel-plugin-transform-react-jsx-source": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-react-jsx-source@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.3.13.tgz"
+ },
+ "babel-plugin-transform-regenerator": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-regenerator@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.3.13.tgz"
+ },
+ "babel-plugin-transform-strict-mode": {
+ "version": "6.3.13",
+ "from": "babel-plugin-transform-strict-mode@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.3.13.tgz"
+ },
"babel-plugin-undeclared-variables-check": {
"version": "1.0.2",
"from": "babel-plugin-undeclared-variables-check@>=1.0.2 <2.0.0",
@@ -316,36 +726,99 @@
"from": "babel-plugin-undefined-to-void@>=1.1.6 <2.0.0",
"resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz"
},
+ "babel-polyfill": {
+ "version": "6.3.14",
+ "from": "babel-polyfill@latest",
+ "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.3.14.tgz"
+ },
+ "babel-preset-es2015": {
+ "version": "6.3.13",
+ "from": "babel-preset-es2015@latest",
+ "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.3.13.tgz"
+ },
+ "babel-preset-react": {
+ "version": "6.3.13",
+ "from": "babel-preset-react@latest",
+ "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.3.13.tgz"
+ },
+ "babel-preset-stage-0": {
+ "version": "6.3.13",
+ "from": "babel-preset-stage-0@latest",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.3.13.tgz"
+ },
+ "babel-preset-stage-1": {
+ "version": "6.3.13",
+ "from": "babel-preset-stage-1@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.3.13.tgz"
+ },
+ "babel-preset-stage-2": {
+ "version": "6.3.13",
+ "from": "babel-preset-stage-2@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.3.13.tgz"
+ },
+ "babel-preset-stage-3": {
+ "version": "6.3.13",
+ "from": "babel-preset-stage-3@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.3.13.tgz"
+ },
+ "babel-regenerator-runtime": {
+ "version": "6.3.13",
+ "from": "babel-regenerator-runtime@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-regenerator-runtime/-/babel-regenerator-runtime-6.3.13.tgz"
+ },
+ "babel-register": {
+ "version": "6.3.13",
+ "from": "babel-register@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.3.13.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.0 <4.0.0"
+ }
+ }
+ },
"babel-runtime": {
"version": "5.8.34",
- "from": "babel-runtime@>=5.8.25 <6.0.0",
+ "from": "babel-runtime@>=5.0.0 <6.0.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.34.tgz"
},
+ "babel-template": {
+ "version": "6.3.13",
+ "from": "babel-template@>=6.3.13 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.3.13.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.1 <4.0.0"
+ }
+ }
+ },
"babel-traverse": {
- "version": "6.3.15",
- "from": "babel-traverse@>=6.0.20 <7.0.0",
- "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.3.15.tgz",
+ "version": "6.3.17",
+ "from": "babel-traverse@>=6.3.17 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.3.17.tgz",
"dependencies": {
- "babylon": {
- "version": "6.3.15",
- "from": "babylon@>=6.3.15 <7.0.0"
- },
- "globals": {
- "version": "8.14.0",
- "from": "globals@>=8.3.0 <9.0.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-8.14.0.tgz"
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.1 <4.0.0"
}
}
},
"babel-types": {
- "version": "6.3.14",
- "from": "babel-types@>=6.0.19 <7.0.0",
- "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.3.14.tgz"
+ "version": "6.3.17",
+ "from": "babel-types@>=6.3.17 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.3.17.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.10.1 <4.0.0"
+ }
+ }
},
"babylon": {
- "version": "5.8.34",
- "from": "babylon@>=5.8.34 <6.0.0",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.34.tgz"
+ "version": "6.3.15",
+ "from": "babylon@>=6.3.15 <7.0.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.3.15.tgz"
},
"balanced-match": {
"version": "0.3.0",
@@ -377,6 +850,16 @@
"from": "big.js@>=3.0.2 <4.0.0",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz"
},
+ "bin-version": {
+ "version": "1.0.4",
+ "from": "bin-version@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-1.0.4.tgz"
+ },
+ "bin-version-check": {
+ "version": "2.1.0",
+ "from": "bin-version-check@>=2.1.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-2.1.0.tgz"
+ },
"binary-extensions": {
"version": "1.4.0",
"from": "binary-extensions@>=1.0.0 <2.0.0",
@@ -397,23 +880,33 @@
"from": "bluebird@>=2.9.33 <3.0.0",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz"
},
- "body-parser": {
- "version": "1.14.1",
- "from": "body-parser@>=1.14.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.1.tgz",
- "dependencies": {
- "iconv-lite": {
- "version": "0.4.12",
- "from": "iconv-lite@0.4.12",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.12.tgz"
- }
- }
- },
"boom": {
"version": "2.10.1",
"from": "boom@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
},
+ "bootstrap-loader": {
+ "version": "1.0.0-rc",
+ "from": "bootstrap-loader@latest",
+ "resolved": "https://registry.npmjs.org/bootstrap-loader/-/bootstrap-loader-1.0.0-rc.tgz",
+ "dependencies": {
+ "js-yaml": {
+ "version": "3.4.6",
+ "from": "js-yaml@>=3.4.3 <4.0.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.4.6.tgz"
+ },
+ "semver": {
+ "version": "5.1.0",
+ "from": "semver@>=5.0.3 <6.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz"
+ }
+ }
+ },
+ "bootstrap-sass": {
+ "version": "3.3.6",
+ "from": "bootstrap-sass@>=3.3.5 <4.0.0",
+ "resolved": "https://registry.npmjs.org/bootstrap-sass/-/bootstrap-sass-3.3.6.tgz"
+ },
"brace-expansion": {
"version": "1.1.2",
"from": "brace-expansion@>=1.0.0 <2.0.0",
@@ -440,9 +933,16 @@
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.0.1.tgz"
},
"buffer": {
- "version": "3.5.3",
+ "version": "3.5.5",
"from": "buffer@>=3.0.3 <4.0.0",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.3.tgz"
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.5.tgz",
+ "dependencies": {
+ "isarray": {
+ "version": "1.0.0",
+ "from": "isarray@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
+ }
+ }
},
"builtin-modules": {
"version": "1.1.0",
@@ -455,26 +955,19 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz"
},
"camelcase": {
- "version": "1.2.1",
- "from": "camelcase@>=1.2.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz"
+ "version": "2.0.1",
+ "from": "camelcase@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.0.1.tgz"
},
"camelcase-keys": {
"version": "2.0.0",
"from": "camelcase-keys@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.0.0.tgz",
- "dependencies": {
- "camelcase": {
- "version": "2.0.1",
- "from": "camelcase@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.0.1.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.0.0.tgz"
},
"caniuse-db": {
- "version": "1.0.30000372",
+ "version": "1.0.30000377",
"from": "caniuse-db@>=1.0.30000372 <2.0.0",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000372.tgz"
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000377.tgz"
},
"caseless": {
"version": "0.11.0",
@@ -488,7 +981,7 @@
},
"chalk": {
"version": "1.1.1",
- "from": "chalk@>=1.0.0 <2.0.0",
+ "from": "chalk@1.1.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz"
},
"character-parser": {
@@ -497,9 +990,9 @@
"resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz"
},
"chokidar": {
- "version": "1.3.0",
+ "version": "1.4.1",
"from": "chokidar@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.3.0.tgz"
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.4.1.tgz"
},
"classnames": {
"version": "2.2.1",
@@ -546,9 +1039,9 @@
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.0.tgz"
},
"cliui": {
- "version": "2.1.0",
- "from": "cliui@>=2.1.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz"
+ "version": "3.1.0",
+ "from": "cliui@>=3.0.3 <4.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.1.0.tgz"
},
"clone": {
"version": "1.0.2",
@@ -582,13 +1075,13 @@
},
"commander": {
"version": "2.9.0",
- "from": "commander@>=2.5.0 <3.0.0",
+ "from": "commander@>=2.8.1 <3.0.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz"
},
"comment-parser": {
- "version": "0.3.0",
- "from": "comment-parser@0.3.0",
- "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.3.0.tgz"
+ "version": "0.3.1",
+ "from": "comment-parser@>=0.3.1 <0.4.0",
+ "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.3.1.tgz"
},
"commoner": {
"version": "0.10.4",
@@ -629,7 +1122,7 @@
},
"concat-stream": {
"version": "1.5.1",
- "from": "concat-stream@>=1.4.6 <2.0.0",
+ "from": "concat-stream@>=1.4.7 <2.0.0",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz"
},
"config-chain": {
@@ -650,14 +1143,7 @@
"constantinople": {
"version": "3.0.2",
"from": "constantinople@>=3.0.1 <3.1.0",
- "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz",
- "dependencies": {
- "acorn": {
- "version": "2.6.4",
- "from": "acorn@>=2.1.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.6.4.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz"
},
"constants-browserify": {
"version": "0.0.1",
@@ -700,21 +1186,14 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
},
"cross-spawn": {
- "version": "2.0.1",
+ "version": "2.1.0",
"from": "cross-spawn@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-2.0.1.tgz"
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-2.1.0.tgz"
},
"cross-spawn-async": {
- "version": "2.0.1",
+ "version": "2.1.1",
"from": "cross-spawn-async@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.0.1.tgz",
- "dependencies": {
- "lru-cache": {
- "version": "3.2.0",
- "from": "lru-cache@>=3.2.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.1.1.tgz"
},
"cryptiles": {
"version": "2.0.5",
@@ -736,6 +1215,17 @@
"from": "css-color-names@0.0.2",
"resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.2.tgz"
},
+ "css-loader": {
+ "version": "0.23.0",
+ "from": "css-loader@>=0.23.0 <0.24.0",
+ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.23.0.tgz",
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.12",
+ "from": "loader-utils@>=0.2.2 <0.3.0"
+ }
+ }
+ },
"css-parse": {
"version": "1.0.4",
"from": "css-parse@1.0.4",
@@ -757,16 +1247,9 @@
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz"
},
"cssnano": {
- "version": "3.3.2",
+ "version": "3.4.0",
"from": "cssnano@>=2.6.1 <4.0.0",
- "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.3.2.tgz",
- "dependencies": {
- "object-assign": {
- "version": "4.0.1",
- "from": "object-assign@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.4.0.tgz"
},
"cssom": {
"version": "0.3.0",
@@ -805,7 +1288,7 @@
},
"decamelize": {
"version": "1.1.1",
- "from": "decamelize@>=1.0.0 <2.0.0",
+ "from": "decamelize@>=1.1.0 <2.0.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.1.1.tgz"
},
"deep-eql": {
@@ -838,20 +1321,39 @@
"defs": {
"version": "1.1.1",
"from": "defs@>=1.1.0 <1.2.0",
- "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz"
- },
- "del": {
- "version": "2.1.0",
- "from": "del@>=2.0.2 <3.0.0",
- "resolved": "https://registry.npmjs.org/del/-/del-2.1.0.tgz",
+ "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz",
"dependencies": {
- "object-assign": {
- "version": "4.0.1",
- "from": "object-assign@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
+ "camelcase": {
+ "version": "1.2.1",
+ "from": "camelcase@>=1.2.1 <2.0.0"
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "from": "cliui@>=2.1.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz"
+ },
+ "esprima-fb": {
+ "version": "15001.1001.0-dev-harmony-fb",
+ "from": "esprima-fb@>=15001.1001.0-dev-harmony-fb <15001.1002.0",
+ "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz"
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "from": "wordwrap@0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"
+ },
+ "yargs": {
+ "version": "3.27.0",
+ "from": "yargs@>=3.27.0 <3.28.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz"
}
}
},
+ "del": {
+ "version": "2.2.0",
+ "from": "del@>=2.0.2 <3.0.0",
+ "resolved": "https://registry.npmjs.org/del/-/del-2.2.0.tgz"
+ },
"delayed-stream": {
"version": "1.0.0",
"from": "delayed-stream@>=1.0.0 <1.1.0",
@@ -874,13 +1376,20 @@
},
"detect-indent": {
"version": "3.0.1",
- "from": "detect-indent@>=3.0.0 <4.0.0",
+ "from": "detect-indent@>=3.0.1 <4.0.0",
"resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz"
},
"detective": {
"version": "4.3.1",
"from": "detective@>=4.3.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz"
+ "resolved": "https://registry.npmjs.org/detective/-/detective-4.3.1.tgz",
+ "dependencies": {
+ "acorn": {
+ "version": "1.2.2",
+ "from": "acorn@>=1.0.3 <2.0.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz"
+ }
+ }
},
"diff": {
"version": "1.4.0",
@@ -927,9 +1436,9 @@
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz"
},
"domain-browser": {
- "version": "1.1.4",
+ "version": "1.1.7",
"from": "domain-browser@>=1.1.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz"
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz"
},
"domelementtype": {
"version": "1.3.0",
@@ -989,14 +1498,14 @@
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz"
},
"es5-ext": {
- "version": "0.10.9",
+ "version": "0.10.10",
"from": "es5-ext@>=0.10.8 <0.11.0",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.9.tgz"
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.10.tgz"
},
"es5-shim": {
- "version": "4.3.1",
+ "version": "4.4.0",
"from": "es5-shim@>=4.3.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.3.1.tgz"
+ "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.4.0.tgz"
},
"es6-iterator": {
"version": "2.0.0",
@@ -1033,6 +1542,11 @@
"from": "escape-html@1.0.2",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz"
},
+ "escape-regexp": {
+ "version": "0.0.1",
+ "from": "escape-regexp@0.0.1",
+ "resolved": "https://registry.npmjs.org/escape-regexp/-/escape-regexp-0.0.1.tgz"
+ },
"escape-string-regexp": {
"version": "1.0.3",
"from": "escape-string-regexp@>=1.0.2 <2.0.0",
@@ -1070,10 +1584,10 @@
"from": "escope@>=3.3.0 <4.0.0",
"resolved": "https://registry.npmjs.org/escope/-/escope-3.3.0.tgz"
},
- "esprima-fb": {
- "version": "15001.1001.0-dev-harmony-fb",
- "from": "esprima-fb@>=15001.1001.0-dev-harmony-fb <15001.1002.0",
- "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz"
+ "esprima": {
+ "version": "2.7.1",
+ "from": "esprima@>=2.6.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.1.tgz"
},
"esrecurse": {
"version": "3.1.1",
@@ -1099,7 +1613,7 @@
},
"esutils": {
"version": "2.0.2",
- "from": "esutils@>=2.0.0 <3.0.0",
+ "from": "esutils@>=2.0.2 <3.0.0",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz"
},
"etag": {
@@ -1179,6 +1693,11 @@
"from": "extglob@>=0.3.1 <0.4.0",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz"
},
+ "extract-text-webpack-plugin": {
+ "version": "0.9.1",
+ "from": "extract-text-webpack-plugin@*",
+ "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-0.9.1.tgz"
+ },
"extsprintf": {
"version": "1.0.2",
"from": "extsprintf@1.0.2",
@@ -1217,12 +1736,16 @@
"file-entry-cache": {
"version": "1.2.4",
"from": "file-entry-cache@>=1.1.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.2.4.tgz",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.2.4.tgz"
+ },
+ "file-loader": {
+ "version": "0.8.5",
+ "from": "file-loader@>=0.8.4 <0.9.0",
+ "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.8.5.tgz",
"dependencies": {
- "object-assign": {
- "version": "4.0.1",
- "from": "object-assign@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
+ "loader-utils": {
+ "version": "0.2.12",
+ "from": "loader-utils@>=0.2.5 <0.3.0"
}
}
},
@@ -1232,9 +1755,9 @@
"resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz"
},
"fill-range": {
- "version": "2.2.2",
+ "version": "2.2.3",
"from": "fill-range@>=2.1.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz"
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz"
},
"finalhandler": {
"version": "0.4.0",
@@ -1253,6 +1776,11 @@
}
}
},
+ "find-versions": {
+ "version": "1.2.1",
+ "from": "find-versions@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-1.2.1.tgz"
+ },
"flat-cache": {
"version": "1.0.10",
"from": "flat-cache@>=1.0.9 <2.0.0",
@@ -1304,15 +1832,10 @@
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz"
},
"fsevents": {
- "version": "1.0.5",
+ "version": "1.0.6",
"from": "fsevents@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.5.tgz",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.6.tgz",
"dependencies": {
- "abbrev": {
- "version": "1.0.7",
- "from": "abbrev@1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
- },
"ansi": {
"version": "0.3.0",
"from": "ansi@~0.3.0",
@@ -1334,9 +1857,9 @@
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.4.tgz"
},
"asn1": {
- "version": "0.1.11",
- "from": "asn1@0.1.11",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"
+ "version": "0.2.3",
+ "from": "asn1@>=0.2.3 <0.3.0",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz"
},
"assert-plus": {
"version": "0.1.5",
@@ -1353,11 +1876,6 @@
"from": "aws-sign2@~0.6.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz"
},
- "balanced-match": {
- "version": "0.2.1",
- "from": "balanced-match@>=0.2.0 <0.3.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz"
- },
"bl": {
"version": "1.0.0",
"from": "bl@~1.0.0",
@@ -1369,9 +1887,9 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.4.tgz",
"dependencies": {
"core-util-is": {
- "version": "1.0.1",
+ "version": "1.0.2",
"from": "core-util-is@~1.0.0",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
},
"inherits": {
"version": "2.0.1",
@@ -1409,14 +1927,9 @@
},
"boom": {
"version": "2.10.1",
- "from": "boom@^2.8.x",
+ "from": "boom@2.x.x",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
},
- "brace-expansion": {
- "version": "1.1.1",
- "from": "brace-expansion@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.1.tgz"
- },
"caseless": {
"version": "0.11.0",
"from": "caseless@~0.11.0",
@@ -1434,28 +1947,23 @@
},
"commander": {
"version": "2.9.0",
- "from": "commander@^2.8.1",
+ "from": "commander@^2.9.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz"
},
- "concat-map": {
- "version": "0.0.1",
- "from": "concat-map@0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
- },
"core-util-is": {
- "version": "1.0.1",
+ "version": "1.0.2",
"from": "core-util-is@~1.0.0",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
},
"cryptiles": {
"version": "2.0.5",
"from": "cryptiles@2.x.x",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz"
},
- "ctype": {
- "version": "0.5.3",
- "from": "ctype@0.5.3",
- "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz"
+ "dashdash": {
+ "version": "1.10.1",
+ "from": "dashdash@>=1.10.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.10.1.tgz"
},
"debug": {
"version": "0.7.4",
@@ -1463,9 +1971,9 @@
"resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz"
},
"deep-extend": {
- "version": "0.2.11",
- "from": "deep-extend@~0.2.5",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz"
+ "version": "0.4.0",
+ "from": "deep-extend@~0.4.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.0.tgz"
},
"delayed-stream": {
"version": "1.0.0",
@@ -1477,6 +1985,11 @@
"from": "delegates@^0.1.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz"
},
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "from": "ecc-jsbn@>=0.0.1 <1.0.0",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz"
+ },
"escape-string-regexp": {
"version": "1.0.3",
"from": "escape-string-regexp@^1.0.2",
@@ -1487,6 +2000,11 @@
"from": "extend@~3.0.0",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz"
},
+ "extsprintf": {
+ "version": "1.0.2",
+ "from": "extsprintf@1.0.2",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
+ },
"forever-agent": {
"version": "0.6.1",
"from": "forever-agent@~0.6.1",
@@ -1509,7 +2027,27 @@
"dependencies": {
"minimatch": {
"version": "3.0.0",
- "from": "minimatch@>=3.0.0 <4.0.0"
+ "from": "minimatch@^3.0.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz",
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.1",
+ "from": "brace-expansion@^1.0.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.1.tgz",
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.2.1",
+ "from": "balanced-match@^0.2.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz"
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "from": "concat-map@0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+ }
+ }
+ }
+ }
}
}
},
@@ -1539,9 +2077,9 @@
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
},
"har-validator": {
- "version": "2.0.2",
+ "version": "2.0.3",
"from": "har-validator@~2.0.2",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.2.tgz"
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.3.tgz"
},
"has-ansi": {
"version": "2.0.0",
@@ -1554,9 +2092,9 @@
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-1.0.1.tgz"
},
"hawk": {
- "version": "3.1.0",
+ "version": "3.1.2",
"from": "hawk@~3.1.0",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz"
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.2.tgz"
},
"hoek": {
"version": "2.16.3",
@@ -1564,20 +2102,9 @@
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
},
"http-signature": {
- "version": "0.11.0",
- "from": "http-signature@~0.11.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz"
- },
- "inflight": {
- "version": "1.0.4",
- "from": "inflight@>=1.0.4 <2.0.0",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
- "dependencies": {
- "once": {
- "version": "1.3.2",
- "from": "once@>=1.3.0 <2.0.0"
- }
- }
+ "version": "1.1.0",
+ "from": "http-signature@~1.1.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.0.tgz"
},
"inherits": {
"version": "2.0.1",
@@ -1590,15 +2117,20 @@
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz"
},
"is-my-json-valid": {
- "version": "2.12.2",
- "from": "is-my-json-valid@^2.12.2",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz"
+ "version": "2.12.3",
+ "from": "is-my-json-valid@^2.12.3",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.3.tgz"
},
"is-property": {
"version": "1.0.2",
"from": "is-property@^1.0.0",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"
},
+ "is-typedarray": {
+ "version": "1.0.0",
+ "from": "is-typedarray@~1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"
+ },
"isarray": {
"version": "0.0.1",
"from": "isarray@0.0.1",
@@ -1609,6 +2141,21 @@
"from": "isstream@~0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
},
+ "jodid25519": {
+ "version": "1.0.2",
+ "from": "jodid25519@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz"
+ },
+ "jsbn": {
+ "version": "0.1.0",
+ "from": "jsbn@>=0.1.0 <0.2.0",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz"
+ },
+ "json-schema": {
+ "version": "0.2.2",
+ "from": "json-schema@0.2.2",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz"
+ },
"json-stringify-safe": {
"version": "5.0.1",
"from": "json-stringify-safe@~5.0.1",
@@ -1619,6 +2166,11 @@
"from": "jsonpointer@2.0.0",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz"
},
+ "jsprim": {
+ "version": "1.2.2",
+ "from": "jsprim@^1.2.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz"
+ },
"lodash._basetostring": {
"version": "3.0.1",
"from": "lodash._basetostring@^3.0.0",
@@ -1670,26 +2222,33 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
},
"node-pre-gyp": {
- "version": "0.6.15",
- "from": "node-pre-gyp@latest",
- "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.15.tgz",
+ "version": "0.6.17",
+ "from": "node-pre-gyp@>=0.6.17 <0.7.0",
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.17.tgz",
"dependencies": {
"nopt": {
- "version": "3.0.4",
- "from": "nopt@>=3.0.1 <3.1.0",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.4.tgz"
+ "version": "3.0.6",
+ "from": "nopt@~3.0.1",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
+ "dependencies": {
+ "abbrev": {
+ "version": "1.0.7",
+ "from": "abbrev@1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
+ }
+ }
}
}
},
"node-uuid": {
- "version": "1.4.3",
- "from": "node-uuid@~1.4.3",
- "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz"
+ "version": "1.4.7",
+ "from": "node-uuid@~1.4.7",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz"
},
"npmlog": {
- "version": "1.2.1",
- "from": "npmlog@~1.2.0",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz"
+ "version": "2.0.0",
+ "from": "npmlog@~2.0.0",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.0.tgz"
},
"oauth-sign": {
"version": "0.8.0",
@@ -1701,20 +2260,15 @@
"from": "once@~1.1.1",
"resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz"
},
- "path-is-absolute": {
- "version": "1.0.0",
- "from": "path-is-absolute@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
- },
"pinkie": {
- "version": "1.0.0",
- "from": "pinkie@^1.0.0",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz"
+ "version": "2.0.1",
+ "from": "pinkie@^2.0.0",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.1.tgz"
},
"pinkie-promise": {
- "version": "1.0.0",
- "from": "pinkie-promise@^1.0.0",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz"
+ "version": "2.0.0",
+ "from": "pinkie-promise@^2.0.0",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz"
},
"qs": {
"version": "5.2.0",
@@ -1722,13 +2276,13 @@
"resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz"
},
"rc": {
- "version": "1.1.2",
+ "version": "1.1.5",
"from": "rc@~1.1.0",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.2.tgz",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.5.tgz",
"dependencies": {
"minimist": {
"version": "1.2.0",
- "from": "minimist@^1.1.2",
+ "from": "minimist@^1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
}
}
@@ -1739,42 +2293,104 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz"
},
"request": {
- "version": "2.65.0",
+ "version": "2.67.0",
"from": "request@2.x",
- "resolved": "https://registry.npmjs.org/request/-/request-2.65.0.tgz"
+ "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz"
},
"rimraf": {
- "version": "2.4.3",
+ "version": "2.4.4",
"from": "rimraf@~2.4.0",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.4.tgz",
"dependencies": {
"glob": {
"version": "5.0.15",
- "from": "glob@>=5.0.14 <6.0.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
- },
- "minimatch": {
- "version": "3.0.0",
- "from": "minimatch@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz"
- },
- "once": {
- "version": "1.3.2",
- "from": "once@>=1.3.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz"
+ "from": "glob@^5.0.14",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
+ "dependencies": {
+ "inflight": {
+ "version": "1.0.4",
+ "from": "inflight@^1.0.4",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.1",
+ "from": "wrappy@1",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "from": "inherits@2",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
+ },
+ "minimatch": {
+ "version": "3.0.0",
+ "from": "minimatch@2 || 3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz",
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.1",
+ "from": "brace-expansion@^1.0.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.1.tgz",
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.2.1",
+ "from": "balanced-match@^0.2.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.1.tgz"
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "from": "concat-map@0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+ }
+ }
+ }
+ }
+ },
+ "once": {
+ "version": "1.3.3",
+ "from": "once@^1.3.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.1",
+ "from": "wrappy@1",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
+ }
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.0",
+ "from": "path-is-absolute@^1.0.0",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
+ }
+ }
}
}
},
"semver": {
- "version": "5.0.3",
- "from": "semver@~5.0.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz"
+ "version": "5.1.0",
+ "from": "semver@~5.1.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz"
},
"sntp": {
"version": "1.0.9",
"from": "sntp@1.x.x",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
},
+ "sshpk": {
+ "version": "1.7.0",
+ "from": "sshpk@^1.7.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.0.tgz",
+ "dependencies": {
+ "assert-plus": {
+ "version": "0.2.0",
+ "from": "assert-plus@>=0.2.0 <0.3.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz"
+ }
+ }
+ },
"string_decoder": {
"version": "0.10.31",
"from": "string_decoder@~0.10.x",
@@ -1791,9 +2407,9 @@
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz"
},
"strip-json-comments": {
- "version": "0.1.3",
- "from": "strip-json-comments@0.1.x",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-0.1.3.tgz"
+ "version": "1.0.4",
+ "from": "strip-json-comments@~1.0.4",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
},
"supports-color": {
"version": "2.0.0",
@@ -1816,13 +2432,13 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
"dependencies": {
"core-util-is": {
- "version": "1.0.1",
+ "version": "1.0.2",
"from": "core-util-is@~1.0.0",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
},
"inherits": {
"version": "2.0.1",
- "from": "inherits@~2.0.1",
+ "from": "inherits@~2.0.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"isarray": {
@@ -1845,24 +2461,29 @@
}
},
"tough-cookie": {
- "version": "2.2.0",
+ "version": "2.2.1",
"from": "tough-cookie@~2.2.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.0.tgz"
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz"
},
"tunnel-agent": {
"version": "0.4.1",
"from": "tunnel-agent@~0.4.1",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz"
},
+ "tweetnacl": {
+ "version": "0.13.2",
+ "from": "tweetnacl@>=0.13.0 <1.0.0",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.2.tgz"
+ },
"uid-number": {
"version": "0.0.3",
"from": "uid-number@0.0.3",
"resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.3.tgz"
},
- "wrappy": {
- "version": "1.0.1",
- "from": "wrappy@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
+ "verror": {
+ "version": "1.3.6",
+ "from": "verror@1.3.6",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz"
},
"xtend": {
"version": "4.0.1",
@@ -1903,7 +2524,7 @@
},
"glob": {
"version": "5.0.15",
- "from": "glob@>=5.0.15 <6.0.0",
+ "from": "glob@>=5.0.5 <6.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz"
},
"glob-base": {
@@ -1929,24 +2550,19 @@
}
},
"globals": {
- "version": "6.4.1",
- "from": "globals@>=6.4.0 <7.0.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz"
+ "version": "8.14.0",
+ "from": "globals@>=8.3.0 <9.0.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-8.14.0.tgz"
},
"globby": {
- "version": "3.0.1",
- "from": "globby@>=3.0.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-3.0.1.tgz",
+ "version": "4.0.0",
+ "from": "globby@>=4.0.0 <5.0.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-4.0.0.tgz",
"dependencies": {
- "object-assign": {
- "version": "4.0.1",
- "from": "object-assign@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
- },
- "pinkie-promise": {
- "version": "1.0.0",
- "from": "pinkie-promise@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-1.0.0.tgz"
+ "glob": {
+ "version": "6.0.1",
+ "from": "glob@>=6.0.1 <7.0.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.1.tgz"
}
}
},
@@ -1975,6 +2591,11 @@
"from": "lodash@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz"
},
+ "lru-cache": {
+ "version": "2.7.3",
+ "from": "lru-cache@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"
+ },
"minimatch": {
"version": "0.2.14",
"from": "minimatch@>=0.2.11 <0.3.0",
@@ -2046,7 +2667,7 @@
},
"history": {
"version": "1.13.1",
- "from": "history@>=1.12.5 <2.0.0",
+ "from": "history@>=1.13.0 <1.14.0",
"resolved": "https://registry.npmjs.org/history/-/history-1.13.1.tgz",
"dependencies": {
"qs": {
@@ -2083,8 +2704,7 @@
"dependencies": {
"readable-stream": {
"version": "1.1.13",
- "from": "readable-stream@>=1.1.0 <1.2.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz"
+ "from": "readable-stream@>=1.1.0 <1.2.0"
}
}
},
@@ -2119,9 +2739,9 @@
"resolved": "https://registry.npmjs.org/i/-/i-0.3.3.tgz"
},
"iconv-lite": {
- "version": "0.4.13",
- "from": "iconv-lite@>=0.4.5 <0.5.0",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz"
+ "version": "0.4.12",
+ "from": "iconv-lite@0.4.12",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.12.tgz"
},
"icss-replace-symbols": {
"version": "1.0.2",
@@ -2143,6 +2763,10 @@
"from": "imports-loader@>=0.6.5 <0.7.0",
"resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.5.tgz",
"dependencies": {
+ "loader-utils": {
+ "version": "0.2.12",
+ "from": "loader-utils@>=0.2.0 <0.3.0"
+ },
"source-map": {
"version": "0.1.43",
"from": "source-map@>=0.1.0 <0.2.0",
@@ -2184,7 +2808,7 @@
},
"inherits": {
"version": "2.0.1",
- "from": "inherits@>=2.0.0 <3.0.0",
+ "from": "inherits@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"ini": {
@@ -2195,7 +2819,13 @@
"inquirer": {
"version": "0.11.0",
"from": "inquirer@>=0.11.0 <0.12.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz"
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.11.0.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.3.1 <4.0.0"
+ }
+ }
},
"interpret": {
"version": "0.6.6",
@@ -2204,7 +2834,7 @@
},
"invariant": {
"version": "2.2.0",
- "from": "invariant@>=2.0.0 <3.0.0",
+ "from": "invariant@>=2.2.0 <3.0.0",
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.0.tgz"
},
"invert-kv": {
@@ -2213,9 +2843,9 @@
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz"
},
"ipaddr.js": {
- "version": "1.0.4",
- "from": "ipaddr.js@1.0.4",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.4.tgz"
+ "version": "1.0.5",
+ "from": "ipaddr.js@1.0.5",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.5.tgz"
},
"is-absolute": {
"version": "0.1.7",
@@ -2227,11 +2857,6 @@
"from": "is-absolute-url@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.0.0.tgz"
},
- "is-array": {
- "version": "1.0.1",
- "from": "is-array@>=1.0.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz"
- },
"is-arrayish": {
"version": "0.2.1",
"from": "is-arrayish@>=0.2.1 <0.3.0",
@@ -2294,13 +2919,13 @@
},
"is-my-json-valid": {
"version": "2.12.3",
- "from": "is-my-json-valid@>=2.10.0 <3.0.0",
+ "from": "is-my-json-valid@>=2.12.3 <3.0.0",
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.3.tgz"
},
"is-number": {
- "version": "1.1.2",
- "from": "is-number@>=1.1.2 <2.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz"
+ "version": "2.1.0",
+ "from": "is-number@>=2.1.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz"
},
"is-path-cwd": {
"version": "1.0.0",
@@ -2368,13 +2993,13 @@
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
},
"isobject": {
- "version": "1.0.2",
- "from": "isobject@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz"
+ "version": "2.0.0",
+ "from": "isobject@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.0.0.tgz"
},
"isstream": {
"version": "0.1.2",
- "from": "isstream@>=0.1.0 <0.2.0",
+ "from": "isstream@>=0.1.2 <0.2.0",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
},
"jodid25519": {
@@ -2398,9 +3023,9 @@
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz"
},
"js-tokens": {
- "version": "1.0.1",
- "from": "js-tokens@1.0.1",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz"
+ "version": "1.0.2",
+ "from": "js-tokens@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.2.tgz"
},
"js-yaml": {
"version": "3.3.1",
@@ -2420,9 +3045,9 @@
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz"
},
"jscs-jsdoc": {
- "version": "1.2.0",
- "from": "jscs-jsdoc@1.2.0",
- "resolved": "https://registry.npmjs.org/jscs-jsdoc/-/jscs-jsdoc-1.2.0.tgz"
+ "version": "1.3.1",
+ "from": "jscs-jsdoc@>=1.3.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/jscs-jsdoc/-/jscs-jsdoc-1.3.1.tgz"
},
"jscs-preset-wikimedia": {
"version": "1.0.0",
@@ -2432,7 +3057,13 @@
"jsdoctypeparser": {
"version": "1.2.0",
"from": "jsdoctypeparser@>=1.2.0 <1.3.0",
- "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz"
+ "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.7.0 <4.0.0"
+ }
+ }
},
"jsesc": {
"version": "0.5.0",
@@ -2529,14 +3160,14 @@
"resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.0.tgz"
},
"kind-of": {
- "version": "2.0.1",
- "from": "kind-of@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz"
+ "version": "3.0.2",
+ "from": "kind-of@>=3.0.2 <4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.2.tgz"
},
"lazy-cache": {
- "version": "0.2.4",
- "from": "lazy-cache@>=0.2.4 <0.3.0",
- "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.4.tgz"
+ "version": "0.2.7",
+ "from": "lazy-cache@>=0.2.3 <0.3.0",
+ "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz"
},
"lcid": {
"version": "1.0.0",
@@ -2560,7 +3191,7 @@
},
"line-numbers": {
"version": "0.2.0",
- "from": "line-numbers@0.2.0",
+ "from": "line-numbers@>=0.2.0 <0.3.0",
"resolved": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz"
},
"load-json-file": {
@@ -2708,6 +3339,11 @@
"from": "lodash.deburr@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-3.0.2.tgz"
},
+ "lodash.defaults": {
+ "version": "3.1.2",
+ "from": "lodash.defaults@>=3.1.2 <4.0.0",
+ "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz"
+ },
"lodash.isarguments": {
"version": "3.0.4",
"from": "lodash.isarguments@>=3.0.0 <4.0.0",
@@ -2788,6 +3424,11 @@
"from": "lodash.words@>=3.0.0 <4.0.0",
"resolved": "https://registry.npmjs.org/lodash.words/-/lodash.words-3.0.2.tgz"
},
+ "log-symbols": {
+ "version": "1.0.2",
+ "from": "log-symbols@>=1.0.2 <2.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz"
+ },
"longest": {
"version": "1.0.1",
"from": "longest@>=1.0.1 <2.0.0",
@@ -2804,9 +3445,9 @@
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.2.0.tgz"
},
"lru-cache": {
- "version": "2.7.3",
- "from": "lru-cache@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"
+ "version": "3.2.0",
+ "from": "lru-cache@>=3.2.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz"
},
"map-obj": {
"version": "1.0.1",
@@ -2830,15 +3471,8 @@
},
"meow": {
"version": "3.6.0",
- "from": "meow@>=3.3.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.6.0.tgz",
- "dependencies": {
- "object-assign": {
- "version": "4.0.1",
- "from": "object-assign@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
- }
- }
+ "from": "meow@>=3.5.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.6.0.tgz"
},
"merge-descriptors": {
"version": "1.0.0",
@@ -2851,14 +3485,14 @@
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz"
},
"micromatch": {
- "version": "2.3.3",
+ "version": "2.3.5",
"from": "micromatch@>=2.1.5 <3.0.0",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.3.tgz"
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.5.tgz"
},
"mime": {
- "version": "1.3.4",
- "from": "mime@1.3.4",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
+ "version": "1.2.11",
+ "from": "mime@>=1.2.0 <1.3.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
},
"mime-db": {
"version": "1.20.0",
@@ -2867,7 +3501,7 @@
},
"mime-types": {
"version": "2.1.8",
- "from": "mime-types@>=2.1.8 <2.2.0",
+ "from": "mime-types@>=2.1.7 <2.2.0",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.8.tgz"
},
"min-document": {
@@ -2909,7 +3543,7 @@
},
"nan": {
"version": "2.1.0",
- "from": "nan@>=2.0.0",
+ "from": "nan@>=2.1.0 <3.0.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.1.0.tgz"
},
"natural-compare": {
@@ -2928,9 +3562,9 @@
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz"
},
"node-gyp": {
- "version": "3.2.0",
+ "version": "3.2.1",
"from": "node-gyp@>=3.0.1 <4.0.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.2.0.tgz",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.2.1.tgz",
"dependencies": {
"glob": {
"version": "4.5.3",
@@ -2939,10 +3573,16 @@
"dependencies": {
"minimatch": {
"version": "2.0.10",
- "from": "minimatch@>=2.0.1 <3.0.0"
+ "from": "minimatch@>=2.0.1 <3.0.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz"
}
}
},
+ "lru-cache": {
+ "version": "2.7.3",
+ "from": "lru-cache@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz"
+ },
"minimatch": {
"version": "1.0.0",
"from": "minimatch@>=1.0.0 <2.0.0",
@@ -2962,9 +3602,14 @@
}
}
},
+ "node-sass": {
+ "version": "3.4.2",
+ "from": "node-sass@>=3.4.2 <4.0.0",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-3.4.2.tgz"
+ },
"node-uuid": {
"version": "1.4.7",
- "from": "node-uuid@>=1.4.2 <2.0.0",
+ "from": "node-uuid@>=1.4.7 <2.0.0",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz"
},
"nomnom": {
@@ -3007,26 +3652,12 @@
"normalize-url": {
"version": "1.4.0",
"from": "normalize-url@>=1.3.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.4.0.tgz",
- "dependencies": {
- "object-assign": {
- "version": "4.0.1",
- "from": "object-assign@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.4.0.tgz"
},
"npmconf": {
"version": "2.1.2",
"from": "npmconf@>=2.1.2 <3.0.0",
- "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz",
- "dependencies": {
- "semver": {
- "version": "4.3.6",
- "from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/npmconf/-/npmconf-2.1.2.tgz"
},
"npmlog": {
"version": "1.2.1",
@@ -3054,9 +3685,9 @@
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz"
},
"object-assign": {
- "version": "3.0.0",
- "from": "object-assign@>=3.0.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz"
+ "version": "4.0.1",
+ "from": "object-assign@>=4.0.1 <5.0.0",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
},
"object.omit": {
"version": "2.0.0",
@@ -3157,7 +3788,7 @@
},
"parse5": {
"version": "1.5.1",
- "from": "parse5@>=1.4.2 <2.0.0",
+ "from": "parse5@>=1.5.1 <2.0.0",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz"
},
"parseurl": {
@@ -3190,11 +3821,6 @@
"from": "path-is-inside@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz"
},
- "path-parse": {
- "version": "1.0.5",
- "from": "path-parse@>=1.0.5 <2.0.0",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz"
- },
"path-to-regexp": {
"version": "0.1.7",
"from": "path-to-regexp@0.1.7",
@@ -3221,21 +3847,14 @@
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
},
"pinkie": {
- "version": "1.0.0",
- "from": "pinkie@>=1.0.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-1.0.0.tgz"
+ "version": "2.0.1",
+ "from": "pinkie@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.1.tgz"
},
"pinkie-promise": {
"version": "2.0.0",
"from": "pinkie-promise@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz",
- "dependencies": {
- "pinkie": {
- "version": "2.0.1",
- "from": "pinkie@>=2.0.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.1.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz"
},
"pkginfo": {
"version": "0.3.1",
@@ -3294,6 +3913,11 @@
"from": "postcss-filter-plugins@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.0.tgz"
},
+ "postcss-loader": {
+ "version": "0.8.0",
+ "from": "postcss-loader@*",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-0.8.0.tgz"
+ },
"postcss-merge-idents": {
"version": "2.1.3",
"from": "postcss-merge-idents@>=2.1.3 <3.0.0",
@@ -3305,9 +3929,9 @@
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.1.tgz"
},
"postcss-merge-rules": {
- "version": "2.0.2",
+ "version": "2.0.3",
"from": "postcss-merge-rules@>=2.0.1 <3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.0.2.tgz"
+ "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.0.3.tgz"
},
"postcss-message-helpers": {
"version": "2.0.0",
@@ -3317,14 +3941,12 @@
"postcss-minify-font-values": {
"version": "1.0.2",
"from": "postcss-minify-font-values@>=1.0.2 <2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.2.tgz",
- "dependencies": {
- "object-assign": {
- "version": "4.0.1",
- "from": "object-assign@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.2.tgz"
+ },
+ "postcss-minify-gradients": {
+ "version": "1.0.1",
+ "from": "postcss-minify-gradients@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.1.tgz"
},
"postcss-minify-params": {
"version": "1.0.4",
@@ -3364,14 +3986,7 @@
"postcss-normalize-url": {
"version": "3.0.4",
"from": "postcss-normalize-url@>=3.0.4 <4.0.0",
- "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.4.tgz",
- "dependencies": {
- "object-assign": {
- "version": "4.0.1",
- "from": "object-assign@>=4.0.1 <5.0.0",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.4.tgz"
},
"postcss-ordered-values": {
"version": "2.0.2",
@@ -3439,9 +4054,9 @@
"resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz"
},
"process-nextick-args": {
- "version": "1.0.5",
+ "version": "1.0.6",
"from": "process-nextick-args@>=1.0.0 <1.1.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.5.tgz"
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz"
},
"promise": {
"version": "7.0.4",
@@ -3459,9 +4074,9 @@
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz"
},
"proxy-addr": {
- "version": "1.0.9",
+ "version": "1.0.10",
"from": "proxy-addr@>=1.0.8 <1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.9.tgz"
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.10.tgz"
},
"prr": {
"version": "0.0.0",
@@ -3474,9 +4089,9 @@
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.1.tgz"
},
"punycode": {
- "version": "1.3.2",
+ "version": "1.4.0",
"from": "punycode@>=1.2.4 <2.0.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.0.tgz"
},
"q": {
"version": "1.4.1",
@@ -3484,9 +4099,9 @@
"resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz"
},
"qs": {
- "version": "5.1.0",
- "from": "qs@5.1.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz"
+ "version": "5.2.0",
+ "from": "qs@>=5.2.0 <5.3.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz"
},
"query-string": {
"version": "3.0.0",
@@ -3509,23 +4124,9 @@
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.3.tgz"
},
"randomatic": {
- "version": "1.1.3",
- "from": "randomatic@>=1.1.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.3.tgz",
- "dependencies": {
- "is-number": {
- "version": "2.1.0",
- "from": "is-number@>=2.0.2 <3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "dependencies": {
- "kind-of": {
- "version": "3.0.2",
- "from": "kind-of@>=3.0.2 <4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.0.2.tgz"
- }
- }
- }
- }
+ "version": "1.1.5",
+ "from": "randomatic@>=1.1.3 <2.0.0",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.5.tgz"
},
"range-parser": {
"version": "1.0.3",
@@ -3541,6 +4142,11 @@
"version": "2.2.0",
"from": "bytes@2.2.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz"
+ },
+ "iconv-lite": {
+ "version": "0.4.13",
+ "from": "iconv-lite@0.4.13",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz"
}
}
},
@@ -3584,7 +4190,13 @@
"react-proxy": {
"version": "1.1.1",
"from": "react-proxy@>=1.1.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.1.tgz"
+ "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.1.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.7.0 <4.0.0"
+ }
+ }
},
"react-redux": {
"version": "4.0.0",
@@ -3592,9 +4204,9 @@
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.0.0.tgz"
},
"react-router": {
- "version": "1.0.0",
+ "version": "1.0.2",
"from": "react-router@>=1.0.0-rc3 <2.0.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-1.0.0.tgz"
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-1.0.2.tgz"
},
"read": {
"version": "1.0.7",
@@ -3602,16 +4214,9 @@
"resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz"
},
"read-json-sync": {
- "version": "1.1.0",
+ "version": "1.1.1",
"from": "read-json-sync@>=1.1.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/read-json-sync/-/read-json-sync-1.1.0.tgz",
- "dependencies": {
- "graceful-fs": {
- "version": "3.0.8",
- "from": "graceful-fs@>=3.0.5 <4.0.0",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz"
- }
- }
+ "resolved": "https://registry.npmjs.org/read-json-sync/-/read-json-sync-1.1.1.tgz"
},
"read-pkg": {
"version": "1.1.0",
@@ -3625,7 +4230,7 @@
},
"readable-stream": {
"version": "2.0.4",
- "from": "readable-stream@>=2.0.1 <3.0.0",
+ "from": "readable-stream@>=2.0.2 <3.0.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.4.tgz"
},
"readdirp": {
@@ -3639,9 +4244,16 @@
"resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz"
},
"recast": {
- "version": "0.10.33",
- "from": "recast@0.10.33",
- "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz"
+ "version": "0.10.39",
+ "from": "recast@>=0.10.10 <0.11.0",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.39.tgz",
+ "dependencies": {
+ "esprima-fb": {
+ "version": "15001.1001.0-dev-harmony-fb",
+ "from": "esprima-fb@>=15001.1001.0-dev-harmony-fb <15001.1002.0",
+ "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz"
+ }
+ }
},
"redent": {
"version": "1.0.0",
@@ -3667,8 +4279,7 @@
"dependencies": {
"balanced-match": {
"version": "0.1.0",
- "from": "balanced-match@>=0.1.0 <0.2.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz"
+ "from": "balanced-match@>=0.1.0 <0.2.0"
}
}
},
@@ -3695,7 +4306,19 @@
"regenerator": {
"version": "0.8.40",
"from": "regenerator@0.8.40",
- "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.40.tgz"
+ "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.40.tgz",
+ "dependencies": {
+ "esprima-fb": {
+ "version": "15001.1001.0-dev-harmony-fb",
+ "from": "esprima-fb@>=15001.1001.0-dev-harmony-fb <15001.1002.0",
+ "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz"
+ },
+ "recast": {
+ "version": "0.10.33",
+ "from": "recast@0.10.33",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz"
+ }
+ }
},
"regex-cache": {
"version": "0.4.2",
@@ -3704,15 +4327,8 @@
},
"regexpu": {
"version": "1.3.0",
- "from": "regexpu@>=1.3.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz",
- "dependencies": {
- "esprima": {
- "version": "2.7.0",
- "from": "esprima@>=2.6.0 <3.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.0.tgz"
- }
- }
+ "from": "regexpu@>=1.1.2 <2.0.0",
+ "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz"
},
"regjsgen": {
"version": "0.2.0",
@@ -3736,18 +4352,18 @@
},
"repeating": {
"version": "1.1.3",
- "from": "repeating@>=1.1.2 <2.0.0",
+ "from": "repeating@>=1.1.3 <2.0.0",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz"
},
"request": {
"version": "2.67.0",
- "from": "request@>=2.55.0 <3.0.0",
+ "from": "request@>=2.65.0 <3.0.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz",
"dependencies": {
- "qs": {
- "version": "5.2.0",
- "from": "qs@>=5.2.0 <5.3.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz"
+ "node-uuid": {
+ "version": "1.4.7",
+ "from": "node-uuid@>=1.4.7 <1.5.0",
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz"
}
}
},
@@ -3766,6 +4382,28 @@
"from": "resolve@>=1.1.6 <2.0.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz"
},
+ "resolve-url": {
+ "version": "0.2.1",
+ "from": "resolve-url@>=0.2.1 <0.3.0",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz"
+ },
+ "resolve-url-loader": {
+ "version": "1.4.3",
+ "from": "resolve-url-loader@latest",
+ "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-1.4.3.tgz",
+ "dependencies": {
+ "camelcase": {
+ "version": "1.2.1",
+ "from": "camelcase@>=1.2.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz"
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "from": "source-map@>=0.1.43 <0.2.0",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"
+ }
+ }
+ },
"restore-cursor": {
"version": "1.0.1",
"from": "restore-cursor@>=1.0.1 <2.0.0",
@@ -3776,6 +4414,32 @@
"from": "revalidator@>=0.1.0 <0.2.0",
"resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz"
},
+ "rework": {
+ "version": "1.0.1",
+ "from": "rework@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz",
+ "dependencies": {
+ "convert-source-map": {
+ "version": "0.3.5",
+ "from": "convert-source-map@>=0.3.3 <0.4.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz"
+ },
+ "css": {
+ "version": "2.2.1",
+ "from": "css@>=2.0.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/css/-/css-2.2.1.tgz"
+ },
+ "source-map": {
+ "version": "0.1.43",
+ "from": "source-map@>=0.1.38 <0.2.0"
+ }
+ }
+ },
+ "rework-visit": {
+ "version": "1.0.0",
+ "from": "rework-visit@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz"
+ },
"right-align": {
"version": "0.1.3",
"from": "right-align@>=0.1.1 <0.2.0",
@@ -3783,7 +4447,7 @@
},
"rimraf": {
"version": "2.4.4",
- "from": "rimraf@>=2.2.8 <3.0.0",
+ "from": "rimraf@>=2.0.0 <3.0.0",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.4.tgz"
},
"ripemd160": {
@@ -3804,7 +4468,29 @@
"sass-graph": {
"version": "2.0.1",
"from": "sass-graph@>=2.0.1 <3.0.0",
- "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.0.1.tgz"
+ "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.0.1.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.8.0 <4.0.0"
+ }
+ }
+ },
+ "sass-loader": {
+ "version": "3.1.2",
+ "from": "sass-loader@>=3.1.1 <4.0.0",
+ "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-3.1.2.tgz",
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.12",
+ "from": "loader-utils@>=0.2.5 <0.3.0"
+ }
+ }
+ },
+ "sass-resources-loader": {
+ "version": "0.0.2",
+ "from": "sass-resources-loader@latest",
+ "resolved": "https://registry.npmjs.org/sass-resources-loader/-/sass-resources-loader-0.0.2.tgz"
},
"sax": {
"version": "1.1.4",
@@ -3812,9 +4498,26 @@
"resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz"
},
"semver": {
- "version": "5.1.0",
- "from": "semver@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0||>=4.0.0 <5.0.0||>=5.0.0 <6.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz"
+ "version": "4.3.6",
+ "from": "semver@>=4.0.3 <5.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz"
+ },
+ "semver-regex": {
+ "version": "1.0.0",
+ "from": "semver-regex@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-1.0.0.tgz"
+ },
+ "semver-truncate": {
+ "version": "1.1.0",
+ "from": "semver-truncate@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.0.tgz",
+ "dependencies": {
+ "semver": {
+ "version": "5.1.0",
+ "from": "semver@>=5.0.3 <6.0.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz"
+ }
+ }
},
"send": {
"version": "0.13.0",
@@ -3825,6 +4528,11 @@
"version": "1.0.1",
"from": "depd@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz"
+ },
+ "mime": {
+ "version": "1.3.4",
+ "from": "mime@1.3.4",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
}
}
},
@@ -3878,11 +4586,6 @@
"from": "slash@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz"
},
- "sleep": {
- "version": "3.0.0",
- "from": "sleep@>=3.0.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz"
- },
"sntp": {
"version": "1.0.9",
"from": "sntp@>=1.0.0 <2.0.0",
@@ -3912,7 +4615,7 @@
},
"source-list-map": {
"version": "0.1.5",
- "from": "source-list-map@>=0.1.0 <0.2.0",
+ "from": "source-list-map@>=0.1.4 <0.2.0",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz"
},
"source-map": {
@@ -3920,6 +4623,11 @@
"from": "source-map@>=0.5.0 <0.6.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz"
},
+ "source-map-resolve": {
+ "version": "0.3.1",
+ "from": "source-map-resolve@>=0.3.0 <0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.3.1.tgz"
+ },
"source-map-support": {
"version": "0.2.10",
"from": "source-map-support@>=0.2.10 <0.3.0",
@@ -3932,6 +4640,11 @@
}
}
},
+ "source-map-url": {
+ "version": "0.3.0",
+ "from": "source-map-url@>=0.3.0 <0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.3.0.tgz"
+ },
"spawn-sync": {
"version": "1.0.13",
"from": "spawn-sync@1.0.13",
@@ -3996,8 +4709,7 @@
"dependencies": {
"readable-stream": {
"version": "1.1.13",
- "from": "readable-stream@>=1.0.27-1 <2.0.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz"
+ "from": "readable-stream@>=1.0.27-1 <2.0.0"
}
}
},
@@ -4016,6 +4728,11 @@
"from": "string_decoder@>=0.10.0 <0.11.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
},
+ "string-width": {
+ "version": "1.0.1",
+ "from": "string-width@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.1.tgz"
+ },
"stringmap": {
"version": "0.2.2",
"from": "stringmap@>=0.2.2 <0.3.0",
@@ -4051,6 +4768,17 @@
"from": "strip-json-comments@>=1.0.1 <1.1.0",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
},
+ "style-loader": {
+ "version": "0.13.0",
+ "from": "style-loader@>=0.13.0 <0.14.0",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.0.tgz",
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.12",
+ "from": "loader-utils@>=0.2.7 <0.3.0"
+ }
+ }
+ },
"success-symbol": {
"version": "0.1.0",
"from": "success-symbol@>=0.1.0 <0.2.0",
@@ -4088,13 +4816,13 @@
},
"through": {
"version": "2.3.8",
- "from": "through@>=2.3.8 <2.4.0",
+ "from": "through@>=2.3.4 <2.4.0",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz"
},
"timers-browserify": {
- "version": "1.4.1",
+ "version": "1.4.2",
"from": "timers-browserify@>=1.0.1 <2.0.0",
- "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz"
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz"
},
"to-double-quotes": {
"version": "2.0.0",
@@ -4103,7 +4831,7 @@
},
"to-fast-properties": {
"version": "1.0.1",
- "from": "to-fast-properties@>=1.0.0 <2.0.0",
+ "from": "to-fast-properties@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz"
},
"to-single-quotes": {
@@ -4113,7 +4841,7 @@
},
"tough-cookie": {
"version": "2.2.1",
- "from": "tough-cookie@>=2.2.0 <3.0.0",
+ "from": "tough-cookie@>=2.2.0 <2.3.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz"
},
"tr46": {
@@ -4143,8 +4871,7 @@
},
"source-map": {
"version": "0.1.43",
- "from": "source-map@>=0.1.7 <0.2.0",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz"
+ "from": "source-map@>=0.1.7 <0.2.0"
},
"uglify-js": {
"version": "2.2.5",
@@ -4160,7 +4887,7 @@
},
"trim-right": {
"version": "1.0.1",
- "from": "trim-right@>=1.0.0 <2.0.0",
+ "from": "trim-right@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz"
},
"try-resolve": {
@@ -4184,9 +4911,9 @@
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz"
},
"tunnel-agent": {
- "version": "0.4.1",
+ "version": "0.4.2",
"from": "tunnel-agent@>=0.4.1 <0.5.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz"
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz"
},
"tweetnacl": {
"version": "0.13.2",
@@ -4228,11 +4955,26 @@
"from": "async@>=0.2.6 <0.3.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
},
+ "camelcase": {
+ "version": "1.2.1",
+ "from": "camelcase@>=1.0.2 <2.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz"
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "from": "cliui@>=2.1.0 <3.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz"
+ },
"window-size": {
"version": "0.1.0",
"from": "window-size@0.1.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz"
},
+ "wordwrap": {
+ "version": "0.0.2",
+ "from": "wordwrap@0.0.2",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"
+ },
"yargs": {
"version": "3.10.0",
"from": "yargs@>=3.10.0 <3.11.0",
@@ -4251,9 +4993,9 @@
"resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz"
},
"uncontrollable": {
- "version": "3.1.4",
+ "version": "3.2.0",
"from": "uncontrollable@>=3.1.3 <4.0.0",
- "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.4.tgz"
+ "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.2.0.tgz"
},
"underscore": {
"version": "1.6.0",
@@ -4280,10 +5022,33 @@
"from": "unpipe@1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
},
+ "urix": {
+ "version": "0.1.0",
+ "from": "urix@>=0.1.0 <0.2.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz"
+ },
"url": {
"version": "0.10.3",
"from": "url@>=0.10.1 <0.11.0",
- "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz"
+ "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "from": "punycode@1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
+ }
+ }
+ },
+ "url-loader": {
+ "version": "0.5.7",
+ "from": "url-loader@>=0.5.6 <0.6.0",
+ "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.7.tgz",
+ "dependencies": {
+ "loader-utils": {
+ "version": "0.2.12",
+ "from": "loader-utils@>=0.2.0 <0.3.0"
+ }
+ }
},
"url-parse": {
"version": "1.0.5",
@@ -4319,8 +5084,7 @@
"dependencies": {
"async": {
"version": "0.2.10",
- "from": "async@>=0.2.9 <0.3.0",
- "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
+ "from": "async@>=0.2.9 <0.3.0"
}
}
},
@@ -4329,6 +5093,11 @@
"from": "utils-merge@1.0.0",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz"
},
+ "v8flags": {
+ "version": "2.0.10",
+ "from": "v8flags@>=2.0.10 <3.0.0",
+ "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.10.tgz"
+ },
"validate-npm-package-license": {
"version": "3.0.1",
"from": "validate-npm-package-license@>=3.0.1 <4.0.0",
@@ -4403,14 +5172,13 @@
"from": "webpack@>=1.12.8 <2.0.0",
"resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.9.tgz",
"dependencies": {
- "esprima": {
- "version": "2.7.0",
- "from": "esprima@>=2.5.0 <3.0.0"
+ "loader-utils": {
+ "version": "0.2.12",
+ "from": "loader-utils@>=0.2.11 <0.3.0"
},
"supports-color": {
"version": "3.1.2",
- "from": "supports-color@>=3.1.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz"
+ "from": "supports-color@>=3.1.0 <4.0.0"
}
}
},
@@ -4429,7 +5197,14 @@
"webpack-dev-middleware": {
"version": "1.4.0",
"from": "webpack-dev-middleware@>=1.4.0 <2.0.0",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.4.0.tgz"
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.4.0.tgz",
+ "dependencies": {
+ "mime": {
+ "version": "1.3.4",
+ "from": "mime@>=1.3.4 <2.0.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
+ }
+ }
},
"websocket-driver": {
"version": "0.6.3",
@@ -4463,7 +5238,7 @@
},
"window-size": {
"version": "0.1.4",
- "from": "window-size@>=0.1.2 <0.2.0",
+ "from": "window-size@>=0.1.4 <0.2.0",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz"
},
"winston": {
@@ -4473,8 +5248,7 @@
"dependencies": {
"async": {
"version": "0.2.10",
- "from": "async@>=0.2.0 <0.3.0",
- "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
+ "from": "async@>=0.2.0 <0.3.0"
},
"colors": {
"version": "0.6.2",
@@ -4486,12 +5260,24 @@
"with": {
"version": "4.0.3",
"from": "with@>=4.0.0 <4.1.0",
- "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz"
+ "resolved": "https://registry.npmjs.org/with/-/with-4.0.3.tgz",
+ "dependencies": {
+ "acorn": {
+ "version": "1.2.2",
+ "from": "acorn@>=1.0.1 <2.0.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz"
+ }
+ }
},
"wordwrap": {
- "version": "0.0.2",
- "from": "wordwrap@0.0.2",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz"
+ "version": "0.0.3",
+ "from": "wordwrap@>=0.0.2 <0.1.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz"
+ },
+ "wrap-ansi": {
+ "version": "1.0.0",
+ "from": "wrap-ansi@>=1.0.0 <2.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-1.0.0.tgz"
},
"wrappy": {
"version": "1.0.1",
@@ -4516,7 +5302,13 @@
"xmlbuilder": {
"version": "3.1.0",
"from": "xmlbuilder@>=3.1.0 <4.0.0",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz"
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz",
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "from": "lodash@>=3.5.0 <4.0.0"
+ }
+ }
},
"xtend": {
"version": "4.0.1",
@@ -4529,9 +5321,9 @@
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.0.tgz"
},
"yargs": {
- "version": "3.27.0",
- "from": "yargs@>=3.27.0 <3.28.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz"
+ "version": "3.31.0",
+ "from": "yargs@>=3.8.0 <4.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.31.0.tgz"
}
}
}
diff --git a/client/package.json b/client/package.json
index ad6a80a2..3b00cad0 100644
--- a/client/package.json
+++ b/client/package.json
@@ -24,26 +24,38 @@
},
"homepage": "https://github.com/shakacode/react-webpack-rails-tutorial",
"scripts": {
- "test": "mocha --compilers js:babel-core/register --require ./test/test_helper.js 'test/**/*.@(js|jsx)'",
+ "test": "NODE_PATH=./app mocha --compilers js:babel-core/register --require ./app/libs/testHelper.js --require ./app/libs/testNullCompiler.js 'app/**/*.spec.@(js|jsx)'",
"test:debug": "npm run test -- --debug-brk",
"start": "node server.js",
- "build:client": "NODE_ENV=production webpack --config webpack.client.rails.config.js",
- "build:server": "NODE_ENV=production webpack --config webpack.server.rails.config.js",
- "build:dev:client": "webpack -w --config webpack.client.rails.config.js",
- "build:dev:server": "webpack -w --config webpack.server.rails.config.js",
+ "build:client": "NODE_ENV=production webpack --config webpack.client.rails.build.config.js",
+ "build:server": "NODE_ENV=production webpack --config webpack.server.rails.build.config.js",
+ "build:dev:client": "babel-node server.rails.hot.js",
+ "build:dev:server": "webpack -w --config webpack.server.rails.build.config.js",
+ "build:test:client": "webpack -w --config webpack.client.rails.build.config.js",
"lint": "npm run eslint && npm run jscs",
"eslint": "eslint --ext .js,.jsx .",
"jscs": "jscs --verbose ."
},
"dependencies": {
+ "autoprefixer": "^6.1.2",
"axios": "^0.7.0",
- "babel-core": "^5.8.25",
- "babel-loader": "^5.3.2",
- "body-parser": "^1.14.1",
+ "babel": "^6.3.13",
+ "babel-cli": "^6.3.17",
+ "babel-core": "^6.3.17",
+ "babel-loader": "^6.2.0",
+ "babel-polyfill": "^6.3.14",
+ "babel-preset-es2015": "^6.3.13",
+ "babel-preset-react": "^6.3.13",
+ "babel-preset-stage-0": "^6.3.13",
+ "bootstrap-loader": "^1.0.0-rc",
+ "bootstrap-sass": "^3.3.5",
+ "css-loader": "^0.23.0",
"es5-shim": "^4.3.1",
"es6-promise": "^3.0.2",
"expose-loader": "^0.7.1",
- "history": "^1.12.5",
+ "extract-text-webpack-plugin": "^0.9.1",
+ "file-loader": "^0.8.4",
+ "history": "^1.13.1",
"immutable": "^3.7.5",
"imports-loader": "^0.6.5",
"jquery": "^2.1.4",
@@ -51,7 +63,9 @@
"loader-utils": "^0.2.11",
"lodash": "^3.10.1",
"marked": "^0.3.5",
+ "node-sass": "^3.4.2",
"node-uuid": "^1.4.7",
+ "postcss-loader": "^0.8.0",
"react": "^0.14.3",
"react-bootstrap": "^0.28.1",
"react-dom": "^0.14.3",
@@ -60,33 +74,30 @@
"redux": "^3.0.4",
"redux-promise": "^0.5.0",
"redux-thunk": "^1.0.0",
- "sleep": "^3.0.0",
+ "resolve-url-loader": "^1.4.3",
+ "sass-loader": "^3.1.1",
+ "sass-resources-loader": "0.0.2",
+ "style-loader": "^0.13.0",
+ "url-loader": "^0.5.6",
"webpack": "^1.12.8"
},
"devDependencies": {
- "babel-eslint": "^4.1.6",
- "babel-plugin-react-transform": "^1.1.1",
- "bootstrap-sass": "^3.3.5",
- "bootstrap-sass-loader": "^1.0.9",
+ "babel-eslint": "^5.0.0-beta6",
+ "babel-plugin-react-transform": "^2.0.0-beta1",
+ "body-parser": "^1.14.1",
"chai": "^3.4.1",
"chai-immutable": "^1.5.3",
- "css-loader": "^0.23.0",
- "eslint": "^1.10.1",
- "eslint-config-airbnb": "1.0.2",
+ "eslint": "^1.10.3",
+ "eslint-config-airbnb": "^2.0.0",
"eslint-plugin-react": "^3.11.3",
- "esprima-fb": "^15001.1001.0-dev-harmony-fb",
"express": "^4.13.3",
- "file-loader": "^0.8.4",
"jade": "^1.11.0",
- "jscs": "^2.6.0",
+ "jscs": "^2.7.0",
"jsdom": "^7.0.2",
"mocha": "^2.3.4",
- "node-sass": "^3.4.2",
"react-addons-test-utils": "^0.14.3",
"react-transform-hmr": "^1.0.1",
- "sass-loader": "^3.1.1",
- "style-loader": "^0.13.0",
- "url-loader": "^0.5.6",
+ "sleep": "^3.0.0",
"webpack-dev-server": "^1.12.1"
}
}
diff --git a/client/server.js b/client/server.js
index b619e47d..46784410 100644
--- a/client/server.js
+++ b/client/server.js
@@ -26,7 +26,7 @@ var server = new WebpackDevServer(webpack(config), {
});
server.app.use(bodyParser.json(null));
-server.app.use(bodyParser.urlencoded({extended: true}));
+server.app.use(bodyParser.urlencoded({ extended: true }));
server.app.get('/comments.json', function(req, res) {
sleep.sleep(1);
diff --git a/client/server.rails.hot.js b/client/server.rails.hot.js
new file mode 100644
index 00000000..4194effa
--- /dev/null
+++ b/client/server.rails.hot.js
@@ -0,0 +1,35 @@
+/* eslint no-var: 0, no-console: 0 */
+
+import webpack from 'webpack';
+import WebpackDevServer from 'webpack-dev-server';
+
+import webpackConfig from './webpack.client.rails.hot.config';
+
+const hotRailsPort = process.env.HOT_RAILS_PORT || 3500;
+
+const compiler = webpack(webpackConfig);
+
+const devServer = new WebpackDevServer(compiler, {
+ contentBase: 'http://lvh.me:' + hotRailsPort,
+ publicPath: webpackConfig.output.publicPath,
+ hot: true,
+ inline: true,
+ historyApiFallback: true,
+ quiet: false,
+ noInfo: false,
+ lazy: false,
+ stats: {
+ colors: true,
+ hash: false,
+ version: false,
+ chunks: false,
+ children: false,
+ },
+});
+
+devServer.listen(3500, 'localhost', err => {
+ if (err) console.error(err);
+ console.log(
+ '=> 🔥 Webpack development server is running on port ' + hotRailsPort
+ );
+});
diff --git a/client/webpack.client.base.config.js b/client/webpack.client.base.config.js
index d572563e..5c0ad1e9 100644
--- a/client/webpack.client.base.config.js
+++ b/client/webpack.client.base.config.js
@@ -2,6 +2,7 @@
const webpack = require('webpack');
const path = require('path');
+const autoprefixer = require('autoprefixer');
const devBuild = process.env.NODE_ENV !== 'production';
const nodeEnv = devBuild ? 'development' : 'production';
@@ -14,7 +15,7 @@ module.exports = {
// See use of 'vendor' in the CommonsChunkPlugin inclusion below.
vendor: [
- 'babel-core/polyfill',
+ 'babel-polyfill',
'jquery',
'react',
'react-dom',
@@ -22,13 +23,13 @@ module.exports = {
// This will contain the app entry points defined by webpack.hot.config and webpack.rails.config
app: [
- './app/bundles/Comments/startup/clientGlobals',
+ './app/bundles/comments/startup/clientGlobals',
],
},
resolve: {
- extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'],
+ extensions: ['', '.js', '.jsx'],
alias: {
- lib: path.join(process.cwd(), 'app', 'lib'),
+ libs: path.join(process.cwd(), 'app', 'libs'),
},
},
plugins: [
@@ -54,12 +55,34 @@ module.exports = {
],
module: {
loaders: [
+ { test: /\.(woff2?|svg)$/, loader: 'url?limit=10000' },
+ { test: /\.(ttf|eot)$/, loader: 'file' },
+ { test: /\.(jpe?g|png|gif|svg|ico)$/, loader: 'url?limit=10000' },
- // React is necessary for the client rendering:
+ // React is necessary for the client rendering
{ test: require.resolve('react'), loader: 'expose?React' },
{ test: require.resolve('react-dom'), loader: 'expose?ReactDOM' },
+ { test: require.resolve('jquery-ujs'), loader: 'imports?jQuery=jquery' },
{ test: require.resolve('jquery'), loader: 'expose?jQuery' },
{ test: require.resolve('jquery'), loader: 'expose?$' },
+
+ // Use one of these to serve jQuery for Bootstrap scripts:
+
+ // Bootstrap 3
+ { test: /bootstrap-sass\/assets\/javascripts\//, loader: 'imports?jQuery=jquery' },
+
+ // Bootstrap 4
+ { test: /bootstrap\/dist\/js\/umd\//, loader: 'imports?jQuery=jquery' },
],
},
+
+ // Place here all postCSS plugins here, so postcss-loader will apply them
+ postcss: [autoprefixer],
+
+ // Place here all SASS files with variables, mixins etc.
+ // And sass-resources-loader will load them in every CSS Module (SASS file) for you
+ // (so don't need to @import them explicitly)
+ // https://github.com/shakacode/sass-resources-loader
+ sassResources: ['./app/assets/styles/app-variables.scss'],
+
};
diff --git a/client/webpack.client.hot.config.js b/client/webpack.client.hot.config.js
index 825aceff..78d4d507 100644
--- a/client/webpack.client.hot.config.js
+++ b/client/webpack.client.hot.config.js
@@ -2,21 +2,17 @@
// cd client && node server.js
const webpack = require('webpack');
-const path = require('path');
+
const config = require('./webpack.client.base.config');
-// We're using the bootstrap-sass loader.
-// See: https://github.com/shakacode/bootstrap-sass-loader
-config.entry.vendor.push('bootstrap-sass!./bootstrap-sass.config.js');
+const hotPort = process.env.HOT_PORT || 4000;
+
+config.entry.vendor.push('bootstrap-loader');
config.entry.app.push(
// Webpack dev server
- 'webpack-dev-server/client?http://localhost:4000',
- 'webpack/hot/dev-server',
-
- // Test out Css & Sass
- './assets/stylesheets/test-stylesheet.css',
- './assets/stylesheets/test-sass-stylesheet.scss'
+ 'webpack-dev-server/client?http://localhost:' + hotPort,
+ 'webpack/hot/dev-server'
);
config.output = {
@@ -25,7 +21,10 @@ config.output = {
filename: '[name]-bundle.js',
path: __dirname,
};
-config.plugins.unshift(new webpack.HotModuleReplacementPlugin());
+config.plugins.unshift(
+ new webpack.HotModuleReplacementPlugin(),
+ new webpack.NoErrorsPlugin()
+);
config.devtool = 'eval-source-map';
// All the styling loaders only apply to hot-reload, not rails
@@ -35,33 +34,40 @@ config.module.loaders.push(
loader: 'babel',
exclude: /node_modules/,
query: {
- plugins: ['react-transform'],
- extra: {
- 'react-transform': {
- transforms: [
- {
- transform: 'react-transform-hmr',
- imports: ['react'],
- locals: ['module'],
- },
- ],
- },
- },
+ plugins: [
+ [
+ 'react-transform',
+ {
+ transforms: [
+ {
+ transform: 'react-transform-hmr',
+ imports: ['react'],
+ locals: ['module'],
+ },
+ ],
+ },
+ ],
+ ],
},
},
- { test: /\.css$/, loader: 'style-loader!css-loader' },
{
- test: /\.scss$/,
- loader: 'style!css!sass?outputStyle=expanded&imagePath=/assets/images&includePaths[]=' +
- path.resolve(__dirname, './assets/stylesheets'),
+ test: /\.css$/,
+ loaders: [
+ 'style',
+ 'css?modules&importLoaders=1&localIdentName=[name]__[local]__[hash:base64:5]',
+ 'postcss',
+ ],
},
-
- // The url-loader uses DataUrls. The file-loader emits files.
- { test: /\.woff$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' },
- { test: /\.woff2$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff' },
- { test: /\.ttf$/, loader: 'file-loader' },
- { test: /\.eot$/, loader: 'file-loader' },
- { test: /\.svg$/, loader: 'file-loader' }
+ {
+ test: /\.scss$/,
+ loaders: [
+ 'style',
+ 'css?modules&importLoaders=3&localIdentName=[name]__[local]__[hash:base64:5]',
+ 'postcss',
+ 'sass',
+ 'sass-resources',
+ ],
+ }
);
module.exports = config;
diff --git a/client/webpack.client.rails.config.js b/client/webpack.client.rails.build.config.js
similarity index 53%
rename from client/webpack.client.rails.config.js
rename to client/webpack.client.rails.build.config.js
index bd1ce725..5dfdc0b9 100644
--- a/client/webpack.client.rails.config.js
+++ b/client/webpack.client.rails.build.config.js
@@ -1,43 +1,62 @@
// Run like this:
-// cd client && npm run build:dev
+// cd client && npm run build:client
// Note that Foreman (Procfile.dev) has also been configured to take care of this.
-// NOTE: All style sheets handled by the asset pipeline in rails
-
const webpack = require('webpack');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+
const config = require('./webpack.client.base.config');
const devBuild = process.env.NODE_ENV !== 'production';
config.output = {
filename: '[name]-bundle.js',
- path: '../app/assets/javascripts/generated',
+ path: '../app/assets/webpack',
};
// You can add entry points specific to rails here
config.entry.vendor.unshift(
'es5-shim/es5-shim',
- 'es5-shim/es5-sham'
+ 'es5-shim/es5-sham',
+ 'jquery-ujs',
+ 'bootstrap-loader/extractStyles'
);
-// jquery-ujs MUST GO AFTER jquery, so must use 'push'
-config.entry.app.push('jquery-ujs');
-
// See webpack.common.config for adding modules common to both the webpack dev server and rails
config.module.loaders.push(
{ test: /\.jsx?$/, loader: 'babel-loader', exclude: /node_modules/ },
+ {
+ test: /\.css$/,
+ loader: ExtractTextPlugin.extract(
+ 'style',
+ 'css?minimize&modules&importLoaders=1&localIdentName=[name]__[local]__[hash:base64:5]' +
+ '!postcss'
+ ),
+ },
+ {
+ test: /\.scss$/,
+ loader: ExtractTextPlugin.extract(
+ 'style',
+ 'css?minimize&modules&importLoaders=3&localIdentName=[name]__[local]__[hash:base64:5]' +
+ '!postcss' +
+ '!sass' +
+ '!sass-resources'
+ ),
+ },
{ test: require.resolve('react'), loader: 'imports?shim=es5-shim/es5-shim&sham=es5-shim/es5-sham' }
);
-module.exports = config;
+config.plugins.push(
+ new ExtractTextPlugin('[name]-bundle.css', { allChunks: true }),
+ new webpack.optimize.DedupePlugin()
+);
if (devBuild) {
console.log('Webpack dev build for Rails'); // eslint-disable-line no-console
- module.exports.devtool = 'eval-source-map';
+ config.devtool = 'eval-source-map';
} else {
- config.plugins.push(
- new webpack.optimize.DedupePlugin()
- );
console.log('Webpack production build for Rails'); // eslint-disable-line no-console
}
+
+module.exports = config;
diff --git a/client/webpack.client.rails.hot.config.js b/client/webpack.client.rails.hot.config.js
new file mode 100644
index 00000000..e42fb7b8
--- /dev/null
+++ b/client/webpack.client.rails.hot.config.js
@@ -0,0 +1,82 @@
+// Run with Rails server like this:
+// rails s
+// cd client && babel-node server.rails.hot.js
+// Note that Foreman (Procfile.dev) has also been configured to take care of this.
+
+const path = require('path');
+const webpack = require('webpack');
+
+const config = require('./webpack.client.base.config');
+
+const hotRailsPort = process.env.HOT_RAILS_PORT || 3500;
+
+config.entry.app.push(
+ 'webpack-dev-server/client?http://localhost:' + hotRailsPort,
+ 'webpack/hot/only-dev-server'
+);
+
+config.entry.vendor.push(
+ 'es5-shim/es5-shim',
+ 'es5-shim/es5-sham',
+ 'jquery-ujs',
+ 'bootstrap-loader'
+);
+
+config.output = {
+ filename: '[name]-bundle.js',
+ path: path.join(__dirname, 'public'),
+ publicPath: `http://localhost:${hotRailsPort}/`,
+};
+
+config.module.loaders.push(
+ {
+ test: /\.jsx?$/,
+ loader: 'babel',
+ exclude: /node_modules/,
+ query: {
+ plugins: [
+ [
+ 'react-transform',
+ {
+ transforms: [
+ {
+ transform: 'react-transform-hmr',
+ imports: ['react'],
+ locals: ['module'],
+ },
+ ],
+ },
+ ],
+ ],
+ },
+ },
+ {
+ test: /\.css$/,
+ loaders: [
+ 'style',
+ 'css?modules&importLoaders=1&localIdentName=[name]__[local]__[hash:base64:5]',
+ 'postcss',
+ ],
+ },
+ {
+ test: /\.scss$/,
+ loaders: [
+ 'style',
+ 'css?modules&importLoaders=3&localIdentName=[name]__[local]__[hash:base64:5]',
+ 'postcss',
+ 'sass',
+ 'sass-resources',
+ ],
+ }
+);
+
+config.plugins.push(
+ new webpack.HotModuleReplacementPlugin(),
+ new webpack.NoErrorsPlugin()
+);
+
+config.devtool = 'eval-source-map';
+
+console.log('Webpack dev build for Rails'); // eslint-disable-line no-console
+
+module.exports = config;
diff --git a/client/webpack.server.rails.config.js b/client/webpack.server.rails.build.config.js
similarity index 55%
rename from client/webpack.server.rails.config.js
rename to client/webpack.server.rails.build.config.js
index e5a4458b..35364f76 100644
--- a/client/webpack.server.rails.config.js
+++ b/client/webpack.server.rails.build.config.js
@@ -10,15 +10,19 @@ module.exports = {
// the project dir
context: __dirname,
- entry: ['./app/bundles/Comments/startup/serverGlobals', 'react-dom/server', 'react'],
+ entry: [
+ 'react',
+ 'react-dom/server',
+ './app/bundles/comments/startup/serverGlobals',
+ ],
output: {
filename: 'server-bundle.js',
- path: '../app/assets/javascripts/generated',
+ path: '../app/assets/webpack',
},
resolve: {
- extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', 'config.js'],
+ extensions: ['', '.js', '.jsx'],
alias: {
- lib: path.join(process.cwd(), 'app', 'lib'),
+ libs: path.join(process.cwd(), 'app', 'libs'),
},
},
plugins: [
@@ -31,10 +35,27 @@ module.exports = {
module: {
loaders: [
{ test: /\.jsx?$/, loader: 'babel-loader', exclude: /node_modules/ },
+ {
+ test: /\.css$/,
+ loaders: [
+ 'css/locals?modules&importLoaders=0&localIdentName=[name]__[local]__[hash:base64:5]',
+ ],
+ },
+ {
+ test: /\.scss$/,
+ loaders: [
+ 'css/locals?modules&importLoaders=2&localIdentName=[name]__[local]__[hash:base64:5]',
+ 'sass',
+ 'sass-resources',
+ ],
+ },
// React is necessary for the client rendering:
{ test: require.resolve('react'), loader: 'expose?React' },
{ test: require.resolve('react-dom/server'), loader: 'expose?ReactDOMServer' },
],
},
+
+ sassResources: ['./app/assets/styles/app-variables.scss'],
+
};
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
index 5f3f7d21..af391c3c 100644
--- a/config/initializers/assets.rb
+++ b/config/initializers/assets.rb
@@ -3,12 +3,12 @@
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = "1.0"
-# Add additional assets to the asset load path
-# Rails.application.config.assets.paths << Emoji.images_path
-
-# Add client/assets/stylesheets to asset pipeline's search path.
-Rails.application.config.assets.paths << Rails.root.join("client", "assets", "stylesheets")
+# Add folder with webpack generated assets to assets.paths
+Rails.application.config.assets.paths << Rails.root.join("app", "assets", "webpack")
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
-Rails.application.config.assets.precompile += %w( generated/server-bundle.js )
+Rails.application.config.assets.precompile += %w(
+ application_*.*
+ server-bundle.js
+)
diff --git a/config/initializers/react_on_rails.rb b/config/initializers/react_on_rails.rb
index 6e929b29..41d6c24e 100644
--- a/config/initializers/react_on_rails.rb
+++ b/config/initializers/react_on_rails.rb
@@ -4,7 +4,7 @@
# Server bundle is a single file for all server rendering of components.
# If you wish to use render_js in your views without any file, set this to "" to avoid warnings.
- config.server_bundle_js_file = "app/assets/javascripts/generated/server-bundle.js" # This is the default
+ config.server_bundle_js_file = "app/assets/webpack/server-bundle.js" # This is the default
# Below options can be overriden by passing to the helper method.
config.prerender = true # default is false
diff --git a/docs/testing-deployment.md b/docs/testing-deployment.md
new file mode 100644
index 00000000..59a16005
--- /dev/null
+++ b/docs/testing-deployment.md
@@ -0,0 +1,10 @@
+# Testing
+
+1. `rake` runs the test suite
+2. To test production with precompiled assets:
+
+```sh
+export SECRET_KEY_BASE=`rake secret`
+alias test-prod='rake assets:clobber && RAILS_ENV=production bin/rake assets:precompile \
+ && rails s -e production'
+```
diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake
index 7df4f9b5..24ed3444 100644
--- a/lib/tasks/assets.rake
+++ b/lib/tasks/assets.rake
@@ -15,10 +15,16 @@ namespace :assets do
task :webpack do
sh "cd client && npm run build:client"
sh "cd client && npm run build:server"
+ sh "mkdir -p public/assets"
+
+ # Critical to manually copy non js/css assets to public/assets as we don't want to fingerprint them
+ sh "cp -rf app/assets/webpack/*.woff* app/assets/webpack/*.svg app/assets/webpack/*.ttf "\
+ "app/assets/webpack/*.eot* public/assets"
+
+ # TODO: We should be gzipping these
end
task :clobber do
- rm_rf "#{Rails.application.config.root}/app/assets/javascripts/generated/client-bundle.js"
- rm_rf "#{Rails.application.config.root}/app/assets/javascripts/generated/server-bundle.js"
+ rm_rf "#{Rails.application.config.root}/app/assets/webpack"
end
end
diff --git a/lib/tasks/linters.rake b/lib/tasks/linters.rake
index 8d3ff029..89bf9196 100644
--- a/lib/tasks/linters.rake
+++ b/lib/tasks/linters.rake
@@ -33,7 +33,7 @@ if %w(development test).include? Rails.env
# end
SCSSLint::RakeTask.new do |t|
- t.files = ["app/assets/stylesheets/", "client/assets/stylesheets/"]
+ t.files = ["app/assets/stylesheets/", "client/"]
end
desc "eslint"
diff --git a/package.json b/package.json
index fdb06033..06d10dd5 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,13 @@
"postinstall": "cd client && npm install",
"test": "rspec && npm run test:client && npm run lint",
"test:client": "(cd client && npm run test --silent)",
- "lint": "(cd client && npm run lint --silent)"
+ "lint": "(cd client && npm run lint --silent)",
+ "build:clean": "rm app/assets/webpack/*",
+ "build:client": "(cd client && npm run build:client --silent)",
+ "build:server": "(cd client && npm run build:server --silent)",
+ "build:dev:client": "(cd client && npm run build:dev:client --silent)",
+ "build:dev:server": "(cd client && npm run build:dev:server --silent)",
+ "build:test:client": "(cd client && npm run build:test:client --silent)"
},
"repository": {
"type": "git",
diff --git a/scripts/lint b/scripts/lint
index 969ab363..2b1cee45 100755
--- a/scripts/lint
+++ b/scripts/lint
@@ -9,6 +9,6 @@ ruby-lint app config spec
echo Linting with eslint and jscs
(cd client && npm run lint)
-scss-lint client/assets/stylesheets/*.scss app/assets/stylesheets/*.scss
+scss-lint client/**/*.scss app/assets/stylesheets/*.scss
echo Done linting with Rubocop, ruby-lint, eslint, jsrc, and slim-lint
diff --git a/spec/features/shared/examples.rb b/spec/features/shared/examples.rb
index 73438a6b..e0abc411 100644
--- a/spec/features/shared/examples.rb
+++ b/spec/features/shared/examples.rb
@@ -8,8 +8,8 @@
include_context "Form Submitted", name: :name, text: :text
scenario "comment is added" do
- expect(page).to have_css(".comment", text: name)
- expect(page).to have_css(".comment", text: text)
+ expect(page).to have_css(".js-comment-author", text: name)
+ expect(page).to have_css(".js-comment-text", text: text)
end
end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 8b9e6c4e..e5cb828d 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -37,6 +37,9 @@
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with :truncation
+
+ # Next line will ensure that assets are built if webpack -w is not running
+ EnsureAssetsCompiled.check_built_assets
end
config.around(:each) do |example|
@@ -71,7 +74,7 @@
end
end
- Capybara.default_wait_time = 15
+ Capybara.default_max_wait_time = 15
puts "Capybara using driver: #{Capybara.javascript_driver}"
Capybara::Screenshot.prune_strategy = { keep: 10 }
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 76b33988..d2a1c9dc 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -16,6 +16,9 @@
# users commonly want.
#
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
+
+require "rspec/retry"
+
RSpec.configure do |config|
# rspec-expectations config goes here. You can use an alternate
# assertion/expectation library such as wrong or the stdlib/minitest
@@ -29,6 +32,14 @@
# ...rather than:
# # => "be bigger than 2"
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
+
+ ### Fix Net::ReadTimeout error on first test
+ # Show retry status in spec process
+ config.verbose_retry = true
+ # Try twice (retry once)
+ config.default_retry_count = 2
+ # Only retry when Selenium raises Net::ReadTimeout
+ config.exceptions_to_retry = [Net::ReadTimeout]
end
# rspec-mocks config goes here. You can use an alternate test double
diff --git a/spec/support/ensure_assets_compiled.rb b/spec/support/ensure_assets_compiled.rb
new file mode 100644
index 00000000..3398b058
--- /dev/null
+++ b/spec/support/ensure_assets_compiled.rb
@@ -0,0 +1,32 @@
+# TODO: Move to react_on_rails
+class EnsureAssetsCompiled
+ def self.check_built_assets
+ return if @checked_built_assets
+ build_all_assets
+ end
+
+ def self.running_webpack_watch?(type)
+ running = `pgrep -fl '\\-w \\-\\-config webpack\\.#{type}\\.rails\\.build\\.config\\.js'`
+ if running.present?
+ puts "Found process, so skipping rebuild => #{running.ai}"
+ return true
+ end
+ end
+
+ def self.build_assets_for_type(type)
+ unless running_webpack_watch?(type)
+ build_output = `cd client && npm run build:#{type}`
+ if build_output =~ /error/i
+ fail "Error in building assets!\n#{build_output}"
+ else
+ puts "Webpack build completed."
+ end
+ end
+ end
+
+ def self.build_all_assets
+ build_assets_for_type("client")
+ build_assets_for_type("server")
+ @checked_built_assets = true
+ end
+end
{author}
- ++ + Example of styling using image-url and Open Sans Light custom font +
+ + + + Rails On Maui on Twitter + +